ScholarGate
助手

软件再工程

软件再工程是对现有系统进行检查和修改,以新的、改进的形式重构它,通常是为了使老化的遗留软件现代化,同时保留其基本行为。

用 PaperMind 寻找选题即将推出Find papers & topics
Tools & resources
下载幻灯片
Learn & explore
视频即将推出

Definition

软件再工程是检查主题系统以理解它,然后重新实现或重构它以改进其形式或平台,同时基本保留其功能的流程。

Scope

本主题涵盖逆向工程和设计恢复;代码和数据的重构;向新平台、语言和架构的迁移;遗留系统的封装和增量现代化策略;在转换过程中为保留行为而进行的测试;以及再工程与持续维护或替换的决策标准。

Core questions

  • 如何从遗留系统的代码和数据中恢复其设计?
  • 哪些策略能够以可接受的风险迁移或重构系统?
  • 在实现转换的同时如何保留行为?
  • 何时再工程优于持续维护或完全替换?

Key theories

逆向工程和设计恢复
Chikofsky和Cross定义了一种分类法,将逆向工程(从系统中恢复更高级别的表示)与再文档化、重构和正向工程区分开来,从而构成了设计恢复的活动。
增量遗留系统现代化
遗留系统不是通过有风险的大爆炸式重写,而是通过在现有代码周围引入测试、隔离变更点以及逐步重构或替换组件来增量现代化。

Clinical relevance

再工程使组织能够以低于从头重写的风险延长业务关键型遗留系统的生命和价值;健全的策略和行为保留技术至关重要,因为遗留系统通常编码着不可替代的、未文档化的业务知识。

History

随着20世纪60年代至80年代构建的大型系统老化,逆向工程和再工程在20世纪80年代末和90年代作为独立的关注点出现,并由Chikofsky和Cross的分类法正式化;Feathers后来将驯服未经测试的遗留代码的实用技术编纂成册。

Debates

增量再工程与完全重写
是增量现代化遗留系统还是彻底重写它存在争议;重写承诺一个全新的开始,但经常超支并丢失嵌入的知识,而增量再工程更安全但速度较慢。

Key figures

  • Elliot Chikofsky
  • James Cross
  • Michael Feathers

Related topics

Seminal works

  • chikofsky1990
  • feathers2004
  • sommerville2015

Frequently asked questions

重构和再工程有什么区别?
重构是对源代码进行小的、保留行为的改进,通常作为持续开发的一部分;再工程是一项更大规模的活动,可能恢复设计并将整个系统迁移到新的平台或架构,其中重构可以是其中一种技术。
为什么不直接从头重写遗留系统?
遗留系统通常包含了多年积累的、文档不完善的业务规则;从头重写有丢失这些知识的风险,并且通常会超支,因此尽管增量再工程速度较慢,但它通常是风险较低的路径。

Methods for this concept

Related concepts