ISV探究软件架构方法论的实践路线

导读:决定软件系统质量最重要的因素是软件架构。如果把架构比作骨架,那么方法论就是它的血液,其重要性自不必说。即便架构方法论如此的重要,对于什么是但它究竟是什么?一百个架构师会得出一百种不同的答案如果问10个人,也会得到10种不同的答案。一些人会更有甚者,觉得架构全靠经验,没有什么方法论,更有甚者,认为架构方法论简直就是一套神秘的形而上学的东西。事实上,它并不神秘,它有章可依,有迹可循。在IBM看来,架构方法论就是通过预定义的一套可重用的内容和流程,帮助架构师系统的设计架构的方法,而且这个方法是可以学习并传承的。

从另一个角度来看,架构方法论也和许多其他方法论词汇一样抽象,无法真实触及实体,但影响力却无处不在。随着IT系统越来越复杂,业界对IT系统如何正确构建、效率和资产价值最大化的关注逐日提升更加关注,国内越来越多的公司开始研究和实践相关理论,个别公司甚至组建了专门研究和实施方法论的团队。

IBM软件集团大中华区合作伙伴技术支持总经理王小虎

作为全球最大的IT服务商,IBM有着全世界最系统、最完整的方法论,不是单单的面向硬件或者中间件方面的架构,而是涵盖从企业架构、业务架构、应用架构、信息架构、基础架构乃至集成架构等都有详细的方法论。他山之石,可以攻玉。日前,就架构方法论的重要性以及在国内的现状以及国内企业应该如何实践,《程序员》杂志记者跟IBM软件集团大中华区合作伙伴技术支持总经理王小虎进行了一次对话。

尽早营造出重视架构方法论的氛围

据王小虎观察,国内经过实战锻炼出来的技术英雄高手众多,不管名片或职称上是否印了架构师的头衔,实际上都已经在做大量架构师的工作了。很多时候,中国工程师能凭借个人天赋和经验将项目带向成功,。虽然一将功成万骨枯,其经验往往带着血的教训。不过随着项目环境的变化过去成功的经验往往并不适用,这时候往往但会给项目带来巨大的风险,更为可怕的是和因缺乏架构方法论指导难以将经验系统积累并传承的困境将长期存在。随着英雄的离去,项目就进展不下去或公司一条线倒下的情形比比皆是。,究其原因都是因为缺乏统一的标准和方法论来指导,难以将经验系统化的积累起来并科学的使用。

与此不同,国外同行已经通过大规模普及架构方法论应用,批量生产出一批批的架构师。这些架构师未必每个人都有天赋,但通过系统培训,一步步按照标准的方法论走下来。最后设计出来的架构文档形式貌似都差不多,但考虑都比较周详和全面,绝大多数项目都能保证成功,起码,很难因为技术问题而失败。而且,更重要的是这些宝贵的精神资产和标准的代码模块可以很好的在公司传承下去。

王小虎建议,任何将软件视为核心资产的公司都应该尽可能早地营造出重视架构方法论的氛围,以及建立稳定的架构师团队和架构师培养计划。优秀的架构方法论从单个点上来说不仅可以让架构师更合理的设计方案,帮助项目成功,对于公司来说还可以让不同的团队用一种语言和方法办事,传承公司一体化的思维产品思维。从反面来看,他所见过的因缺乏架构方法论指导而导致项目后期陷入困境,甚至公司因此破产的情况让人触目惊心。

单纯从技术角度上看,即使在理论上,都很难通过架构重构等增量技术来将一个糟糕的架构改良为一个优秀的架构,在实践中就更难了。后期重构架构的成本将非常高昂,以至于超出了绝大多数管理者所能接受的程度,所以往往不得不推倒重来。如果早期就重视方法论,并将其运用到工作中,以此为基础,一个好的架构可以在成本很小甚至零成本的时候就建立起来,由此减少的项目执行过程中的重新设计和返工将带来良好的投资回报。从开发者的角度看,由于架构的各个层次和元素设计底层封装得更好,应用开发人员不需要了解那么多底层其他层次和元素的技术细节,可以更关注所构建模块的业务解决方案,开发出的软件质量也更高。如果已经建立了一个良好的软件系统架构,就可以持续地重新评估,并作出必要的完善和重构。

IBM所提倡的架构方法论所遵循的基本原则,包含了四个关键词:预定义、前后连贯逻辑严谨、迭代式、多重视角。具体说来,就是要以活动来驱动设计流程,而不是工作件(Work Product)。每个工作件都需要多项输入,同时自身也是其他工作件的输入,一旦获得工作件信息要立即记录。工作件都处于迭代过程中,常常会经历若干次的修改和优化。不同的部分工作件会有多重不同的视图,部分工作件只针对特定的和读者。每一个技术决策都可以被回溯到需求分析中的某一部分。王小虎强调,所有这一切的最终目的都只有一个,就是设计优良的架构并励尽可能的进行资产重用,这是架构方法论所追求的软件系统价值最大化的最重要的原则。

分阶段推进架构方法论落地

从国内多数公司现状来说,虽然从老板的角度都想将架构方法论推行起来,但现实问题是,迫于财务压力和人才短缺,公司里真正有能力去做这些研究的技术精英都已经被抽去做业务项目,导致架构方法论的推进有限。对此,王小虎认为,任何公司都不应该仅依赖一两个能独当一面的高手来解决所有问题。推广方法论的时候不要操之过急,首先可以成立一个架构方法论研究的团队,可以是实体部门也可以是虚拟的团队,此外从公司业务和组织架构上作出调整以适应知识积累及共享机制。王小虎建议将眼光放得长远一点,其次分阶段性的实现架构方法论,可以在部分团队中挑一些重要的方法环节进行统一的实施,通过阶段性成绩去说服上级和业务部门主管,让他们看到好处,以获得进一步的支持。可喜的是,国内很多有一定规模的公司都开始重视和应用架构方法论了。(付江/)