知识卡片

重构实施技术与面向架构模式重构的优势

普通读书笔记卡

内容

重构实施是针对已定位的重构点执行重构的过程,主要有五类技术。图转换技术:把重构表示为参数化的程序变换及一组前置后置条件,程序(或其他软件制品)可以表示为图形,重构对应图形产生规则,重构的应用对应图转换,前置后置条件保证行为正确性。程序精化技术:把设计好的程序规约转换成可逐步执行的程序,可直接在用图表示的软件体系结构上运用重构规则,保证组件间行为属性不发生变化,但要求程序能够直接运行,通用性较小。程序切片技术(由Weiser 1979年提出):提取程序中可能影响某个变量集的所有语句,基于系统依赖图保证重构后某些选定行为保持不变(如函数/过程提取这类特定重构类型);这类基于切片和程序分析的技术只能作用于源代码,无法在架构层直接使用。形式概念分析:用格论构造”概念格”,明确变量和类成员之间的关系,可用于重构面向对象的类层次结构、并保证重构结果在行为上等同于原层次结构。基于模式的重构:把重构和设计模式关联起来,认为重构是实现设计模式的手段、设计模式是重构的目的,通过实现、趋向、去除模式来重构;但设计模式是中等规模的模式,无法表达软件系统的基本结构,无法对整个系统进行重构——正因如此,研究者进一步提出了基于架构模式(而非设计模式)的重构,能从架构设计、组件设计、代码设计等多个层面对软件架构做重构优化,书中明确指出这是”最有前景的重构技术之一”。不过面向架构模式的重构研究目前主要局限在特定领域项目用特定模式重构,需要重构人员依据业务逻辑、功能模块人工分析项目、选用模式,这个过程需要大量人工参与、不够通用也难以推广,而且不同模式对同一项目的重构效果并不一样,特定模式未必是最适合当前项目的选择,如何自动选择重构模式仍是尚未被充分研究的问题。

参考来源

- 位置:《软件架构理论与实践》第16章《软件架构重构》"16.2.3 重构实施技术"及"16.2.4 现状分析"节(源文件:_epub-src/OEBPS/text00129.html) - 结论依据:原文说明"面向设计模式的重构可以指导软件组件或子系统内的重构,但是设计模式是中等规模的模式,无法表示软件系统的基本结构,即无法对整个软件系统进行重构。因此研究人员提出了基于架构模式的重构",并明确"面向架构模式的重构可以从架构设计、组件设计和代码设计等多个层面对软件架构进行重构和优化,是最有前景的重构技术之一",直接支撑本卡片结论。 - 原始内容:面向架构模式的重构研究主要局限在对特定领域的项目使用特定模式进行重构,重构人员需要依据项目具体情况(业务逻辑,功能模块)人工分析项目,使用特定模式重构项目……使用不同模式对项目重构的效果并不一样,特定模式未必是最符合项目重构的。