APP下载

敏捷开发在任务驱动实验教学中的应用

2016-04-25冯桂莲祝延波

关键词:学生宿舍课程设计信息系统

冯桂莲,祝延波

(青海民族大学 物理与电子信息工程学院,青海 西宁 810007)

敏捷开发在任务驱动实验教学中的应用

冯桂莲,祝延波

(青海民族大学 物理与电子信息工程学院,青海 西宁 810007)

敏捷开发是哲学理念和一系列开发指南的综合,推崇让客户满意和软件的早期增量发布,强调开发团队与业务专家之间的紧密协作和面对面的沟通.《软件工程》及《信息系统分析与设计》两门课程是信息系统与信息管理专业的核心课程.通过任务驱动及案例教学的方式,让学生认真完成基于MVC的JSP软件开发,从而大大提高了学生的工程实践水平和团队合作能力.同时还可加强这些课程的教学效果,进一步提高教师的科研和教学水平.

敏捷开发;实验教学;任务驱动;极限编程;信息管理系统

0 引言

2001年,Kent Beck和其他16位知名软件开发者、软件工程师以及软件咨询师(称为敏捷联盟)共同签署了“敏捷软件开发宣言”[1],敏捷开发就此诞生.与传统的软件开发方法相比,敏捷方法更强调开发人员之间的交互,是哲学理念和一系列开发指南的综合.开发的指导方针强调超越分析和设计的发布以及开发人员和客户之间主动和持续的沟通敏捷开发模式非常适合APPS项目,国内外许多领域的项目开发都采用此种模式.在国内,应用开放式创新模式的小米公司的开发口号就是“快速迭代,随做随发”.他们依据的理念就是敏捷开发[2].创新性移动应用最大特点是未来市场的不确定性和难以预测性.在开发中,采用敏捷开发的循环迭代流程,帮助开发者实现高效率、低成本,尽可能贴近市场需求[3].文献[4]中研究了基于可复用技术的敏捷开发流程,文献[5]中研究了以用户为中心进行敏捷开发的方法.在今后的理论和实验教学过程中,如何将敏捷开发的其他方法,如自适应软件开发(ASD)、Scrum、动态系统开发方法(DSDM)及特征驱动开发(FDD)应用于软件开发类课程教学将是进一步学习和研究的重点.

《软件工程》及《信息系统分析与设计》两门课程是高校信息系统与信息管理专业的核心课程.学习其课程的目的是培养学生综合应用基础理论知识和有关技术工具,掌握软件的分析、设计的基本方法,旨在提高学生的工程实践水平和团队合作能力,将敏捷开发应用于软件工程及相关课程的教学过程是势在必行且有意义的.本文论述了将敏捷开发模式应用于课程实验教学的整个过程及其具体作用.通过任务驱动及案例教学的方式,让学生认真完成基于MVC的JSP软件开发,加强了这些课程的教学效果,进一步提高了教师的教学和科研水平.

1 敏捷开发

1.1 敏捷宣言

敏捷联盟在“宣言”中声明:“我们正在通过亲身实践及帮助他人实践的方式来揭示更好的软件开发之路,通过这项工作,我们认识到:个人和这些个人之间的交流胜过了开发过程和工具;可运行的软件胜过了宽泛的文档;客户合作胜过了合同谈判;对变更的良好响应胜过了按部就班地遵循计划[1]”.从本质上讲,敏捷方法是为了克服传统软件工程中认识和实践的弱点而形成的.

1.2 敏捷

敏捷是有效地响应变化,同时也是一种哲学理念.它鼓励能够使组员之间、技术和商务人员之间、软件工程师和经理之间的沟通,更便利的团队结构和协作态度;它强调可运行软件的快速交付而不那么看重中间产品;它将客户作为开发团队的成员以消除一直普遍存在于多数软件项目中的“区分你我”的态度,它意识到在不确定的世界里计划是有局限性的,项目计划必须是可以灵活调整的,敏捷可以应用于任何一个软件过程.敏捷方法最具强制性的特点就是它能够通过软件过程来降低由变更所引起的代价.

2 敏捷开发应用于实验教学

2.1 实施策略

文献[6~7]从不同角度、用不同方法对《信息系统分析与设计》这门课程教学进行了一些改革,也取得了良好的教学效果.本文将敏捷开发应用于《软件工程》及《信息系统分析与设计》课程的实验教学过程中,通过任务驱动及案例教学相结合的方式,让学生完成基于MVC的JSP软件开发,从而大大提高了学生的工程实践水平和团队协作能力,同时加强了课程的教学效果,进一步提高了教师的教学水平.具体的教学过程如图1所示.

图1 敏捷开发应用于实验教学过程示意图

2.2 实施过程

2.2.1 任务驱动

在《软件工程》和《信息系统分析与设计》两门课程的教学过程中,实践性教学环节占重要地位,因此在教学初期就应强调课程设计的重要性.第1周第1节课,任课教师在介绍课程的教学目的和教学要求的同时,布置课程设计任务,说明课程的考核办法和依据,并要求尽快分组和选题或组内自拟题目.

课程的考核要测重于课程设计(也即项目研发),笔者规定的考核总成绩=课堂出勤*10%+理论作业*10%+课堂表现*10%+课程设计*70%.其中课程设计的测评又按具体的各项指标进行.

课程设计题目可以由教师指定或学生自拟,通常情况下,作者在教学过程中,指定文献[8]中附录A《关于课程设计的建议》中的课题.根据实际情况和地域特色、民族特色,让学生自行选择与学习、生活及工作联系比较紧密的,业务功能比较直观的课题,如民族院校宿舍管理系统、青藏高原土特产品管理系统及少数民族饰品管理系统等,其中有些系统的分析和设计还有助于后续课程,如《电子商务网站建设》的教学和实践.

本文主要以民族院校宿舍管理系统为例,高校学生宿舍管理能力和服务水平的高低直接关系到学生生活质量和学校办学能力,因此按课程要求开发了相应信息系统,预期用于辅助宿舍管理、优化宿舍资源、提高宿舍资源利用率和后勤管理水平[9].

2.2.2 设置分组

课程设计小组一般以4~5人为一组,如果人数过多,不能使每位学生都充分参与分析与设计过程;如果人数太少,负担较重,不便体验团队合作精神,也不符合敏捷开发模式“小而高度自主的项目团队”特点.小组的设置主要以自由组合为主,教师再根据实际情况及学生能力分布进行适当的调整,以便在整个设计过程中“紧密协作和面对面的沟通”.

在实验教学过程中,任课教师的角色比较丰富,一方面要指导学生完成相应的课题,一方面要作为客户和学生进行交互,提出需求、讨论交流及项目验收等,任务比较繁重.按每个教学班30人左右计算,每次课程设计都分为六组左右.在教师人力紧张的情况下,可以将有些任务分派给各个小组长(项目负责人),这样教师就可以从繁杂的任务中解脱出来,重点指导综合性比较强的2~3个项目,并以案例的形式进行课堂讨论和演示.每个小组长定期向教师汇报项目进展,提出存在的问题,教师给予指导.该任务在第2周完成.

2.2.3 极限编程

极限编程(XP)是敏捷软件开发使用最广泛的方法.为了在软件工程师和其他利益相关者之间获得有效的沟通,XP强调在用户和开发者之间进行紧密的、非正规的口头合作.连续的反馈,避免以大量的文档作为交流媒介XP使用面向对象方法作为推荐的开发模式,包含策划、设计、编码和测试四个框架活动的规则和实践.各个模块极限编程过程如图2所示.

图2 极限编程过程

下面以民族院校学生宿舍管理系统为例,详细论述该过程.

1)策划.目前本校(青海民族大学)的学生宿舍管理依然采用人工管理方式,学生住宿信息以学生宿舍登记册(一个宿舍一张表的手工记录形式)和Excel电子表格相结合的方式记录.因此,查找、添加、删除及修改信息比较费时、费力,且难以保证工作效率.同时还存在数据冗余、容易产生错误等缺点.因此,手工记录、人工管理的学生宿舍管理方式难以适应高校信息化、数字化建设的要求和趋势.具体的学生宿舍Excel电子表格见表1所示.

相比之下,新的学生宿舍管理系统可以使相关管理人员在使用过程中方便查找需要的信息,进行快速检索,提高正确率和可靠性,减少数据冗余.该课题以本校学生宿舍管理需求为背景,分析、设计并开发了基于MVC的JSP信息管理系统.该系统界面友好、操作简单、运行稳定.在这一阶段,课题组同时要撰写可行性分析报告,在第3至4周完成.

2)设计.XP设计鼓励使用CRC卡(类—责任—协作者)卡确定和组织与当前软件增量相关的面向对象的类.

表1 学生宿舍信息卡

系统的主要功能包括对学生住宿信息的查询和更新、宿舍信息管理、学生考勤管理以及系统用户管理.对宿舍管理系统的功能进行模块划分,分别以系统管理员、宿舍管理员及辅导员,为系统用户进行分析与设计,系统组织结构图如图3所示.

图3 学生宿舍管理系统组织结构图

根据系统功能进行组内分工及角色分配.其中组长为课题项目负责人,其他组员根据自己特长进行模块分管,组成极限编程团队,具体任务分配如下:

同学A(组长兼项目负责人):结构设计、数据库设计、代码设计和调试、界面设计.

同学B:数据库设计、开发环境搭建、备份优化.

同学C:页面框架设计、E-R model、数据库优化.

同学D:系统优化、数据库优化、甘特图、界面设计.

XP团队将用以下三种方式之一对系统功能进行排序.

A:所有功能将在几周内尽快实现.

B:具有最高权值的功能将移到进度表的前面并首先实现.

C:高风险的功能将首先实现.

该系统数据结构、数据库的设计主要包括学生宿舍信息表、宿舍管理员表、辅导员信息表、缺勤记录表、宿舍信息表及系统管理员表以及它们之间的关系.学生宿舍信息表为例,见表2所示.

在该阶段,根据系统功能和实体联系,绘制E-R图、数据流图,同时撰写系统说明书和系统设计说明书,在第5至6周完成.

3) 编码.XP编码活动中关键是结对编程,这种方式在编码过程中强化了详细设计,强调不断重构,提高代码质量和可读性,降低修正代码缺陷的代价[10].这一方案提供了实时解决问题和实时质量保证的机制.这在宿舍管理系统开发小组中是不难实现的,因为小组成员通常以宿舍为单位(多为同一宿舍学生),并且实验室环境也满足此模式的要求.同时,采取结对编程,以强带弱,学生更容易树立信心,并能从学习中获得更多的友谊、快乐和满足感[11].

表2 学生住宿信息表

在该XP团队中,结对情况为:(同学A,同学C),(同学B,同学D),这与他们的分工任务性质密切相关.当结对的两人完成工作时,他们所开发的代码将与其他人的工作集成起来.在有些情况下,结对者自己负责集成,这种“连续集成”策略有助于避免兼容性和接口问题.该阶段是主要阶段,要求贯串第7至16周,也是耗时最长的阶段,开发人员和客户之间、开发人员之间要始终保持主动和持续的沟通,要确定迭代的顺序和周期,把项目的核心功能放在迭代周期之前,经过多次迭代后可以显著提高核心功能的可靠性,从而提高整个项目的可靠性[12].

4)测试.测试有模块测试、联合测试、验收测试及系统测试四种类型.在编码开始之前建立单元测试,是XP方法的关键因素,所建立的单元测试应当使用一个可以自动实施的框架.这种方式支持代码修改之后的回归测试策略测试环节既要保证构件质量,又要保证满足整个项目复用需求.每个构件都将进行单独测试,并且给出测评方案[4].在该阶段,单元测试由XP团队自行完成,验收测试由任课教师完成,在第17至18周进行第19周根据意见和建议进行修改完善,并发布最终软件增量,准备交付结题.

2.2.4 综合测评

第20周课程结束时,要求学生提交课程设计(信息管理系统)和相关文档,并准备PPT进行项目答辩.教师及全体同学共同听取每个项目组长的汇报后,进一步验收确认预期功能的实现情况.测评内容包括查阅相关文档,检查其规范性;总结并点评小组及个人的表现;表扬优点,给予鼓励;提出不足之处,要求改进,最终从界面设计(10%)、数据库设计(20%)、功能模块划分及实现(50%)、文档撰写(10%)、团队成员分工及合作情况(10%)几个方面综合评定.小组总成绩和成员个人成绩这两项成绩再按各占50%的原则加权求和就是学生的课题设计(项目研发)成绩.该成绩在课程成绩中又占70%.至此,课程设计(项目研发)完成,课程结束,整个敏捷开发方法贯串始终.

3 结语

在信息管理与信息系统专业的软件开发类课程《软件工程》和《信息系统分析与设计》中引入敏捷开发方法后,取得了较好的教学效果,并得到了学生和同行的一致好评.学生经过系统的理论学习和实践编程,提高了工程实践水平和团队合作能力.运用软件工程思想和敏捷开发方法来分析和解决问题完成该课程设计后,一方面可以整理发表科技论文;另一方面可以再进一步完善,考虑将该课程设计作为毕业设计,准备毕业论文及答辩.对于较优秀的设计和有进一步研究兴趣的学生,教师在辅导并给予改进意见和建议的同时(必要的情况下教师也可以参与开发团队),完善设计产品后推荐参加全国大学生程序设计大赛或者各级大学生创新比赛、技能竞赛等.另外,这种教学过程对教师的要求较高,一方面应该具备扎实的理论基础和系统思想,另一方面应该具备很强的动手编程能力和组织领导能力.这对教师自身水平来说也是一种考验和提升.

[1] 蔡珉官.敏捷开发在高校软件开发中的实践研究[J].计算机光盘软件与应用,2013,06:164-165.

[2] 李爱新.小米靠什么赢[J].企业管理,2013,10:96-99.

[3] 魏颖琪,林玮平,杨少龙.移动终端应用软件开发技术探讨[J].电信科学,2013,05:11-18.

[4] 贾宁,郑纯军,高志君.基于可复用技术的敏捷开发流程研究[J].计算机科学,2015,S1:557-560.

[5] 季铁,谢琪,陈宪涛.将以用户为中心引入敏捷开发的方法探究[J].包装工程,2013,06:50-54.

[6] 陈伟,刘军,谷凌雁.以案例驱动信息系统分析与设计课程教学[J].教育教学论坛,2015,18:152-153.

[7] 李红.《信息系统分析与设计》课程教学改革研究与实践[J].沈阳师范大学学报(自然科学版),2013,04:548-551.

[8] 王晓敏,邝孔武.信息系统分析与设计(第4版)[M].北京:清华大学出版社,2013.8,305-307.

[9] 于一梅,文捷,田鹏,周伟强,陈翼,宓詠.高校学生宿舍资源整合与协同管理研究[J].实验技术与管理,2011,04:236-239.

[10] 邵山,付塍强,姚方圆,郑义.敏捷开发在战机飞控系统软件研制中的应用[J].计算机应用与软件,2015,01:44-46+54.

[11] 张志敏,杜景龙,连达军.基于敏捷开发模式的“GIS软件工程”实验教学[J].实验室研究与探索,2014,11:205-208.

[12] 胡文生,赵明,杨剑锋,龙士工.基于UML模型的敏捷开发迭代顺序的确定[J].计算机科学,2013,12:215-218.

Application of Agile Development in Experimental Teaching for Task Driven

FENG Gui-lian, ZHU Yan-bo

(Institute of Physics and Electronic Information Engineering, Qinghai University for Nationalities, XiNing, 810007, China)

Agile development is the integration of philosophy and a series of development guides, which esteems for the customers' satisfaction, the increases early publishing of software, as well as emphasizes the close coordination and the communication face to face between the development team and the business experts. Both Software Engineering and Analysis and Design of Information System are two central courses of information system and information management. The paper discussed the process and function for applying agile development to the experiment teaching for these courses, by task driven and case teaching, to let the students finish the development of the software based on MVC and JSP, and to improve the level for engineering practice and the ability for team cooperation of student greatly. Meanwhile, it will strengthen the teaching effect of these courses, and improve the level for teaching and research of teachers.

Agile development; Experiment teaching; Task driven; Extreme programming; Information management system

2016-09-20

2015年度教育部“春晖计划”合作项目;青海民族大学2016—2017年教学改革项目

冯桂莲(1979—),女(藏),青海湟源人,副教授,主要从事软件工程和图像处理方面的研究.

G64

A

1009-2102(2016)04-0071-06

猜你喜欢

学生宿舍课程设计信息系统
莫里永学生宿舍
——贯穿建筑的连续上升走廊
企业信息系统安全防护
学生宿舍远程智能管理系统设计
龙凤元素系列课程设计
吉田寮:亚洲最破的学生宿舍
中秋明月
基于区块链的通航维护信息系统研究
信息系统审计中计算机审计的应用
学生宿舍
基于Articulate Storyline的微课程设计与开发