一份软件项目的失败报告
就像某人说的失败并不可怕,可怕的是不知道从失败中吸取教训。
前言
本项目的目的是构建一个在线的考试系统,功能包括在线考试、用户管理、题库管理、试卷管理、教师批改、分数统计分析等。系统使用Java技术、Oracle数据库。开发人员计划为4人。时间周期为一个月。
项目概述
一、计划的制定
一个月简单分为4周,第一周完成界面设计、数据库设计、对象设计、平台搭建等工作。
第二周完成对象模块的开发。
第三周完成页面的开发。
第四周进行测试与完善工作。
二、软件框架
采取四层结构,由底向上依次是:
Hibernate->Spring->Struts->JSP+JSTL+DWR
DAO->Model->Controller->View
三、人员配置
一个leader(M)+三个组员(A、B、C)
四、任务划分
M的任务1是:对象设计、平台搭建;
A的任务1是:界面设计;
B的任务1是:数据库设计;
c的任务1没有。
M的任务2是:用户管理模块、在线考试模块;
A的任务2是:题库管理模块;
B的任务2是:试卷管理模块;
c的任务2是:教师批改模块、分数统计分析模块。
失败原因
一、计划偏差
如果是设计优秀的软件,在模块开发上花的时间应该是页面开发所花时间的N倍(视软件的大小与复杂度),简单的给这两个部分一周时间不太合理。实际的情况也是这样,到项目结束的时候,很多模块都只完成了基本的部分,即没有开发完成。
教训:做需求时只能预估项目的计划。计划的具体制定应该在设计工作完成后考虑。
二、风险管理
在项目组中,每个人都有自己的繁重任务,可是在第二个星期时,组员C因为特殊情况退出了项目组,于是他所负责的模块空置一旁。因为没有预料到这个突发情况,项目组也没法再添加组员进来。
教训:M应该有处理组员突然离开风险的准备。
三、时间控制
项目总的时间只有一个月,但是四位成员全部都有其他重要的事务须处理,这些其他的工作至少用掉每个成员10天的时间。项目进度因此严重滞后。
教训:M已经知道成员们会分心处理其他的事务,且项目时间无法延长的情况下,在需求和设计时应该压缩功能。
四、技术问题
对项目组的四位成员来说本次软件的框架都不太熟悉,在项目的开发过程中都经历了一个了解熟悉的过程。这样的一个过程也让项目的进度跟着拖累。并且由于对技术的不熟悉,成员们的开发效率也是令人头痛的问题。
教训:作为程序员应当熟悉软件开发中的各项技术,平时就需要磨练自己的技艺,不能抱着到实际项目中用用就会的思想。对于项目的计划制定者也需要将项目成员的技术问题考虑到,留出一定的时间学习是必要的。
项目结果
从后台到页面全部完成的模块有用户管理、题库管理。其它模块都在半完成或没启动状态。