架构设计
架构设计三步曲
第一阶段,需求把握阶段
架构师需要先理解需求,对需求进行分类。
软件需求又分为三个层次:
- 业务级需求
- 用户级需求
- 开发级需求
架构设计之前要抓住关键目标,判断目标之间的冲突,制定权衡取舍的策略。例如,性能优先还是扩展性优先。
- 需求结构化,分析需求影响因素,建立全面有序的理解;
- 分析约束影响,识别隐含的需求;
- 确定关键目标,识别目标间的冲突,制定权衡取舍的策略;
- 确定关键功能,有针对性地分配有限的设计时间。
第二阶段,概念架构设计阶段
初步设计
将重大需求、特色需求、高风险需求做为架构设计的入口,进行初步设计。通过对重大需求用例进行鲁棒图分析,识别出功能职责协作链的各个组成部分。
高层分割
高层分割的方法主要有两种:分系统为系统,分系统为子系统。
第三阶段,架构细化阶段
逻辑架构设计
逻辑架构设计可以从以下三步来实现:
- 根据职责划分结构单元
- 将结构单元组织起来完成功能
- 根据功能和质量要求对设计进行质疑,完善设计,并确定他们之间的接口
划分结构单元的原则有:
- 职责不同的单元分在不同的子系统
- 不同的通用性的单元分在不同的子系统
- 需要的技术不同,分在不同的子系统
- 根据工作量均衡原则对工作量大的子系统再做细分
划分手段有:
- 分层
- 引入分区
- 提取机制
物理架构设计
物理架构设计可以从以下三步来实现:
- 选取硬件和拓扑结构
- 将逻辑单元影射到物理节点
- 关注非功能性要求,对架构进行优化
目标要“功/守/降/避”十个目标:
- 攻:高性能、可用性、可扩展性
- 守:经济性、可行性、可维护性
- 降:降低节点内性能开销、降低节点间通信开销
- 避:避免节点内 CPU、内存、磁盘资源的争用,避免节点间网络带宽的争用
开发架构设计
开发架构设计主要工作:
- 逻辑单元和程序单元的影射
- 选用什么开发语言和开发工具
- 工程的划分如何,目录结构如何,程序单元之间的关系如何,编译与依赖关系如何?
数据架构设计
数据库架构设计很关键,常常影响系统的成败。