软件维护

Posted by fzy on January 26, 2024

第15章:软件维护

软件维护的目的

软件演化法则

  • 持续的变化:逐渐变得不可用
  • 递增的复杂性:结构恶化
  • 程序演化的法则:随着统计的确定趋势和不变性自我调节
  • 组织稳定性的守恒:编程项目的总体互动性不变
  • 熟悉程度的守恒:发布的内容是不变的

软件维护的类型

维护活动的类型

  • 改正性:维护对日常的系统功能的控制
  • 适应性:维护对系统修改的控制
  • 完善性:完善现有系统
  • 预防性:防止系统性能下降到不可接受的程度。

执行维护的人

  • 单独的维护小组:更加客观,更容易将一个系统应该如何运转与其实际是如何运转区分开
  • 开发人员:用易于维护的方式来构建系统,但有的时候过于自信自己对系统的理解,不愿意更新文档。

影响维护方法的因素

  • 失效的类型
  • 失效的关键性或者严重性
  • 需要进行的改变的难度
  • 要改变的构建的复杂性
  • 必须进行的改变所处的物理地点的数目

影响工作量的因素

  • 应用类型、系统新颖度
  • 人员更替和维护人员的可用度
  • 系统声明周期的跨度,对变化环境的依赖度
  • 硬件特性,设计、代码、文档和测试的质量

软件再生

  • 文档重构:对源代码进行静态分析,给出更多的信息
  • 重组:改变代码结构
  • 逆向工程:根据代码重新创建设计和规格说明信息
  • 再工程:对现有工程进行逆向工程,接着再改变规格说明和设计以完成逻辑模型;然后,根据修改的规格说明和设计生成新的系统。

image-20231213145846830

文档重构:

概念: 文档重构是指对现有文档的结构、内容或格式进行修改和优化,以提高其可读性、可维护性或适应性。

通俗解释: 就像是重新整理一篇文章的段落和标题,文档重构旨在改进文档的结构和内容,使其更清晰易懂。

例子: 对于软件设计文档,可以进行文档重构以确保各个部分的逻辑性和一致性,使读者更容易理解。

重组:

概念: 重组是指对软件系统的组件、模块或子系统进行重新组合,以改变其结构或提高其性能。

通俗解释: 就像是重新安排一座城市中的建筑物,重组软件系统涉及重新安排代码、模块或组件,以优化系统的整体结构。

例子: 重组一个电商网站的前端和后端代码,以提高系统的响应速度和用户体验。

逆向工程:

概念: 逆向工程是指对已有软件系统进行分析和研究,以获取其设计、结构或功能等信息的过程。

通俗解释: 就像是解析一本书,逆向工程旨在深入了解已有软件系统的内部机制和实现细节。

例子: 逆向工程可能涉及对已编译的二进制文件进行反汇编,以获取源代码的近似表示,或者对数据库逆向工程以了解数据模型

再工程:

概念: 再工程是指对现有软件系统进行彻底改造或重建,以满足新的需求、改进性能或提高可维护性。

通俗解释: 就像是将一幢老房子拆除并重新建造,再工程是对整个软件系统的彻底改造,包括架构、技术选型和功能等方面。

例子: 对一个过时的企业资源计划(ERP)系统进行再工程,以适应新的业务需求和技术标准。