软件体系结构的过去、现在和未来

软件体系结构的过去、现在和未来

                                                                             Philippe Kruchten, University of British Columbia

                                                                             Henk Obbink, Philips Research Europe

                                                                             Judith Stafford, Tufts University

 

原文:The Past, Present,and Future of Software Architecture

 

该专刊是为了庆祝软件体系结构会议和研讨会举办10 周年,以及IEEE Software 发表对这个课题研讨的10 周年(始于199511 月 份)。我们的目标是讨论软件系统周期中关于创建、捕捉以及使用软件体系结构的最新想法。我们所选择的文章涵盖了在研究中所涌现出来的用来支持软件架构实践 的创造性方法和技术。这些文章还同时强调了方法、技术、工具和软件工程原则,它们支持以体系结构为中心的软件开发的组织。

 

什么是软件体系结构?

软件体系结构是关于:

结构和组织。系统组件和子系统通过结构和组织交互,从而形成整个系统。

系统属性。它们可以在系统层上进行最好的设计和分析。

比如,我们可以通过评估软件体系结构来最大化地决定端对端的性能和产品线的兼容性。软件体系结构捕捉和保持设计者关于系统结构和行为的意图,从而提供了对于因时间而导致的设计衰退的防护。它是在复杂系统中获得智能控制的关键。

    虽然这个学科在不断成熟,但我们一直都没有对于这个简单问题的令人满意的简明扼要的答案(不存在一个被广泛接受的定义)。Paul ClementsSoftware Engineering Institute 的软件实践中列出几个定义  (http:// www.sei.cmu.edu/architecture/definitions.html ) 。在一个定义上取得一致 是在创建IEEE 标准最困难的事。事实上,缺乏共识并没有成为该学科发展的障碍,反而成为软件体系结构一个趣味娱乐的来源。软件体系结构有很多子领域。国际信息处理工作组联盟2.10 定义了如下5 个子领域:

体系结构设计。怎样产生一个体系结构?

分析。在一个体系结构的基础上,对于最后产品的质量,我们怎么回应问题?

实现。在一个体系结构描述的基础上,我们怎么实现一个系统?

表示。怎么实现一个持久耐用的表示用来与人和机器进行交互?

经济。什么样的的体系结构能够驾驭商业决定?

当然,软件体系结构也与其他学科和领域紧密相连。比如软件设计(广义上),软件重用,系统工程和体系结构,企业体系结构,逆向工程,需求工程,以及质量。

 

软件体系结构简史

回顾过去有助于我们认识软件体系结构的现状以及未来的发展方向。我们也同时提供了相关的书籍,论文,会议以及网站。

1995 年之前

软件体系结构这个术语第一次出现在 1969 年由 NATO 组织的一个关于软件工程的会议上。我们领域中一些德高望重的前辈们参加了这次会议,包括 Tony Hoare, Edsger Dijkstra, Alan Perlis, Per Brinch Hansen, Friedrich Bauer Niklaus Wirth

    从那时候一直到 20 世纪 80 年代末期,“体系结构”这个词大部分是用在系统的体系结构上(计算机系统的物理结构),或者有时候在更小意义上是指特定范围的计算机指令集。软件系统组织的关键来源包括 1975 Fred Brooks 2 】, 1983 Butler Lampson 3 】, 1972 1986 David Parnas 4-7 】,以及 1985 John Mills 8 】。

     计算机软件体系结构作为一个单独的学科开始于 1990 年。一篇由 Winston W. Royce Walker Royce 父子在 1991 撰写的文章第一次提到了软件体系结构【 9 】,无论是标题还是观点。 Eberhardt Rechtin 在他的 1991 年的书 Systems Architecting: Creating and Building Complex Systems 10 】中花了几个章节在描述计算机软件上。同一年,我们的其中一个( Philippe Kruchten )写了一篇文章,将迭代式开发与体系结构联系起来,并且定义了在指令控制系统中使用的多重视图【 11 】。

1992 年, Dewayne Perry Alexander Wolf 发表了对以后发展有巨大影响的文章《软件体系结构研究的基础》( Foundations for the Study of Software Architecture )【 12 】。这篇文章介绍了著名的公式 {elements, forms, rationale} = software architecture 。随后 Barry Boehm 又在该公式中加了 constraints 。对于许多研究者来说,公式中的 elements 指的是组件和连接器。这些是一系列体系结构描述语言( ADLs ),的基础,包括 C2, Rapide, Darwin, Wright, ACME Unicon 。可惜的是这些并没有在工业界中扎根下来。 1994 年, IBM 前员工 Bernard Witt, F. Terry Baker Everett Merrit 撰写了关于软件体系结构的书【 13 】。

       1995-1998

在 1995 年,软件体系结构才真正迎来了蓬勃发展的时期,并且许多工业界和学术界的贡献也加速了这个过程。值得注意的例子包括: Software Architecture Analysis Method ( SAAM )【 14 】;有关多重视图的一些方法,如 Rational 的 4+1 视图【 15 】或者 Siemens 的四维视图【 16 】;还有一些特殊的软件体系结构设计模式【 17 】。 Siemens 【 18 】, Nokia 【 19 】, Philips 【 20 】, Nortel , Lockheed Martin , IBM 以及其他大的软件开发组织(主要是在系统,航天和通信方面)开始注意到软件的体系结构,他们与软件重用研究团体联合起来研究软件生产线体系结构【 21 】。另一本由 Rechtin 和 Mark Maier 撰写的书《 The Art of Systems Architecting 》【 22 】很好地填补了系统和软件之间的空白。

      1999-2005

      1999 是软件体系结构的又一个关键年。这一年, IFIP 举行了第一次关于软件体系结构的会议【 23 】以及成立了 IFIP Working Group 2.10 和软件架构师全球协会。许多学术界外的人士开始投入实践 24-27 】。 为了提高体系结构描述的实用性, Open Group 组织引入了体系结构描述标记语言( the Architecture Description Markup Language )。这是一个基于 XML ADL ,用来为体系结构的广泛使用提供支持。与可重用和产品家族领域的合作,软件产品线成为了一个子学科,引起了许多大制造商的关注。新软件架构师全球协会。许多学术界外的人士开始的方法不断涌现出来或者得到巩固,比如 SAAM BAPO ATAM 14 28 29 】。我们有一个普遍的体系结构标准 RMODP 30 31 】,还加了一个 IEEE1471 1 】。 SEI 小组也撰写了很多书籍【 29 32-34 】。

 

我们现在哪个阶段?

大公司们都有他们自己的首席架构师,比如 Microsoft 。现在的称呼稍微有点多,从软件设计师和开发者到软件架构师。几年前, Mary Shaw 呼吁不要把每样东西都叫做体系结构。

我们现在已经有了许多丰富的 ADL 。但是只有少数在实际中使用,比如 Koala 35 】或者 UML (如果你认为它是 ADL 的话)。

在一些领域中,成熟的体系结构以平台的方式存在——比如 J2EE, .NET, Symbian/Series 60 Websphere 。应用层交互标准比如 XML SOAP 对于这些体系结构的发展有很重大的影响。脚本语言,像 Python Perl ,改变了我们构造系统的方式。架构师基于他们对这些平台能力的理解来构建系统。另外,开源软件也正强烈地影响着实践。

许多软件体系结构的知识可以从多于 25 本的书中(参看“体系结构图书馆”)和不计其数的文章中得到(参看“重要的论文”)。世界上血多大学都有开软件体系机构的课程,许多组织也提供架构师的培训课程,以及一个活跃的社区团体也已经形成(参看“软件体系结构社区”)。

一门学科已经开始兴起了!

 

参考文献

1. IEEE 1471:2000, Recommended Practice for Architectural Description of Software-Intensive Systems , IEEE Press, 2000.

2. F.P. Brooks Jr., The Mythical Man-Month , Addison-Wesley, 1975.

3. B.W. Lampson, “Hints for Computer System Design,” Operating Systems Rev., vol. 15, no. 5, 1983, pp. 33–48.

4. D.L. Parnas, “On the Criteria to Be Used in Decomposing Systems into Modules,” Comm. ACM , vol. 15, no. 12, 1972, pp. 1053–1058.

5. D.L. Parnas, “On the Design and Development of Program Families,” IEEE Trans. Software Eng., vol. 2, no. 1, 1976, pp. 1–9.

6. D.L. Parnas and P. Clements, “A Rational Design Process: How and Why to Fake It,” IEEE Trans. Software Eng. , vol. 12, no. 2, 1986, pp. 251–257.

7. D.L. Parnas, P. Clements, and D.M. Weiss, “The Modular Structure of Complex Systems,” IEEE Trans. Software Eng. , vol. 11, no. 3, 1985, pp. 259–266.

8. J.A. Mills, “A Pragmatic View of the System Architect,” Comm. ACM , vol. 28, no. 7, 1985, pp. 708–717.

9. W.E. Royce and W. Royce, “Software Architecture: Integrating Process and Technology,” TRW Quest , vol. 14, no. 1, 1991, pp. 2–15.

10. E. Rechtin, Systems Architecting: Creating and Building Complex Systems , Prentice Hall, 1991.

11. P. Kruchten, “Un Processus de Développement de Logiciel Itératif et Centré sur l’Architecture [An Iterative Software Development Process Centered on Architecture],” Proc. 4ème Congrès de Génie Logiciel , EC2, 1991, pp. 369–378.

12. D.E. Perry and A.L. Wolf, “Foundations for the Study of Software Architecture,” ACM Software Eng. Notes , vol. 17, no. 4, 1992, pp. 40–52.

13. B. Witt, F.T. Baker, and E. Merritt, Software Architecture and Design: Principles, Models, and Methods , Van Nostrand Reinhold, 1994.

14. R. Kazman et al., “SAAM: A Method for Analyzing the Properties of Software Architectures,” Proc. 16th Int’l Conf. Software Eng. (ICSE 94), IEEE CS Press, 1994, pp. 81–90.

15. P. Kruchten, “The 4+1 View Model of Architecture,” IEEE Software , vol. 12, no. 6, 1995, pp. 45–50.

16. D. Soni, R. Nord, and C. Hofmeister, “Software Architecture in Industrial Applications,” Proc. 17th Int’l Conf. Software Eng . (ICSE-17), ACM Press, 1995, pp. 196–207.

17. F. Buschmann et al., Pattern-Oriented Software Architecture: A System of Patterns , John Wiley & Sons, 1996.

18. C. Hofmeister, R. Nord, and D. Soni, Applied Software Architecture , Addison-Wesley, 1999.

19. A. Ran, “ARES Conceptual Framework for Software Architecture,” Software Architecture for Product Families: Principles and Practice , M. Jazayeri, A. Ran, and F. van der Linden, eds., Addison-Wesley, 2000, pp. 1–29.

20. J.K. Müller, “Integrating Architectural Design into the Development Process,” Proc. 1995 Int’l Symp. and Workshop Systems Eng. of Computer-Based Systems , IEEE Press, 1995, pp. 114–121.

21. I. Jacobson, K. Palmkvist, and S. Dyrhage, “Systems of Interconnected Systems,” Report on Object-Oriented Analysis and Design ( ROAD ), vol. 2, no. 1, May-June 1995.

22. E. Rechtin and M. Maier, The Art of Systems Architecting , CRC Books, 1997.

23. P. Donohue, ed., Software Architecture—1st IFIP Conf. Software Architecture (WICSA 1), Kluwer Academic Publishers, 1999.

24. R.C. Malveau and T.J. Mowbray, S oftware Architect Bootcamp , 2nd ed., Prentice Hall, 2000.

25. D.M. Dikel, D. Kane, and J.R. Wilson, Software Architecture: Organizational Principles and Patterns , Prentice Hall, 2001.

26. H. Obbink et al., Report on Software Architecture Review and Assessment (SARA) , V1.0, Feb. 2002; www.philippe.kruchten.com/architecture/SARAv1.pdf.

27. P. Kruchten, The Rational Unified Process—An Introduction , Addison-Wesley, 1998.

28. H. Obbink et al., “COPA: A Component-Oriented Platform Architecting Method for Families of Software-Intensive Electronic Products (Tutorial),” Proc. 1st Software Product Line Conf. (SPLC1), 2000; www.extra. research.philips.com/SAE/COPA/COPA_Tutorial.pdf.

29. P. Clements, R. Kazman, and M. Klein, Evaluating Software Architecture , Addison-Wesley, 2002.

30. ISO/IEC 10746:1995, Reference Model of Open Distributed Processing (RM-ODP) , ITU Rec. X901, 1995.

31. J. Putman, Architecting with RM-ODP , Prentice Hall, 2000.

32. L. Bass, P. Clements, and R. Kazman, Software Architecture in Practice , Addison-Wesley, 1998.

33. P. Clements et al., Documenting Software Architectures:Views and Beyond , Addison-Wesley, 2002.

34. P. Clements and L. Northrop, Software Product Lines: Practice and Patterns , Addison-Wesley, 2002.

35. R. van Ommering et al., “The Koala Component Model for Consumer Electronics,” IEEE Trans. Computers , vol. 33, no. 3, 2000, pp. 78–85.

36. M. Shaw, “The Coming-of-Age of Software Architecture Research,” Proc. 23rd Int’l Conf. Software Eng. (ICSE 01), IEEE CS Press, 2001, pp. 656–664a.

37. B. Selic, “The Pragmatics of Model-Driven Development,” IEEE Software , vol. 20, no. 5, 2004, pp. 19–25.

38. R. Soley, Model-Driven Architecture , Object Management Group, 2000.

39. J. Bosch, “Software Architecture: The Next Step,” Proc.1st European Workshop Software Architecture (EWSA 04), Springer, 2004, pp. 194–199.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值