关于软件工程管理过程
软件项目管理是为了使软件项目能够按照预定的成本、进度、质量顺利完成,而对成本、人员、进度、质量、风险等进行分析和管理的活动。实际上,软件项目管理的意义不仅仅如此,进行软件项目管理有利于将开发人员的个人开发能力转化成软件组织的开发能力。软件组织 的开发能力越高,表明这个组织的软件生产越趋向于成熟,越能够稳定地发展。
1.软件质量管理
1.1规范化标准
质量管理不等于验收。大型工程进行前,开发者应当充分考虑软件开发过程规范化,而不仅限于测试阶段。规范内容包括:设计标准、代码形式规范化、测试计划、建立规范的开发文档等。开发过程中应当随时按照标准进行审查,及时发现问题并改正。
1.2开发文档
软件开发文档与代码一样重要。软件开发文档不只存在于开发过程中,它对于软件投入使用后的升级、维护等都有着重要意义。是否完成一个完整、规范的软件开发文档同样是评价软件质量的重要因素。
1.3软件测试
测试是指在已建成的环境中,使用正常的输入执行系统功能的过程。如果测试结果与期望结果不符,可能是系统发生错误或资源不充分。每次测试的测试计划、测试过程、测试结果会对软件开发做出指导,是软件工程质量的重要组成因素。
2.软件配置管理
软件配置管理是一种标识、组织修改的工具。项目进行过程中,不可避免地需要进行反复修改,无组织的修改必然会导致混乱。而软件配置管理正是一种标识修改、控制变更的技术,使错误的可能大大降低,有效提高效率。
2.1过程标识
对软件开发过程中所有项目进行唯一标识,便于管理。这一标识应当简单易记录,使所有开发人员熟知。
2.2版本控制
软件开发中会产生各式各样的问题。有些时候,软件开发进行一段时间后才能发现其中存在重大问题,需要从之前某个版本重新开始;有些软件需要发布测试版并不断进行更新。通常能想到最简单的方法是进行逐次编号,保存所有版本。但这样做存在很大缺陷,因为通常相近的两个版本差异很小,需要执行检索时耗时耗力。因此,一个高效的版本控制方式是必不可少的。
2.3并行开发
如果需要多个开发人员同时对同一个文件进行开发,可以使用并行开发的方式,多个开发人员同时对同一个版本的文件加标记并进行操作。操作结束后,对所有开发人员提交的版本进行比对,合并完成下一个版本。
3.组织模式
该部分涉及软件开发项目组的人员管理。一般而言,项目组中每位成员都会负责各自的一部分内容。但根据组织模式的不同,成员间互相交流的方式也不同,对项目的侧重点也不同。
3.1封闭式范型
传统的层次关系。项目组有一些底层开发人员,分别负责各自的一部分任务;一位管理层人员负责项目进度的整体把握,并能向开发人员指出方向,指正错误。这种方式效率高,适合完成模块化问题与流水线式问题,但面对较为困难的问题时,由于沟通较少,往往会束手无策。
3.2松散式范型
项目组每个人都要为工作进展提供思路,依赖于小组成员的主动性。当需要产生创新时,这种小组模式很有优势。由于不能明确划分任务,一般的工作效率很低。
3.3开放式范型
试图在封闭式范型下激发成员创造力的方法。工作进行过程中伴随有大量的通信,同时决策会在小组讨论后产生。能有效简化复杂的问题,但无论面对什么问题,效率都不会非常高。
3.4同步式范型
问题的划分取决于问题形式而不是项目负责人。同样地,开发过程中通信很少,主要针对一些简单、阶段化明确的问题。
4.软件过程能力
4.1 ISO9000系列标准
ISO9000是国际标准化组织(ISO)制定的世界上第一套质量管理和质量保证标准。注意:这套标准是面向各行各业建立的。软件企业贯彻实施ISO9000认证,应当选择ISO9001标准,而对于软件工程,ISO针对软件开发特点专门制定了相应的补充性指南ISO9000-3标准。虽然ISO9000-3为软件企业更好地应用ISO9001提供了指导,但仍存在许多问题:标 准仍是关于质量管理的过程和指南的一般性描述;虽然专门针对软件开发组织的质量体系,但没有从具体开发项目层次上考虑度量质量;过分强调严格的过程和文档化容易导致官僚行为,而并非从根本上提高组织的质量意识,并有可能阻碍软件开发的新思想和新方法的发展等。
4.2 软件生产能力成熟度模型——CMM
CMM是由美国卡内基梅隆大学的软件工程研究所受美国国防部委托研究制定的一种软件评估标准,主要用于软件开发过程和软件开发能力的评估和改进,目前已成为国际上最流行、最实用的软件生产过程标准和软件企业成熟度等级认证标准。
CMM为软件企业的过程能力提供了一个阶梯式的进化框架,将软件过程改进的进化步骤从低到高组织成5个成熟度等级:初始级、可重复级、已定义级、已管理级和优化级,每一个成熟度等级为连续改进提供一个台阶。除第一级外每一等级包含一组过程目标,通过实施相应的一组关键过程域(KPA)达到这一组过程目标,每一个KPA包含若干关键实践,关键实践都统一按5个公共属性进行组织,即:执行约定、执行能力、执行活动、度量分析和验证实施。当某一成熟度等级中的KPA的所有关键实践都按要求得到实施时,就能实现目 标,表明达到了这个成熟级别,可以向下一个级别迈进。
4.3 ISO9000与CMM的区别
CMM建立之初便针对软件工程,相对于ISO9000,即使ISO900-3的存在,CMM扔有着先天优势;对最新都的ISO9001,其通用性仍然较强,而CMM只针对大型软件企业。
ISO9001与CMM均强调持续改进,但CMM描述了更详细的软件开发的质量特性,其改进过程更具操作性。CMM的5个成熟度等级,既是判定标准,也是指导方向。
对管理体系,CMM没有明确说明,而ISO9001提出建立完整的管理体系。相对于组织,CMM更侧重管理软件过程。
项目组选择过程控制标准应按照实际需求。CMM起步较晚,尚缺少可用经验。
参考文献
软件企业的质量标准:ISO9000与CMM的比较 王求真 柳俊