5.7 软件项目管理 ★★☆☆☆
5.7.1 项目管理概述
软件项目管理的对象是软件工程项目。它所涉及的范围覆盖了整个软件工程过程。为使软件项目开发获得成功,关键问题是必须对软件项目的工作范围、可能风险、需要资源(人、硬 件/软件)、要实现的任务、经历的里程碑、花费工作量(成本)、进度安排等进行预先计划和执行。
软件项目管理是为了使软件项目能够按照预定的成本、进度、质量顺利完成,而对人员 (People)、 产品 (Product)、 过程 (Process) 和项目 (Project) 进行分析和管理的活动。
5.7.2 软件进度管理
进度是对执行活动和里程碑所制定的工作计划,而进度管理是为了确保项目按期完成所需要的管理过程。
在软件进度管理过程中,一般包括:活动定义、活动排序、活动资源估计、活动历时估计、制定进度计划和进度控制。
1.工作分解结构
工作分解结构 (Work Breakdown Structure,WBS) 如图所示,就是把一个项目,按一定的原则分解成任务,任务再分解成一项项工作,再把一项项工作分配到每个人的日常活动中,直到分解不下去为止。即:项目→任务→工作→ 日常活动。工作分解结构以可交付成果为导向,对项目要素进行的分组,它归纳和定义了项目的整个工作范围,每下降一层代表对项目工作的更详细定义。WBS总是处于计划过程的中心,也是制订进度计划、资源需求、 成本预算、风险管理计划和采购计划等的重要基础。
WBS树形结构中最底层的被称为工作包,是最低层次的可交付成果,它应当由唯一主体负责完成。
WBS 常见的分解方式包括:按产品的物理结构分解、按产品或项目的功能分解、按照实施过程分解、按照项目的实施单位分解、按照项目的目标分解、按部分或只能进行分解等。
任务分解的基本要求。
(1)WBS 的工作包是可控和可管理的,不能过于复杂。
(2)任务分解也不能过细, 一般原则W B S 的树形结构不超过6层。
(3)每个工作包要有一个交付成果。
(4)每个任务必须有明确定义的完成标准。
(5)WBS 必须有利于责任分配。
2.任务活动图
活动定义是指确定完成项目的各个交付成果所必须进行的各项具体活动,需要明确每个活动的前驱、持续时间、必须完成日期、里程碑或交付成果。
前驱指的是该活动开始之前必须发生的事件或事件集;
持续时间是指完成该活动的时间长度(一般单位为天或周);
必须完成日期指的是该活动必须完成的具体日期;
里程碑指的是判定该活动完成的一组条件。
每个活动在明确了前驱、必须完成日期等内容后,就确定了活动执行的前后顺序。根据活动顺序就可以得到对应的任务活动图。任务活动图是项目进度管理、项目成本管理等一系列项目管理活动的基础。
在项目管理中,目前通常采用甘特图等方式来展示和管理项目活动。
5.7.3 软件配置管理
软件配置管理 (Software Configuration Management,SCM) 是一种标识、组织和控制修改 的技术。软件配置管理应用于整个软件工程过程。SCM 目标就是为了标识变更、控制变更、确保变更 正确实现并向其他有关人员报告变更。SCM 是一种标识、组织和控制修改的技术,目的是使错误降为最小并最有效地提高生产效率。
软件配置管理核心内容包括版本控制和变更控制。
(1)版本控制 (Version Control)。版本控制是指对软件开发过程中各种程序代码、配置文 件及说明文档等文件变更的管理,是软件配置管理的核心思想之一。版本控制最主要的功能就是追踪文件的变更,记录文件的版本变更;另一个重要功能是并行开发,版本控制可以有效地解决版本的同步以及不同开发者之间的开发通信问题,提高协同开发的效率。
(2)变更控制 (Change Control)。变更控制的目的是对变更进行管理,确保变更有序进行。项目中引起变更的因素有两个: 一是来自外部的变更要求,如客户要求修改工作范围和需求等;二是开发过程内部的变更要求,如为解决测试中发现的一些错误而修改源码甚至设计。
5.7.4 软件质量管理
从管理角度出发,可以将影响软件质量的因素划分为3组:产品运行、产品修改和产品转移。
1.软件质量保证
软件质量保证 (Software Quality Assurance,SQA) 是建立一套有计划,有系统的方法,来 向管理层保证拟定出的标准、步骤、实践和方法能够正确地被所有项目所采用。它通过对软件产品和活动进行评审和审计来 验证软件是合乎标准的。软件质量保证组在项目开始时就一起参与建立计划、标准和过程。
软件质量保证的关注点在于一开始就避免缺陷的产生。质量保证的主要目标是:
(1)事前预防工作,例如,着重于缺陷预防而不是缺陷检查。
(2)尽量在刚刚引入缺陷时即将其捕获,而不是让缺陷扩散到下一个阶段。
(3)作用于过程而不是最终产品,因此它有可能会带来广泛的影响与巨大的收益。
(4)贯穿于所有的活动之中,而不是只集中于一点。
软件质量保证的目标是以独立审查的方式,从第三方的角度监控软件开发任务的执行,就软件项目是否正确遵循已制订的计划、标准和规程给开发人员和管理层提供反映产品和过程质量的信息和数据,提高项目透明度,同时辅助软件工程取得高质量的软件产品。
软件质量保证的主要作用是给管理者提供预定义的软件过程的保证,因此 SQA组织要保证如下内容的实现:选定的开发方法被采用、选定的标准和规程得到采用和遵循、进行独立的审查、偏离标准和规程的问题得到及时的反映和处理、项目定义的每个软件任务得到实际的执行。
软件质量保证的主要任务是以下3个方面。
(1)SQA 审计与评审。SQA 审计包括对软件工作产品、软件工具和设备的审计,评价是否符合组织规定的标准。SQA评审的主要任务是保证软件工作组的活动与预定的软件过程一致,确保软件过程在软件产品的生产中得到遵循。
(2)SQA报告。SQA人员应记录工作的结果,并写入到报告,发布给相关的人员。SQA报告的发布应遵循三条原则:SQA和高级管理者之间应有直接沟通的渠道;SQA报告必须发布给软件工程组,但不必发布给项目管理人员;在可能的情况下向关心软件质量的人发布SQA报告。
(3)处理不符合问题。这是 SQA 的一个重要的任务, SQA人员要对工作过程中发现的问 题进行处理及时向有关人员及高级管理者反映。
2.软件质量认证
质量认证用来检验整个企业的质量水平,注重软件企业的整体资质,全面考察软件企业的整体质量体系,检验该企业是否具有设计、开发和生产符合质量要求的软件的能力。
目前国内软件企业主要采用的是 ISO 9000 和能力成熟度模型 (Capability Maturity Model,CMM)。
1)ISO 9000
ISO 9000不是指一个 标准,而是一组标准的统称。
软件企业经常采用的是 ISO 9001:1994 《品质体系设计、开发、生产、安装的品质保证模式》。
ISO 9001 包括设计、开发、生产、安装和服务等活动的质量保障模式,该标准规定了质量 体系的20个方面的质量要求,覆盖了全部设计和开发活动。
2)CMM
5.7.5 软件风险管理
软件项目风险管理是软件项目管理的重要内容。在进行软件项目风险管理时,要辨识风险,评估它们出现的概率及产生的影响,然后建立一个规划来管理风险。风险管理的主要目标是预防风险。软件项目风险是指在软件开发过程中遇到的预算和进度等方面的问题以及这些问题对软件项目的影响。
主要分为:风险分析(辨别、分析、评估)、风险控制(计划、控制、监督)