软件工程 - 软件维护

软件工程 - 软件维护

  1. ISO-IEC 12207-2008对软件维护的定义:软件维护是指由于软件产品出现问题或需要改进而对代码及相关文档的修改,其目的是对现有软件产品进行修改的同时保持其完整性。
  2. 软件维护的必要性:
    (1) 软件维护能够改正错误。
    (2) 软件维护能够改善设计。
    (3) 软件维护能够实现软件的改进。
    (4) 软件维护能够与其他系统进行交互。
    (5) 软件维护能够为使用不同的硬件、软件、系统的新性能以及通讯设备等而对软件进行改进。
    (6) 软件维护能够完成遗留程序的移植。
    (7) 软件退出使用。
  3. 维护是软件周期中花费最多的阶段,测试需要的工作量比前面加起来的都多。
  4. 四种维护和所占百分比:
    (1) 纠错性维护:约占整个维护工作量的21%。
    (2) 适应性维护:约占整个维护工作量的25%。
    (3) 完善性维护:约占整个维护工作量的50%。
    (4) 预防性维护:约占整个维护工作量的4%。
  5. 在维护阶段的最初一段时期,纠错性维护的工作量较大。随着错误发现率逐渐降低,并趋于稳定,软件进入正常使用期。然而,由于新需求的提出,适应性维护和完善性维护的工作量逐步增加。
  6. 软件维护的困难性(软件维护为什么是困难的):
    (1) 配置管理工作不到位。
    (2) 人员变动造成影响。
    (3) 维护人员大多不是编写代码的人,所以要先理解软件。但许多软件的可读性差,导致理解困难。
    (4) 往往是在任务急、时间紧的情况下处理维护请求的。
  7. 可维护性的定义:可维护性是指通过一定的手段,使软件可以被维护、改进、改动或修正,以满足特定的需求的方便程度。
  8. 估算维护工作量的模型:
    M = P + K×exp(c-d)
    M是维护用的总工作量,P是生产性工作量,K是经验常数,c是复杂程度(非结构化设计和缺少文档都会增加软件的复杂程度),d是维护人员对软件的熟悉程度。如果软件的开发没有遵循软件工程方法学,原来的开发人员不能参加维护工作,那么维护工作量(维护费用)将指数地增加。
  9. 软件的维护技术包括:程序的理解、软件再工程、软件逆向工程。
  10. 软件再工程的定义:软件再工程指对现有软件进行仔细审查和改造,对其进行重新构造,使之成为一个新的形式,同时包括随之产生的对新形式的实现。
  11. 软件逆向工程是分析目标系统,识别系统的构件及其交互关系,并且通过高层抽象或其他形式来展现目标系统的过程。
  12. 软件逆向工程主要内容有三方面:数据的逆向工程、处理的逆向工程、用户界面的逆向工程。
  13. 软件逆向工程的内容:
    软件工程 - 软件维护_第1张图片

你可能感兴趣的:(软件工程 - 软件维护)