1、第第13章章 逻辑架构和逻辑架构和UML包图包图目标目标n n介绍使用层的逻辑架构介绍使用层的逻辑架构n n阐述使用阐述使用UML包图的逻辑架构包图的逻辑架构简介简介n n现在,我们就从面向分析的工作过渡到现在,我们就从面向分析的工作过渡到软件设计软件设计n n典型典型OO系统设计的基础是若干架构层,系统设计的基础是若干架构层,例如例如UI层、应用逻辑(或层、应用逻辑(或“领域领域”)层等。)层等。UP制品相互影响制品相互影响n n业务建模业务建模业务建模业务建模 领域模型领域模型领域模型领域模型n n需求需求需求需求 用例模型用例模型用例模型用例模型 设想设想设想设想 补充性规格说明补充性规
2、格说明补充性规格说明补充性规格说明 词汇表词汇表词汇表词汇表n n设计设计设计设计 逻辑架构的包图逻辑架构的包图逻辑架构的包图逻辑架构的包图(静态视图)静态视图)静态视图)静态视图)交互图交互图交互图交互图(动态视图)动态视图)动态视图)动态视图)类图(静态视图类图(静态视图类图(静态视图类图(静态视图)UP制品相互影响制品相互影响n n强调的是逻辑架构(强调的是逻辑架构(LA)n n主要的输入是补充性规格说明中记录的主要的输入是补充性规格说明中记录的架构方面的约束和要点架构方面的约束和要点n nLA定义了包,包中有关于软件类的定义定义了包,包中有关于软件类的定义示例示例逻辑架构(逻辑架构(l
3、ogical architecture)n n逻辑架构逻辑架构是软件类的宏观组织结构,它是软件类的宏观组织结构,它将软件类组织为包将软件类组织为包(或命名空间)、子或命名空间)、子系统和层等。系统和层等。n n为何称其为逻辑架构?为何称其为逻辑架构?因为并未决定如何在不同的操作系统进因为并未决定如何在不同的操作系统进程或网络中物理的计算机上对这些元素程或网络中物理的计算机上对这些元素进行部署(后一种决定是部署架构的一进行部署(后一种决定是部署架构的一部分)。部分)。层(层(Layer)n n层是对类、包或子系统的甚为粗粒度的层是对类、包或子系统的甚为粗粒度的分组,具有对系统主要方面加以内聚的分
4、组,具有对系统主要方面加以内聚的职责。职责。n n层按照层按照“较高较高”层(例如层(例如UI层)可以调用层)可以调用“较低较低”层的服务层的服务n nOO系统中通常包括的层有:系统中通常包括的层有:用户界面用户界面用户界面用户界面 应用逻辑和领域对象应用逻辑和领域对象应用逻辑和领域对象应用逻辑和领域对象 技术服务(例如数据库接口或错误日志)技术服务(例如数据库接口或错误日志)技术服务(例如数据库接口或错误日志)技术服务(例如数据库接口或错误日志)独立于应用的,也可在多个系统中复用的独立于应用的,也可在多个系统中复用的独立于应用的,也可在多个系统中复用的独立于应用的,也可在多个系统中复用的服务
5、。服务。服务。服务。架构分层架构分层n n在严格的分层架构中,层只能调用与其相邻在严格的分层架构中,层只能调用与其相邻在严格的分层架构中,层只能调用与其相邻在严格的分层架构中,层只能调用与其相邻的下层的服务。这种设计在网络协议栈中比的下层的服务。这种设计在网络协议栈中比的下层的服务。这种设计在网络协议栈中比的下层的服务。这种设计在网络协议栈中比较常见,而在信息系统中不太常见。在信息较常见,而在信息系统中不太常见。在信息较常见,而在信息系统中不太常见。在信息较常见,而在信息系统中不太常见。在信息系统中通常使用宽松的分层架构,其中较高系统中通常使用宽松的分层架构,其中较高系统中通常使用宽松的分层架
6、构,其中较高系统中通常使用宽松的分层架构,其中较高层可以调用其下任何层的服务层可以调用其下任何层的服务层可以调用其下任何层的服务层可以调用其下任何层的服务n n例如,例如,例如,例如,UIUI层可以调用与其相邻的应用逻辑层,层可以调用与其相邻的应用逻辑层,层可以调用与其相邻的应用逻辑层,层可以调用与其相邻的应用逻辑层,也可以调用更下面的技术服务层中的元素,也可以调用更下面的技术服务层中的元素,也可以调用更下面的技术服务层中的元素,也可以调用更下面的技术服务层中的元素,完成日志记录等工作完成日志记录等工作完成日志记录等工作完成日志记录等工作n n 逻辑架构并非一定要组织为层。但这种方式逻辑架构并
7、非一定要组织为层。但这种方式逻辑架构并非一定要组织为层。但这种方式逻辑架构并非一定要组织为层。但这种方式极为常用极为常用极为常用极为常用案例研究中应该关注的层案例研究中应该关注的层n n尽管OO技术可以用于所有级别,但本课程对OOA/D的介绍着重于核心应用逻辑(或“领域”)层,其次才是对其他层的讨论。软件架构软件架构n n软件架构(宏观)软件架构(宏观)软件架构(宏观)软件架构(宏观)架构是一种重要决策,其中涉及软件系统的组织架构是一种重要决策,其中涉及软件系统的组织架构是一种重要决策,其中涉及软件系统的组织架构是一种重要决策,其中涉及软件系统的组织 对结构元素及其组成系统所籍接口的选择对结构
8、元素及其组成系统所籍接口的选择对结构元素及其组成系统所籍接口的选择对结构元素及其组成系统所籍接口的选择 这些元素特定于其相互协作的行为这些元素特定于其相互协作的行为这些元素特定于其相互协作的行为这些元素特定于其相互协作的行为 这些结构和行为元素到规模更大的子系统的组成这些结构和行为元素到规模更大的子系统的组成这些结构和行为元素到规模更大的子系统的组成这些结构和行为元素到规模更大的子系统的组成 以及指导该组织结构的架构风格以及指导该组织结构的架构风格以及指导该组织结构的架构风格以及指导该组织结构的架构风格 这些元素及其接口、协作、和组成这些元素及其接口、协作、和组成这些元素及其接口、协作、和组成
9、这些元素及其接口、协作、和组成 软件架构师是做什么的?软件架构师是做什么的?n n软件架构师的职责软件架构师的职责软件架构师的职责软件架构师的职责是把需求转换为软件世界的模型。是把需求转换为软件世界的模型。是把需求转换为软件世界的模型。是把需求转换为软件世界的模型。4+14+1视图中以视图中以视图中以视图中以use caseuse case作为核心,其中功能性需作为核心,其中功能性需作为核心,其中功能性需作为核心,其中功能性需求以及部分非功能性需求会被软件架构师通过分析求以及部分非功能性需求会被软件架构师通过分析求以及部分非功能性需求会被软件架构师通过分析求以及部分非功能性需求会被软件架构师通
10、过分析和设计,映射为各种软件设计模型。从和设计,映射为各种软件设计模型。从和设计,映射为各种软件设计模型。从和设计,映射为各种软件设计模型。从OOA/OODOOA/OOD角度说,角度说,角度说,角度说,use case use case 在这个过程中是要转换为各种在这个过程中是要转换为各种在这个过程中是要转换为各种在这个过程中是要转换为各种UMLUML,其中类图,序列图,状态图是最常用到的。,其中类图,序列图,状态图是最常用到的。,其中类图,序列图,状态图是最常用到的。,其中类图,序列图,状态图是最常用到的。这个转换过程是需要智慧的,这个转换过程是需要智慧的,这个转换过程是需要智慧的,这个转换
11、过程是需要智慧的,use caseuse case是目的,各是目的,各是目的,各是目的,各种种种种OOOO的原则是指导,设计模式是经验,灵活运用的原则是指导,设计模式是经验,灵活运用的原则是指导,设计模式是经验,灵活运用的原则是指导,设计模式是经验,灵活运用是能力。里面蕴涵了设计的美感,我觉得这个过程是能力。里面蕴涵了设计的美感,我觉得这个过程是能力。里面蕴涵了设计的美感,我觉得这个过程是能力。里面蕴涵了设计的美感,我觉得这个过程是衡量一个软件架构师的最重要的指标。这个过程是衡量一个软件架构师的最重要的指标。这个过程是衡量一个软件架构师的最重要的指标。这个过程是衡量一个软件架构师的最重要的指标
12、。这个过程是需要创造力和想象力的。可能很多人认为这个地是需要创造力和想象力的。可能很多人认为这个地是需要创造力和想象力的。可能很多人认为这个地是需要创造力和想象力的。可能很多人认为这个地方正是软件架构师体现能力的地方。方正是软件架构师体现能力的地方。方正是软件架构师体现能力的地方。方正是软件架构师体现能力的地方。UML包图包图n nUML包图通常用于描述系统的逻辑架构包图通常用于描述系统的逻辑架构 层层层层 子系统子系统子系统子系统 包(就包(就包(就包(就JavaJava)而言等)而言等)而言等)而言等n n层可以建模为层可以建模为UML包。例如,包。例如,UI层可层可以建模为名为以建模为名
13、为UI的包的包UML包图包图n nUMLUML包图提供了组织元素的方式(类,其他包,包图提供了组织元素的方式(类,其他包,用例,用例,)n n嵌套包十分常见嵌套包十分常见n nUMLUML包是比包是比JavaJava包和包和.NET.NET命名空间更为通用的概命名空间更为通用的概念念n n如果包内部显示了其成员,则在标签上标识包名;如果包内部显示了其成员,则在标签上标识包名;否则,可以在包体内标识包名称否则,可以在包体内标识包名称n n人们通常希望显示包之间的依赖性人们通常希望显示包之间的依赖性(耦合),以耦合),以便开发者能够看到系统内大型事物之间的耦合。便开发者能够看到系统内大型事物之间的
14、耦合。n nUMLUML的依赖线即可用于此目的,依赖线是有箭头的依赖线即可用于此目的,依赖线是有箭头的虚线,箭头指向被依赖的包的虚线,箭头指向被依赖的包n n完全限定的名称完全限定的名称 例如例如Java:util:DateJava:util:DateUML工具:从代码逆向工程工具:从代码逆向工程产生包图产生包图n n开发早期,根据绘制的开发早期,根据绘制的UML包图的草图包图的草图来组织代码;来组织代码;n n随着代码库的不断增长,编程上花费的随着代码库的不断增长,编程上花费的时间更多,减少了建模或绘制时间更多,减少了建模或绘制UML图的图的时间,可以利用时间,可以利用UML CASE工具对
15、源代工具对源代码进行逆向工程,从而自动生成包图。码进行逆向工程,从而自动生成包图。准则:使用层进行设计准则:使用层进行设计n n使用层时:使用层时:将系统的大型逻辑结构组织为独立的、职将系统的大型逻辑结构组织为独立的、职将系统的大型逻辑结构组织为独立的、职将系统的大型逻辑结构组织为独立的、职责相关的离散层,具有清晰、内聚的关注责相关的离散层,具有清晰、内聚的关注责相关的离散层,具有清晰、内聚的关注责相关的离散层,具有清晰、内聚的关注分离。这样,分离。这样,分离。这样,分离。这样,“较低较低较低较低”的层是低级别和一的层是低级别和一的层是低级别和一的层是低级别和一般性服务,较高的层则是与应用相关
16、的。般性服务,较高的层则是与应用相关的。般性服务,较高的层则是与应用相关的。般性服务,较高的层则是与应用相关的。协作和耦合是从较高层到较低层进行的,协作和耦合是从较高层到较低层进行的,协作和耦合是从较高层到较低层进行的,协作和耦合是从较高层到较低层进行的,要避免从较低层到较高层的耦合。要避免从较低层到较高层的耦合。要避免从较低层到较高层的耦合。要避免从较低层到较高层的耦合。设计问题设计问题n n使用层有助于解决如下问题:使用层有助于解决如下问题:使用层有助于解决如下问题:使用层有助于解决如下问题:源码的变更波及整个系统大部分系统是高度耦源码的变更波及整个系统大部分系统是高度耦源码的变更波及整个系统大部分系统是高度耦源码的变更波及整个系统大部分系统是高度耦合的。合的。合的。合的。应用逻辑与用户界面交织在一起,因此无法复用应用逻辑与用户界面交织在一起,因此无法复用应用逻辑与用户界面交织在一起,因此无法复用应用逻辑与用户界面交织在一起,因此无法复用于其他不同界面或分布到其他处理节点之上于其他不同界面或分布到其他处理节点之上于其他不同界面或分布到其他处理节点之上于其他不同界面或分布到其他处理节
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1