《软件工程》第9章 软件维护和软件再工程

发布时间:2024-01-08 19:01:48浏览次数:25
第九章 软件维护和软件再工程一、软件再工程及其应用1、软件再工程基本概念软件再工程是对现有软件系统进行验证、评价,重新设计构造成为一个新的形式并加以实现,使其满足新的需要和/或适合于新的运行环境的软件工程活动。2、软件再工程主要应用范围在软件系统的使用过程中,其运行的内、外部环境可能发生不同程度的变化。软件再工程可以充分利用和改造现有软件以适应这些变化,避免因重新开发软件而造成时间、人力及软件资源的浪费。再工程主要应用于: 1)改进软件的可维护性。在软件仍可满足原规格设计说明书所规定的功能、性能的条件下,因原有程序结构不良,文档不齐、不精确,或经过多次修改致使结构不清、有冗余、死码,文档与实际系统不一致等原因造成进一步的维护困难,通过文档再编制(re-documentation)和重构(re-structuring)等再工程活动使得文档齐备、精确,程序结构清晰,有利于系统继续正常运行与维护。 2)增强功能,改进性能。在原有软件不能满足当前的要求,用户需求超出原规格设计说明书所确定的范围的情况下,可通过再工程对原有软件进行再设计以适应用户需求。这实际是软件版本的改进和升级。 3)软件移植。在原有软件系统的业务处理规则、基本算法等仍基本适用的条件下,由于原有支持系统运行的内部环境硬件、系统软件等不能满足目前的要求或不符合新的标准规范(如非开放系统) ,不宜继续支持系统正常运行,就需将原系统移植到新的平台上(如计算机系统、操作系统、DBMS、网络系统等)。 4)系统开发。在需要开发与己有的、经实践证明是成功的软件系统相类似的软件时,可以直接利用或稍作修改就可利用已有系统的程序代码、设计说明和规格说明,这样会大大提高软件生产率,缩短开发周期 ,保证软件质量并能节省开发经费。3、软件再工程活动类别级别根据用户对现有软件改进要求的不同,再工程活动一般可分为系统级、数据级和源程序级三个层次。 1)系统级: 是对现有应用系统的功能规格说明进行再设计。这需要全面恢复系统的原有功能规格说明和设计说明,在此基础上根据应用要求修改设计,重新产生可执行程序。 2)数据级: 从现有文件/数据库的物理定义中产生概念与逻辑设计文档,并将这些文档转换成适合新要求的数据结构,有可能的话,同时产生访问这些文件/数据库的程序。 3)程序级: 从现有软件的源程序(或经过反编译工具产生的源程序)中提取出设计说明,经过修改设计,再进行相反的转换。这样做可避免源程序与设计说明的不一致性,同时还降低了详细设计的要求。源程序级的再工程活动可看作是再编码(ecoding)工作,可以将结构化不良的语言 (如 BASIC 语言)转化为结构化语言(如 PASCAL 语言等) ,将 3GL 过程性语言转换成 4GL 非过程性语言。4、软件再工程活动的步骤软件再工程通常由两个阶段组成:1)逆向工程(reverse engineering)阶段,通过分析、理解现有软件,恢复其设计信息并抽象成为高层次的表示; 2)正向工程(forward engineering)阶段,即软件开发过程。对逆向工程提取出的软件的设计 表示进行评审,再设计,重新产生出新的目标程序。 在一些情况下,如现有软件的各项设计文档完备、精确,再工程活动可以不需要经历逆向工程的部分过程。5、软件再工程的相关软件技术 逆向工程 逆向工程是对现有的目标软件系统进行分析与理解,包括:分析、识别系统整体结构、各个组成成份及其相互关系;提取软件的设计信息;以其它或更高级的形式表示系统。类似的软件工程活动也采用其它术语,如设计恢复(design recovery)、程序理解(program understanding)等。逆向工程主要包括两个层次: 1)反汇编、反编译。这是比较成熟的技术。反编译是编译的逆过程,它可将机器代码或汇编语言程序翻译成为与原有程序功能相同的高级语言形式。 2)设计信息提取。从已有的设计文档和源程序出发,抽象出原有的设计思想,即恢复软件的功能规格说明和设计说明,这是设计和编码的逆过程。通常这个过程需要具有原应用系统的问题领域知识(domain knowledge)。逆向工程的关键在于对目标系统的理解,一般对系统的理解可以分为四个层次:程序设计语言层;控制结构层;通用算法层; 问题领域层。 正向工程(软件开发方法)关于软件开发方法及开发环境、工具方面的书籍资料已有许多,这里仅简要介绍较新的几种。 1) 4GL: 4GL 为非过程性语言,用户无需具备系统软件与高级语言的知识,只要编写出系统规格说明,用 4GL 编译程序进行编译就能生成出可运行的程序。 2) OOP(面向对象的程序设计) : 与传统的面向过程的程序设计以功能划分模块的方法不同,OOP 是按处理对象(实际事物的抽象模型)划分模块。OOP 将部件级的软件对象结合起来构成应用软件。在进行维护时只需更换、扩充或添加部件,不影响系统的其它部件和整体结构,可显著降低开发和维护成本。 3) CASE: CASE 对再工程的主要支持是帮助用户分析存储于 CASE 字典中的系统描述,这些分析可用于程序、子系统以及整个系统。一些综合 CASE (I-CASE)可满足整个软件生存周期的需要,包括维护阶段和逆向工程。 目前要实现完全自动化的再工程是不可行的。千差万别应用领域的再工程离不开人的理解、判断、设计、决策能力。软件的再工程不仅要具有软件工程知识,更重要的是要具备特定问题领域知识。6、软件再工程应用实例国外近年来研制出多种软件工程环境和系统再工程产品,在对现有系统实施再工程方面有许多成功的事例。例如:Allnet 公司是美国最大的经营长途电讯业务的公司之一,每日处理长途电话达 600 多万个。由于业务高速增长,使得原设计的计费处理工作经常拖延,影响了公司的资金周转,迫切需要对系统进行改进。Allnet 采用了 Viasoft 公司的系统再工程产品 VIA/Renaissanse,该产品能 够自动地分析和提取源程序(COBOL 语言)中的各种功能说明,然后形成这些功能的独立程序模块,这些模块编译后即可投入运行。同时这些模块还可供其它应用程序使用或纳入公司的 CASE 环境,用于今后新系统的开发。Allnet 公司对其计费模块实行改造后;使账单处理的记录数减少到不足原来的 10% ,不仅计费处理速度满足了要求,主机IBM3090 - 300J 的处理时间和 I/O 操作时间都明显减少。美国马里兰大学、NASA (国家宇航局)和 CSC(计算机科学公司)联合组织的软件工程 实验室(SEL)共同了解、研究 NASA 的飞行动力学环境中的 100 多个软件项目,每个软件项目从几千行到一百万行源程序不等,有 Ada 语言,也有早期开发的 Fortran 语言,通过 SEL 的工作 NASA 的每行源程序开发成本平均降低 10%,软件可靠性平均改进了 35%,软件的可管理性明显提高。
文档格式: docx,价格: 5下载文档
返回顶部