软件项目管理精华解析
软件项目管理的定义
软件工程的活动包括问题定义、可行性研究、需求分析、设计、实现、确认、支持等,所有这些活动都必须进行管理,软件项目管理贯穿于软件工程的演化过程之中,如图1所示。
软件项目管理的过程
管理的过程分为如下几个步骤:
(1)启动软件项目
启动软件项目是指必须明确项目的目标和范围、考虑可能的解决方案以及技术和管理上的要求等,这些信息是软件项目运行和管理的基础。
(2)制定项目计划
软件项目一旦启动,就必须制定项目计划。计划的制定以下面的活动为依据。
估算项目所需要的工作量
估算项目所需要的资源
根据工作量制定进度计划,继而进行资源分配
做出配置管理计划
(3)跟踪及控制项目计划
在软件项目进行过程中,严格遵守项目计划,对于一些不可避免的变更,要进行适当的控制和调整,但要确保计划的完整性和一致性。
(4)评审项目计划
对项目计划的完成程度进行评审。并对项目的执行情况进行评价。
(5)编写管理文档
项目管理人员根据软件合同确定软件项目是否完成。项目一旦完成,则检查项目完成的结果和中间记录文档,并把所有的结果记录下来形成文档而保存。
软件项目管理的内容
软件项目管理的内容涉及上述软件项目管理过程的方方面面,概括起来主要有如下几项。
1、目标
需求管理的目的是在客户和处理客户需求的软件项目组之间建立对客户需求的共同理解。需求管理的目标有两个:
使软件需求受控,并建立供软件工程和管理使用的需求基线。
使软件计划、产品和活动与软件需求保持一致。
2、原则
为进行有效的需求管理,一般要遵循如下五条原则:
需求一定要分类管理:进行软件项目管理的时候,一定要将软件需求分出层次。不同层次需求的侧重点、描述方式、管理方式是不同的。
需求必须分优先级:在软件项目中,如果出现过多的需求,通常会导致项目超出预算和预定进度,最终导致软件项目的失败,因而需求的优先级可能比需求本身更加重要。
需求必须文档化:需求必须有文档记录。该文档必须是正确的、最新的、可管理的、可理解的,是经过验证的,是在受控的状态下变更的。
需求一旦变化,就必须对需求变更的影响进行评估无论需求变化的程度如何,只要需求变化了就必须进行评估,这是基本的原则。
需求管理必须与需求工程的其他活动紧密整合进行需求管理一定不能脱离需求工程,需求工程包括了需求获取、需求分析、需求描述、需求验证、需求管理,因而需求管理必须与前面的几个需求阶段保持密切相关。
3、需求管理活动
需求管理是一个对系统需求变更了解和控制的过程。初始需求导出的同时就启动了需求管理规划,一旦形成了需求文档的草稿版本,需求活动就开始了。
软件项目估算与进度管理
1、软件项目估算
软件项目估算包括工作量估算和成本估算两个方面。软件估算作为软件项目管理的一项重要内容,是确保软件项目成功的关键因素。估算是指通过预测构造软件项目所需要的工作量的过程。初步的估算用于确定软件项目的可行性,详细的估算用于指导项目计划的制定。
2、软件规模——工作分解结构
对软件项目进行估算遇到的第一个问题就是软件规模,即软件的程序量。软件规模是软件工作量的主要影响因素。软件项目的设计有一个分层结构,这一分层结构就对应着工作分解结构(WBS,Work Breakdown Structure),它将软件过程和软件产品结构联系起来。图2是一个典型的WBS结构。
3、软件项目成本估算
成本估算是对完成软件项目所需费用的估计和计划,是软件项目计划中的一个重要组成部分。成本估算步骤如下:
建立目标-----规划需要的数据和资源------确定软件需求------拟定可行的细节------运用多种独立的技术和原始资料------比较并迭代各个估算值------随访跟踪。
4、软件项目进度管理
制定项目计划:项目计划在项目开始的时候制定,并随着项目的进展不断发展。软件项目计划的要素包括目标、合理的概念设计、工作分解结构、规模设计、工作量估计和项目进度安排。项目计划为管理者提供了根据计划定期评审和跟踪项目进展的基础。
进度安排:在确定了项目的资源(总成本及时间等)后,把其分配到各个项目开发阶段中,即确定项目的进度。项目各阶段的工作量可以参考表2
软件开发过程
我们用瀑布模型来描述一个软件开发的生命周期,如图3所示:
生命周期阶段与文档、角色间的关系
软件开发生命周期与文档、角色之间的关系见表3:
项目角色职能
项目经理:
管理整个项目过程。包括制定计划、项目跟踪、项目成员的角色分配、协调、管理,软件配置管理,文挡标准制定,文挡审查等。
技术经理:
对项目的技术及方案总体把握,配合系统分析员做一些大的工作,审查系统分析员做好的各种设计,对系统分析员提出的问题一起去解决。
系统分析员:
和项目经理一起参与需求分析,形成需求规格说明文档。根据需求规格说明文挡做概要设计,形成概要设计文挡。根据概要设计文挡做详细设计文挡。在编码及测试阶段协助程序员、测试人员编码和测试。
程序员:
根据详细设计文档进行编码,并对自己的代码模块进行单元测试,形成单元测试报告。
测试员:
在编码完成后,做系统测试,形成测试报告,通知项目经理测试结果。
文档管理员:
对所有项目文档进行管理,保持所有文挡的同步与一致。
项目成员结构
项目实施阶段
整个项目分为三个阶段:开始阶段、实施阶段、收尾阶段。
1、项目开始阶段
确定项目组成员
确定组织结构
确定项目组成员在项目中的具体角色及其工作职责。
2、项目实施阶段
项目经理制定项目开发计划。
准备基础设施(软件、文档摸板、工具)。
按照项目开发计划由项目经理组织实施。
每周定期召开项目组全体成员会议。会议内容包括:阶段总结、当前项目开发进度、下阶段计划安排、当前遇到的各种困难(技术上的、或组织上的或人力上的等等)。
项目组成员每周撰写周计划、周总结。
项目所有相关文档、代码要保持同步更新及版本一致。
项目组成员在每天开始工作前,下载所有最新文档与代码。在每天工作结束后上传所有自己更新的文档与代码。
3、项目收尾阶段
总结
文件存档