跳转到内容

软件工程/部署/演进介绍

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

软件演进是软件工程(特别是软件维护)中使用的术语,指的是最初开发软件,然后出于各种原因反复更新软件的过程。

总体介绍

[编辑 | 编辑源代码]

弗雷德·布鲁克斯在其关键著作《人月神话》[1]中指出,典型系统成本的90%以上发生在维护阶段,任何成功的软件都将不可避免地需要维护。

事实上,敏捷方法源于围绕基于 Web 的技术进行的维护活动,其中大部分功能来自框架和标准。 [需要引用]

软件维护解决错误修复和微小增强,而软件演进则专注于适应和迁移。

软件维护的类型

[编辑 | 编辑源代码]

E.B. Swanson 最初确定了三类维护:纠正性、适应性和完善性。 然后,Lientz 和 Swanson (1980) [2] 对四类软件进行了分类。 从那以后,这些类别一直在更新,并在 ISO/IEC 14764:2006 中得到国际规范化:[3]

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

以上所有维护都发生在需要更改时。

虽然这些类别得到了 Warren 等人(1999)[需要引用] 和 Chapin (2001)[需要引用] 等许多作者的补充,但 ISO/IEC 14764:2006 国际标准保留了基本的四类。

近年来,使用本体论对软件维护和演进进行了描述(Kitchemham 等人 (1999)[需要引用],Derider (2002)[需要引用],Vizcaíno 2003[需要引用],Dias (2003)[需要引用],以及 Ruiz (2004))[需要引用],丰富了对许多演进活动的描述。

莱曼软件演进定律

[编辑 | 编辑源代码]

Meir M. Lehman 教授,他从 1972 年到 2002 年在伦敦帝国理工学院工作,他和他的同事们发现了一组关于专有软件演进行为。 这些行为(或观察结果)被称为莱曼定律,共有八条。

  1. 持续变化
  2. 复杂度增加
  3. 大型程序演进
  4. 工作量不变
  5. 熟悉性守恒
  6. 持续增长
  7. 质量下降
  8. 反馈系统

值得一提的是,这些定律被认为主要适用于单片专有软件。 例如,来自开源软件开发研究的一些经验观察似乎挑战了一些定律。 [需要引用]

这些定律预测,变化是不可避免的,而不是糟糕的编程造成的,而且软件演进团队在安全地实施更改和新功能方面所能实现的程度有限。

已开发出专门针对软件演进的成熟度模型,以帮助改进流程,确保软件不断迭代演进。

许多利益相关者(例如开发者、用户、他们的经理)组成的“全局流程”包含许多反馈循环。 演进速度是反馈循环结构和其他全局系统特征的函数。 系统动力学等过程模拟技术有助于理解和管理这种全局过程。

软件演进不太可能遵循达尔文主义、拉马克主义或鲍德温主义,而是一种独立的重要现象。 由于社会和经济各阶层对软件越来越依赖,软件的成功演进变得越来越重要。 这是一个尚未得到足够重视的重要研究课题。

莱曼认为,软件演进因其与其他人工实体相比的快速发展轨迹,被视为人工系统演进研究的“果蝇”。

参考文献

[编辑 | 编辑源代码]
  1. Fred Brooks,人月神话。 Addison-Wesley,1975 & 1995。ISBN 0-201-00650-2 & ISBN 0-201-83595-9
  2. Lientz,B.P. 和 Swanson,E.B.,软件维护管理:对 487 个数据处理组织中计算机应用程序软件维护的研究。 Addison-Wesley,Reading MA,1980。 ISBN 0201042053
  3. ISO/IEC 14764:2006,2006 年。
华夏公益教科书