项目开发计划一般是由项目经理负责编写,项目技术人员协助,在项目启动前期进行评审,评审通过后汇报项目主管,成为项目实施的进度依据。项目计划过程与任务如下:
软件开发企业相关部门收到经过审批后的“项目立项文件”和相关资料,则正式由“项目立项文件”中指定的项目经理组织项目团队,成员可以随着项目的进展在不同时间加入项目团队,也可以随着分配的工作完成而退出项目团队,但最好都能在项目启动时参加项目启动会议,了解总体目标、计划,特别是自己的目标职责,加入时间等等。
项目经理组织前期加入的团队成员准备项目工作所需要的规范、工具、环境。如开发工具、源代码管理工具、配置环境、数据库环境等。前期加入的团队成员主要由计划经理,系统分析员等组成,团队成员应该充分交流沟通。如果项目中存在一些关键的技术风险,则在这一阶段项目经理应组织人员进行预研,预研的结果应留下书面结论以备评审。
项目经理组织团队成员通过分析项目相关文档、进一步与用户沟通等途径,在规定的时间内尽可能全面收集项目信息。项目信息收集要讲究充分的、有效率的沟通,并要达成共识。重要的内容需要开会进行Q&A讨论,确保所有重要问题都得到理解,最终达成共识。讨论会上达成的共识应当记录成文字,落实在具体的文档中。
项目经理负责组织编写《软件项目计划书》。《软件项目计划书》是项目策划活动核心输出文档,它包括计划书主体和以附件形式存在的其他相关计划,如配置管理计划等。《软件项目计划书》的编制参考国标的要求。各企业在建立ISO 9001质量管理体系或CMM过程中也会建立相应的《软件开发项目计划书规范》。
编制项目计划的过程应当分为以下两个步骤:
(1)确定项目的应交付成果。这里的项目的应交付成果不仅是指项目的最终产品,也包括项目的中间产品。例如,通常情况下软件开发项目的项目产品可以是:需求规格说明书、概要设计说明书、详细设计说明书、数据库设计说明书、项目阶段计划、项目阶段报告、程序维护说明书、测试计划、测试报告、程序代码与程序文件、程序安装文件、用户手册、验收报告、项目总结报告等等。
(2)任务分解:从项目目标开始,从上到下,层层分解,确定实现项目目标必须要做的各项工作,并画出完整的工作分解结构图。软件开发项目刚开始可能只能从阶段的角度划分,如需求分析工作、架构设计工作、编码工作、测试工作等等,规模较大时也可把需求、设计拆分成不同的任务。
在软件开发的初期,通过对软件项目的初步分析,我们可以使用“功能点”来对软件产品所提供给用户的功能加以度量。先按信息域特征得到未调整功能点,再按系统涉及的技术因素对该数值进行修正。
按照软件表示技术,一项需求可描述为若干外部输入、外部输出、外部请求、外部接口、内部文件的集合。对集合中每一子项进行计数,并按其复杂性指派相应的权重,可得未调整功能点 UFP :
任何需求的实现,总与一定的技术有关。一项需求的技术复杂性特性值 TCF 定义了14项技术特性,对应每一特性有一个从0到5的关联值 Fi (0说明此项技术特性与功能实现毫无关系,5说明此项技术特性是系统建立必不可少的组成部分)。 TCF 即由这些评分合成,公式如下:
最后,功能点的度量值 FP ,为以上二者的乘积:
FP = UFP × TCF
假设有一单位的职工工资管理系统,通过需求分析得到:用户输入数为4,即密码、打印工资、工资录入和错误按键;用户输出数为3,即查询信息、工资报表和出错信息;用户查询数为1,即工资查询;文件数为1,即职工工资表;外部接口为2,即人事查询、职工信息。假设各信息特性的复杂性均取简单级,则未调×整功能点数为:
UFP =3×4+4×3+3×1+7×1+5×2=44
再取技术因素分布如表2-1,可求得技术因素综合影响程度:
DI =5+4+0+1+1+3+2+0+1+1+3+2+2+3=28
求得技术复杂因子: TCF =0.65+0.01× DI =0.93
最后求得: FP = UFP × TCF =44×0.93=40.92
表2-1 技术因素
基于功能点的工作量估算,是从用户的角度来度量软件。进行工作量估算时,先估计出软件项目的功能点数,然后将功能点数转换为人天数。将功能点转换成人天数主要有2种方法。
(1)生产率法
要求有开发商每人天开发的功能点数,估算出功能点数后,直接利用功能点数除以功能点/天,即得工作量人天数。对于开发商每人天开发的功能点数,SPR有统计,中国的值大约在5.5个功能点/人月。
(2)经验模型法
可以依照本企业的历史数据得到关于功能点和工作量的统计方程;也可以采用已有的经验模型,例如:COCOMOⅡ模型。
可以采用基于软件生命周期的工作量详细分配方案:项目计划阶段:2%~3%;需求分析阶段:10%~25%;设计阶段:20%~25%;编码阶段:15%~20%;测试和调试阶段:30%~40%。
假若1个功能点需要60行源代码,则工资管理系统需要40.92×60=2 455.2LOC。类似地,功能点文档页数、成本数、错误数等也可估算。
开发工作量: E =5.2× KLOC 0.91 =5.2×2.455 0.91 =12(人月)
估算开发进度: T =2.4× E 1/3=5.5(月)
建议软件工程实训分组进行,每个项目组4—6名同学。项目组推举一名具有较强开发能力和管理能力的同学担任组长,采用组长负责制。组长负责为每一位组员分配具体开发任务,明确任务完成标准和完成时间,并根据组员的任务完成情况给定成绩。例如:软件工程实训项目组任务分派单如下。
软件工程实训项目组任务分派单(组长用)
(1)本表由组长为其组员每次上机实践分派任务使用,应认真填写相关任务名称、内容、完成标准等信息;
(2)本表在每次任务完成后,由组长按照完成标准验收,并给出每个组员成绩评定(每人平均70分制),除组长保留一份外,应及时上报任课老师(电子和纸质文档同时上报)。