关于需求系统的六种质量质量属性战术
一、 可用性战术(恢复和修复是可用性的重要方面,为了阻止错误发展成故障,至少能够把错误限制在一定的范围内,从而使修复成为可能)
在持久层的方法的实现的同时,我们要考虑到重要的线程安全问题,在我们的程序设计当中就要保证我们在处理事务的时候使用的是同一个session对象,就比如说银行转账,我们必须要保证在数据层,服务层和应用层拿到同一个事务对象,才能保证这个事务的完整实现。那么这样我们就可以像很多框架中用到的threadLocal.get()来从线程局部变量获取session,保证同一个线程获取到的是同一个session对象,保证我们事务的可用性。在配置事务管理器的时候,首先配置OpenSessionInViewFilter,是session在页面呈现了再关闭session。然后在配置事务的切入点以及事务的属性,在持久层如果进行的是查询那么久不需要事务,所以可配置事务的属性方法名包含了get*,find*等字样的就不需要事务。
二、可修改性战术(可修改战术的目标是控制实现、测试和部署变更的时间和成本)
分离用户接口,对于持久层抽取一个公共Dao利用泛化关系,进行泛型抽取,使所有服务层在调用持久层的方法时不管是什么对象服务层都是能过传递实体类进行数据操作交互。在服务层中对接口和实现进行分离。并且抽取一个公共的接口和实现,让所有的接口和实现都分别取实现和继承公共的。这样不但可以减少代码量,还可以实现易修改,只用改变公共的接口和实现就能改变所有。
三、性能战术(性能战术的目标就是对在一定的时间限制内到达系统的事件生成一个响应)
软件性能的课伸缩性,其中含义可以理解为软件随外部压力增大所表现的性能表现,如100W用户在线时,系统的响应时长是1秒钟,1000W用户在线的时候,系统的响应时长是否是简单的1*10秒钟,也可以理解成软件性能随硬件的扩充所产生的性能变化情况,如CPU是1G Hz的机器上,系统每秒钟可以处理1000个请求,如果CPU升级到2G Hz的处理速度,是否每秒钟就可以处理2*1000=2000个请求。在我的系统中采用一级缓存,二级缓存甚至可以配置查询缓存,一次来减少计算的开销,提高系统的性能。
四、 安全性战术(安全性战术分为:与抵抗攻击有关的战术、与检测攻击有关的战术以及从攻击中恢复有关的战术)
在我的系统中,首先将所有的页面放在WEB-INF里面,这样就不能直接访问,而是必须通过我的Action进行跳转访问,再者,通过自己定义一个拦截器,将所有的Action进行拦截,并且进行用户判断,如果session中用有用户,那么才放行,如果没有,那么直接回到登录页面。并且在于数据库交互的时候使用MD5加密的方式进行数据加密。
五、 可测试性战术(可测试性战术目标是允许在完成一个软件开发的增量后,轻松地对软件进行测试)
将接口和实现分离,在服务层当中将接口和实现完全分离。软件测试描述一种用来促进鉴定软件的正确性、完整性、安全性和质量的过程。换句话说,软件测试是一种实际输出与预期输出间的审核或者比较过程。软件测试的经典定义是:在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。在我的编程中奉行一种“测试先行”的方法,在对功能实现之间首先进行各种各样的测试(运用Junit),先将可能出现的情况反复测试,然后观察出现的结果是怎么样的,然后在进行完善和更改,这样在整体做完后就已经做了各种情况的测试,也保证的了系统的健壮性。
六、易用性战术(易用性与用户完成期望任务的难易程度以及系统为用户提供的支持种类有关)
在管理员或者用户操作查询的过程中,提供页数跳转,选择每页显示多少条数据,并且在添加了一条数据之后会自动跳到最后一页,方便用户查看自己刚添加的数据,在修改数据的时候也会在当前页数停留方便查看刚修改的那条数据。用户填写数据时能实时反馈数据的符合性,比如用户名,在填写的同时告知用户该用户名是否重复。方便用户的操作。