软件开发项目管理

 

与一般的研发项目不同,软件开发常常被认为是由少数人的灵感或勤奋程度决定的,是不可控的。一般的研发项目,如果遇到超预算、项目延期等,项目经理一定会非常紧张,想尽一切办法来挽救,如果不是的话,可能就会做好卷铺盖走人的准备了。但是软件项目不同,由于大家都认为其不可控,所以如果项目落后的时间只有20%左右的话,项目组很可能就会开庆功宴,而项目经理可能就会获得升职、加薪了。
软件开发的确是与其它产品的开发不同,如汽车的开发,可以很明确地分成几个系统,如底盘、车身、发动机等,每个系统又可分为总成,如底盘可分为悬架、制动、变速器、转向等,如此这般,对整车的要求就由具体的、看得见的不同部分满足了,也就比较好跟踪其进度及质量,总而言之,产品是看得见的。而软件产品则不同,具体表现在:
一、 项目需求变化难于把握:客户的要求也即项目的需求往往是不明确的,也很难用统一的标准来衡量。
二、 过程难于控制:常常是直到项目快结束时才知道可否按时完成。
三、 任务难于量化、计划可行性差:软件产品较难衡量,常常是靠感觉进行。项目经理对风险缺乏充分的考虑,造成计划可行性差。
四、 版本管理混乱、项目间可继承性差:各个项目组间彼此独立,重复开发多。
五、 缺乏可共同执行的标准:公司没有统一的标准,各项目组各自为政,成员在不同项目时遵守不同的标准,导致无所适从。
综上所述,软件开发过程常常处于无序状态,较难监控。但是,是否软件开发只能是这样状态呢?也不尽然,众所周知,印度就有不少软件企业的开发是规范的,可以管理的。也正因为此,印度成为世界上最大的软件输出国。其在软件开发上的经验是一个主要原因,CMM在印度的流行也功不可没。
一般说来,印度的软件公司从几个方面来对开发项目进行管理:
一、 项目生命周期;
二、 项目进度管理;
三、 项目规模的估计;
四、 软件质量控制;
五、 软件配置管理;
六、 风险管理;
七、 项目计划、监督及控制。
接下来将就上述七个问题分别阐述,如何进行软件开发的项目管理,提高软件开发的管理水平,保质、保量地完成开发任务。
软件开发的生命周期包括两方面的内容, 首先是项目应包括哪些阶段,其次是这些阶段的顺序如何。 软件行业的人都知道,一般的软件开发过程包括:需求分析(RA)、软件设计(SD)、编码(Coding)及单元测试(Unit Test)、集成及系统测试(Integration and System Test)、安装(Install)、实施(Implementation)等阶段。
值得一提的是,项目开始之前应经过合同评审,这是非常重要的过程,在ISO质量体系及CMM中都对合同评审有明确的规定。这不仅仅是财务及市场部门的事,作为实际的执行者,项目经理还应从技术的角度提出意见,如公司有无相应的技术、设备、人员等来完成这个项目,也即资源是否足够?能否按时完成?验收的标准是否明确?项目的风险如何?工时(成本)是否合理?等等。因此,在正式进行项目,即需求分析之前,还应有一个项目初始化的阶段(Project Initiation),也可称为计划阶段,来确认上述情况,并制定项目计划、质量计划、配置计划等,并组织资源,确认内、外部的交流的渠道,安排必要的培训等。 另外,项目并不是将软件交给客户就结束了,应该与客户确认移交,并对项目进行分析,总结项目的经验和教训,提高以后项目管理水平,同时,还应将项目的文件归档。这可称之为项目结束阶段(Project Closure)。
根据项目性质的不同,阶段的选取是不同的。比如, 有公司将编码的工作外包, 则其软件开发项目的生命周期中就不包括编码阶段。但是,不论项目的生命同期如何,项目一定应包括初始化、需求分析及结束阶段。 还有一种生命周期为维护生命周期,指在项目完成之后,运行中的维护工作。除了与一般项目一样也有初始化与结束阶段外,还包括系统学习及维护阶段。要注意的是,即使是维护项目,也应制定相应的维护计划、质量计划、配置计划,以及其它相应的准备工作,如资源调配、明确沟通渠道等。系统学习阶段也即需求分析阶段,在这个阶段了解系统。而维护阶段实际上是一个微型的软件开发生命周期,包括:对缺隙或更改申请进行分析即需求分析(RA),分析影响即软件设计(SD),实施变更即进行编程(Coding), 然后进行测试(Test)。在维护生命周期中,最重要的就是对变更的管理。

本文出自 “变革管理 应对挑战” 博客,转载请与作者联系!

你可能感兴趣的:(职场,软件开发,休闲)