首先基于ssh框架我开发的系统为汽车美容管理系统,结合所学的质量属性战术能大大提高系统的性能。一般软件架构的质量属性主要有可用性、易用性、性能、安全性、可修改性和可测试性六种。下面介绍每一种质量属性在我所开发的系统中的应用。
可用性:
可用性是指系统正常运行时间的比例,也就是用于检测和修复系统中错误,在错误发生时能快速的相应并修复错误恢复系统的运行。在我所做的系统中可用性主要体现在在错误检测、错误恢复以及错误预防三个方面。例如,在用户进行注册操作时,如果在注册的信息方面必填信息为空但用户点击了提交指令,这是一个操作方面的错误,系统在检测到错误时会根据对此错误的规则禁止提交指令并提示用户此信息不能为空,让用户重新输入。类似的场景在系统中有很多,对数据的增加和修改一般都会有系统对操作失误的检查和做出相应的相应来提示操作人员。在错误的预防方面例如,在用户注册或修改密码的场景下如果密码为空或密码和确认密码输入不一致系统会给出错误提示并且禁止用户执行提交操作。在这两个案例中刺激源为用户,刺激为输入错误,制品为系统处理器,操作环境为正常环境,响应为系统记录错误并提示用户,相应度量为系统反应时间,一般在5秒内。可用性的实现使系统的可用性更高,在系统中综合可用性的特点做出相应操作使系统的性能有所提高。
可修改性:
可修改战术主要指实现、测试和部署变更的难易程度,其目标是控制实现、测试和部署变更的时间和成本。在我所开发的系统中可修改性体现在局部修改和防止连锁反应这两个方面。在系统的开发中结合可修改性战术主要做到各个模块独立开发,在语义的定义上保持一致性,这样能确保所有这些责任都能够协同工作,不需要过多地依赖其他模块。同时局部修改还体现在限制可能的选择,因为某些参数的修改可能影响的范围很广,同时影响多个模块,所以在系统中用下拉菜单或其他方式限制用户的修改。例如,在用户修改和注册中选择业务时会有下拉框限制用户的选择。在防止连锁反应方面,我所做的系统主要用ssh框架中的spring框架中的Ioc控制反转思想来实现。这样开发人员在修改一个模块时不会影响其他的模块,这里同时也用到了设计模式中的工厂模式,这样在系统中大大的减少了工作量让开发者修改变得更加简洁方面。在可修改性的场景中刺激源为开发人员和用户及管理员,刺激为修改某模块,环境为开发人员为设计时用户为运行时,相应为系统根据修改指令做相应的操作,修改度量为修改后的影响。
性能:
性能是指系统的响应能力----即对外部刺激(事件)做出反应时所需要的时间或在某段时间内所处理的事件个数。性能战术的目标就是对在一定的时间限制内到达系统的事件生成一个响应。影响响应时间的主要因素为资源消耗和闭锁时间。在我所做的系统中减少响应时间的主要战术在于资源需求的控制。在资源需求控制的方面我主要是用到提高计算效率和减少计算开销两个方法。提高计算效率主要是指简化代码让代码尽量减少冗余,提高计算的效率,在ssh框架中利用了MVC的思想,大大的减少了代码的冗余属于轻量级开发。例如,在用户或管理员进行数据查找时,采用二分查找法,这样可以大大减少查找时间。减少计算开销主要是如果没有资源请求,就可以减少处理需求。例如可以保存上次计算的结果来实现。在性能的场景中刺激源为系统内部,刺激为算法的执行,制品为系统,环境为正常模式,相应为系统处理刺激,相应度量为响应的时间。
安全性:
安全性是衡量系统在向合法用户正常提供服务的情况下,阻止非授权使用的能力。一般把认可、机密性、完整性和保证确定为目标。在我所做的系统中主要是通过对用户身份进行验证、对用户进行授权和维护数据的机密性来实现安全性的目标。对用户身份进行验证,在用户登录系统是需要用户名和密码的验证,再验证中如果密码或用户名不正确会有提示提示用户的错误信息。对用户进行授权是指根据用户的不同类型例如管理员和普通用户给予不同的访问权限,对个别用户进行访问限制等方法。维护数据的机密性是指对数据库的保护,例如对数据进行加密等方式。安全性的场景中刺激源为授权用户或非授权用户,刺激为访问系统,制品为系统服务,环境为直接,响应为进行用户验证,相应度量为避开安全措施所需的时间。
可测试性:
可测试性指通过测试揭示软件缺陷的难易程度。可测试性战术目标是允许在完成一个软件开发的增量后,轻松地对软件进行测试。在可测试性方面我所的系统在输入/输出中用到记录/回放和将接口与实现分离两种战术,记录/回放是指捕获跨接口的信息,并将其作为测试专用软件的输入,将接口与实现分离允许实现的代替。占位实现允许在缺少被占位组件时,对系统的剩余部分进行测试。在可测试性的场景中刺激源为测试人员,刺激为交付的系统,制品为完整的应用,环境为开发时,响应为可以控制系统执行预期的测试,响应度量为执行测试的时间。
易用性:
易用性主要是指对用户来说完成某个期望任务的难易程度。在我所做的系统中易用性主要体现在用户主动的操作的响应。例如,在出错率较高的地方有撤销操作、取消操作以及用户的帮助手册等。同时在界面上做了一些必要的友好提示来防止用户的错误操作,让用户在操作时更加容易更加方便。在易用性的场景中刺激源为用户,刺激为有效的使用系统,制品为系统,环境为在运行时,响应为导航:取消/撤销操作,响应度量为任务时间。
软件架构中质量属性在系统中实现让系统变得更加完整,在各方面能加趋近实用性,ssh框架结合软件架构质量属性的使用也让我学到的了很多原来不了解的知识,无论是ssh框架还是架构的质量属性的知识都让我受益匪浅。