An Introduction to Software Architecture
[阅读报告]
姓
学
年
院
班
名:高欣
号:00947037
级:2009级
系:计算机学院&软件学院
级:软件工程(2)班
指导老师:刘靖
2012-3-8
AN INTRODUCTION TO SOFTWARE ARCHITECTURE
[阅读报告]
一、作者简介
卡内基梅隆大学和加州大学埃尔文分校在软件架构领域作了很多研究。其中卡内
基·梅隆大学的 Mary Shaw 和 David Garlan 于 1996 年写了一本叫做 Software
Architecture perspective on an emerging DIscipline 的书,提出了软件架构中
的很多概念,例如软件组件、连接器、风格等等。
本文的作者便是在软件架构领域有突出贡献的 Mary Shaw 和 David Garlan。
二、 内容概要
本文发表于 1994 年 1 月,从软件架构的产生谈到软件架构的应用,以及软件架
构在软件开发的过程中所占的地位和影响。
为了提出软件体系结构这一概念,作者对体系结构产生的原因进行了解释。由于
在设计的过程中,曾经占主导地位的算法和数据结构的设计已经不再构成软件设计的
主要问题,当系统搭建在多个构件上时,整个系统的组织——软件体系结构,代表了
一组新的设计问题。由此,提出了软件体系结构的概念。
在本文中,作者介绍了一些系统目前基于的架构风格,并且在一个简单的设计中
来展示截然不同的风格也可以结合使用。然后用 6 个案例来说明一个好的架构怎么提
高开发人员对复杂系统的理解。最后,作者调查了一些在该领域悬而未决的问题,并
考虑了几个有前途的研究方向。
作者简单介绍软件体系结构,其目的是为了说明目前的学科状态,并且验证体系
结构设计可能会影响软件设计的方式。
1
首先,从高级编程语言到软件体系结构。作者在文中阐述了高级编程语言、抽象
数据类型的产生,就像在 20 实际 60 年代好的程序员认识到一个好的数据结构的作用
一样,现在一个优秀的软件系统设计师也认识到了软件系统的组织发式也一样重要。
其次,介绍了常见的体系结构风格。为了理解体系结构的定义,作者引出了管
道、过滤器,数据抽象和面向对象的组织,基于事件的隐式调用,分层系统,库以及
表驱动等概念。接着介绍了一些熟悉的软件架构,其中有分布式流程、主程序/子程序
组织、特定域的软件架构、状态转换系统以及过程控制系统。最后介绍了异构架构的
概念。
第三,通过 6 个案例来说明软件架构如何提高开发人员对于复杂系统的了解。案
例一中首先提出了一个问题,基于这个问题提出了 4 中不同的解决方案,然后对比了
4 种解决方案。案例二是研究的一个仪器软件,通过解决方法的面向对象模型、分层
模型、管道和过滤器模型以及改进的管道和过滤器模型 4 种模型,说明每一种风格都
有各自的特点,而软件设计必须适应单一的形式,特定领域的问题需要特殊的模型来
解决问题。案例三探讨了一个有关编译器的问题。提出了一种解决目前编译器的编译
算法和陈述越来越复杂的问题。案例 4 介绍了不同风格下图层的分层设计。其中将软
件系统划分为 1 级、2 级、3 级和 4、5 级。每个级别对应不同的进程管理功能。案例
5 介绍了有关组件的使用问题。该案例也从不同的角度说明了两个问题。案例 6 则介
绍了有关黑板模型的知识。
第四,过去、现在和将来。从软件体系结构的产生谈到该学科目前的发展状况,
而面对如今需求的软件系统的规模越来越大,作者预期,我们对软件体系结构的认识
和实践将随着时间的推移而不断进步。
第五,致谢。作者在这部分对为本文提供了帮助的各单位进行了致谢。
三、总结
通过阅读《软件架构简介》一文,从其产生到目前该学科发展的状况都有了更深
的理解。虽然目前没有积累到丰富的软件开发经验,不能身临其境地体会体系结构对
软件开发的影响力。但是从文章中能够了解到,随着软件规模的不断增大,体系结构
2
的设计在整个软件开发的过程中将起到越来越重要的作用。体系结构设计的好坏将直
接影响到整个软件开发的成败。所以,一个好的架构师,应能像程序员能够认识并且
选择最佳的算法和数据结构一样,能从不同的架构风格中选择能够满足软件需求的最
佳方案。
3