软件架构设计之入门教材
确定关 概念架 细化架 键需求 构设计 构设计
架构 验证
功能 质量 约束 用例模型
领域 模型
需求分析成果
关键功能 关键质量
概念 架构
高层设计成果
细化 架构
架构 原型
架构设计规格
软件架构设计过程—概念架构设计
软件架构设计过程—概念架构设计
软件架构设计过程—概念架构设计
软件架构设计过程—细化架构设计
架构和设计
我们为什么需要架构设计。 • 问题域的复杂性 • 认知思维的局限性 • 架构是问题域到解决方案的桥梁
架构属于设计,但并非所有设计都属于架构。 • 架构属于高层设计 • 架构关注系统的分与合 • 架构受众多、决策复杂 • 架构对系统整体质量有重大影响 • 架构对并行开发也有影响
软件架构为谁而设计
通用模块
软件架构设计之模块划分步骤
分层
• 分层细化
分区
• 封装细粒度模块
• 抽取通用模块 通用模块
• 通用机制框架化 通用机制
总结
• 软件架构的思想 • 软件架构的定义及要解决的问题 • 软件架构设计的5种视图法:逻辑视图、
物理视图、开发视图、运行视图、数据 架构 • 软件架构设计过程及步骤 • 模块划分方法及步骤
软件架构设计之入门
郭金飞 2014-05
纲要
引言—三表法 架构设计思想 架构定义 架构设计要解决的问题 架构视图法 架构设计过程
架构设计之模块划分
墨子的“三表法”
墨子《非命上》:“故言必有三表。何谓三表?子墨子言曰: ‘有本之者,有原之者,有用之者。于何本之?上本之于古者 圣王之事。于何原之?下原察百姓耳目之实。于何用之?废以 为刑政,观其中国家百姓人民之利。此所谓言有三表也。’”
软件架构视图
架构视图体现了分而治之的设计思想 架构视图不仅是软件架构归档的方式,更是架构 设计的思维方式
软件架构设计过程节奏
• 需求要全 • 矛盾关系 • 追溯关系
洞察需求
概念架构
• 关键功能 • 关键质量
• 多架构视图 • 模块划分 • 接口定义
架构细化
软件架构设计过程步骤
需求 分析
领域 建模
第一个标准是言必有据;参考书目
第二个标准是言必据实;结合自己实际情况
第三个标准是是否有效;理论联系实际,在实践中检验理论
参考书推荐
架构设计思想
分而治之 迭代细化
软件架构定义
软件架构 = 组件 + 交互
相
辅 相
软件架构 = 重要决策集合
成
“组件”可以指代子系统、框架、模块、类等不同粒度的软件单元
软件架构设计之模块划分
分层模式
划分依据
功能树
用例驱动
水平切分 (分层)
设计思想
垂直切分 (分模块)
将类分组
设计成果
模块划分结构
软件架构设计之分层
UI交互层 问题领域层
数据管理层 系统交互层
四层架构
展现层 业务层 数据层
三层架构
软件架构设计之分模块
软件系统
模块划分
功功功 能能能 功模模模 能块块块 模 块
客户 • 业务目标&业务规则 • 约束条件:上线时间、预算限制、集成需求
用户 • 功能属性:完整性、合理性 • 运行期质量:性能、易用性、可伸缩性、持续可用性
开发人员 • 开发期质量:可扩展性、可重用性、可移植性、易理解性、易测试性 • 系统划分:分层、分模块、交互接口
管理人员 • 分工管理 • 协调控制 • 评估监控
提问时间
或生而知之,或学而知之Байду номын сангаас或困而 知之,及其知之,一也!
谢谢!