随着信息技术的飞速发展,软件产品的规模也越来越庞大,个人单打独斗的作坊式开发方式已经越来越不适应发展的需要。各软件企业都在积极将软件项目管理引入开发活动中,对开发实行有效的管理。我公司是西安一家中型软件企业,在公司中已经实行了项目管理制度,软件项目管理是整个项目管理中的一个重要组成部分。
从概念上讲,软件项目管理是为了使软件项目能够按照预定的成本、进度、质量顺利完成,而对成本、人员、进度、质量、风险等进行分析和管理的活动。实际上,软件项目管理的意义不仅仅如此,进行软件项目管理有利于将开发人员的个人开发能力转化成企业的开发能力,企业的软件开发能力越高,表明这个企业的软件生产越趋向于成熟,企业越能够稳定发展(即减小开发风险)。
软件开发不同于其他产品的制造,软件的整个过程都是设计过程(没有制造过程);另外,软件开发不需要使用大量的物质资源,而主要是人力资源;并且,软件开发的产品只是程序代码和技术文件,并没有其他的物质结果。基于上述特点,软件项目管理与其他项目管理相比,有很大的独特性。
二、软件项目管理的组织模式
软件项目可以是一个单独的开发项目,也可以与产品项目组成一个完整的软件产品项目。如果是订单开发,则成立软件项目组即可;如果是产品开发,需成立软件项目组和产品项目(负责市场调研和销售),组成软件产品项目组。
公司实行项目管理时,首先要成立项目管理委员会,项目管理委员会下设项目管理小组、项目评审小组和软件产品项目组。
1、项目管理委员会
项目管理委员会是公司项目管理的最高决策机构,一般由公司总经理、副总经理组成。主要职责如下:
(1)依照项目管理相关制度,管理项目;
(2)监督项目管理相关制度的执行;
(3)对项目立项、项目撤消进行决策;
(4)任命项目管理小组组长、项目评审委员会主任、项目组组长.
2、项目管理小组
项目管理小组对项目管理委员会负责,一般由公司管理人员组成。主要职责如下:
(1)草拟项目管理的各项制度;
(2)组织项目阶段评审;
(3)保存项目过程中的相关文件和数据;
(4)为优化项目管理提出建议。
3、项目评审小组
项目评审小组对项目管理委员会负责,可下设开发评审小组和产品评审小组,一般由公司技术专家和市场专家组成。主要职责如下:
(1)对项目可行性报告进行评审;
(2)对市场计划和阶段报告进行评审;
(3)对开发计划和阶段报告进行评审;
(4)项目结束时,对项目总结报告进行评审。
4、软件产品项目组
软件产品项目组对项目管理委员会负责,可下设软件项目组和产品项目组。软件项目组和产品项目组分别设开发经理和产品经理。成员一般由公司技术人员和市场人员构成。主要职责是:根据项目管理委员会的安排具体负责项目的软件开发和市场调研及销售工作。
三、软件项目管理的内容
从软件工程的角度讲,软件开发主要分为六个阶段:需求分析阶段、概要设计阶段、详细设计阶段、编码阶段、测试阶段、安装及维护阶段。不论是作坊式开发,还是团队协作开发,这六个阶段都是不可缺少的。
根据公司实际情况,公司在进行软件项目管理时,重点将软件配置管理、软件质量管理、软件风险管理及开发人员管理四方面内容导入软件开发的整个阶段。
在八十年代初,著名软件工程专家B.W.Boehm总结出了软件开发时需遵循的七条基本原则,同样,我们在进行软件项目管理时,也应该遵循这七条原则。它们是:
(1)用分阶段的生命周期计划严格管理;
(2)坚持进行阶段评审;
(3)实行严格的产品控制;
(4)采用现代程序设计技术;
(5)结果应能够清楚地审查;
(6)开发小组地人员应该少而精;
(7)承认不断改进软件工程实践地必要性。
四、编写《软件项目计划书》
项目组成立的第一件事是编写《软件项目计划书》,在计划书中描述开发日程安排、资源需求、项目管理等各项情况的大体内容。计划书主要向公司各相关人员发放,使他们大体了解该软件项目的情况。对于计划书的每个内容,都应有相应具体实施手册,这些手册是供项目组相关成员使用的。
《软件项目计划书》一般应该包括下述内容:
1.引言
1.1计划的目的
1.2项目的范围和目标
1.2.1范围描述
1.2.2主要功能
1.2.3性能
1.2.4管理和技术约束
2.项目估算
2.1使用的历史数据
2.2使用的评估技术
2.3工作量、成本、时间估算
3.风险管理战略
3.1风险识别
3.2有关风险的讨论
3.3风险管理计划
3.3.1风险计划
3.3.2风险监视
3.3.3风险管理
4.日程
4.1项目工作分解结构
4.2时限图(甘特图)
4.3资源表
5.项目资源
5.1人员
5.2硬件和软件
5.3特别资源
6.人员组织
6.1组织结构
6.2管理报告
7.跟踪和控制机制
7.1质量保证和控制
7.2变化管理和控制
8.附录
五、软件配置管理
是否进行配置管理与软件的规模有关,软件的规模越大,配置管理就显得越重要。软件配置管理简称SCM(Software Configuration Management的缩写),是在团队开发中,标识、控制和管理软件变更的一种管理。配置管理的使用取决于项目规模和复杂性以及风险水平。
1、目前软件开发中面临的问题
。在有限的时间、资金内,要满足不断增长的软件产品质量要求;
。开发的环境日益复杂,代码共享日益困难,需跨越的平台增多;
。程序的规模越来越大;
。软件的重用性需要提高;
。软件的维护越来越困难。
2、软件配置管理应提供的功能
在ISO9000.3中,对配置管理系统的功能作了如下描述:
。唯一地标识每个软件项的版本;
。标识共同构成一完整产品的特定版本的每一软件项的版本;
。控制由两个或多个独立工作的人员同时对一给定软件项的更新;
。控制由两个或多个独立工作的人员同时对一给定软件项的更新;
。按要求在一个或多个位置对复杂产品的更新进行协调;
。标识并跟踪所有的措施和更改;这些措施和更改是在从开始直到放行期间,由于更改请求或问题引起的。
3、版本管理
软件配置管理分为版本管理、问题跟踪和建立管理三个部分,其中版本管理是基础。版本管理应完成以下主要任务:
。建立项目;
。重构任何修订版的某一项或某一文件;
。利用加锁技术防止覆盖;
。当增加一个修订版时要求输入变更描述;
。提供比较任意两个修订版的使用工具;
。采用增量存储方式;
。提供对修订版历史和锁定状态的报告功能;
。提供归并功能;
。允许在任何时候重构任何版本;
。权限的设置;
。晋升模型的建立;
。提供各种报告。
4、配置管理软件PVCS 6.0
PVCS6.0是一套非常优秀的配置管理软件,它能够实现配置管理中的各项要求,并且能和多种流行开发平台集成,为配置管理提供了很大的方便。
六、软件质量管理
随着软件开发的规模越来越大,软件的质量问题显得越来越突出。软件质量的控制不单单是一个软件测试问题,在软件开发的所有阶段都应该引入质量管理。我公司除加强了国家标准"信息技术软件生存期过程"(GB/T8566--1995)的规范管理外,还积极为通过ISO 9000.3做准备。
1、软件质量保证计划
在进行软件开发前,需要有一个《软件质量保证计划》。目前较常用的是ANSI/IEEE STOL
730--1984,983--1986标准,包括以下内容:
1.计划目的
2.参考文献
3.管理
3.1.组织
3.2.任务
3.3.责任
4.文档
4.1.目的
4.2.要求的软件工程文档
4.3.其他文档
5.标准和约定
5.1.目的
5.2.约定
6.评审和审计
6.1.目的
6.2.评审要求
6.2.1.软件需求的评审
6.2.2.设计评审
6.2.3.软件验证和确认评审
6.2.4.功能评审
6.2.5.物理评审
6.2.6.内部过程评审
6.2.7.管理评审
7.测试
8.问题报告和改正活动
9.工具、技术和方法
10.媒体控制
11.供应者控制
12.记录、收集、维护和保密
13.培训
14.风险管理
2、质量管理的基本原则
。控制所有过程的质量;
。过程控制的出发点是预防不合格;