目的:
1.检测非法攻击并抵御攻击。例如:登陆验证,信息加密,限制权限等。
2.恢复软件原有或给出用户想要的信息。
3.网络安全等。
方法:
1.身份验证,登陆,验证码,多重加密等。
2.软件自动备份或有一个备份区。
3.没了。
不知道应该再说点啥了。。
实现质量属性依赖于基本的设计决策——战术。
在系统中共有6个质量属性,要对每一个质量属性设计战术来实现。
1、 可用性战术
可用性是指系统正常运行时间的比例,是通过两次故障之间的时间长度或在系统崩溃情况下能够恢复正常运行的速度来衡量的。可用性战术的目标是将会阻止错误发展为故障,或者至少能够把错误的影响限制在一定范围内,从而使系统恢复成为可能。可用性战术的方法包括:错误检测——用来检测故障的某种类型的健康监视;自动恢复——检测到故障时某种类型的恢复;错误预防——阻止错误演变为故障。
(1) 错误检测
错误检测的三个战术分别为:信号/响应、心跳、异常。
信号/响应机制是最常用也是最常见的一种方法。系统中最重要的就是数据信息的记录,因此数据信息在数据库中能否正常存储非常重要,信息是否能正确的写入写出是系统最基本的事情,因此在连接数据库时,以及在写入写出各项数据信息时,要在代码中加入一些控制台输出的信息,通过控制台输出的信息,可以判断出那一部分代码出现了问题。比如,在插入数据信息时出现错误,如果控制台成功输出了数据库已经正常连接的信息,则问题就一定是出现在后面的代码中。在连接数据库进行各种数据的操作时,应用异常处理块来进行故障的检测。
(2) 错误恢复
错误恢复的战术包括表决、主动冗余、被动冗余、备件、状态再同步等。
我的系统中会使用备件的方法,用于更换不同的故障模块,这样会使得错误恢复的时间更快一点。
(3) 错误预防
错误预防的战术包括:从服务中删除、事务和进程监听器。
其中事务接触的比较多。在数据库的操作中,定义一个事务,其中包括的语句全部执行或者全部不执行,操作的所有部分全部成功或者全部失败并恢复。
2、 可修改性战术
可修改性是指可以修改什么,何时以及谁进行修改。可修改性战术的目标是控制实现、测试和部署变更的时间和成本。可修改性战术可以分为3类:局部化修改——目标是减少由某个变更直接影响的模块的数量;防止连锁反应——目标是限制对局部化的模块的修改,以防止对某个模块的修改间接的影响到其他模块;延迟绑定时间——目标是控制部署时间并允许非开发人员进行修改。
(1) 局部修改
局部化修改战术有维持语义的一致性、预计期望的变更、泛化模块和限制可能的选择。比如添加、修改数据信息页面之间不设计跳转关系等,功能可以独立完成。
(2) 防止连锁反应和推迟绑定时间
防止连锁反应方面尽量维持借口或类的名字等不变,把要改动的模块尽量降到最低,推迟绑定时间在系统中还没有体现出来,没有制定相关的战术。
3、性能是指系统的响应能力,即对外部刺激(事件)做出反应时所需要的时间或在某段时间内所处理的事件的个数。一般用等待时间、处理期限、系统吞吐量、响应抖动(等待时间的变化)、为处理事件(由于系统太忙无法响应)、丢失数据(由于系统太忙)等指标了解系统性能。性能战术的目标是对在一定的时间限制内到达系统的事件生成一个响应,这些事件可以是消息到达、定时器到时,系统状态的变化,就是要控制生成响应的时间。性能战术包括3个分类:资源需求——分析影响性能的资源因素;资源管理——提高资源的应用效率;资源仲裁——解决资源的争用。
(1) 资源控制
减少等待时间最直接的方法就是减少系统需要处理运行的各种运算。系统使用的Struts 2框架中,通过action来控制各种功能的实现,通过配置文件来设置页面之间的跳转,减少很多重复的代码,简化处理方式,在一定程度上提高速度。
(2) 资源管理和资源仲裁
在系统中这两方面没有制定战术。
4、安全性是衡量系统在向合法用户正常提供服务的情况下,阻止非授权使用的能力。安全性战术包括抵抗攻击的战术、检测攻击的战术和从攻击中恢复的战术。
(1) 抵抗攻击
在系统中用户必须先登录才能进入系统。
(2) 检测攻击和攻击恢复
这方面系统中没有制定战术
5、可测试性指通过测试揭示软件缺陷的难易程度。可测试性战术的目标是允许在完成软件开发的一个增量后,轻松的对软件进行测试,测试的目标是发现错误。可测试性战术的分 类分为输入/输出和内部监视。
在系统设计代码中,各种类库的使用,以及Struts 2、Hibernate、Spring框架的使用,都体现了接口与实现分开的理念,在测试中可以更方便测试出错误。
6、 易用性战术
易用性与用户完成期望任务的难易程度(有效性、错误避免及错误处理、用户自信和满意度、可学习性)以及系统为用户提供的支持种类有关。有两种类型的战术支持易用性,每种战术所针对的是两种类别的“用户”。第一类是运行时,包括那些在系统运行期间支持用户的战术;第二类基于用户接口设计的迭代特性,它在设计时支持接口开发人员。
(1) 运行时战术
运行时战术是在系统运行时,能够通过各种提示让用户明白系统正在做什么。在我的系统中,一些信息提示能够让用户在进行操作时,更好的了解和使用系统的功能,更快的熟悉系统。
(2) 设计时战术
设计系统时使用Struts 2+Spring+Hibernate集成框架思想来设计模块功能代码,使系统在后期修改和维护时更加方便。
节选自:https://www.cnblogs.com/mxj333/p/5493100.html