现在的位置: 首页 > 综合 > 正文

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

2018年05月13日 ⁄ 综合 ⁄ 共 7895字 ⁄ 字号 评论关闭

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

                                                                             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

周年(始于1995

11


份)。我们的目标是讨论软件系统周期中关于创建、捕捉以及使用软件体系结构的最新想法。我们所选择的文章涵盖了在研究中所涌现出来的用来支持软件架构实践
的创造性方法和技术。这些文章还同时强调了方法、技术、工具和软件工程原则,它们支持以体系结构为中心的软件开发的组织。

 

什么是软件体系结构?

软件体系结构是关于:

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

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

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

    虽然这个学科在不断成熟,但我们一直都没有对于这个简单问题的令人满意的简明扼要的答案(不存在一个被广泛接受的定义)。Paul Clements

Software 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.

抱歉!评论已关闭.