3.2 项目计划的内容
在做项目计划之前,必须要明确项目的目标和工作范围,想清楚候选的技术方案,以及技术和管理上的要求。只有掌握了这些信息,才能确定合理、精确的成本估算,实际可行的任务分解和可管理的项目进度安排。
项目计划的主要内容包括:
- 项目概述:简单描述项目的基本情况,背景、工作内容等。
- 主要参加人员:列出参加项目的人员、承担的角色、任务、特长等。以及项目的组织机构。例如:
项目经理为负责人,下面分为需求分析组、结构设计组、界面开发组、后台开发组、数据库组、测试组等。每个组的负责人和具体人员,参与的时间/精力比例。
(场景:
领导:这次的项目我担任负责人,下面我指定一下人员和组成,…
小张(窃喜):这次咱还当上小组长了,晚上回去给老爸打电话报告一下,J
)
- 预期的工作产品:包括程序、文档、给用户提供的服务、非移交的产品、
交给用户的最终软件产品,安装使用文档、程序源代码、设计文档、施工文档等。
- 风险估计:主要是风险管理的内容。
举例来讲,对于系统的风险评估,可以列出以下的风险评估表。
编号 | 风险类型 | 降低/防范风险的措施 |
1 | 高水平技术人员不足 |
|
2 | 人员流失 |
|
3 | 进度安排不符合实际 |
|
… … | … … |
|
针对每个风险制定防范措施,并按此执行。
定期对风险进行回顾,分析风险的发生与否、防范措施和对项目的影响。
- 工作分解:根据用户需求,分解产品的功能,制定产品的工作分解结构。比如,将项目分为若干子系统,每个子系统分解成若干模块。
工作分解的方式就是自顶向下逐级把系统功能进行分解,细化到可以相对精确地估计工作量的程度。
- 规模和工作量估计:根据工作分解的结果,估计每个模块、每个子系统的规模,从而估算出系统的规模。根据系统规模估计,估算出系统的工作量。
系统地工作量通常可以采用代码行(LOC)或者功能点(FP)来度量。代码行应该是程序员编写的,而不包括编程工具自动生成的。代码行的估算对经验的依靠很大。功能点方法要判断各模块包括多少个功能点。功能点的方法利用信息域的一些计数(如用户输入数、输出数、接口数等)和软件复杂性估计的经验关系式来导出功能点。我的分析是功能点是根据一些经验数据来计算出的。这两种方法各有优缺点,但总的来说对软件的工作量估算没有太好的计算方法,经验的作用很大。
估算出代码行或功能点后,根据企业的经验,可以知道N代码行/人月,或者N功能点/人月。从而估算出该项目的人月数。
- 成本估计:估算出项目的成本。
根据人月数,以及人月的成本,可以估计出项目的成本估计。
- 进度安排和支持条件:作出系统的时间计划。
制定出项目的各个阶段目标、时间点。
项目计划要注意“40-20-40规则”:即在整个软件开发过程中,编码工作量仅占 20%,编码前工作量占40%,编码后工作量占 40%。
3.3 项目计划的几点任务
(1)项目计划的首要任务是确定软件范围:包括功能、性能、限制、接口和可靠性。需要考虑的因素如下:
- 成本和进度的估算都与功能有关;
- 性能包括处理和响应时间的需求;
- 限制表示外部硬件、可用存储或其他现有系统对软件的限制。
- 接口:软件和硬件间的接口、软件间的接口、人机接口、软件运行前后的一系列过程;必须明确通过接口的信息转换。
(2)项目计划的第二个任务是对完成该项目所需的资源进行估算。
(3)软件成本和工作量估算
但这点很难估计准确,因为变化因素太多:人、技术、环境、政治等都会影响最终成本和工作量。并且没有有效的得到可靠的成本和工作量的方法。