《软件构架实践》笔记二

Posted on 2017-01-21 10:19  Young丶  阅读(148)  评论(0编辑  收藏  举报

第一部分对构架商业周期的介绍为分析软件构架奠定了基础,通过预想构架后,就应该考虑如何创建构架。

商业目的决定了系统构架必须满足的一些质量属性,这些质量属性是高于对系统功能的基本要求的。

功能性和质量属性是正交的。功能性质系统能够完成所期望的工作的能力。如果功能性是系统的唯一需求的话,整个系统就可以是没有内部结构的单一模块,然而,系统被分解成多个模块,使其变得容易理解,并支持各种其他目的。当其他质量属性很重要时,软件构架会限制各结构的功能分配。功能性所关心的是它如何与其他质量属性交互,以及他是如何限制其他质量属性的。

质量属性是设计师最常追求的目标,由于这些质量属性的定义是重叠的,因此我们用一般场景对其进行刻画,可以把这些质量属性分为适用于系统的、适用于商业环境的和适用于构架本身的。

实现质量属性,系统设计有决策集合组成,在这些决策中,一些可以帮助控制质量属性响应,一些可以确保系统功能的实现。对设计师来说,每个战术都是一个设计选择。首先要考虑错误检测,然后分析错误恢复,最后简要讨论下错误预防。

广泛用于识别错误的3个战术是命令/响应,心跳和异常,命令/回响和心跳战术在不同的进程中操作,异常战术在一个进程中操作。异常处理程序通常将错误在语义上转换为可以被处理的形式。错误恢复有准备恢复和修复系统两部分组成,准备和修复的战术例如:表决、主动冗余(热重启)、被动冗余(暖重启/双冗余/三冗余)、备件、shadow操作、状态再同步、检查点/回滚。错误预防战术有从服务中删除、事务、进程监视器。

可修改战术可以根据目标而分组,一组可修改战术的目标是减少由某个变更直接影响的模块数量,这组战术称为“局部化修改”。另一组的目标是限制对局部化的模块的修改,称为“防止连锁反应”。第三组的目标是控制部署时间和成本,称为“延迟绑定时间”。

性能战术的目标就是对在一定时间限制内到达系统的事件生成一个响应。性能战术有三个战术分类,分别是资源需求、资源管理和资源仲裁。

可测试性战术的目标是允许在完成软件开发的一个增量后,较轻松地对软件进行测试。

在将战术与模式关联起来的过程中,选择了战术后,设计师的任务才刚刚开始。理解战术实现什么属性。起伏作用是什么以及不选择其他战术的风险对构架设计是必不可少的。