本次学习的是《一线架构师实践指南》中关于实用软件体系结构,本部分主要讲的内容是提供实用的指南和技术,以更快地得到好的系统结构设计。我们的哲学是不应该致力于设计理想化的系统结构,而是应该仔细地评估和权衡所有技术、市场、人员、成本方面的问题,从而获取一个好的解决方案:
4种视图+全局分析
一、4种视图
1、一个软件体系结构有4种截然不同的视图:概念视图、模块视图、执行视图、代码视图。
使用这个4种视图提供了一种设计软件系统结构的系统化方法,帮助架构师设置优先级,分析权衡,并保证没有缺漏。
2、不同视图强调的不同工程关注点:
在概念视图中,问题和解决方案主要通过领域术语来考虑的。对于特定的软件及硬件技术,它们应当是相对独立的。概念视图的工厂关注点包括:
系统如何满足需求?
在模块视图中,概念视图中的构件和连接子被映射为子系统和模块。在这里,架构师强调的是如何用现有的软件平台以及技术实现概念的解决方案。主要的工程关注点有如下几点:
产品是如何映射到软件平台的?
使用了什么样的系统支持或系统服务?具体是在什么地方?
怎么支持测试?
如何降低模块间的依赖性?
如何将模块与子系统的复用最大化?
执行视图描述模块如何映射到运行时平台说提供的元素,以及这些又如何映射到硬件体系结构。执行视图定义系统的执行时实体及其属性,比如内存使用和硬件分配。对于执行视图,其工程关注点如下:
系统如何满足性能、恢复及重新配置方面的需求?
如何平衡资源的使用(例如:负载平衡)?
如何达到必需的并发、复制及分布,而不过度增加控制算法的复杂度?
如何使运行时平台的改变所引起的影响到达最小?
在代码体系结构视图中,架构师决定执行视图中的执行时实体如何映射到部署构件(例如:可执行构件),决定模块视图中的模块如何映射到源构件,以及部署构件如何从源构件生成。代码视图中重要的工程关注点如下:
如何降低构造时间?
需要什么工具支持开发环境?
如何支持集成与测试?
2、全局分析
全局分析是在定义概念、模块、执行和代码系统结构视图之前进行的,并贯穿整个系统结构的设计过程。
全局分析从识别影响体系结构设计的因素来分成3类:组织因素、技术因素、产品因素。
组织因素分成5类:管理;员工技能、兴趣、能力、缺点;过程与开发运行环境;开发进度;开发预算。
技术因素包括:通用和专用的硬件;操作系统、用户界面、设计模式等软件技术;模版和框架等体系结构技术;图像、数据库、数据格式、算法和技术之类的标准。
产品因素是描述了产品的功能需求、用户可见的特征和产品的性能等质量方面的需求。比如:功能特征;用户界面;性能;依赖性;错误监测、报告、修复;服务和价格等。
全局分析是在每一种体系结构设计视图中都要进行的一种行为。在全局分析过程中建立的问题卡片要用在每一个视图设计的核心设计任务中。在进行核心设计任务时,做出的决策应当可以返回到全局分析,以增加和修改因素、问题和策略。