您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码:  验证码,看不清楚?请点击刷新验证码 必填



  求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Modeler   Code  
会员   
 
   
 
 
     
   
 订阅
  捐助
架构重构趋势谈
 
作者:小宝老豆的博客,来源:CSDN 发布于:2014-12-12
  2192  次浏览      15
 

近几年,近距离观察众多一线软件研发团队的喜怒哀乐。其中,重构已经成为目前软件研发的关键环节,本文谈一谈架构重构发展趋势。

难点 · 痛点 · 未来热点

“架构师就是设计架构的人”,这种理解太简单化了,没有反映出不同背景的软件企业、不同发展阶段的软件企业所重点关注的“主战场”的不同。我用一张图来刻画架构师的几个“主战场”(如图1所示),以辅助我们更准确地“定位”架构重构在架构师工作中的位置。

图1 架构师的主战场

随着不同产品的推出、不同版本的发布,需要维护的遗留代码越来越多,重构也就在所难免。关于架构重构能力之于软件企业的意义,可用八个字概括:难点、痛点、未来热点。

难点。不少软企都有架构重构的意愿,但经常是一拖再拖不敢实施。进行了架构重构之后,也有企业发现没效果——架构质量没有得到改善——这相当于架构重构失败了。这是因为,架构

“重构”是难点,它比架构“设计”更难。

痛点。困难就不干呗?可是不行。加个Feature很“难”,改个Bug很“绕”,软件工程师们被加班搞得很“惨”……软企管理层也倍感压力,因为维护成本日益呈现攀升趋势,“加快问题单响应速度”目标的达成也越来越遥远。“如何把架构重构好”,成了大家共同的痛。

未来热点。既然是不好对付的“难点”,又是影响软企切实利益的“痛点”,架构重构领域就必然是“未来热点”了。

种种迹象

下面简要梳理一下“重构能力越来越关键”的种种迹象。

对个人而言,重构能力影响着研发人员的工作业绩、职业发展,是不折不扣的“核心竞争力”。因为当前业界越来越重视对遗留代码、第三方代码、开源代码的利用,掌握重构能力的研发人员能在竞争中脱颖而出。相反,不能自由掌控代码的程序员,加班不少、业绩不高;对现有不满意的架构“力不从心”的架构师,工作也处处被动,高薪但不开心。如图2所示。

图2 重构能力与个人发展

而软件企业,早已有意无意地开始了“重构人才争夺战”,不断在招聘广告中打出如下要求:

1.对已有系统进行重构和优化;

2.对组件的重用、重构有丰富的经验;

3.能够熟练运用各种重构方法;

4.熟悉Linux系统重构、Bootloader移植;

5.察觉实现问题,提出改进(重构)方案;

6.对框架本身的体系有较为深厚的理解和应用经验,对框架本身有过开发或重构者可优先考虑

……

同时,大型软件企业也已越来越关心开发骨干重构能力的培养,我从2006年专职从事咨询和培训以来的服务经历已证明这一点。其中,2010年我帮助大型软件企业提升重构能力的服务更有47个工作日之多(9周)。

未来3—5年的具体趋势

软企面临的实际问题以及相应的实践探索,是推动未来发展的根本原因。如图3所示,是我对未来3—5年具体趋势的判断。

图3 未来3~5年的具体趋势

趋势1:认识趋于专业—3种重构的细分

当前,对不同层面重构的明确认识还不普及,有很多错误观点在流行。例如,诸如“架
构重构和《重构》书里说的代码重构差不多”等观点,是不切实际的。更专业的认识,是将重构分为代码重构(Refactoring)、模块重构(Big Refactoring)、架构重构(Architectural Refactoring)三大类(如图4所示)。

“不同重构技能混为一谈”造成的危害,在软件企业中相当常见。其中,软件研发人员们“小重构不屑做,大重构不敢做”的表现,是最令研发管理者头痛的。你们公司,有吗?

更进一步,“重构的3个问题,2.5个亟待发展”是我们的基本判断,即:代码重构发展不错但还将继续延展,模块重构和架构重构发展则严重不足。具体观点分别在下面的趋势2、趋势3、趋势4中简述。

4 认识趋于专业,3种重构的细分

趋势2:代码重构—往特定领域纵深发展

当前的代码重构成例的总结,总的来说多在OO方面。但通过分析一些大型软件企业的领域特点和代码现状,我们发现大量遗留代码甚至是十年之前的,既有C语言编写的结构化代码、又有C++编写的结构化设计思想的代码(只有成员变量或成员函数的类大量存在)。因此,未来必然有更多、更具针对性的重构成例在软企的维护一线出现。

图5 复杂条件的重构成例地图

例如,在和大量软企及其结构化代码的接触过程中,我们总结和“部分原创”了下列“复杂条件重构成例地图”(如图5所示),在重构咨询中有良好的应用效果。

趋势3:模块重构—软企能力建设“热点”

趋势4:架构重构—切实有效的架构重构方法

图6 ARCT方法示意图

过去,模块重构和架构重构发展严重不足,一线实践往往找不到可参照的方法,多靠摸索来实践。例如,有架构重构方法提出,首先进行的是“重构计划制定阶段”,这种方法在软企中是没法用的。(不分析代码、明确问题,怎么可能
订计划?)

未来3—5年,这一块将有突破,从领先的实践中孕育出切合实际的模块重构方法和架构重构方法。

趋势5:五年内—出现专职“设计重构师”职位

软企提高重构能力的几点建议

这里我给两点建议。

1. 架构重构,必须重视代码。

2. 关键模块的重构,可以基于ARCT方法论,迭代式开展。

虽然架构比较抽象,但“借助架构文档等进行架构重构”的做法是不务实的。现实是,代码中有随处可见的“贴膏药”式的特殊情况处理,有时更是“补丁摞补丁”——这些都是文档中没有覆盖的。这些“膏药”和“补丁”恰恰是现存系统正确处理业务的“宝”。所以,我们的架构重构“不得不”依靠代码。

另一方面,又不能陷入代码泥潭。我们的应对理念是“基于7种接口风格的模块任免”,篇幅所限,本文就不展开了。

有经验的架构重构实践者会发现,架构重构非常可观的工作量,是用于进行核心模块的重构。根据我们的经验,模块重构最终经常会落实成几十个代码重构(Refactoring),但这绝不意味着模块重构就是代码重构的简单累加——设计重构的方向在哪里?模块重构设计师必须有能力解决这个问题。

ARCT方法是我们逐步实践成型的一种模块重构方法论(如图6所示),已多次用于大型软企的关键岗位能力建设咨询,并取得成功。

代码分析(A)是基础。从代码入手。

模型逆向(R)是纽带。从代码级思维跳到设计级思维,抽象出当前的设计模型。

设计构想(C)是关键。例如,为了获得更好的可扩展性等,新设计要重构成什么样呢?

……

设计拷问(T)是保证。回归代码层面进行设计可行性、合理性的主动质疑。可以工作吗?可以正确处理那些散落在代码各处的特殊处理吗?适应了各种场景带来的可扩展性、可维护性的压力了吗?模块重构时,必须适时思考这些问题。

   
2192 次浏览       15
相关文章

企业架构、TOGAF与ArchiMate概览
架构师之路-如何做好业务建模?
大型网站电商网站架构案例和技术架构的示例
完整的Archimate视点指南(包括示例)
相关文档

数据中台技术架构方法论与实践
适用ArchiMate、EA 和 iSpace进行企业架构建模
Zachman企业架构框架简介
企业架构让SOA落地
相关课程

云平台与微服务架构设计
中台战略、中台建设与数字商业
亿级用户高并发、高可用系统架构
高可用分布式架构设计与实践
最新课程计划
信息架构建模(基于UML+EA)3-21[北京]
软件架构设计师 3-21[北京]
图数据库与知识图谱 3-25[北京]
业务架构设计 4-11[北京]
SysML和EA系统设计与建模 4-22[北京]
DoDAF规范、模型与实例 5-23[北京]

专家视角看IT与架构
软件架构设计
面向服务体系架构和业务组件
人人网移动开发架构
架构腐化之谜
谈平台即服务PaaS


面向应用的架构设计实践
单元测试+重构+设计模式
软件架构师—高级实践
软件架构设计方法、案例与实践
嵌入式软件架构设计—高级实践
SOA体系结构实践


锐安科技 软件架构设计方法
成都 嵌入式软件架构设计
上海汽车 嵌入式软件架构设计
北京 软件架构设计
上海 软件架构设计案例与实践
北京 架构设计方法案例与实践
深圳 架构设计方法案例与实践
嵌入式软件架构设计—高级实践
更多...