【软考架构】软件工程:软件项目管理
软件项目管理
项目管理概述
软件项目管理的提出源于20世纪70年代中期的美国:美国国防部研究发现,70%的软件开发项目问题(如延期、超支、质量不达标)源于管理不善而非技术,因此软件开发领域开始重视管理环节。但到20世纪90年代中期,项目管理不善的问题仍普遍存在。
其特殊性体现在两点:
- 软件是纯知识产品,开发进度、质量、生产效率难以估计和保证;
- 软件系统复杂性高,开发过程中风险难以预见和控制。
软件项目管理的对象是软件工程项目,覆盖整个软件工程过程。核心是在技术工作开始前就对项目的工作范围、风险、资源(人、软硬件)、任务、里程碑、成本、进度等进行预先计划,并在整个软件生命周期中持续执行,直至项目结束。
管理目标是确保项目按预定成本、进度、质量完成,核心是对人员(People)、产品(Product)、过程(Process)、项目(Project) 四大要素的分析与管理。后续将围绕进度、配置、质量和风险管理展开介绍。
软件进度管理
进度管理是为确保项目按期完成的管理过程,核心是对活动的计划与控制,包括6个环节:活动定义、活动排序、活动资源估计、活动历时估计、制定进度计划、进度控制。
-
工作分解结构(WBS)
软件项目因复杂庞大,需层层分解为可管理的小任务,即“项目→任务→工作→日常活动”。WBS是按可交付成果导向对项目要素的分组,每下降一层代表更详细的工作定义,是制定进度计划、资源需求、成本预算等的基础。
- 工作包:WBS树形结构最底层,是最低层次的可交付成果,由唯一主体负责。
- 分解方式:按产品物理结构、功能、实施过程、实施单位、目标等分解。
- 基本要求:
- 工作包需可控、可管理,不过于复杂;
- 分解层次不超过6层;
- 每个工作包有明确交付成果;
- 每个任务有明确定义的完成标准;
- 有利于责任分配。
-
任务活动图
工作分解后需明确活动的前驱(开始前必须发生的事件)、持续时间、必须完成日期、里程碑等,以确定活动间的先后顺序,形成任务活动图。它是进度管理、成本管理的基础,常用甘特图展示和管理。
软件配置管理(SCM)
SCM是标识、组织和控制软件修改的技术,应用于整个软件工程过程。其目标是管理变更(标识、控制、确保正确实现、报告变更),以减少错误、提高生产效率。核心内容包括:
-
版本控制
对软件开发中程序代码、配置文件、文档等的变更进行管理,核心功能是:- 追踪变更:记录“何时、何人、修改了什么”,每次变更后版本号递增;
- 支持并行开发:解决多人协同的版本同步、通信问题,通过分支与合并处理不同版本的Bug修正。
-
变更控制
目的不是阻止变更,而是确保变更有序进行。引发变更的因素包括:- 外部变更(如客户修改需求):最难处理,因IT项目需求变更概率高,后期变更工作量大;
- 内部变更(如为修复测试错误修改源码或设计)。
软件质量管理
软件质量指软件与明确/隐含需求的一致程度,具体表现为符合功能性能需求、开发标准及隐含特征的程度。影响因素可分为三组:产品运行、产品修改、产品转移。
-
软件质量保证(Software Quality Assurance,SQA)
建立有计划、系统的方法,确保项目遵循标准、步骤和实践,核心是“过程可见”,通过评审和审计验证合规性。- 目标:
- 事前预防缺陷(而非事后检查);
- 尽早捕获缺陷,避免扩散;
- 作用于过程而非最终产品;
- 贯穿所有活动。
- 主要任务:
- 审计与评审:审计工作产品、工具、设备是否符合标准;评审活动是否与预定过程一致;
- 报告:记录结果并发布,需保证SQA与高层直接沟通、向工程组发布、向关心质量者发布;
- 处理不符合问题:及时向相关人员及高层反映问题。
- 目标:
-
软件质量认证
检验企业整体质量水平,评估其设计、开发、生产符合质量要求软件的能力,主要标准包括:- ISO 9000:国际标准化组织制定的系列标准,其中ISO 9001:1994用于证实组织满足顾客及法规要求的能力,覆盖设计、开发等20项质量要求;
- CMM(能力成熟度模型):卡内基梅隆大学软件工程研究所研制,是软件生产过程及企业成熟度等级认证标准,我国企业多采用。
软件风险管理
风险管理是软件项目管理的重要内容,目标是预防风险(风险指可能影响预算、进度的问题,若发生可能导致延期、超支甚至项目失败)。核心流程是:辨识风险→评估概率与影响→制定管理规划。
主要风险管理体系包括:
- Boehm体系:分为风险估计(辨识、分析、排序)和风险控制(计划、处理、监督),偏重理论;
- Charette体系:分为风险分析(辨识、估计、评价)和风险管理(计划、控制、监督),与Boehm体系接近,偏重理论;
- CMU-SEI体系:基于实践的全面管理体系,包括SRE、CRM(持续风险管理)、TRM(团队风险管理),与CMM配合,将需求方纳入风险管理要素。