系统架构师要点总结(一) —— 软件架构设计

软件架构概述数据库

关键词:软件元素及软件元素间的关系, 元素行为,设计模式

定义: 存在两大类别定义,”决策派“  和 ”组成派“安全

软件架构是根据关键功能和非功能性约束(质量属性和设计约束)进行设计和决策的结果;服务器

软件架构设计要考虑硬件特性和网络特性;网络


基于架构的软件开发模型将整个软件过程划分为架构需求、设计、文档化、评审、实现、演化 6个子过程架构


软件质量属性并发

分为运行期质量属性和开发期质量属性,分布式

运行期质量属性包括 性能 、安全性、易用性、可靠性、互操做性、鲁棒性(稳定性)、可伸缩性性能

开发期质量属性包括 易测试性、可扩展性、易维护性、可重用性、可移植性、易理解性测试


架构关注点研究质量属性实现,将质量属性分为六种 可用性、易用性、性能、安全性、可测试性、可修改性,前四种属性运行期质量属性,后两种属于开发期质量属性;


架构设计(模式)

架构设计模式,演变交付生命周期、属性驱动设计法、按架构组织开发团队、开发骨架系统、利用商用构件开发;


软件架构文档化


软件架构评估


软件架构建模

”4+1“视图模型, 

逻辑视图,功能抽象,考虑用户的服务和功能

开发视图,软件内部需求,考虑开发期质量属性

进程视图,侧重于系统运行特性,主要关注一些非功能性需求

物理视图,软件的元素(进程、线程)与部署

场景,重要需求的抽象


架构风格(模式)

软件架构风格是描述某一特定应用领域中系统组织方式的惯用模式,定义了用于描述系统的术语表和一组指导构件系统的规则;

风格类别,调用-返回 风格(分层、主程序-子程序、面向对象)、独立构件风格(通讯进程、事件系统)、虚拟机风格(解释器、规则为中心)、数据流风格(批处理、管道-过滤器)、数据为中心风格(数据库、黑板)、分布式系统风格(代理者)、交互式系统风格(MVC、PAC)、适应性系统风格(微内核、基于元模型)


软件架构视图

结构-元素自己集合,视图-捕获和表达结构;

从系统体系的角度讲是结构, 从文档角度说是视图;

软件架构是一种没法以简单的一维方式进行说明的复杂实体;


软件视图一般分为三种类型:

模块视图类型 - 为主要模块单元编档

构件和链接件视图类型 - 为系统的构件和链接件执行单元编档;

分配视图类型 - 为软件的开发与执行环境之间的关系编档


架构风格是对元素和关系类型的特化,它还包括如何使用这些元素和关系类型的一组限制条件;


模块视图类型,包括架构风格有分解、使用、分层、类或泛化;

分解风格,大模块分解为小模块,小到容易理解,应用于资源分配、项目结构化和规划;信息隐蔽、封装;配置控制;

使用风格,一个单元的正确性依赖于另一个单元的正确性,应用于设计子集、设计扩展;

分层风格,上层使用下层的服务,实现隐藏细节的抽象;

类或泛化风格,继承自一个类,共享访问方法;


构件-链接件视图类型,包括架构风格有客户机-服务器、进程或者通讯进程、并发、共享数据


分配视图类型,包括架构风格有部署、实现、工做分配;