从概念架构到细化架构,先设计概念架构,构思关键问题的解决策略;在进行细化架构的设计,保证为开发提供足够的指导和限制被人们广泛使用
之所以需要细化架构,是因为概念架构难以支持并行开发。
细化架构的方法:RUP 4+1多视图方法(逻辑架构,开发架构,物理架构,数据架构,运行架构(与之对应的要写概要设计文档))
多视图方法要求“兼顾多个视图设计之间的一致性”。例如:要考虑职责、程序单元、部署节点等要素之间的相互影响。
多视图方法的实际意义:利于思考(因为分而治之的思维方式);便于交流(因为在一定程度上分离了涉众关注点)
多视图方法不是OO方法(Object-Oriented Method,面向对象方法,面向对象的方法)分支。无论是OO方法,还是结构化方法,都远未涵盖架构设计的全部。
逻辑架构和物理架构不是两个阶段,而是同一阶段的要考虑的两个方面,即两个视图。
用5视图方法梳理架构:
5视图方法包含视图和其”思维立足点“:
逻辑视图(职责划分)
开发视图 (程序单元组织)
运行视图(控制流阻止)
物理视图(物理节点安排)
数据视图(持久化设计)
逻辑架构中划分子系统的三种策略:
- 分层的细化
- 分区的引入
架构中引入分区,是为了支持深度优先的迭代开发。分区是一种单元,位于某个层的内部,其粒度比层要小。
- 机制的提取
基于接口或抽象类的协作是机制,基于具体类的协作则算不上是机制
子系统划分需要分层细化、分区引入、机制提取三种策略综合运用,三管齐下。
划分子系统的 4个重要原则:
职责分离原则;
通用专用分离原则;
技能分离原则;
工作量均衡原则。
物理架构
3项任务:
硬件选择与物理拓扑
软件到硬件的映射关系
方案的优化
运行架构
工作内容:
确定引入哪些控制流,确定每条控制流的任务,处理相关问题:控制流的创建、销毁、通信机制等以便进一步考虑:控制流之间的同步关系,若有资源争用还要引入加锁机制
其中控制流图是关键,在实践中,最常用于实现控制流的手段有3种:进程,线程,中断服务程序。
开发架构
工作内容:
将“逻辑职责”映射为“程序单元”;开发技术选型;“程序单元”间关系。
数据架构
难点:数据分布
数据分布的六种策略:
独立 Schema( Separate-schema)
集中( Centralized)
分区( Partitioned)
复制( Replicated)
子集( Subset)。
重组( Reorganized)
数据分布策略的三条应用原则:
把握系统特点,确定分布策略(合适原则)
不同分布策略,可以综合运用(综合原则)
从“对吗”、“好吗”两方面进行评估优化(优化原则)