章六 软件体系结构的研究与展望
计算机的软件领域主要研究计算机使用的环境技术,包括系统软件、用户编程环境与工具、应用软件等。
计算机硬件能够快速发展的原因之一是工业化程度比较好,很多集成电路按照功能做成标准器件,因而好的功能块会保留下来并不断改进。
软件的友好性主要取决于用户界面的设计和人机交互流程的质量。
1、目前软件体系结构的研究方向
软件体系由构成系统的元素的描述、元素的相互作用、指导元素集成的模式以及这些模式的约束组成。
一个特定的系统是用一些构件的集合和构件之间的交互来定义的。
软件体系结构不仅指定了系统的组织结构和拓扑结构,并且显示了系统需求和构成系统的元素之间的对应关系,提供了一些设计决策的基本原理。
软件体系结构级的设计包括软件系统结构、全局控制结构、通讯协议、同步机制和数据存取、为设计元素分配功能、设计元素的组合、软件系统的物理分布、力度和性能以及多种方案的选择。
在体系结构级,相关的系统级典型问题包括:容量、吞吐量、一致性和构件兼容性等一系列问题。
目前,在软件体系结构领域主要致力于模块接口语言、特定领域的体系结构、软件重用、软件模式的规范化、软件体系结构描述语言、软件体系结构设计的形式化基础和设计环境的研究。
2、主要的研究方向分为4类:
(1)提供新的软件体系结构设计语言,使得系统开发者能够很好的描述他们设计的结构,以便与人交流,能够用提供的工具对许多实例进行分析。
(2)对软件体系结构的专门知识的整理。
(3)提供特定领域的体系结构框架。
(4)提供软件体系结构的形式化基础。
3、IEEE在软件体系结构方面的标准
2000年,计算机协会通过了IEEE1471标准,该标准为准确地体系化描述实践提供了统一的文件。促成IEEE1471批准的决定过程演示了该标准是如何来解决概念性问题的,并且强调了在标准形成过程中解决这些各种问题所涉及到的困难。
4、五个核心概念和相互关系为IEEE1471版本的通过提供了基本原则:
(1)每个系统具有一个体系结构,但一个体系结构不是一个系统;
(2)体系结构与体系结构描述不是一回事;
(3)体系结构标准、描述、及开发过程可以不同,并且可以单独地进行研究;
(4)体系结构描述本身是多见解的;
(5)把一个对象的总体概念从其详述中分离开是撰写体系结构标准的一个有效方法。
5、IEEE1471把重点放在软件密集型系统和更通用的系统上。
IEEE1471将“体系结构”定义为:体现在各组成部分、它们之间相互关系与环境的关系、和指导设计和演变的原理之中的一个系统的基本结构。
6、IEEE1471最重要的组成部分为:
(1)对关键术语的定义,如体系结构描述、结构性视图与体系结构性视点;
(2)对体系结构与体系结构描述在概念上的分离促进了描述体系结构标准和构筑系统标准的建立;
(3)用于描述一个系统体系结构的内容要求。
7、IEEE1471中,“视图”是一个能描绘整个系统的一个方面的模型的集合。
一个视图仅用于一个系统。
“视点”是起草可重复使用、特定域体系结构描述标准的工具。
一个体系结构描述必须为其所包括的每个视图定义视点。
8、IEEE1471的体系结构描述要求:
第一,一个体系结构描述必须规定系统的用户,确定他们体系结构的要点。
熟知的要点为:
(1)功能性:该系统需要去做什么?
(2)性能:在重度负载下系统将如何运转?
(3)安全性:系统有保护用户信息的足够能力吗?
(4)可行性:我们可以实现该系统吗?
第二,一个体系结构描述必须被编入一个或多个系统的体系结构视图中。
最后,一个体系结构描述必须为制定关键的结构性决策提供基本原则。
IEEE1471标准重点在说明,而非实施过程。
9、几种主要的软件体系结构的风格和比较
体系结构的风格是指在众多系统中所拥有的共同的结构和语义特性,指导如何将各个模块和子系统组织成一个完整的系统。
客户机Client、服务器Server、过滤器Filters、层Layers、数据库Database等都是构件;
过程调用、事件广播、数据库协议和管道都是连接器。
10、通用体系结构风格的分类:
(1)数据流风格:批处理序列、管道/过滤器;
(2)调用/返回风格、主程序/子程序、面向对象风格、层次结构;
(3)独立构件风格:进程通讯、事件系统;
(4)虚拟机风格:解释器、基于规则的系统;
(5)数据中心风格:数据库系统、超文本系统、黑板系统。
一个体现结构风格定义了有相同组织结构模式的一系列系统,并定义了构件和连接器类型的列表和一套构件连接的约束。
11、几种主要的体系结构风格和优缺点:
(1)管道/过滤器风格
每一个构件有一组输入和输出,构件读入数据流并产生数据的数据流。
优点:允许设计者将整个系统的输入、输出行为看成是多个过滤器行为的简单合成;支持软件重用;系统维护和增强系统性能简单;允许对一些入吞吐量、死锁等属性的分析;支持并行执行。
缺点:通常导致进程称为批处理的结构;不适合处理交互的应用;数据传输入通用标准,故每个过滤器都增加了解析和合成数据的各种,导致系统性能下降,并增加了编写过滤器的复杂性。
(2)数据抽象和面向对象风格
建立在数据抽象和面向对象的基础上,数据的表示方法和它们的相应操作封装在一个抽象数据类型或者对象中。
此风格的两个重要方面:对象负责保持数据表示的完整性;对象的表示是对其它对象隐藏的。
优点:改变一个对象的表示,不影响其它的对象;数据存取操作的问题可分解成一些交互的代理程序的集合。
缺点:为使一个对象和另一个对象通过过程调用等进行交互,必须指导对象的标识。
(3)基于事件的隐式调用风格
其思想是不直接调用一个过程,而触发或者广播一个事件或者多个事件。
优点:为软件重用提供了强大的支持;为改进系统带来了方便。
缺点:构件放弃了对系统计算的控制;数据交换的问题;既然过程的语义必须依赖于被触发的事件的上下文约束,那么正确性的推理就存在问题。
(4)层次系统风格
层次系统组织成一个层次结构,每一层为上一层提供服务,并作为下一层的客户。
这样的系统中构件在一些层实现了虚拟机。
优点:支持基于可增加抽象的层的设计;支持系统改进;支持软件重用。
缺点:不是所有的系统都可以容易地被构建成层次系统;很难找到合适的抽象的层。
12、用软件体系结构的理论指导软件设计的优点:
(1)能识别础重要的通用规范,就能理解系统间的高级关系;
(2)是软件系统设计成功的要素是正确的体系结构;
(3)对软件体系结构细节的认识,可在各种设计方案中做出首要的选择;
(4)软件体系结构风格通常对分析和描述复杂系统的高级属性是必要的;
(5)熟练地使用描述体系结构范型的表示法,便于交流;
(6)便于软件重用。
13、领域特定的软件体系结构Domain-Specific Software Architecture,DSSA)
有原则的使用软件体系结构可以在五个方面对软件开发产生积极的影响,方面是:理解;重用;演化;分析;管理。
DSSA实质是一种软件构件的集合,它用标准的结构或者协议书写,专为某类特定任务,然后再推广出去,为整个类似的问题域而用。