• 代码层实现质量属性战术


    战术介绍:战术是对质量属性的控制产生影响的设计决策,而架构策略是架构中所采用的战术的集合。其会根据一种战术可以求精其他战术,并可以组织成层次的形式。如冗余战术可以进一步求精为数据冗余或计算冗余;模式可以把战术打包,如冗余战术通常还会使用同步战术。简而言之,战术就是应对之策,如今的软件设计需要考虑多方面因素方可取得最终的成功,得到用户的认可,具体的实现办法就是在代码层用战术实现质量属性,类似于古代行军打仗的兵法,只不过现在是在代码层实现各类质量属性,博得用户的青睐。

    可用性战术:可用性不仅仅是字面的意思——可以使用,它具体所指有很多方面。其中的复和修复是可用性的重要方面,为了阻止错误发展成故障,至少能够把错误限制在一定的范围内,从而使修复成为可能。在持久层的方法的实现的同时,我们要考虑到重要的线程安全问题,在我们的程序设计当中就要保证我们在处理事务的时候使用的是同一个session对象,就比如说银行转账,我们必须要保证在数据层,服务层和应用层拿到同一个事务对象,才能保证这个事务的完整实现。那么这样我们就可以像很多框架中用到的threadLocal.get()来从线程局部变量获取session,保证同一个线程获取到的是同一个session对象,保证我们事务的可用性。在配置事务管理器的时候,首先配置OpenSessionInViewFilter,是session在页面呈现了再关闭session。然后在配置事务的切入点以及事务的属性,在持久层如果进行的是查询那么久不需要事务,所以可配置事务的属性方法名包含了get*find*等字样的就不需要事务。

    可修改性战术:可修改战术的目标是控制实现、测试和部署变更的时间和成本。其主要目的是在变更请求的过程中按照可修改性战术按要求完成修改。分离用户接口,对于持久层抽取一个公共Dao利用泛化关系,进行泛型抽取,使所有服务层在调用持久层的方法时不管是什么对象服务层都是能过传递实体类进行数据操作交互。在服务层中对接口和实现进行分离,并且抽取一个公共的接口和实现,让所有的接口和实现都分别取实现和继承公共的。这样不但可以减少代码量,还可以实现易修改,只用改变公共的接口和实现就能改变所有。

    性能战术:性能战术的目标就是对在一定的时间限制内到达系统的事件生成一个响应。软件性能的课伸缩性,其中含义可以理解为软件随外部压力增大所表现的性能表现,如100W用户在线时,系统的响应时长是1秒钟,1000W用户在线的时候,系统的响应时长是否是简单的1*10秒钟,也可以理解成软件性能随硬件的扩充所产生的性能变化情况,如CPU1G Hz的机器上,系统每秒钟可以处理1000个请求,如果CPU升级到2G Hz的处理速度,是否每秒钟就可以处理2*1000=2000个请求。在我的系统中采用一级缓存,二级缓存甚至可以配置查询缓存,一次来减少计算的开销,提高系统的性能。

    安全性战术:安全性战术分为与抵抗攻击有关的战术、与检测攻击有关的战术以及从攻击中恢复有关的战术。在系统中,首先将所有的页面放在WEB-INF里面,这样就不能直接访问,而是必须通过我的Action进行跳转访问,再者,通过自己定义一个拦截器,将所有的Action进行拦截,并且进行用户判断,如果session中用有用户,那么才放行,如果没有,那么直接回到登录页面。并且在于数据库交互的时候使用MD5加密的方式进行数据加密。

    可测试性战术:可测试性战术目标是允许在完成一个软件开发的增量后,轻松地对软件进行测试。将接口和实现分离,在服务层当中将接口和实现完全分离。软件测试描述一种用来促进鉴定软件的正确性、完整性、安全性和质量的过程。换句话说,软件测试是一种实际输出与预期输出间的审核或者比较过程。软件测试的经典定义是:在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。在我的编程中奉行一种“测试先行”的方法,在对功能实现之间首先进行各种各样的测试(运用Junit),先将可能出现的情况反复测试,然后观察出现的结果是怎么样的,然后在进行完善和更改,这样在整体做完后就已经做了各种情况的测试,也保证的了系统的健壮性。

    易用性战术:易用性与用户完成期望任务的难易程度以及系统为用户提供的支持种类有关。在管理员或者用户操作查询的过程中,提供页数跳转,选择每页显示多少条数据,并且在添加了一条数据之后会自动跳到最后一页,方便用户查看自己刚添加的数据,在修改数据的时候也会在当前页数停留方便查看刚修改的那条数据。用户填写数据时能实时反馈数据的符合性,比如用户名,在填写的同时告知用户该用户名是否重复,方便用户的操作。

    软件架构样式从战略层面解决质量问题,战术是从具体部署上给出解决质量问题的局部策略。二者相互结合实现质量属性的战术性,使产品更趋近于完美。

    文献来源:1.https://www.docin.com/p-819778690.html

      2.https://www.cnblogs.com/mengqimoli/p/6648155.html

  • 相关阅读:
    Astyle中文格式说明
    windows安装composer,配置环境变量,使用及报错处理
    Centos 中使用Supervisor守护进程(转载)
    react native Android返回键监听BackHandler
    IE兼容问题
    mysql修改root密码的方法
    11月15日jquery学习笔记
    2016年11月2日——jQuery源码学习笔记
    2016年11月1日——jQuery源码学习笔记
    windows下apache+php+mysql配置
  • 原文地址:https://www.cnblogs.com/PSLQYZ/p/14640157.html
Copyright © 2020-2023  润新知