软件架构概述
关键词:软件元素及软件元素间的关系, 元素行为,
定义: 存在两大类别定义,”决策派“ 和 ”组成派“
软件架构是根据关键功能和非功能性约束(质量属性和设计约束)进行设计和决策的结果;
软件架构设计要考虑硬件特性和网络特性;
基于架构的软件开发模型将整个软件过程划分为架构需求、设计、文档化、评审、实现、演化 6个子过程
软件质量属性
分为运行期质量属性和开发期质量属性,
运行期质量属性包括 性能 、安全性、易用性、可靠性、互操作性、鲁棒性(稳定性)、可伸缩性
开发期质量属性包括 易测试性、可扩展性、易维护性、可重用性、可移植性、易理解性
架构关注点研究质量属性实现,将质量属性分为六种 可用性、易用性、性能、安全性、可测试性、可修改性,前四种属性运行期质量属性,后两种属于开发期质量属性;
架构设计(模式)
架构设计模式,演变交付生命周期、属性驱动设计法、按架构组织开发团队、开发骨架系统、利用商用构件开发;
软件架构文档化
软件架构评估
软件架构建模
”4+1“视图模型,
逻辑视图,功能抽象,考虑用户的服务和功能
开发视图,软件内部需求,考虑开发期质量属性
进程视图,侧重于系统运行特性,主要关注一些非功能性需求,
物理视图,软件的元素(进程、线程)与部署
场景,重要需求的抽象
架构风格(模式)
软件架构风格是描述某一特定应用领域中系统组织方式的惯用模式,定义了用于描述系统的术语表和一组指导构件系统的规则;
风格类别,调用-返回 风格(分层、主程序-子程序、面向对象)、独立构件风格(通信进程、事件系统)、虚拟机风格(解释器、规则为中心)、数据流风格(批处理、管道-过滤器)、数据为中心风格(数据库、黑板)、分布式系统风格(代理者)、交互式系统风格(MVC、PAC)、适应性系统风格(微内核、基于元模型)
软件架构视图
结构-元素本身集合,视图-捕获和表达结构;
从系统体系的角度讲是结构, 从文档角度说是视图;
软件架构是一种无法以简单的一维方式进行说明的复杂实体;
软件视图通常分为三种类型:
模块视图类型 - 为主要模块单元编档
构件和连接件视图类型 - 为系统的构件和连接件执行单元编档;
分配视图类型 - 为软件的开发与执行环境之间的关系编档
架构风格是对元素和关系类型的特化,它还包括如何使用这些元素和关系类型的一组限制条件;
模块视图类型,包括架构风格有分解、使用、分层、类或泛化;
分解风格,大模块分解为小模块,小到容易理解,应用于资源分配、项目结构化和规划;信息隐蔽、封装;配置控制;
使用风格,一个单元的正确性依赖于另外一个单元的正确性,应用于设计子集、设计扩展;
分层风格,上层使用下层的服务,实现隐藏细节的抽象;
类或泛化风格,继承自一个类,共享访问方法;
构件-连接件视图类型,包括架构风格有客户机-服务器、进程或者通信进程、并发、共享数据
分配视图类型,包括架构风格有部署、实现、工作分配;