[论文笔记] A Survey of Software Refactoring(TOSE, 2004)第二部分

续前文[论文笔记] A Survey of Software Refactoring(TOSE, 2004)第一部分

 

4. (S4)中介绍各种技术和形式化方法对重构各个步骤的支持,这部分内容综述的文献量很大。这次只能一般性地了解一下。
着重介绍了

  • assertion(preconditions, postconditions, and invariant)(s4.1):用于解决behavior preservation问题。
  • graph transformation(S4.2): 重构与graph transformation的各个步骤具有直接的对应关系,因此可以将重构中的问题转化为graph transformation的问题,并使用后者的理论方法进行求解。
  • formalism(S4.3): 确保一些program properties保持不变(如syntactic rules, semantics等)。

及其他(S4.4):

  • program slicing: 确保restructuring能preserve一些选定的behaviro。
  • formal improvement theory: 能用来转化functional programs以提高其效率。
  • formal concept analysis: 提供一种conceptual tool来分析数据。
  • program refinement: 可逐步将program specification转化成可执行程序。
  • software metrics: 度量重构的效果。
  • software visualization: 对重构提供可视化支持。
  • dynamic program analysis: 适用于无法用合理代价静态计算所有希望的preconditions时。

5. (S5) 介绍常见软件工件。
除了最常见的代码级别的重构,重构也可适用于其他类型的软件工件。

6. (S6)中对重构工具应支持的各种特性进行了讨论

  • automation: 可支持哪些重构步骤以及支持的自动化程度。
    • 当前能支持的是semiautomatic refactoring
  • reliability: 是否能保证behavior perserving。
    • 除了针对特定的场景,目前无法做到这点。因此,工具应提供undo功能来撤销不适宜的重构。
  • configurability and openness
    • 可配置的内容包括:refactoring方法种类、bad smells种类、bad smell与refactoring的关联、自定义composite refactoring
  • coverage:可支持的重构步骤(与automation似乎同一个意思?
    • 目前大多数商业重构工具都只支持"automatically applying refactorings"
  • scalability: privimitve & composite refactoring
    • 当前只能支持primitive refactorings
    • 有学者提出了transactional refactoring的概念。有这么一种情况:一系列重构最终能保证behavior preservation,但系列中的每个重构却未必都能保证behavior preservation.
  • language independence
    • Lammel最早引入了generaic program refactoring的概念
    • 目前研究方法有:meta modeling, WSL(intermediate formal language)

7. (S7) 重构与软件再工程、敏捷开发等关系

  • 在软件再工程的语境中,重构 "is only the last stage and addresses the technical issue of (semi)automatically modify the software to implement a new solution."。仅当软件退化时才使用。
  • XP是敏捷开发的主要部分,而重构则是XP过程的基石,贯穿整个开发过程。
posted @ 2011-12-15 09:26  玉泉老博  阅读(442)  评论(0编辑  收藏  举报
Free counter and web stats