跳转至内容

软件工程/部署/维护简介

来自维基教科书,开放世界中的开放书籍

在软件工程中,软件维护是指在交付软件产品后对其进行修改,以纠正错误,提高性能或其他属性。[1]

人们普遍认为维护仅仅是修复 bug。然而,多年来的研究和调查表明,超过 80% 的维护工作用于非纠正性操作 (Pigosky 1997)。这种看法被用户提交的问题报告所强化,而这些报告实际上是系统功能的增强。

Meir M. Lehman 在 1969 年首次提出了软件维护和系统演进。在 20 年的时间里,他的研究导致了八项演化定律的形成 (Lehman 1997)。他的研究的主要发现包括维护实际上是演化式开发,并且理解系统 (和软件) 随时间的变化有助于维护决策。Lehman 证明了系统会随着时间的推移而不断发展。在它们发展的同时,它们的复杂性也会增加,除非采取一些措施 (例如代码重构) 来降低复杂性。

软件维护的关键问题既有管理方面的,也有技术方面的。关键的管理问题包括:与客户优先级的匹配、人员配置、哪个组织负责维护、估算成本。关键技术问题包括:理解有限、影响分析、测试、可维护性度量。

软件维护流程

[编辑 | 编辑源代码]

本节介绍六个软件维护流程,如下所示:

  1. 实施流程包含软件准备和过渡活动,例如维护计划的概念和创建,处理开发过程中发现的问题的准备工作,以及对产品配置管理的后续跟进。
  2. 问题和修改分析流程,该流程在应用程序成为维护组的责任后执行。维护程序员必须分析每个请求,确认它 (通过重现情况) 并检查它的有效性,调查它并提出解决方案,记录请求和解决方案建议,最后,获得执行修改所需的所有授权。
  3. 考虑修改本身实施的流程。
  4. 修改接受流程,通过与提交请求的个人确认修改后的工作,以确保修改提供了解决方案。
  5. 迁移流程 (例如平台迁移) 属于特殊情况,不属于日常维护任务。如果软件必须移植到另一个平台而没有任何功能变化,则将使用此流程,并且可能会分配一个维护项目团队来执行此任务。
  6. 最后,最后一个维护流程,也是一个不经常发生的事件,是软件的退休。

有一些流程、活动和实践是维护人员独有的,例如:

  • 过渡:一个受控且协调的活动序列,在此期间系统逐步从开发人员转移到维护人员;
  • 服务级别协议 (SLA) 和维护人员协商的专门 (领域特定) 维护合同;
  • 修改请求和问题报告服务台:维护人员用来优先处理、记录和路由他们收到的请求的问题处理流程;
  • 修改请求接受/拒绝:维护人员可能会拒绝超过一定规模/工作量/复杂度的修改请求,并将其重新路由到开发人员。

ISO/IEC 14764 中的维护类别

[编辑 | 编辑源代码]

E.B. Swanson 最初确定了三种维护类别:纠正性维护、适应性维护和完善性维护。[2] 这些类别后来进行了更新,ISO/IEC 14764 提出了以下类别:

  • 纠正性维护:在交付后执行的软件产品的反应性修改,以纠正发现的问题。
  • 适应性维护:在交付后执行的软件产品的修改,以使软件产品在改变或不断变化的环境中保持可用。
  • 完善性维护:在交付后执行的软件产品的修改,以提高性能或可维护性。
  • 预防性维护:在交付后执行的软件产品的修改,以在潜在故障成为有效故障之前检测和纠正软件产品中的潜在故障。

还有一种交付前/发布前维护的概念,指的是为降低软件的总拥有成本而采取的一切措施。例如,符合编码标准,其中包括软件可维护性目标。软件耦合和内聚的管理。实现软件可支持性目标 (例如 SAE JA1004、JA1005 和 JA1006)。另外要注意,一些学术机构正在进行研究,以量化由于缺乏资源 (例如设计文档和系统/软件理解培训和资源) 而导致的持续软件维护成本 (在没有设计数据的情况下,成本大约增加 1.5-2.0 倍)。

参考文献

[编辑 | 编辑源代码]
  1. ISO/IEC 14764:2006 软件工程 - 软件生命周期过程 - 维护
  2. E. Burt Swanson,维护的维度。第二届软件工程国际会议论文集,旧金山,1976 年,第 492-497 页

进一步阅读

[编辑 | 编辑源代码]
  • April, Alain; Abran, Alain (2008). 软件维护管理. 纽约: Wiley-IEEE. ISBN 978-0470-14707-8.{{cite book}}: CS1 maint: multiple names: authors list (link)
  • Gopalaswamy Ramesh; Ramesh Bhattiprolu (2006). 软件维护:面向地理分布式环境的有效实践. 新德里: Tata McGraw-Hill. ISBN 9780070483453.{{cite book}}: CS1 maint: multiple names: authors list (link)
  • Grubb, Penny; Takang, Armstrong (2003). 软件维护. 新泽西州: World Scientific Publishing. ISBN 9789812384256.{{cite book}}: CS1 maint: multiple names: authors list (link)
  • Lehman, M.M.; Belady, L.A. (1985). 程序演进:软件变更过程. 伦敦: Academic Press Inc. ISBN 0-12-442441-4.{{cite book}}: CS1 maint: multiple names: authors list (link)
  • Page-Jones, Meilir (1980). 结构化系统设计实用指南. 纽约: Yourdon Press. ISBN 0-917072-17-0.
[编辑 | 编辑源代码]
华夏公益教科书