小组软件开发过程实践训练
文章编号:1962-5913(2008)13-0103-03
摘要:为了解决计算机软件专业学生理论学习与实际软件开发活动脱节的问题,我院以学生公寓宿舍管理系统开发项目为背景,设计了一个小组开发过程的实践训练课,通过该过程训练,使学生能理论联系实际,具备从事实际软件项目开发的能力。本文介绍了我院的具体实践经验。
关键词:PSP;TSPi;UML;软件开发;软件工程
中图分类号:TPG642文献标识码:A
1引言
1.1实践训练的目的
在现有计算机软件专业本科教育中,缺少一种系统的实验实践方法,让学生综合运用所学计算机理论知识,以适应实际软件开发项目的需要,其结果是学生走向社会,没有成熟的开发方法和经验,需要大量摸索。为解决该问题,我们通过一个学生公寓宿舍管理系统项目,进行小组软件开发过程方法实践训练,使学生掌握数据结构、算法设计、数据库、软件工程、程序设计语言等学科的知识和软件开发的文档国标,从而能够融入到软件开发项目小组工作中或带领软件开发小组工作。
1.2 实践训练的题目选择
学生在大学期间都住校,对公寓宿舍的管理很清楚,对需求容易理解,容易做出需求分析,这是我们选择开发学生公寓宿舍管理系统作为实践训练题目的原因。当然也可以选择职工工资管理系统、学生成绩管理系统作为训练题目,业务需求尽量清晰简单,而且系统不要太复杂。
1.3实践训练所需资料
(1) 教材
人民邮电出版社的《个体软件过程》和《小组软件开发过程》。《个体软件过程》强调了项目的成功,首先建立在个体成员基本素养的基础上,培养学生按时高效地生产出高质量的软件产品并可对其工作质量进行预测的能力,提供工程师测量和改进工作方法的框架。《小组软件开发过程》有助于学生把课本上学习的软件工程理论转变成实际开发工程中可操作的过程,重点在于告诉学生一种小组方法,角色分工,每个人在项目中如何承担自己的岗位职责和积极协助其他成员完成工作,不断地通过软件开发工作取得个人进步和小组进步。只有通过个体开发工程师素养的提高和小组开发过程能力的不断增强,才能实现组织级的CMM级别跃迁。
(2) 软件工具
利用TSPi EXCEL制作项目计划和追踪项目进展,统计工作量,提高效率。利用VISIO制作用户需求文档和设计。
1.4实践训练评分标准
(1) 小组主要技术文档是否齐全:30%。
(2) 小组开发过程执行情况:50%,包含项目手册完整性、过程数据收集与按时提交情况、周例会组织与效果、计划实际完成情况。
(3) 小组开发过程项目总结报告:20%。
过去实验课,我们总是对每个学生单独评分,现在以小组为单位进行训练,小组每个成员的成绩都要和小组项目总成绩挂钩,小组成绩占30%,个人角色占70%。即使个人做得很好,但如果小组成绩不好,也直接影响到个人成绩。让大家明白,小组项目的成败与每个成员密切相关,正象一个足球队一样,需要全体队员的相互配合,取得小组的胜利才是最关键的。
2实践训练重点内容
2.1个体软件过程训练
(1) 文档规模估计方法
进行规模估计是软件开发人员最基本的素养,掌握规模估计的方法才能对个人开发工作效率、进度有一个估算。文档(需求、设计、使用说明书、标准制定)规模按文档页计算,界面设计以界面个数计算,分别用分钟/页、分钟/个、分钟/行作为开发文档、界面、程序行的效率计量单位。先积累规模实验数据,以后以此计算个人效率。实际项目开发效率的估算按单个练习时效率的30%计算即可。复杂程序或以前没有做过的效率估算要估得更低一些,循序渐进,估算越来越准确,且不可操之过急、目标太高。
(2) 个人承诺管理的方法
通过具体事例让学生明白,软件开发本身有许多不确定性,没有完全相同的案例可以说明我们能按时完成开发工作。因此,将承诺建立在个人实际工作能力的量化指标上,进行时间任务的计划管理是十分必要的。一般来说,只要是认真工作,没有被别的工作打扰,计划一旦落后,不要指望靠加班完成,需要调整计划,及时与对方沟通协商。
建立实际工作时间日志、程序开发时间表、缺陷管理日志等,认真对待PSP项目计划与总结表,是掌握个人开发技能状况的重要手段,也是兑现承诺的可靠依据。
2.2小组角色组成与分工
根据每个学生的个人爱好、性格、专长,知识结构,安排个人在项目中扮演不同的角色,承担不同的职责,迅速掌握角色工作。
小组成员由项目经理、计划经理、开发经理、质量经理、技术支持经理组成,计划经理可以由项目经理兼任。项目组学生由4~5人组成。小组成员之间的关系参见图1,角色职责参见表1。
图1 项目组角色关系
表1 小组角色职责
2.3小组人员和谐工作的方法
以小组周例会沟通交流、目标管理、流程化管理,激励组员为完成目标而工作,不断取得进步。因开发实习工作时间集中,我们把周会议定为2天一次会议,养成及时沟通,使遇到的问题及时得以解决,同时把小组合作的意识培养起来。强调软件开发的质量、功能范围、进度三要素的管理方法,把目标管理与过程管理结合起来。
2.4多周期开发方法
学生们在软件工程中学习了一些开发过程模型,最简单的过程模型是瀑布模型,但瀑布模型要求一次把阶段文档都做好,而在实际开发中往往很难达到,且瀑布模型也没有组织过程模型,可操作性差。TSPi多周期过程模型有组织过程模型,即使由于训练时间短,不能进行多个周期开发,也可以通过把任务分配在多个周期中,分清主次功能和项目风险,把主要功能和高风险部分放在周期1中,提高项目的成功率。见图2。
2.5软件质量标准
学生对软件质量的理解更多地停留在软件是否能使用上,没有软件性能指标是否达标的概念,更没有开发过程质量的概念。通过提供过程质量标准,质管经理监控小组在开发过程中是否达到过程质量标准,使学生掌握过程质量的相关知识,加深认识个体质量的重要性,不断提高个人的开发能力。每个过程都有入口和出口标准,没有达到入口标准的不能进行下一步,没有通过出口标准的,该过程不能结束。
2.6项目总结
我们过去参与企业软件开发活动比较多,项目总结往往留于形式。或者项目出现问题,非要找出责任人,总结会上项目组人员相互指责,最后不欢而散的情况较多,不利于今后的项目开发工作。该实习训练强调过程总结,不把问题留到最后。每个过程阶段的总结,重点强调要对角色不对人,肯定成绩,发现角色不足,使小组成员在开发项目训练中得到进步,建立学习型组织。
3实践训练具体步骤
实践训练的具体步骤如表2所示:
表2 实践训练的具体步骤
注:每个工作日8小时。
每个步骤都是一个实验实践项目,每个项目都有开始和结束条件,而且要求在安排的工作日内要完成指定的项目。即使完不成,通过开周例会总结分析原因,改进工作。通过这种把开发工作划分成一个个小项目,培养了学生如何做项目任务分解、如何完成任务,要求有许多过程文档,使学生真正理解软件=算法+数据结构+文档。
4实践总结
学生通过该过程训练,明显感到实际开发过程和做作业有很大不同,开发训练内容规范、过程可操作性强,把课堂所学书本知识一下串了起来,同时又学习了许多新知识,学生知道了如何组织实际软件开发项目了。这种模式非常值得推广。
参考文献
[1] Watts S.Humphrey著. 韩丹,袁昱译. 小组软件开发过程[M]. 北京:人民邮电出版社,2000.
[2] Watts S.Humphrey著. 吴超英,车向东译. 个体软件过程[M]. 北京:人民邮电出版社,2001.
[3] 陈宏刚,林斌,凌小宁.软件开发的科学与艺术[M]. 北京:电子工业出版社,2002.
[4] 郭瑞军译. ASP2.0数据库开发实例[M]. 北京:电子出版社,2006.
[5] 姚淑珍,李虎译. UML和模式应用[M]. 北京:电子工业出版社,2002.