内部的加强和检测:1996 - 2003

  软件的设计者们在这个时候经常不正式的使用结构类型(architectural styles)来指导自己的设计。由于与设计模式之间的继承关系,也是从这个阶段开始,结构类型也被叫做结构模式(architectural patterns)。关于这方面的设计(就是指结构类型,或者说结构模式)得到了额外的注意,因此在这方面的经验开始逐步的积累起来了。

  与此同时,一些实在的系统已经用正式的方式分析了。比如说,对分布式仿真系统的高层次分析(High-Level Architecture of Distributed Simulation)的结构规格说明(architectural specification)已经可以在实现之前就检测出来其中的不协调(inconsistencies)之处,从而避免了昂贵的重新设计。

  对软件结构的分析和评估有很多值得研究的地方。软件体系结构分析方法(Software Architecture Analysis Method)为体系结构取择方法(Architecture Tradeoff Analysis Method)提供了方向,而后者为软件质量各项属性之间和属性自己的分析提供了支持。讲述把这方面(软件体系结构)研究转化成实际应用的书使这方面进入了新的外部探索阶段。关于这方面在特定领域的实现的书,诸如体系结构评估和文档化,也标志着整个方面进入了一个新的成熟阶段。

  在这个阶段,质量属性(quality attributes)的重要性和软件体系结构一起变的更加重要了。二十一世纪最初几年,质量属性和体系结构设计的决策(architectural design decisions)开始被紧密的连接起来了,也是第一次似乎开始研究自动化体系结构设计辅助工具了。

外部的强化和检测:1998 - 现在

  在这个阶段,有些技术已经很成熟可以被外界使用,而不是仅仅局限于研究者的小圈子。

  UML,当时在Rational公司的领导下,集成了大量的设计符号并且开发了一套系统的使用它们的方法。UML也许还有争议,但是它终于成为了行业标准的体系结构的描述语言。和UML紧密联系在一起的是RUP(Rational Unified Proces)开发方法,它是通过对菲利普·库鲁森(Philippe Kruchten)自己那套4+1视角的优雅想法工具化来实现的。UML为RUP提供了图形符号。但是它还缺乏一个健壮稳定的工具集来分析、检测一致性和自动在UML表示图和系统的代码之间建立连接。

  面向对象软件框架(OO software frameworks)的崛起催生了一大批对象类型软件结构的工具集和不可忽视的面向对象技术爱好者群体。由于面向对象的框架内置了对面向对象的支持和对组件协作的支持,所以很多问题的解决方案依然采用面向对象框架,即使它们不是最理想的。所以说,有普适性的体系结构描述语言技术是可以通过扩展来支持特定领域的体系结构的。大约在同一时刻,体系结构方面的成果已经提供了一个牢固的基础可以支持基于组件的软件工程(component-based software engineering movement)。

  企业级别(company-specific)的端对端(end to end)以软件体系结构为基础的生命周期模型,比如Raytheon Enterprise Architecture Process(http://wwwxt.raytheon.com/technology_today/v3_i2/feature_ent_arch.html),才是外界强化(external enhancement)的明显标志。

大众化阶段:2000 - 现在

  大众化阶段是由商业产品级别的质量、技术支持、商业化和可以在市场上对一个广泛的用户群推广的技术所表现出来的。

  万维网的爆发式增长和基于网络的电子商业为体系结构模式提供了强大的助力,其中电子商业还在领导着现在的商业化浪潮。多层客户端-服务器结构、代理模式结构、面向服务的结构,和相应的接口、描述语言、工具和开发环境,以及完全实现好了的组件、层、或者相关的子系统,都是在体系结构模式取得重大成功以后大量进入日常词汇的例子。微软声称它的.net平台“包括了所有针对商业需求的网络服务相关的IT体系结构的开发和发布工具:网络服务的服务器(server to host Web services)、创建它们的开发工具和使用它们的应用程序,以及在全世界范围多于3,5000个经过了微软认证的合作机构来提供所有您需要的帮助”(www.microsoft.com/net/basics.mspx )。相关的服务、工具、应用程序、平台和大量的使用者,都是围绕着软件体系结构,这些都表明,软件体系结构进入了大众化阶段。

  标志着一项技术已经可以应用在商业产品的特征是良好的标准。针对特定领域组件族(例如组件对象模型,也就是COM和CORBA)和接口(例如XML)的标准都已经存在多年,但是这些也说明人们对体系结构的关注并不亚于对重用的关注。有一个ANSI/IEEE标准IEEE-std-1471-2000,已经开始常识把现在系统工程和软件工程社区最佳的实践和探察结果用文档的形式规范化。新的标准一直在制定中,主要致力于把已经提出的重要模式规范化。最近,自动化工程师社区(the Society of Automotive Engineers)已经把它的体系结构分析和设计语言标准化了,这是一种真正的体系结构描述语言,在文档SAE Standard AS5506(www.sea.org/servlets/productDetail?pRod_TYP=STD&PROD_CD=AS5506)中定义。

  另外一个用户群活跃的明显标志是他们开始使用把某个概念的名字。比尔·盖茨可以给自己选择自己喜欢的任何头衔,是微软的“首席软件架构师”(chief software architect)。对象管理集团(Object Management Group,OMG,是corba的领导集团)把在开发中主动把业务(business)和应用逻辑(application logic)从平台中剥离出来的技术叫做“模型驱动体系结构”。由于软件工程研究所(Software Engineering Institute)号召把关于软件体系结构的工作提交到网上去,截止到二○○五年底,已经有二十四个国家在这方面的从业者提交了多于一百五十六个定义了(www.sei.cmu.edu/architecture/definitions.html)。另外一个标志是人们在流行的庇护下把自己的解释添加到体系结构的名字中,以致于它被弱化和滥用。比如“程序体系结构(program architeture)”这样的名词总是让我们觉得发抖。

  在制度上进入大众化阶段的标志是这方面课程的开设。在大学里,软件体系结构的课程已经从研究生向本科生发展。不止一本介绍软件工程的教科书添加了“体系结构设计”这样一章。在ACM/IEEE的本科课程(http://sites.computer.org/ccse/SE2004Volume.pdf)这是,百分之二十的软件设计课程时间是软件体系结构设计的。软件工程知识(Software Engineering Body of Knowledge,www.swebok.org)把软件体系结构作为它的软件设计中的主要部分。工业标准的培训课程和认证程序也开始广泛的被采用。

  最后,“软件体系结构”在很多地方已经是一个普通的头衔了。比如那些专注于软件领域的企业、专业的机构像是互联网软件体系结构研究所(www.wwisa.org)和国际软件体系结构联系会(International Association of Software Architects, www.iasahome.org)。这些组织还建立和培育了软件体系结构交流网,鼓励了专业的实践活动,(但愿)它们还帮助它们的成员挑选出来了大量的书——多于五十本——都是关于软件体系结构的。

  大型会议(conference)也在继续增多,不仅仅针对研究者社区,也针对普通用户群。在二○○六年初,SEI列出了即将举办的会议在会议分享中明确提到“软件体系结构”,数目多达二十多个(www.sei.cmu.edu/architecture/events.html)。这些会议中包括普通用户的网络会议(user network meetings)和研究会议。

现状

  广义上的软件体系结构这一概念,已经经经历了一个完整的瑞得文-莱得模型,而且吻合的相当好。结果就是为我们提供了一种能够为空前大规模、复杂度系统做出可靠的设计的能力,实在值得惊叹!而且这种能力越来越靠近一门严谨工程学科了。对一个现在的软件体系结构可以使用这些资源:

 *工业级现成的培训和认证程序集中的反映了软件体系结构是什么,和为什么它是一个严谨的科学;

 *标准的体系结构在无数的领域和应用中涌现出来。比如,现在已经没人会从头开始设计一个银行系统、一个航空系统、或者一个卫星地面站系统,或者是网络电子商务网站了;

 *在那些整体的体系结构解决方案还没出现的地方,部分的解决方案一定会以体系结构模式的分类和策略(catalogs of architectural patterns and tactics)的形式而存在,并且可以帮助解决很多问题和达到相当的质量要求;

 *点到点的生命周期(end-to-end life-cycle)模型(工业级的应用,或者是是企业级)是建立在体系结构的原则上的;

 *体系结构的评估和验证可以支持健壮、可重用的设计方法;

 *在实践上逐步的开始把体系结构的文档按照人为(artifacts)的标准书写,或者直接使用那些用来描述人为 标准的语言来书写文档;

 *商业品质的体系结构基础结构已经可以处理内部模块之间的交互和协调已经发布的计算环境;

 *商业品质的应用层(工具)能处理业务逻辑、用户界面和对功能层提供支持;

 *软件体系结构已经成为了一种职业(career tracks)和专业(professional societies);

 *关于软件体系结构方面,已经有很活跃的期刊和大型会议作为管道来把研究和实践联系起来。

  这些种种因素表明,软件体系结构已经深深的被集成到了软件工程当中了。

[原文在百度空间已经关闭]