70%的失败软件项目是因为管理不善,而不是技术。技术只会影响到局部。
加强项目管理,可以控制财务成本、提高资源利用率;改进客户关系,缩短开发时间,降低成本,提高利润、生产率、产品质量和可靠性,完善公司内部协调等。
软件开发管理分为
软件范围管理
软件进度管理
软件成本管理
软件配置管理
软件质量管理
软件风险管理
开发人员管理
7个方面。
一、项目的范围、时间和成本
(一)项目范围管理
项目的任务是什么?发起人要通过项目获得什么样的产品和服务?这些都属于项目范围的范畴。
包括
项目启动、范围计划编制、范围定义、范围核实和范围变更控制
5个部分。其中正确的范围定义是项目成功的关键。
1、项目启动
2、范围计划编制
将项目所需工作渐进明细和形成文件
3、范围定义
将项目需要交付的成果细化。
正确的范围定义是项目成功的关键,如果范围定义不明确,变更会使成本大大超出预算,破坏项目开发节奏,打击士气。
4、范围核实
项目干系人(发起人、客户)正式接受项目范围的过程。范围核实需要审查可交付成果和工作结果(即验收?),如果项目被提前终止,范围核实过程应当对项目完成程度建立文档。
5、范围变更
确认变更范围和是否已发生,确保各方对变更的接纳,以及对变更进行管理。
变更管理必须与其他管理结合一起使用,如成本控制,进度控制、质量控制。
(二)项目成本管理
项目需要花费多少?资金来源如何?
项目成本不仅包括开发成本,也包括开发之前立项阶段及软件在运行中的费用,以及培训、各种硬件设施费用等。
所谓项目成本管理,是保证在批准预算内完成项目所需要的过程。包括
资源计划编制、成本估算、成本预算、成本控制
4个主要部分内容。
成本控制必须与其他管理结合,如成本偏差应对不当,容易引起质量和进度问题,甚至项目后期出现无法接受的风险。
(三)项目时间管理
项目需要多长时间?进度如何安排?
时间管理确保项目按时完成。包括
活动定义、活动排序、活动历时估算、进度计划编制、进度控制
5个部分。
二、配置管理与文档管理
(一)软件配置管理
记录产品历史,维护产品版本。工具比如有VSS,SVN等。
(二)软件文档管理
包括
开发文档、产品文档、管理文档
三、软件需求管理
需求管理的目的是控制和维持事先约定,保证项目开发过程的一致性,使用户能获得最终想得到的产品。
(一)需求变更
新增或改变原有需求。
1、项目启动阶段的变更预防
需求分析阶段工作越到位,变更就越少,即使有,则可能是超出合同范围,需要另外处理。
2、项目实施阶段的变更处理
看变更是否可控。应该树立变更必然、可控、有益。需要注意以下几点:
1)需求与投入有关。需求变,则软件投入也要变,是有代价的,否则客户得寸进尺。
2)需求变更要经过出资者的认可,使变更有成本概念
3)变更再小,也要经过正规需求管理流程
4)注意沟通技巧
(二)需求跟踪
定义需求变更流程,分析需求变更影响,控制变化的版本,维护需求变更记录,跟踪每项需求状态。
四、软件开发的质量与风险
(一)软件质量管理
1、质量计划
在计划阶段,主要做计划,定义优先级,提供相应准备或资源
2、质量保证
对软件质量进行测量、分析,提供质量改进的依据。
3、质量控制
评审、调试和测试,监视项目,判断是否达标,杜绝导致项目不合格的根源。
(二)项目风险管理
1、项目风险
1)内部技术风险
新技术,不切实际的要求
2)内部非技术风险
公司战略,预算等非技术因素
3)外部法律风险
许可,专利等
4)外部非法律风险
政治,天灾人祸,影响最大
2、风险管理
1)风险列表
2)风险分析
3)风险应对
4)风险监控
五、人力资源管理
追求最有效地使用项目人员。
(一)组织规划
划分项目角色、职责等。组织形式有三种方案:
1、垂直团队
团队成员多为多面手,一人身兼数职。功能模块分配给个人或小组,负责完成。
优点:功能实现目标清晰,人员得到锻炼;
缺点:可能不是最有效率的,完成的质量也不是最好的。
2、水平团队
团队成员多为专家。一人或小组同时处理多个功能模块,每个成员负责自己擅长部分。
优点:效率、质量高
缺点:沟通成本高,项目管理难度大
3、混合团队
专家和多面手联合。多面手完整负责一个功能模块,专家在其间合纵连横。优点和缺点都是前两个的联合。
项目推进过程中,团队成员数量应该不是恒定的,否则会出现头尾过剩,中间不足的情况。
(二)人员招募
项目经理是团队的核心,直接影响项目的成败。一般要求其具备以下能力:
1、领导力
1)授权与分配职责
2)善于激励
3)以身作则
4)正确的抉择
2、沟通
及时沟通,集思广益,
3、人际交往
协调、争取资源
4、抗压
5、培养
6、时间管理
(三)团队建设
形成一个有战斗力的团队。
六、软件的运行与评价
软件交付后,用户的打分。通常,关注以下几点:
1、稳定性和可靠性
2、是否满足需求
3、带来的好处
七、软件过程改进
有CMM、CMMI、ISO9000等模型。