清华大学郑人杰_殷仁昆教_软件工程讲义-06讲解

上传人:我** 文档编号:115407808 上传时间:2019-11-13 格式:PPT 页数:212 大小:721KB
返回 下载 相关 举报
清华大学郑人杰_殷仁昆教_软件工程讲义-06讲解_第1页
第1页 / 共212页
清华大学郑人杰_殷仁昆教_软件工程讲义-06讲解_第2页
第2页 / 共212页
清华大学郑人杰_殷仁昆教_软件工程讲义-06讲解_第3页
第3页 / 共212页
清华大学郑人杰_殷仁昆教_软件工程讲义-06讲解_第4页
第4页 / 共212页
清华大学郑人杰_殷仁昆教_软件工程讲义-06讲解_第5页
第5页 / 共212页
点击查看更多>>
资源描述

《清华大学郑人杰_殷仁昆教_软件工程讲义-06讲解》由会员分享,可在线阅读,更多相关《清华大学郑人杰_殷仁昆教_软件工程讲义-06讲解(212页珍藏版)》请在金锄头文库上搜索。

1、软件工程,1,软件工程 第六章 软件体系结构,6.1 软件体系结构的概念 6.2 软件体系结构的设计 6.3 特定领域的体系结构 6.4 分布式软件体系结构 6.5 设计模式,软件工程,2,一个程序或计算机系统的软件体系结构包括一个或一组软件构件、软件构件的外部可见特性及其相互关系。 软件构件的外部可见特性是指软件构件提供的服务、性能、特性、错误处理、共享资源使用等。 软件体系结构的基本单位是软件构件,软件构件是一个软件体系结构的核心。,6.1 软件体系结构的概念,6.1.1 软件体系结构的定义,软件工程,3,软件构件可以是子系统,也可以是模块。在它们之间没有清晰的界限,但可以依据下列两点加以

2、区分: 一个子系统独立构成系统,不依赖其他子系统提供的服务。子系统由模块或更小的子系统构成。子系统之间的交互通过它们的接口。 一个模块通常是一个能提供一个或多个服务的系统构件,它能够利用其他模块提供的服务,一般不被看成一个独立的系统,模块可以由更简单的模块组成。,软件工程,4,概念结构:从主要设计元素(构件)及其相互关联、设计原则和性能角度考虑的结构。 模块结构:根据功能分解建立模块的层次结构包括模块接口、模块管理、模块控制和一致性等问题。 代码结构:描述源程序,二进制程序,库文件。在开发环境下的组织包括系统资源配置管理,系统构造和对象嵌入机制 OEM 等。 执行结构:描述系统的动态结构包括性

3、能、调度、动态配置和不同系统间的接口等。,6.1.2 软件体系结构的不同形式,软件工程,5,6.1.3 在软件构件设计中应保持的性质,计算功能:描述构件所实现的整体功能。 结构特性:描述特定构件定义、构件打包的方式和相互交互的方式,构件如何组织以构成整个系统。 附属功能:描述构件的执行效率、处理能力、环境假设、全局特性等,包括时间要求、空间要求、精确度、安全性、保密性、带宽、吞吐率、最低硬软件要求等。 家族特性:描述相同和相关构件之间的关系。,软件工程,6,纯计算构件: 具有简单输入输出关系,没有运行状态变化如数值计算、过滤器、转换器等。 存储构件: 存放共享的、永久性的、结构化的数据。如数据

4、库、文件、符号表、超文本等。 管理构件: 执行操作与运行状态紧密相关。如抽象数据类型、面向对象系统中的对象、服务器等。 控制构件: 管理其它构件运行的时间、时机及次序。例如,调度器、同步器等。,6.1.4 软件构件分类,软件工程,7,链接构件: 在实体之间传递信息。例如,通信机制、用户界面等。 过程调用: 在某一特定执行路径中传递执行指针。如普通过程调用、远程过程调用。 数据流: 相互独立的处理通过数据流进行交互,在得到数据的同时被赋予控制权限。如 UNIX 系统中的管道。,6.1.5 构件之间的连接方式,软件工程,8,间接激活: 处理因事件的发生而激活,在处理间没有直接交互。例如,事件驱动系

5、统、自动垃圾回收等。 消息传递: 相互独立的处理间有明确交互,通过显式数据传递。传递可以是同步的,也可以是异步的。如TCP/IP 。 共享数据: 构件通过同一数据空间进行并发操作。如多用户数据库, 数据黑板。,软件工程,9,6.2 软件体系结构的设计,软件体系结构的设计过程是为系统建立一个基本架构。它包括识别系统的主要构件和这些构件之间的通信。 经典的软件体系结构框架是模型视图控制器(MVC,ModelViewController)。,软件工程,10,在MVC结构中,模型是软件应用领域中的各种对象,它们的操作独立于用户界面;视图则管理用户界面的输出;而控制器处理软件的输入。 输入事件给出要发送

6、给模型的消息。一旦模型改变了它的状态,就立即通过关联机制通知视图,让视图刷新显示。这个关联机制定义了在模型与各个视图之间的关系。类似地,控制器在输入事件发生时将对视图及模型进行控制与调度。,软件工程,11,对于MVC,可通过开发模型的一个派生类,履行与应用相关联的处理。如用户界面通过定义视图和控制器的派生类来建立,这些派生类中许多是可复用的类,像按钮和对话框等,这样可以直接建立新的子系统。 设计过程的主要活动 系统构造:将系统分解为一系列基本的子系统,每一子系统是独立的软件成分。 控制建模:建立系统各部分之间的控制关系的一般模型。 模块分解:将子系统进一步分解为模块。,软件工程,12,6.2.

7、1 系统构造 (System Structuring),体系结构设计的第一步是将系统分解为一系列相互作用的子系统。 在最抽象层次,系统可视为一个方框图,图中每个方框表示一个子系统。 每个方框内的方框表明子系统本身还可分解为子系统。 箭头表示一个子系统向另一子系统传送数据或控制。 下图是一个组装机器人的系统构造。,软件工程,13,组装机器人控制系统的方框图,软件工程,14,体系结构方框图表示一个系统结构的概貌,软件工程师很容易理解它。 这种方框图的缺点是没有反映系统构件之间关系的本质,没有表明系统的外部特性。 根据各子系统如何共享数据、如何分布、如何相互交互,可开发更加特定的模型。 数据仓库模型

8、 客户机/ 服务器模型 抽象机模型,软件工程,15,1) 数据仓库模型 (repository model),所有共享数据都存放于数据库中, 这些数据可为所有子系统存取。 每个子系统保有各自的数据库,通过传送消息,可在子系统之间交换数据。 大量的数据围绕一个共享数据库或数据仓库来组织。 这种系统主要适用于控制系统,信息管理系统,CAD系统,CASE工具集。,软件工程,16,集成的CASE工具集的体系结构 以数据仓库为核心,软件工程,17,这种体系结构包括数据库、超文本系统及数据黑板系统等。它包含两种成分:一是共享的结构化数据;二是所有访问这些数据的操作。 如果是因为输入数据而引起对共享数据的操

9、作,那么这种控制策略下的体系结构就叫做数据库。 如果是由共享数据的当前状态触发相应的处理,那么这种体系结构就叫做数据黑板。为此,需要存储特定知识。 数据仓库模型可共享大量数据,在子系统之间无须进行数据转换。,软件工程,18,子系统的数据模型必须与数据仓库的数据模型保持一致。如果一个新子系统的数据模型与数据仓库的数据模型冲突,很难将它集成到系统中来。 不同的子系统对保密性、恢复和备份有不同的要求,而数据仓库模型将迫使所有子系统采用相同的策略。,软件工程,19,2) 客户机/服务器模型 (client/server model),这是一种分布式系统模型, 表明各种数据和处理如何分布到各个处理器上。

10、 有一组功能各自独立的服务器,为其他子系统提供服务,如打印服务器、文件服务器、编译服务器等。 有一组客户机, 它们调用服务器提供的服务,也可能存在一些客户机,可并发执行客户机程序。 有一个网络, 使得客户机能够访问服务器。,软件工程,20,film & picture library系统的体系结构,软件工程,21,在多用户超文本系统中存在若干服务器,它们管理和显示不同媒体的数据。 Vidio服务器要求高传输率和同步,但对分辨率要求相对较低。Picture要求高分辨率。Catalogue要求能处理大量查询并提供对超文本信息系统的链接。 客户机程序较为简单,是对以上服务器的集成化的用户界面。 客户

11、机 / 服务器方法可用来实现基于数据仓库的系统,由数据仓库作为服务器提供系统服务。,软件工程,22,各子系统作为客户访问数据仓库,但各子系统还有自己的数据管理功能。 服务器与客户间交换数据以执行处理。 对于大量的数据交换,可通过高速网络来解决性能问题。 客户机 / 服务器系统多用于具有多个分布式处理器的网络系统。 它易于增加一个新的服务器并将其与系统的其他集成在一起。系统中服务器的升级对用户是透明的,且不影响系统的其他部分。,软件工程,23,3) 抽象机模型 (abstract machine model),一个体系结构的抽象机模型也称为层次模型。 此模型可以建立各个子系统的接口,它把系统组织

12、成一系列的层次,每一层次提供一组服务,定义一个抽象机。 每一个抽象机由其下一层的抽象机的代码构成。 例如,网络协议的参考模型 OSI 即为典型的层次模型,而TCP/IP 通信协议则为四层的层次模型。,软件工程,24,TCP/IP 通信的层次模型,软件工程,25,版本管理系统的例子,版本管理系统用于管理对象的版本。 为支持配置管理,它使用一个对象管理系统来操作对象的信息存储和服务。 对象管理系统又使用数据库系统操作基本数据存储和服务,如事务管理、滚回、恢复和控制存取。 数据库管理系统在其实现时又使用操作系统工具和文件堆。,软件工程,26,软件工程,27,抽象机模型支持系统抽象程度递增的系统开发,

13、具有可变更性和可移植性。 当一个层次开发出来后,就可以为其上层提供有效的某些服务。 如果接口是预定义的,则一个层次可为另一个层次所替换。 若一个层次的接口发生变更,仅相邻层次受到影响。 层次系统将机器依赖性局部化到它的内部层次上。,软件工程,28,基于复用的层次式体系结构,层次式结构中,每一层向其上层提供服务,并利用下层的服务。 在层次系统中,内部层次全部被隐藏起来,只有外部层次或某些功能可以为外部可见。 层次之间交互的通信协议构成层次间的连接;对层次之间交互的限制构成其拓扑约束。,软件工程,29,常见的层次结构,软件工程,30,四层式软件体系结构,软件工程,31,最高层是应用系统层,此层包含

14、多个应用系统;应用系统可以通过其接口与其他系统操作,还可以通过低层软件提供的服务或对象(如操作系统、特定业务服务)间接地与其他系统交互操作。 次高层是“特定业务”层,此层应当包括专门针对不同业务类型的一系列构件库系统。这样的构件库系统向用户提供可复用的使用事例和对象构件,用于开发应用系统。 特定业务层的软件建立在中间件之上。,软件工程,32,中间件层位于次高层下面,它为次高层的各个构件库系统提供实用软件类,以及不依赖于平台的服务。 最低层是系统软件层,此层包括计算机和网络等基础设施软件,如操作系统、专用的硬件接口软件等。 为了确保分层式系统可管理,规定在一个系统内,不能从低层复用高层的构件。,

15、软件工程,33,6.2.2 控制模型 (Control model),系统构造模型涉及到一个系统如何分解为子系统作为一个整体,必须对各子系统加以控制,使得它们的服务能够在正确的时刻被导向到正确的地方。 系统构造模型没有涉及,也不应涉及控制信息,必须按照控制模型组织各子系统,并满足系统构造模型的要求。 在体系结构层次上的控制模型应考虑子系统之间的控制流。,软件工程,34,1) 集中控制模型 (centralised control model),在集中控制模型中,将一个子系统设计为系统控制器,其职责是管理其他子系统的执行。 集中控制模型分为两类: 控制子系统顺序执行 控制子系统并发执行 作为集中

16、控制器的子系统在将控制转交给另一子系统后,该子系统完成它的功能后控制权还要归还给集中控制器子系统。,软件工程,35,(1)调用-返回模型 (Call-Return model),此即熟悉的自顶向下的子程序模型。 控制始于子程序层次的顶部,通过子程序调用,从层次结构较高层的程序向较低层的程序传递控制信息。程序执行结束将向较高层的父程序返回。 这种程序模型仅应用于顺序系统。 该模型可以在模块层使用,以控制函数或对象。,软件工程,36,控制的Call-Return模型,软件工程,37,在调用- 返回系统结构中, 每一层都只与上下相邻的两层通信,每一层在利用下层基础服务的条件下,为上层提供服务。 这种结构的优点是:提供逐步抽象的编程支持,支持复用及系统升级缺点是:不是所有的系统都适合于建成层次结构,不能提供最佳性能。,软件工程,38,(2) 管理器模型 (manager model),这种模型应用于并发系统。 模型中有一个系统构件被设计为系统管理器,它控制开始、终止,并协调其他系统进程。 一个进程可以是子系统,也可以是模块,它可以与其他进程并行执

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号