敏捷开发在软件工程课程改革中的探讨
2016-07-05张帆
张帆
【摘 要】这个时代,伴随互联网+、创新创业等大幅向前迈步改变所有行业创造产品的角度同时,高等本科院校计算机专业课程体系中,在大三一般都会开设《软件工程》这一重要课程。但根本笔者近三、四年對《软件工程》教学研究后发现,本课程由于教学内容和教学实践的限制,上课与上机都难说理想,选课老师也有意回避此课程教学。近年来敏捷项目开发的兴起,可让学生改变鸡肋式教学,认识到互联网下敏捷开发从产品经理到程序员到最后软件上线整个过程的快速落地,高效实践重要性。本文提出希望利用这一新兴模式在教学改革中打破常规,为教师教学大纲重新设定和上机实践案例教学提供思路和启示。
【关键词】敏捷开发;软件工程;教学方法
1 引言
软件工程作为高校计算机领域一门重要课程已经发展超过半个多世纪。随着计算机电子化、网络化呈几何倍速的飞速发展,它已经成为一般本科高校的软件工程专业中必不可少的一门独特课程。但是基于笔者对于本课程三、四年教学实践的总结,发现软件工程这一课程的系统理论知识和上机教学在本科阶段教学实践环节中都差强人意。我也曾经在课堂上针对软件工程专业学生进行非正式调研,发现一个班45人左右,大约只有10人左右同学认可软件工程对于项目重要性,希望去学习相关文档编写工作,而其余大多数同学则在内心中抵制这门课程,认为“软件工程对于他们的毕业找相应计算机工作几乎没有任何帮助”。那为什么奉为经典的软件工程理论在本科教育实践中遭遇如此尴尬?针对这一困惑,反思认为“软工无用”这一现象的主要原因并不是“软件工程真的无用”,而是作为教学管理缺乏一套有效的教学体系,上机效果差,导致大多数学生不能将理论转化为实践并运用到实际开发中去。基于这样的调研分析,笔者尝试在本科教学中利用一种全新软件工程模式—敏捷开发,让《软件工程》课程回归它应有的地位,让这门课程真正为学生所用。
2 敏捷开发在教学中提出
现阶段《软件工程》课程教学中,几乎现有市面教材千篇一律的大幅度介绍传统软件开发的方法学,也就是以瀑布模型作为主线(如图所示),其特点是比较抽象,要求学生具备较高抽象能力和文档写作能力,可由于高校扩招,学生素质整体下降,加之学生本身在大学上学期间对项目开发流程就比较模糊,教材又将软件生命周期划分为前期调研、可行性分析、需求分析、总体设计、程序编码、软件测试、系统维护等七个活动进行分阶段分章节讲解,也就更没有能力独立完成可行性报告、数据流图、ER图及数据字典的设计,最后学生也就认为软件工程在实际应用中几乎为零。
而随敏捷开发近两年在国内外兴起,它不是一门技术,是一种开发方法,也就是一种软件开发的流程,它会指导我们用规定的环节去一步一步完成项目的开发。这种开发方式的主要驱动核心是人,采用迭代式开发,原本一个教学周期32个学时、12个上机及24个课程实训都是以瀑布式讲解为主线,因为瀑布模型以文档为驱动,导致学生对整套开发流程陌生,不知如何下手;这时,敏捷开发在教学中提出,只需跟学生介绍必要的文档编写工作,或尽量少讲解文档如何编写,更注重的迭代式开发、互动式开发等基本原理和上机实践案例教学布置,让学生知道项目以人为核心好处,知道Scrum和XP这两种敏捷开发的具体方式,可以揭示更好的软件开发方法的利用。
3 敏捷开发在教学中实践应用
《软件工程》以往的教学方法是,根据软件生命周期,从第一章软件工程概述开始,就让学生了解软件开发模型,并且从第二章可行性分析开始,上课与上机不自觉的进行毫无设计与想法的凭空项目调研,随之而来的就是在word、Visio、powerDesign等一系列建模、画图、可行性报告等工具上进行虚拟练习,但是学生在学完软件测试章节后,大概只记得像LoadRunner这样工具是怎么打开和安装的,具体怎么编写有用的文档,怎样进行高效的团队合作,怎样编写执行效率更高的源代码方面却还是一片茫然。那么,我们在《软件工程》课程讲解中,何不打破这样的常规假命题,首先在教学目标上进行重新设定。
教学目标的改革要以学生对软件项目管理能力为第一视角,不管是瀑布开发还是敏捷开发,最终都是团队合作,都是用管理激发每个团队成员的积极性来打造项目。而且要让学生知道学习本课程最终目的不是为了得到所谓120页或1200页的文档规范,而是为了得到客户使用情况的真实反馈,注重客户的感受,适度的文档编写会让双方利益最大化,这是在课程目标设定上进行定位。
其二,教学内容改革上,应结合学生在每次上课的教学内容及学生在前面学期中所学习到的专业知识基础,比如数据结构,C/C++,JAVA/.net等编程能力掌握,由易到难的分别完成“图书借阅管理系统”、“撞球类小游戏”、“软件产品创业可行性计划书”、“安卓手机服务类应用开发”为主体教学内容,在教学中,始终以四个案例进行串联讲解,把案例切分成很多细小节点,每章每节中都要进行回溯跟踪,让学生始终知道“为什么”“是什么”“怎么做”,避免浪费时间进行学习。在上机中,以四名同学为单位成立项目开发小组,锻炼出具备一定软件实战开发经验同学,让他们以项目Leader的角度多在团队中讲解项目学习方法,个人实践技巧,发挥课堂上下联动机制,然后老师在上机辅导中进行抛砖引玉,有目的有方法进行项目开发进度的跟进,确立“一体两翼”的教学思路。
4 结束语
本文在分析了传统《软件工程》鸡肋式教学成因后,大胆提出教学改革模式,引入敏捷开发,作为本科教学实践实施过程的方法论。通过学生班级分组,团队合作,最终得出几点结论:(1)敏捷开发较传统瀑布式开发有明显实践动手优势,但并不能代表能够取代传统软件周期教学模式,实际上敏捷开发模式只是在传统软件工程模式的补充;(2)敏捷开发有效树立班级学生完成项目自信心,特别是针对很多在软件编程方面缺乏信心的同学。但是,敏捷开发植入计算机教学中是一种全新尝试,如何有效的深入扩展到各专业领域,将是笔者以后深入探索的内容。
参考文献
[1]闫俊伢.软件工程课程理论与实践教学方法[J].计算机教育,2010(21):115-117