第八章 逻辑架构与包图

目录

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视图模型

第八章 逻辑架构与包图