重构一般是指通过修改代码或数据以使软件符合新的要求。重构通常并不推翻原有软件的
体系结构,主要是改造一些模块和数据结构。重构的一些好处如下:
逆向工程来源于硬件世界。硬件厂商总想弄到竞争对手产品的设计和制造“奥秘”。但是又得不到现成的档案,只好拆卸对手的产品并进行分析,企图从中获取有价值的东西。我的很多同学从事集成电路设计工作,他们经常解剖国外的集成电路,甚至不作分析就原封不动地复制该电路的版图,然后投入生产,并美其名曰“
反向设计”(Reverse Design)。软件的逆向工程在道理上与硬件的相似。但在很多时候,软件的逆向工程并不是针对竞争对手的,而是针对自己公司多年前的产品。期望从老产品中提取
系统设计、需求说明等有价值的信息。
前向工程也称
预防性维护,由Miller倡导。他把这个术语解释成“为了明天的需要,把今天的方法应用到昨天的系统上”。乍看起来,主动去改造一个目前运行得正常的
软件系统简直就是“惹事生非”。但是软件技术发展如此迅速,与其等待一个有价值的产品逐渐老死,还不如主动去更新,以获取更大的收益。其道理就同打预防性针一样。所以,预防性维护是“吃小亏占大便宜”的事。