APP下载

敏捷开发在软件工程实践课程中的应用

2017-04-05白鱼秀郑欢欢

计算机时代 2017年1期
关键词:软件工程教学实践

白鱼秀 郑欢欢

摘要:针对传统瀑布模型在软件工程实践课程中的不足,结合敏捷开发方法的优势,提出一种适合软件工程实践课程的教学方法,并给出了相应的实施方法。实践表明,该方法能有效激发学生的学习积极性,加深其对软件工程理论的理解,提高其实践动手能力和软件开发能力。

关键词:敏捷开发;软件工程;瀑布模型;教学实践

中图分类号:TP311.5

文献标志码:A

文章编号:1006-8228(2017)01-85-03

0.引言

“软件工程”是计算机专业学生的必修课。学生通过该课程的学习,掌握软件项目开发和维护的一般过程。该课程必须通过实践操作,才能让学生深入的理解和掌握软件工程的基本理论。

目前一般的软件工程实践课程,采用传统的瀑布模型进行开发。传统的瀑布模型,其基本思路是各项活动按顺序自顶向下,相互衔接如同瀑布一样。它的特点是强调文档,前一个阶段的输出就是后一个阶段的输入,文档是各个阶段衔接的必要信息,软件产品的“模样”只有到了开发后期才能看到。但是学生一般没有开发经验,很难一步到位圆满的完成各个阶段的任务,并且学生普遍对撰写文档不感兴趣,繁冗的文档增加了学生的工作量,降低了学生软件开发的积极性。

1.敏捷开发方法

为了使软件开发团队具有高效工作和快速响应变化的能力。2001年召开的研讨软件过程未来发展趋势的会议上,17位著名的软件专家联合起草了敏捷软件开发宣言。敏捷软件开发宣言主要由四个简单的价值观声明组成:人和交互重于过程和工具;可以工作的软件重于面面俱到的文档;客户合作重于合作谈判;随时应对变化重于遵循计划。

“敏捷”意味着快速,简单,灵活。敏捷开发过程强调以人为本,注重编程中人的自我特长发挥。强调软件开发的主体是程序,文档是为软件开发服务的,而不是开发的全部。敏捷开发模型适合于中、小型软件系统。对于难以分解的大型应用软件,需要分布式开发的应用软件等不适合使用敏捷开发。

敏捷开发是目前公司使用最多的软件开发过程。敏捷开发集思广益,博取众长,使得每个人的能力都能得到更好的体现,并且敏捷开发能在短时间内开发出可运行的系统,而软件工程实践课程通常是在2-3周开发一个小型软件系统。把敏捷开发应用在软件工程实践课程中,可以更好的调动学生的积极性,培养学生的合作意识和团队精神,使得学生更好的了解公司中开发软件产品的流程,为今后更深入的学习和从事软件工作打下良好的基础。所以敏捷开发方法特别适合在软件工程实践课程中运用。

2.实施方法

2.1项目分组

学生根据自愿原则,自由组合分组,最多4-5个学生为一组,组成敏捷开发小组,共同完成项目开发。小组推选一个人担任项目经理,并扮演Scrum Master角色,负责项目的进度控制和组织开展每天的站立会议。教师扮演“客户”的角色全程参与和指导每个小组的软件项目开发。

2.2项目选题

教师向学生提供一系列的软件工程实践课程题目,每个小组从中挑选一个或者自定义一个自己小组感兴趣的题目,自定义的题目必须得到教师允许方可开展。

2.3项目开展

每个小组按照敏捷开发的工作流程开展自己的项目,如图1所示。

(1)开展迭代计划会议。软件需求是软件项目成败的最关键因素。启动项目前,小组开展迭代计划会议,充分讨论理解项目需求,和客户(教师)确定整个项目的具体需求,对任务和完成标准达成一致,并且确定小组内每个成员的工作量及交付内容。

(2)结对编程。小组内自由组合,两个学生在同一台计算机上共同编写解决同一问题的程序代码,通常一个人负责编码,另一个人对代码进行审查和测试,以保证代码的正确性和可读性。小组内两天变换一次结对搭档,从而互相学习好的编程思想和编程风格,提升代码质量,促进知识传播。同时培养团队成员积极、主动的心态和对方沟通合作。

(3)站立会议。每个小组每天上午10点进行15分钟的站立会议,沟通自己昨天做了什么,今天计划做什么和遇到的问题。这样,不仅可以督促小组内每个人每天按期完成任务,增加小组的凝聚力,而且能及时暴露问题,大家集思广益,解决问题,而不会造成一个人遇到瓶颈而导致整个项目进度的延期。

(4)任务看板。每个小组配备白板以便充分展开讨论。把将要做的任务,正在做的任务和已经完成的任务贴在白板上,不同颜色表示不同的重要程度。小组成员各自标明自己负责的任务。Scrum Master根据每日站立会议的汇报情况及时更新任务看板上的燃尽图。

(5)持续集成。每天进行一次代码集成。强调程序代码属于整个开发小组集体所有,小组成员任何一Ax,t任何一行代码的修改,都可能对整个项目产生严重的影响。每个成员提交的代码必须保证整个项目正确性,必须对全部代码的质量负责。

(6)代码回顾。小组集体每天大概运用二十分钟到四十分钟进行代碼回顾,及早的发现代码中潜藏的问题,保证代码的质量。并且对代码进行重构,优化和调整代码的内部结构,做到低耦合,高内聚。

(7)技术讲座。小组每周开展一次技术讲座,分享好的经验和总结需要改进的地方,从而提高所有项目组的技术水平。进而激发所有小组的潜能,加强协作,提高大家整体的软件开发水平。

(8)文档编写。敏捷开发不是不编写文档只写代码,而是避免浪费,只编写必要的文档,小组成员集体合作,共同完成软件实践课程报告的编写。

2.4项目考核

软件工程实践课程结束时,每个小组提交软件工程实践课程报告并进行项目答辩,对其开发成果进行评估,鼓励学生撰写科技小论文,整理发表。项目考核分为教师打分和其他小组打分,考核的依据主要是文档系统的难易程度和功能(20%),论文内容和格式(40%),答辩表述(40%),项目小组成员轮流发言,分别介绍自己在项目中所完成的任务和贡献,并总结分享自己在此次项目开发中的收获成果。

3.结束语

本文针对传统的瀑布模型在软件工程实践课程中的弊端,提出了把敏捷开发方法引入到软件工程实践课程中。通过对学生实际软件工程实践课程的跟踪发现,此方法可以极大的激发学生的兴趣,调动学生的科研积极性,使得学生在轻松欢快的氛围中更深入理解和掌握软件开发的整个流程,并熟悉敏捷开发方法在项目开发中的实际应用。

猜你喜欢

软件工程教学实践
依托工作室的软件工程实践教学研究
应用瀑布模型的MOOC制作方法
融合APTECH体系的软件产业人才培养探究
基于工程教育认证的《软件工程》课程教学质量建设研究 
基于三维软件和云班课APP的机械设计课程教学实践
中职职业生涯规划课程的教学反思
中职计算机应用课程教学改革与反思
关于如何创新和完善计算机软件工程管理的探讨
浅论高中化学生活化教学的实践与思考
浅谈初中物理实验教学与学生创新能力的培养