基本研究阶段:1985 - 1993

  在开发复杂的软件系统的同时,软件设计者们就已经开始使用线框图和一些没有正规化的解释来描述他们的软件结构了。其中有些比较优秀的设计者注意到了在这些对软件结构的描述中存在着相似的格式,并且用一些特殊的方式把这些相似的格式剥离了出来。这些软件结构有时候就被称为“体系结构”,但是那些通用的软件结构方面的知识,也就是可以普遍使用的结构模型还没有被系统的总结出来。

  在八十年代中期,值得注意的是若干软件体系结构方面基础性的概念已经出现,开始了它们在瑞得文-莱得(Redwine-Riddle)模型中十五到二十年的历程。包括信息隐藏、抽象数据类型和其他一些把软件的组件作为黑盒看待的想法。面向对象(OO)的开发也在继承和抽象数据类型的基础上建立了起来。这些思想都是建立在迪杰克拉斯(Edsger Dijkstra)、戴维·帕那(David Parnas)和其他认为计算机程序仅仅把正确的结果输出出来还远远不够的人的实践和思考的基础上。而其他的软件质量问题,比如依赖性和可维护性,也是很重要的,这些通过仔细的设计就能确保。

  到了八十年代后期,研究方向开始转向特定方向设计的优点,就是针对特定问题设计出特定的软件结构。其中的有些研究成果对特定的应用领域和产品有很大作用,比如航空电子产品、示波器和导弹控制系统。其他有些研究成果把关于通用的软件结构,或者说那些可以解决多个问题领域体系结构模型的不规范化不系统的知识组织了起来。这方面的研究把已有的软件系统分类,通过区分特定类型的系统和找出一个通用的方法来描述这些系统,从而提取出来通用的软件体系结构类型,比如管道-过滤器模式(pipe-filter)、仓库系统模式(repository)、隐式调用模式(implicit invocation),和协同处理模式(cooperating processes)。还有一些对前两种研究成果不足之处进行的研究,建立了描述体系结构类型的模式和两篇被广泛引用的论文——这两篇论文分别发表于1992和1993年,它们确立了软件体系结构这个研究领域的结构和名字。

概念的公式化表述阶段:1992 - 1996

  体系结构的描述语言(Architecture description language,ADL)、把体系结构形式化和分类对详细的阐述和探讨在上一阶段产生的模型很有帮助。这些早期的想法,或者说思想集中在软件系统中普遍出现和使用的软件结构上,而它们的结果强调对它们在实践中应用的描述。

  体系结构的描述语言像一个运输车一样添加了大量的细节,丰富了体系结构各个方面的细节,特别是对正在浮现的面向对象。

  而把体系结构形式化则和语言的开发同步进行,有时候和语言作为一个整体出现;但是在更多的情况下,它是独立把某个特定系统的类型、或者针对某个特定系统的分析、或者是某个应用领域形式化的表述出来。认为体系结构的分析必须与在多种观点下仍保持一致的看法给出了形式化体系结构的需求。

  早期叙述性的分类现在扩展成了科学分类方法下的分类,并且对每个类别都有支持它的各种事例。普遍出现的一些类型也被提炼分类,作为一个模式而表述出来。在早期有本书是介绍这些的:软件体系结构:一个即将浮现的学科(Software Architecture: Perspective on an Emerging Discipline),它为进一步开展这方面的研究奠定了基础。

  在理解了体系结构方面的决定与一个系统质量要求之间的关系后,我们就可以看到对软件体系结构进行确认是减少风险的一种有效方法。内部联系的方法学(Interconnectivity metrics)和特征驱动的体系结构分析技术提供了一种更加通用的对体系结构进行评估的方法,比如软件体系结构分析方法(Software Architecture Analysis Method)。

  在这个阶段值得注意的是,体系结构已经开始作为一个可以使用的概念而出现。戴维·帕那(David Parnas)在1974年发现一个软件系统中会有许多软件结构,每个软件结构在整个工程中因为不同的目的而存在,但是要区分它们之间的不同却没什么意义,他以此为之创造了条件。在瑞得文-莱得(Redwine-Riddle)模型的周期后,这方面的概念在各个有影响的论文中雨后春笋般的出现,最终确立了软件体系结构实践方面的观点。

  在相关论题上的研讨会(比如,软件规格和设计国际研讨会,http://portal.acm.org/toc.cfm?id=SERIES341)为对软件体系结构感兴趣或者有研究的人提供了一个临时的讨论社区。一个正式的叫Dagstuhl的研讨会(www.dagstuhl.de/9508/Report)在1995年举办,它里面聚集了很多思考软件体系结构现状和未来发展方向的研究人员。在1995年到2000年,一系列的国际软件体系结构研讨会(也有和其他议题的会议相关的)提供了一个针对软件体系结构方面话题并且欢迎在这方面发言的论坛。

发展和扩张阶段:1995 - 2000

  在这个阶段,研究的焦点转向了统一和提炼以前的研究成果。ACME软件体系结构交换语言在设计时候的目的是提供一个框架使不同的软件体系结构描述语言之间可以相互的转换,但是它很快就成长起来集成了其他的设计、分析和开发工具。对体系结构的语言、要素的分类学的提炼也在进行。

  这个领域的研究机制也成熟了起来。1995年,IEEE的软件工程学报(Transactions on software engineering)也开辟了一个在软件体系结构方面的专刊。第二十二届国际软件工程大会的“软件工程的未来”专题会议(Future of SE, www.softwaresystem.org/future.html)在二○○○年把软件体系结构作为了它的一个议题,而且现在国际软件工程大会的日常议题中已经有一个或者多个体系结构方面的议题。而另外一个独立的会议,IEEE/IFIP(www.wicsa.net)关于体系结构的工作会议也在1998年召开,并且持续到今天。它的一个主办者正是一个新兴的信息处理国际联盟在软件体系结构方面的工作组(www.softwarearchitectureportal.org)。

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