是什么使一个设计具有了可移植性,一个设计具有了高性能,而另一个设计具备了可集成性?实现这些质量属性依赖于基本的设计决策。战术是影响质量属性的设计决策,战术的集合称为“架构策略”。架构模式以某种方式将战术打包在了一起。
  战术是设计师多年以来一直在使用的那些方法。对设计师来说,每个战术都是一个设计选择。例如,其中一个战术引入了冗余,以提高系统的可用性。这是设计师必须提高可用性的一个选择,但并不是的选择。通常通过冗余实现高可用性意味着需要同步。
  一、可用性战术
  当系统不再提供与其规范一致的服务时,故障发生了;该系统的用户可以观察到这个故障。错误可能会导致故障的发生。可用性战术将会阻止错误发展成故障,至少能够把错误的影响限制在一定范围内,从而使修复成为可能。
  1、错误检测:命令/响应;心跳(dead man 计时器);异常;
  2、错误恢复-检测和修复:表决;主动冗余(热重启);被动冗余(暖重启/双冗余/三冗余);备件;
  3、错误恢复-重新引入:shadow操作;状态再同步;检查点/回滚
  4、错误预防:从服务中删除;事务;进程监视器
  二、可修改性战术
  控制可修改性的战术,其目标是控制实现、测试和部署变更的时间和成本。
  1、局部化变更:维持语义的一致性;预期期望的变更;泛化该模块;限制可能的选择;抽象通用服务;
  2、防止连锁反应:信息隐藏;维持现有的接口;限制通信路径;仲裁者的使用;
  3、推迟绑定时间:运行时注册;配置文件;多态;组件更换;遵守已定义的协议;
  三、性能战术
  性能战术的目标是对在一定的时间限制内到达系统的事件生成一个响应。到达系统的可以是单个事件,也可以是事件流的形式,它是请求执行计算的触发器。它可以是消息的到达、定时器到时、系统环境中重要的状态变化的检测,等等。系统对事件进行处理并生成一个响应,性能战术控制生成响应的时间。等待时间是事件到达和对该事件生成响应之间的时间。
  1、资源需求:提高计算效率;减少计算开销;管理事件率;控制取样频率;
  2、资源管理:引入并发、维持多个副本;增加可用资源;
  3、资源仲裁:调度策略;
  四、安全性战术
  可以把实现安全性的战术分为:与抵抗攻击有关的战术、与检测攻击有关的战术以及从攻击中恢复有关的战术。
  1、抵抗攻击:对用户进行身份验证;对用户进行授权;维护数据的机密性;维护完整性;限制暴露的信息;限制访问;
  2、检测攻击:入侵检测;
  3、从攻击中恢复:(恢复)查看可用性;(识别)审计追踪;
  五、可测试性战术
  可测试性战术的目标是允许在完成软件开发的一个增量后,较轻松地对软件进行测试。
  1、管理输入/输出:记录/回放;将接口与实现分离;将接口与实现分离;特化访问路线/接口;
  2、内部监视:内置监视器;
  六、易用性战术
  易用性与用户完成期望任务的难易程度,以及系统为用户提供的支持种类有关。
  1、分离用户接口
  2、支持用户主动:取消;撤销;聚合;
  3、用户模型:用户模型;系统模型;任务模型;