软件架构的六大质量属性简介
1.可用性战术
可用性战术将会阻止错误发展为故障,或者至少能够把错误的影响限制在一定范围内,从而使系统恢复成为可能。
可用性战术维护可用性的方法有错误检测、自动恢复、错误预防。
错误检测:用来检测故障的某种类型的健康监视;
自动恢复:检测到故障时某种类型的恢复;
错误预防:阻止错误演变为故障;
2.可修改性战术
可修改性战术的目标是控制实现、测试和部署变更的时间和成本。
可修改战术可以分为三类:局部化修改、防止连锁反应、延长绑定时间;
3.性能战术
性能战术的目标是对一定的时间限制内到达系统的事件生成一个响应,这些事件可以是消息到达、定时器到时,系统状态的变化。
性能战术包括三个分类:资源需求、资源管理、资源仲裁;
和性能直接挂钩的则是相应时间,影响响应时间的主要因素主要是CPU、数据存储、宽带、内存等的“资源消耗”以及由于资源争用、资源不可用或长时间计算导致事件无法处理的“闭锁时间”。
4.安全性战术
安全性战术包括抵抗攻击的战术、检测攻击的战术和从攻击从恢复的战术。
5.可测试性战术
可测试性战术的目标是允许在完成软件开发的一个增量后,轻松的对软件进行测试。
测试的目标是发现错误。
补充:
具有可测试性战术的代码应该具有如下特点:
1. 控制性。
控制性是指测试者给在被测试的软件提供固定的输入数据的方便程度。换句话说就是软件本身接受定义明确的参数,并且这些参数可由测试者灵活的传入,软件在接受到这些参数后通过一系列运算返回固定的结果。任何软件都应该清楚的表明自己需要什么参数,以及将会生成什么返回值。此外任何软件都应该应该抽象它的依赖,譬如参数或底层模块,并为外部调用者提供随意注入的方式。当然软件代码本身应该清晰,整洁,目标明确。
2.可见性。
可见性是指测试者观察正在测试的软件的当前状态以及它所产生的任何输出的能力。换句话说就是软件应该将内部运算的状态(一般是指错误状态)和输出结果清晰明确的告知测试者。可见性一般都是通过方法执行后验证后置条件完成,验证后置条件与契约式设计有关。所谓的契约式设计,是指把组件之间的交互描述成契约,权利和义务得到明确的表达和强制实施。在.net环境下,可以通过.net Framework4新增的Code Contracts库创建软件契约。
3.简约性。
一般而言,简约性对任何系统在任何情况下都是一个正面的属性,测试毫无疑问也不例外。简单和极其内聚的组件非常适合测试,因为他们暴露出来的方法少,需要的测试也就少,而需要的测试越少,就越能做得可靠,快速.
6.易用性战术
易用性与用户完成期望任务的难易程度以及系统为用户提供的支持种类有关。
易用性战术的目标是为用户提供适当的反馈与协助。