2.6 软件维护
软件经过测试,交付给用户后,在使用和运行过程中对软件产品进行的修改就是维护。
软件维护占整个软件生命周期的60%~80%,维护的类型主要有以下3种。
- 改正性维护:为了识别和纠正软件错误、改正软件性能上的缺陷、排除实施中的误使用,应当进行的诊断和改正错误的过程就叫做改正性维护。
- 适应性维护:在使用过程中,外部环境(新的硬、软件配置)、数据环境(数据库、数据格式、数据输入/输出方式、数据存储介质)可能发生变化。为使软件适应这种变化,而去修改软件的过程就叫做适应性维护。
- 完善性维护:在软件的使用过程中,用户往往会对软件提出新的功能与性能要求。为了满足这些要求,需要修改或再开发软件,以扩充软件功能、增强软件性能、改进加工效率、提高软件的可维护性。这种情况下进行的维护活动叫做完善性维护。
除了以上3类维护之外,还有一类维护活动,叫做预防性维护。这是指预先提高软件的可维护性、可靠性等,为以后进一步改进软件打下良好基础。
影响维护工作量的因素主要有系统大小、程序设计语言、系统年龄、数据库技术的应用、软件开发技术等5个方面。
对程序的修改,必须事先做出计划,周密有效地实施修改。在修改时,要防止修改程序的副作用(修改代码的副作用、修改数据的副作用、修改文档的副作用)。在将修改后的程序提交用户之前,需要进行充分的确认和测试,以保证整个修改后的程序的正确性。这种验证可分为静态确认、计算机确认和维护后的验收。
2.7软件质量管理
软件质量是指软件特性的综合,即软件满足规定或潜在用户需求的能力。
软件质量保证是指为保证软件系统或软件产品充分满足用户要求的质量而进行的有计划、有组织的活动,这些活动贯穿于软件生产的各个阶段即整个生命周期。
软件质量特性度量有两类:预测型和验收型。
- 预测度量是利用定量或定性的方法,估算软件质量的评价值,以得到软件质量的比较精确的估算值。
- 验收度量是在软件开发各阶段的检查点,对软件的要求质量进行确认性检查的具体评价值,它是对开发过程中的预测进行评价。
预测度量有两种。第一种叫做尺度度量,这是一种定量度量。它适用于一些能够直接度量的特性,例如,出错率定义为:错误数/KLOC/单位时间。第二种叫做二元度量,这是一种定性度量。它适用于一些只能间接度量的特性,例如,可使用性、灵活性等等。
与硬件等其他产品相比,软件产品的质量有以下特点:
- 对于不同类型的软件产品,其所考察的质量属性的侧重点不一样。
- 软件产品的质量属性很难量化,也没有相应的国际标准、国家标准或行业标准。
- 因为没有一个“通用”的标准来衡量软件质量的好坏,所以,软件产品的质量没有绝对的合格/不合格界限。因此,一般来说,凡是满足了用户需求的软件,就是好的软件。
- 软件产品不可能做到“零缺陷”,特别对大中型软件而言更是如此。
为了能够统一地描述软件质量特性,形成了许多质量特性标准,其中最常用的有国际通用的ISO/IEC 9126软件质量模型和Mc Call软件质量模型。
IEO/IEC 9126模型已被采纳为我国的国家标准《GB/T 16260——2002 信息技术 软件产品评价 质量特性及其使用指南》(后续标准会讲)
2.8 软件过程改进
2.8.1 CMM
CMM模型描述和分析了软件过程能力的发展程度,确立了一个软件过程成熟程度的分级标准。
- 初始级:软件过程的特点是无秩序的,有时甚至是混乱的。初始级的软件过程是未加定义的随意过程,项目的执行是随意甚至是混乱的。
- 可重复级:已经建立了基本的项目管理过程,可用于对成本、进度和功能特性进行跟踪。焦点集中在软件管理过程上。一个可管理的过程则是一个可重复的过程,一个可重复的过程则能逐渐演化和成熟。从管理角度可以看到一个按计划执行的且阶段可控的软件开发过程。
- 已定义级:用于管理和工程的软件过程均已文档化、标准化,并形成整个软件组织的标准软件过程。
- 已管理级:软件过程和产品质量有详细的度量标准。软件过程和产品质量得到了定量的认识和控制。已管理级的管理是量化的管理。
- 优化级:通过对来自过程、新概念和新技术等方面的各种有用信息的定量分析,能够不断地、持续地进行过程改进。如果一个企业达到了这一级,表明该企业能够根据实际的项目性质、技术等因素,不断调整软件生产过程以求达到最佳。
在CMM中,每个成熟度等级(第一级除外)规定了不同的关键过程域(Key Process Area, KPA),一个软件组织如果希望达到某一个成熟度级别,就必须完全满足关键过程域所规定的要求,即满足关键过程域的目标。
2.8.2 CMMI
与CMM相比,CMMI涉及面更广,专业领域覆盖软件工程、系统工程、集成产品开发和系统采购。
运用CMMI模型管理的项目,不仅降低了项目的成本,而且提高了项目的质量与按期完成率。
CMMI可以看做把各种CMM集成到一个系列的模型中,CMMI的基础源模型包括软件CMM、系统工程CMM,以及集成化产品和过程开发CMM等。CMMI也描述了5个不同的成熟度级别。
每一种CMMI模型都有两种表示法,即阶段式和连续式。这是因为在CMMI的3个源模型中,CMM是“阶段式”模型,系统工程能力模型是“连续式”模型,而集成产品开发(IPD)CMM是一个混合模型,组合了阶段式和连续式两者的特点。
两种表示法在以前的使用中各有优势,都有很多支持者,因此,CMMI产品开发组在集成这3种模型时,为了避免由于淘汰其中任何一种表示法而失去用户对CMMI的支持,并没有选择单一的结构表示法,而是为每一个CMMI都推出了两种不同表示法的版本。
不同表示法的模型具有不同的结构。
- 连续式表示法强调的是单个过程域的能力,从过程域的角度考查基线和度量结果的改善,其关键术语是“能力”;
- 阶段式表示法强调的是组织的成熟度,从过程域集合的角度考查整个组织的过程成熟度阶段,其关键术语是“成熟度”。
阶段式模型也把组织分为以下5个不同的级别。
- 初始级:代表了以不可预测结果为特征的过程成熟度,过程处于无序状态,成功主要取决于团队的技能。
- 已管理级:代表了以可重复项目执行为特征的过程成熟度。组织使用基本纪律进行需求管理、项目计划、项目监督和控制、供应商协议管理、产品和过程质量保证、配置管理,以及度量和分析。
- 严格定义级:代表了以组织内改进项目执行为特征的过程成熟度。强调级别3的关键过程域的前后一致的、项目级的纪律,以建立组织级的活动和实践。
- 定量管理级:代表了以改进组织性能为特征的过程成熟度。4级项目的历史结果可用来交替使用,在业务表现的竞争尺度(成本、质量、时间)方面的结果是可预测的。
- 优化级:代表了以可快速进行重新配置的组织性能和定量的、持续的过程改进为特征的过程成熟度。
CMMI的具体目标如下:
- 改进组织的过程,提高对产品开发和维护的管理能力。
- 给出能支持将来集成其他科目CMM的公共框架。
- 确保所开发的全部有关产品符合软件过程改进的国际标准ISO/IEC15504对软件过程评估的要求。
使用在CMMI框架内开发的模型具有下列优点:
- 过程改进能扩展到整个企业级。
- 先前各模型之间的不一致和矛盾将得到解决。
- 既有分级的模型表示,也有连续的模型表示,可任意选用。
- 原先单科目过程改进的工作可与其他科目的过程改进工作结合起来。
- 基于CMMI的评估将与组织原先评估得分相协调,从而保护当前的投资,并与ISO/IEC15504评估结果相一致。
- 节省费用,特别是当要运用多科目改进时,以及进行相关的培训和评估时。
- 鼓励组织内各科目之间进行沟通和交流。