1、软件建模技术,南昌航空大学计算机学院主讲教师:段喜龙,第二十二章 通用体系结构,3,南昌航空大学计算机学院,本章导读,4,南昌航空大学计算机学院,22.1 经典的三层体系结构,表示层(Presentation):窗口、报表应用逻辑(Application Logic):管理业务过程的任务和规则存储层(Storage):持久化存储机构,5,南昌航空大学计算机学院,三层体系结构视图,应用逻辑层 记录销售信息 支付授权,表示层,数据库,存储层,6,南昌航空大学计算机学院,22.2 面向对象的多层体系结构,一个被推荐采用的面向对象信息系统的多层体系结构包括职责的分离,这种分离和经典的三层体系结构的功能
2、分离类似。,7,南昌航空大学计算机学院,应用逻辑层的分解,以软件类为基本组织结构领域对象(Domain Object)层代表领域概念的类。例如一个Sale。服务(Service)层提供数据库交互、打印报表、安全性等功能的服务对象。,8,南昌航空大学计算机学院,超过三层多层体系结构,表示层应用逻辑层存储层,PostForm,Payment,Sale,数据库接口,报告生成器,数据库,领域概念,服务,9,南昌航空大学计算机学院,部署,可能需要对逻辑上的三层体系结构进行各种各样的物理部署,这些部署包括下列情况:表示层和应用逻辑层位于客户端机器上,存储层位于服务器端机器上表示层在客户端机器上,应用逻辑层
3、在应用服务器上并且存储层在另一个单独的数据服务器上,10,南昌航空大学计算机学院,多层体系结构的动机,构件可以得到最大限度的重用改善系统性能、支持信息共享和协调有效利用开发人员的特长、提高并行开发能力,11,南昌航空大学计算机学院,22.3 体系结构UML表示法,UML提供了包(Package)的机制来说明元素组或者子系统。一个包可以是任何种类的一组模型元素,例如一组类、一组用例、一组协作图或者其他的包。,12,南昌航空大学计算机学院,包的UML表示法,13,南昌航空大学计算机学院,体系结构包图,数据库,表示层应用逻辑层存储层,14,南昌航空大学计算机学院,体系结构细节,15,南昌航空大学计算
4、机学院,22.4 包的识别,按照下列原则将元素组织成包:将提供服务(或者一组相关服务集)的元素组织成一个包,这些元素之间具有高耦合度和密切的协作关系。包在某种程度上应该被视为具有高聚合度它所承担的职责相互之间密切关联。相比下,不同包中的元素之间的耦合和合作关系应该比较松散。,16,南昌航空大学计算机学院,22.5 层的划分,垂直方向上的层,水平方向上的划分,17,南昌航空大学计算机学院,22.6 两个包中类的可见性,访问领域包的可见性(表示包)可以看到领域包内多个代表领域概念的类访问服务包的可见性(领域包、表示包)只能见到每个服务包中的一个或者几个类访问表示包的可见性没有其他的包可以直接看到表
5、示层,18,南昌航空大学计算机学院,22.7 服务包接口虚包模式,问题提出:我们需要与一组不同的接口之间建立一个公共的、一致的接口,该怎么做?解决方案:在子系统定义一个类,这个类对外具有一致的接口,并负责与该子系统相互合作,提供对外服务。优点:低耦合度,19,南昌航空大学计算机学院,22.8 模型视图分离模式,提出问题:应该将领域(模型)对象同窗口(视图)对象分开,来支持领域对象的重用,并且使领域对象的接口变更所带来的影响最小化。解决方案:定义领域(模型)类的时候,注意不要使这些类可以直接看见窗口类,并在领域类中维护应用性数据和功能,而不要在窗口类内维护它们。,20,南昌航空大学计算机学院,模
6、型-视图分离的意义,支持聚合度更高的模型定义允许将模型和用户界面的开发分别进行使用户对界面的需求变化对领域层所造成的影响最小允许新建立一个新视图,而不影响领域层允许一个模型同时对应多个视图允许模型层独立于用户界面运行可以方便地定义模型层到其他用户界面框架的接口,21,南昌航空大学计算机学院,模型-视图分离和间接通信,轮询(Polling)上拉式(pull-from-above)下推式(push-from-below),22,南昌航空大学计算机学院,22.9 一个系统中的间接通信,出版-订阅模式问题提出:一个事件的发出者(出版者)的一个内部状态发生一次变化,同时其他对象依赖于这个事件或者对这个事
7、件感兴趣(订阅了这个事件)。然而,出版者不能直接了解订阅者的信息,两者之间的通信应该怎么处理?解决方案:定义一个事件通知系统,让出版者能够间接通知订阅者。EventManager(纯虚构、中介者、独身)、SignalEvent,23,南昌航空大学计算机学院,24,南昌航空大学计算机学院,回调当需要传递一个带参数的消息和可能的消息接受者给EventManager,这个消息和接收者的信息可以被封装在一个回调(Callback)类中。然后传递一个回调实例给EventManager,这个回调实例一旦接收到一个事件信号就开始执行(Execute)。使用回调对象的优点是隐藏了接收者和消息的细节,并且简化了
8、回调的使用者的职责。,25,南昌航空大学计算机学院,事件通知系统消息的发送者和接收者之间不直接耦合一个事件可以被广播给任意数量的订阅者对事件所采取的反映可以在回调对象中被概括每个回调各自在自己的线程下执行,并发性相对比较容易实现,26,南昌航空大学计算机学院,多层体系结构举例WebService,WebService就是一个应用程序,它向外界暴露出一个能够通过Web进行调用的API 。WebService是建立可互操作的分布式应用程序的新平台。 WebService的主要目标是跨平台的可互操作性 。,27,南昌航空大学计算机学院,示例:SOA,SOA(Service-Oriented Architecture)是一种架构模型,它可以根据需求通过网络对松散耦合的粗粒度应用组件进行分布式部署、组合和使用。服务层是SOA的基础,可以直接被应用调用,从而有效控制系统中与软件代理交互的人为依赖性。,信息孤岛,集成测试的重要性,29,南昌航空大学计算机学院,Web Service Stack,