第八章 逻辑架构与包图
目录
m1.逻辑架构
m2.包图
m3.包图建模准则
m4.架构分析
m5.逻辑架构的精化
m6.架构的文档化
1. 逻辑架构
mlogical architecture:是软件的宏观组织结构,它将软件类组织为包(或命名空间)、子系统和层等。
m层(layer):是对类、包或子系统的甚为粗粒度的分组,具有对系统主要方面加以内聚的职责。
2.包图
m包:用来将建模元素组织成分组、建立元素的所属关系以及提供引用元素的唯一名称的通用机制。
m包图:包及其关系的结构化模型图。
3. 包图建模准则
m使用层进行设计
好处:
Ø(1) 可以做到 关系分离、高级服务与低级服务分离、特定应用的服务与一般性服务分离。减少耦合和依赖性,增强内聚性、提高潜在的复用性并且使概念更加清晰。
Ø(2)封装和分解了相关的复杂性
Ø(3)某些层能够用新的实现替换
Ø(4)较低层包含可复用的功能
Ø(5)某些层可以是分布式的。
Ø(6)通过逻辑划分,有助于团队开发。
准则:内聚职责、关系分离
m领域层和领域模型的关系
分层与分区
m分层(layer):表示对系统在垂直方向的划分。
m分区(partition):表示对层在水平方向的划分。
准则:不要将外部资源表示为最底层
准则:模型——视图分离原则
m不要将非UI对象直接与UI对象连接或耦合。
m不要在UI对象方法中加入应用逻辑。
模型:领域层对象
视图:UI对象
领域类封装了与应用逻辑相关的信息和行为。窗口类相对简单,负责输入和输出,以及捕获GUI事件。
SSD、系统操作和层的关系4.架构分析
m定义
ØArchitectural analysis:在功能性需求的语境中,识别和处理非功能性需求的活动。其中包括识别变化和最具可能性的进化点。
Ø变化点(variation point):当前系统或需求中的变化之处。
Ø进化点(evolution point):现有需求中不存在但可能在将来发生,推测性的变化点。
m架构分析问题举例
Ø可靠性和容错需求如何影响设计
Ø采购子构件的许可费用如何影响收益率
Ø可适应性和可配置型需求如何影响设计
Ø商标名称的选择如何影响架构
m架构分析步骤
Ø识别架构因素
•FURPS+
•质量场景
•描述架构因素:因素表
Ø进行架构决策
•删除需求、定制解决方案、终止项目、雇佣专家
m基本架构设计原则
Ø低耦合
Ø高内聚
Ø防止变异
m本质
Ø识别影响架构的因素,理解这些因素的可变性和优先级,并且解决这些问题。
m难点
Ø要知道应该问什么问题,权衡利弊和了解处理一个重要架构因素的各种办法,从良性忽略到奇特设计或第三方产品等
m重要性
Ø降低系统设计中丢失重要因素的风险
Ø避免在低优先级的问题上花费过多精力
Ø有助于产品与业务目标的一致
5.架构的精化
在早期迭代中设计的是实验性逻辑架构,然后在整个细化阶段中对其进行增量式的演进。
m层之间和
包之间的耦合
m层之间和
包之间
的交互场景
m使用层模式的协作
Ø使用简单包
m外观
m会话外观和应用层
m控制器
m经典的三层架构
6.包的设计
m准则1:包在水平和垂直划分上的功能性内聚
RC=内部关系的数量/类型的数量
RC越大,表明内聚性越强。
(不适用于包含接口的包)
m准则2:由一族接口组成的包
m准则3:用于正式工作的包和用于聚集不稳定类的包
m准则4:职责越多的包越需要稳定
m准则5:将不相关的类型分离出去
m准则6:使用工厂模式减少对具体包的依赖
m准则7:包之间没有循环依赖
7.架构的文档化(SAD)
m软件架构文档(SoftwareArchitecture Document
):描述有关架构的总体想法,包含架构分析的关键决策。
m动机:帮助别人对系统的理解
m表示法:SAD的结构
m4+1视图模型