软件架构设计
- 软件架构设计
-
- 软件架构的概念
- 软件架构风格
- 架构描述语言ADL
- 特定领域的架构DSSA
-
- 基本活动
- 领域分析人员
- 三层次模型
- 基于架构的软件开发方法ABSD
- 软件架构评估
-
- 质量属性
- 评估方式
- 重要概念
- 评估方法:基于场景的方式
-
- 软件架构分析法SAAM
- 机构权衡分析法ATAM
- 产品线
-
- 模型
- 建立方式
- 成功因素
- 构件与中间技术
-
- 构件与对象概念
- 构件复用
- 中间件优点
- Web架构设计
软件架构设计
软件架构的概念
- 软件架构风格描述-特定应用领域中系统组织方式的惯用模式。架构风格定义一个系统家族。即一个体系结构定义一个词汇表和一组约束,词汇表中包含一些构件和连接体类型,而这组的约束体现出系统是如何将这些构件和连接件组合起来的。
- 软件架构的作用
- 是项目关系人进行交流的手段
- 是早期设计决策的体现
- 是可传递和可重用的模型
- 对开发的知道和规范化意义不容忽略
- 软件架构建模
- 结构建模
- 框架建模
- 动态建模
- 过程建模
- 功能建模
- 软件架构建模(类UML)
- 逻辑视图——最终用户:功能需求——UML:逻辑视图
- 开发视图——编程人员:软件管理——UML:实现视图
- 进程视图——系统集成人员:性能、可扩充性、吞吐量——UML:进程视图
- 物理视图——系统工程人员:安装、通信——UML:部署视图
- 场景——UML:用例视图
软件架构风格
- 架构设计的一个核心问题是能够达到架构级的软件复用
- 架构风格反映了领域中众多系统所共有的结构和语义特性,并指导如何将各个构件有效的组织成一个完整的系统
- 5大类
- 数据流风格
- 批处理序列
- 管道-过滤器
- 调用/返回风格
- 主程序/子程序
- 面向对象
- 层次结构
- 独立构件
- 进程通信
- 事件驱动系统
- 虚拟机风格
- 解释器
- 基于规则的系统
- 仓库风格
- 数据库系统
- 黑板系统
- 文本系统
- 数据流风格
架构描述语言ADL
三个基本元素
- 构件
- 连接件
- 架构配置
特定领域的架构DSSA
基本活动
- 领域分析——目的:建立领域模型
- 领域设计——目的:获取DSSA
- 领域实现——目的:开发和组织可复用信息
领域分析人员
- 领域专家——提供领域中系统的需求规约和实现的知识
- 领域分析人员
- 领域设计人员
- 领域实现人员
三层次模型
- 领域开发环境——领域架构师
- 领域特定的应用开发环境——应用工程师
- 应用执行环境——操作员
基于架构的软件开发方法ABSD
- 是架构驱动的,强调由业务、质量和功能需求组合的架构设计
- ABSD方法是递归的,且迭代的每一个步骤都是清洗地定义的
- 三个基础
- 功能分解
- 选择架构分格实现质量和业务需求
- 领域模型的使用
- 开发过程
- 架构需求
- 需求获取
- 标识构件
- 生成视图
- 对类进行分组
- 把类打包成构件
- 需求评审
- 架构设计
- 提出架构模型
- 将标识的构件映射到模型中
- 分析构件的相互作用
- 生成软件架构
- 设计评审
- 架构文档化
- 架构复审
- 架构实现
- 分析与设计
- 构件实现
- 构件组装
- 系统测试
- 架构演化
- 需求变化归纳
- 制定演化计划
- 构件变动
- 更新构件的相互作用
- 构件组装与测试
- 技术评审
- 架构需求
软件架构评估
质量属性
- 性能
- 即系统的响应能力,经过多长时间才能对事件作出响应
- 设计策略、资源调度、优先策略
- 可用性
- 系统能够正常运行的时间比例,经常用两次故障之间的时间长度或在出现故障时系统能够恢复正常的速度表示
- 设计策略:冗余、心跳
- 可靠性
- 可修改性
- 指能够快速的以较高的性能价格对系统进行变更的能力
- 设计策略:信息隐藏、接口实现隔离
- 安全性
- 系统能够在向合法用户提供服务的同时能够阻止非授权用户使用的企图或拒绝服务的能力
- 设计策略:追踪审计
评估方式
重要概念
- 风险点——指架构设计中潜在的,存在问题的架构决策所带来的隐患
- 敏感点——为实现某种特定的质量属性,一个或多个构件所具有的特性
- 权衡点——影响多个质量属性的特性,是多个质量属性的敏感点
评估方法:基于场景的方式
软件架构分析法SAAM
- 形成场景
- 描述架构
- 对场景的分类和确定优先级
- 对场景进行单个评估
- 评估场景的相互作用
- 形成总体评价
机构权衡分析法ATAM
- 场景和需求收集——描述和介绍阶段
- 架构视图和场景实现——调查和分析阶段
- 属性模型分析和构造——测试阶段
- 属性模型折中——报告阶段
产品线
模型
- 双生命周期模型
- 现有系统需求
- 领域分析
- 领域设计
- 领域实现
- 新系统需求
- 需求分析
- 系统设计
- 系统实现
- SE模型
- 领域工程
- 应用工程
- 三生命周期模型
- 企业工程
- 领域工程
- 应用工程
建立方式
- 演化方式
- 逐步演化
- 减少风险
- 增入较大
- 革命方式
- 直接替换
- 风险较大
- 增入较少
成功因素
- 对该领域具有长期和深厚的经验
- 一个用于构建产品的好的核心资源库
- 好的产品线架构
- 好的管理支持
构件与中间技术
构件与对象概念
- 构件
- 独立部署单元
- 作为第三方的组装单元
- 没有可见状态
- 对象
- 一个实例单元,具有唯一的标志
- 封装了自己的状态和行为
- 可能具有状态,此状态外部可见
构件复用
- 检索与提取构件
- 理解与评价构件
- 修改构件
- 组装构件
- 组装失配
中间件优点
- 面向需求——精力于业务逻辑本身
- 接口与实现隔离——构件对外发生作用或构件间交互,都是通过接口进行的,构件使用者只需要知道构件的接口,而不关心其内部的实现,这是设计与实现分离的关键
- 业务的分隔和包容性——可按不同的业务进行功能划分
- 设计与实现隔离
- 软件复用
- 负责连接和通信,高效通信机制
- 提供互操作机制
- 屏蔽差异
Web架构设计
- 架构——MVC、MVP、MVVM、REST、WebService、微服务
- 缓存——Redis、Memcache、squid
- 开发分流——集群、CDN
- 数据库——主从复制、内存数据库、反规范化设计、NoSQL、分库分表
- 持久化——Mybatis、Hibernate
- 分布存储——hadoop、HDFS、FastDFS、区块链