为什么要看架构设计呢?
- 与经验丰富的开发人员尽量达到思想上的同步,充分理解别人的设计
- 架构是内,写代码是外,一个好的系统,必须是由内而外设计出来的。(可以少走很多弯路,也不至于最终程序臃肿得令自己都难以下咽维护)
第二章
- 架构的定义可以分为两派:
- 组成派:架构=组件+交互
- 决策派:架构=一组重要决策
需要理解Adapter设计模式
第三章
原来网页打开可以编辑
. 组成
第七章 领域建模
领域模型决定了系统的功能范围
领域模型影响着系统的可扩展性
对于uml而言,领域模型常用以下两种图表示
- 类图
- 状态图
领域建模流程推荐:
- 梳理词汇表。也就是专业术语,参考之前项目的,或者网上搜查类似项目的。’ 词汇表:以拍卖系统为例,有拍卖,拍卖信息,拍卖项,拍卖项信息,起拍价,成交价,卖家,买家,成交等’
- 建立类图。关照核心概念的类图即可,刻画不词汇表之间的关系,如商品,拍卖商品,买家,卖家,成交。
- 建立状态图:如商品状态,商品从初始到最终成交成功或者失败的状态
对于第七章的理解,建议多看看书上的案例
第八章 确定关键需求
1.什么决定架构
书中认为
需求=功能+质量+约束
需求的三个方面都会影响架构设计
而 关键需求 决定架构, 其余需求 验证架构
2.如何确定关键需求
- 确定关键质量:考虑市场因素,需着重提高的哪些方面的质量;给上面这些质量排序和关系梳理(依赖关系,矛盾关系);最后验证满足各种约束性需求(经济因素,客户群要求,公司现状,未来发展,其他因素)。
- 确定关键功能:四条启发规则,核心功能,必做功能,高风险功能,独特功能。
第九章 概念架构设计
1.概念架构是什么?
书上认为:概念架构是直指目标的设计思想,重大选择。
- 概念架构满足“架构=组件+交互”
- 概念架构是对高层组件的职责进行笼统的界定
- 概念架构不应该涉及接口细节
2.概念架构的三大特征
- 直指目标
- 设计思想
- 重大选择
举个例子:腾讯qqvedio高性能 - 直指目标:高性能
- 设计思想:不同功能垂直分离(针对视频,视频缩略图,静态web内容,动态web内容分别对峙)
- 重大选择:首先垂直划分结构,而非水平分层
再举个例子:微软mfc架构_简化开发
- 直指目标:提供比使用win32 API更方便的应用开发支持。
- 设计思想:应用支持层,抽象引入层和win32封装层
- 重大选择:放弃AFX设计,转而采用首先封装win32 Api的策略
第十章 细化结构设计
学会运用 2视图方法(第三章内容),再进阶到5视图方法
- 2视图指的是:逻辑视图+物理视图
- 5视图复杂一些:逻辑视图-职责划分,开发视图-程序单元组织,运行视图-控制流组织,物理视图-物理节点安排,持久化设计-数据视图。
5视图对应15个设计任务
逻辑架构
- [设计任务]模块划分
- [设计任务]接口定义
- [设计任务]领域模型细化
开发架构=技术选型+文件划分+编译关系
物理架构=硬件分布+软件部署+方案优化
运行架构=技术选型+控制流划分+同步关系
数据架构=技术选型+存储格式+数据分布
第十一章 架构验证
- 原型技术
原型法可分为 水平原型(又叫 行为原型)和垂直原型(又称为结构原型),抛弃原型(还叫探索原型)和演进原型
第十二章 粗粒度功能模块划分
1 功能树
借住功能树进行功能模块划分
第十三章 如何分层
1 分层架构
1.1 三层架构
常见模式:展现层,业务层,数据层
概念介绍:
展现层 或称为表现层,用于显示数据和接
收用户输入的数据,为用户提供一种交互式的操作界面
业务层 或称为业务逻辑层,用来处理各种功能请求,实现系统的业务功能,是一个系统最为核心的部分
数据层 或称为数据访问层,主要与数据存储打交道,例如实现对数据库的增删查改等操作
层间关系:
展现层会向业务层传递参数,发出服务请求,并获取业务层返回的信息显示在界面上
业务层接收展现层的命令,解析传递过来的参数,判断各种合法性,并具体实现功能的各种‘运算’要求,返回展现层所要的信息
数据访问层不能直接被展现层直接调用,而必须通过业务层来调用。
建议看看MVC和MVP,类似差不多,一个理解了就可以举一反三。
1.2 四层架构
UI SI PD DM
UI层(User Interface):用户界面层,负责封装与用户的双向交互,屏蔽具体交互方式。
SI层(System Interaction):系统交互层,负责封装硬件的具体交互方式,以及封装外部系统的交互。
PD层(Problem Domain):问题领域层,负责问题领域或业务领域的抽象,领域功能的实现。
DM层(Data Domain):数据管理层,负责封装各种持久化数据的具体管理方式,例如数据库系统,二进制文件,文本文档,xml文档,flash存储结构等。