编辑推荐: |
本文主要介绍逻辑架构与包图以及包图建模准则,进行架构分析,逻辑架构的精化以及架构的文档化,希望阅读后会给您的学习带来收获。
本文来自于CSDN,由火龙果软件Alice编辑、推荐。 |
|
目录
m 1.逻辑架构
m 2.包图
m 3.包图建模准则
m 4.架构分析
m 5.逻辑架构的精化
m 6.架构的文档化
1. 逻辑架构
m logical 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 的结构

m 4+1 视图模型

原文链接:https://blog.csdn.net/yongchaocsdn/article/details/79035464
|