如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
第9章软件体系结构与设计模式9.1软件体系结构的基本概念DewaynePerry和A1exanderWo1f曾这样定义:“软件体系结构是具有一定形式的结构化元素,即构件的集合,包括处理构件、数据构件和连接构件。处理构件负责对数据进行加工,数据构件是被加工的信息,连接构件把体系结构的不同部分组合连接起来。”虽然软件体系结构的定义在变化,但其意图是清晰的。体系结构设计是一系列决策和基本原理的集合,这些决策的目标在于开发高效的软件体系结构。在体系结构设计中所强调的基本原理是系统的可理解性、可维护性和可扩展性。1.模式软件设计模式是从软件设计过程中总结出来的,是针对特定问题的解决方案。建筑师C.Alexander对模式给出的经典定义是:每个模式都描述了一个在我们的环境中不断出现的问题及该问题解决方案的核心。在软件系统中,可以将模式划分为以下3类。(1)体系结构模式(architecturalpattern):表达了软件系统的基本结构组织形式或者结构方案,包含了一组预定义的子系统,规定了这些子系统的责任,同时还提供了用于组织和管理这些子系统的规则和向导。典型的体系结构模式如OSI参考模型。(2)设计模式(designpattern):为软件系统的子系统、构件或者构件之间的关系提供一个精炼之后的解决方案,描述了在特定环境下,用于解决通用软件设计问题的构件以及这些构件相互通信时的各种结构。有代表性的设计模式是ErichGamma及其同事提出的23种设计模式。(3)惯用法(idiom):是与编程语言相关的低级模式,描述如何实现构件的某些功能,或者利用编程语言的特性来实现构件内部要素之间的通信功能。2.风格风格是带有一种倾向性的模式。同一个问题可以有不同的解决问题的方案或模式,但我们根据经验,通常会强烈倾向于采用特定的模式,这就是风格。每种风格描述一种系统范畴,该范畴包括:(1)一组构件(如数据库、计算模块)完成系统需要的某种功能;(2)一组连接件,它们能使构件间实现“通信”、“合作”和“协调”;(3)约束,定义构件如何集成为一个系统;(4)语义模型,它能使设计者通过分析系统的构成成分的性质来理解系统的整体性质。对体系结构风格的研究和实践为大粒度的软件复用提供了可能。软件复用是指重复使用那些“为了复用目的而设计的软件”的过程,可复用软件即是指为了复用目的而设计的软件,是指在开发新的软件系统时重复使用以前的资源,例如系统设计、源代码、文档等。软件复用可以分为产品复用和过程复用。产品复用指复用已有的软件构件,通过构件集成(组装)得到新的系统。过程复用指复用已有的软件开发过程,使用可复用的应用生成器来自动或半自动地生成所需系统。软件复用按复用粒度大小和抽象层次的不同,可以分为小粒度、中粒度和大粒度复用三类:①小粒度复用,即小规模复用,例如程序代码的复用。②中粒度复用,即中等规模复用,例如软件设计结果的复用。③大粒度复用,即大规模复用,例如应用子系统的复用。通过中粒度复用,软件设计者们在开发一个新的软件系统时,可以利用己有的需求分析、系统设计的思想和结果。通过大粒度复用,软件设计者们又可以利用己有的系统来组建新的应用系统。即在设计新的应用系统时,只需考虑各子系统之间相互作用的框架结构,而不必关心设计和实现的细节,从而缩短了开发时间,因而降低了开发成本。9.1软件体系结构的基本概念MFC,微软基础类(MicrosoftFoundationClasses):实际上是微软提供的,用于在C++环境下编写应用程序的一个框架和引擎。MFC框架定义了应用程序的轮廓,并提供了用户接口的标准实现方法,程序员所要做的就是通过预定义的接口把具体应用程序特有的东西填入这个轮廓。MicrosoftVisualC++提供了相应的工具来完成这个工作:AppWizard可以用来生成初步的框架文件(代码和资源等);资源编辑器用于帮助直观地设计用户接口;ClassWizard用来协助添加代码到框架文件;最后,编译,则通过类库实现了应用程序特定的逻辑。Struts是源代码开放的企业级Web应用开发框架,它的设计目的是从整体上减轻构造企业Web应用的负担,同时它也是第一个完整意义上的基于MVC模式的框架。体系结构的重要作用体现在以下三个方面:(1)体系结构的表示有助于风险承担者(项目干系人)进行交流。(2)体系结构突出了早期设计决策。(3)软件体系结构是可传递和可复用的模型。当输入数据经过一系列的计算和操作构件的变换形成输出数据时,可以应用这种体系结构。管道/过滤器、批处理序列都属于数据流风格。管道/过滤器结构如下图所示。从上图可看出,管道/过滤器结构拥有一组被称为过滤器(filte