软件开发管理的十大工作任务
根据上面所总结的各个需要做的项目管理工作,结合软件开发所具有的很多特点,我们可以总结出进行软件开发管理所必须完成的十个方面的工作。下面的表1对这十大工作做了一个概括总结。
表1: 项目管理的十大工作在软件开发管理中的运用
项目管理十大工作的理念和实践在软件开发管理上的运用
对任何软件开发项目的管理执行以下十个工作以及利用项目管理的领域知识:
1. 决定项目的启动 (Project Initiation) — 确定软件的目标:使用项目管理的范围管理中判断项目启动的指南来帮助判断和决定某个软件开发的项目是否需要进行。简言之,在明确了要开发的软件的战略目标之后,例如为满足某个客户的要求或赢得市场竞争的需要,对一个软件产品或系统的开发项目做出是否启动的决定。在软件开发展开之前先做到能够明确回答这些:
o 明确软件开发的战略远景(Vision):从企业的市场战略来判定开发的合理性和必要性。
o 明确软件开发的目的(Goals):从市场需求或客户需求中明确软件所需要达到的功能和性能目标。
o 总结出所开发的软件必须能够完成的任务(Mission)或需要提供的服务(Objectives)。
o 总结出所开发的软件所需要解决的用户的具体问题和困难(Problems to solve)。
2. 确定项目的范围 (Define Project Scope) — 确定软件的功能:以软件开发的目标为基础,进行功能需求分析和总结,由此确定软件开发的具体工作:
o 明确开发项目的范围:需要的资源、整合的系统、外部因素依赖等。
o 总结出所开发的软件产品或系统的功能范围,并明确哪些功能是不在这个项目的范围之内。
o 进行软件的功能设计,总结出所开发的软件产品或系统所包括的具体功能、性能、使用界面、提供的服务等。
o 总结出项目的具体提交实物,即必须完成的具体的软件程序、功能组件、系统、测试工具和各种有关文档。
o 对整个软件的范围,使用软件功能设计规范书进行总结。
o 在软件整体功能设计规范的基础上,由开发、测试、文件编辑等各个团队和专家制定开发和测试计划,包括软件的构架和系统设计、具体的编程执行计划、软件使用说明和各种文件的编辑计划、对软件进行可用性开发和验证的计划等。
3. 制定项目任务的重要性和优先顺序 (Define Priorities) — 确定软件功能的优先顺序:
o 在所有需要开发的功能中,确定哪些是最重要的、是必须要做的;哪些是次要的、是可以放弃的;同样,对软件的性能要求和其他要求,也做这样的审核与总结。
4. 确定具体的项目工作任务和工作单元 (Define Work Tasks and Work Package):
o 根据所需要开发的软件的各种功能和性能需求,确定工作任务,并采取从上到下、从总体到局部的工作任务的分解,按照项目管理中的工作任务分解结构(WBS)的方法,将开发整个软件的各个组件和单元给筹划出来,设立一份完整的开发工作的工作单元清单。
5. 分配项目资源 (Assign Resources) — 分配具体进行软件开发的资源:
o 根据企业开发组织的结构和人员的配置,对完成每个工作单元所需要的人力资源进行分配和安排:这里应该包括进行功能设计的项目经理、进行开发和测试的工程师、进行文档撰写的文件编辑等。除此之外,对各种必需的设备、工具等资源,也做一个分配,因为它们涉及费用的开支。
6. 估算完成工作任务单元的时间 (Estimate Work Package Time):
o 采用开发组织的历史数据、数学计算等方法,对完成每个具体的设计、开发和测试的工作任务,进行时间估算。时间的估算应该先由执行具体工作的人员作最初的估算。
7. 制定项目时间表 (Define Schedule):
o 根据完成的每个工作任务的时间估算,同时根据整个项目的时间表要求(例如在某个日期之前必须完成开发任务)和所具备的开发资源(人才、设备、技术等),对软件开发中的各个任务进行时间表的初步排列。
o 计算出项目的关键通道(Critical Path)和宽松时间(Slack),对软件开发项目的时间表进行优化排列和组合,例如安排同步进行的并列开发工作等,最后制订项目的时间表。
8. 计算并管理项目的费用(Cost Management) — 进行开发的开支预算:
o 根据开发工作单元的时间估算和人力资源的分配进行费用的计算。
o 在项目进展的过程中对费用的花费进行必要的追踪,并对开支根据开发的具体需要和任何发生的变化进行调节。
9. 项目执行的管理 (Execution Control):这是在项目执行阶段的所需要做的工作。它们是在项目的具体执行阶段与开发编写程序并行的工作。它们包括了对好几个项目管理领域知识的运用:
o 质量管理测试:在功能和质量衡量的基础上,对开发出来的软件进行质量管理和控制,包括执行定期的(比如每天)质量校验和判定,并做如何纠错的决定;根据软件的具体性质和种类,从软件的功能(开发出来的软件是否具备计划的功能)和质量(某一阶段所开发出来的软件有多高的差错率、合格率、差错或瑕疵(Bug)数量和发现率等)方面进行衡量。
o 追踪进度(Progress Tracking):将软件开发的进展如开发的速度(完成多少功能组件),与项目的时间表进行对比来追踪进度。
o 项目状态通报(Status Report):根据所追踪的开发进度以及差错率,向全体项目参加者和赞助者(开发团队的成员、领导、客户等)进行定期(比如每星期)的通报。
o 执行更改控制(Change Control):采用符合自己企业文化和结构的更改控制管理制度和运作流程,对开发出来的软件进行定期的(比如每天)更改控制管理。更改控制管理是软件开发中用来控制所谓的“功能蔓延”,为保证产品能够及时发行而必须采取的关键手段。
o 执行风险管理(Risk Management):对开发过程中发生的各种风险因素(如人员离队、技术不成熟、其他依赖因素延迟等)采取及时的协调和补救措施。
o 执行发行管理:进行软件发行前的管理工作,如进行发行前的纠错决定、管理软件建造流程(Build Process)、对发行版本进行最后的质量检查等。
10. 项目的结束和收尾(Project Closure):
o 进行软件发行后的结尾工作,如系统调试、用户培训、开发团队的项目总结(Postmortem)等。