一、文档说明
在完成了《软件架构体系》课程中关于六种软件质量属性的内容之后就上学期开发的**系统进行反思,阐述设计开发时所实现的质量属性战术,说明原因。
二、质量属性战术说明
1.可用性战术
可用性战术主要在系统错误方面着手。从错误的检测和恢复,到错误的预防和屏蔽等等。系统在运行过程中会不可避免的出现故障,可以说出现故障是绝对的,而故障的次数是相对的。在这方面我们对于**系统的开发上加强了错误的预防处理,增强了系统的可用性属性。首先我们采用了事务的处理机制,对某几个有序的步骤进行事务性的绑定。如果进程中的一个步骤失败的话,可以使用事务来防止任何数据受到影响,还可以使用事务来防止访问相同数据的几个同时线程之间发生冲突。事务,就是一组操作数据库的动作集合。如果一组处理步骤或者全部发生或者一步也不执行,我们称该组处理步骤为一个事务。当所有的步骤像一个操作一样被完整地执行,我们称该事务被提交。由于其中的一部分或多步执行失败,导致没有步骤被提交,则事务必须回滚到最初的系统状态。
2.可修改性战术
可修改战术的目的在于控制系统修改的成本,比如采用局部化的变更方式,控制修改的方式来防止连锁反应,另外还可以采用推迟绑定时间的方式来降低模块之间的耦合度,减小系统中模块修改引起的成本变化。对于**系统的开发来说,我们对系统的功能模块进行了合理化的划分,某一个模块只负责一小部分专门的功能和责任。比如在信息填报这一块,我们把一些基本不变的基础信息采用公有化的模块来处理,对于重要的关键信息采用私有的模块来处理,模块之间采用抽象化的共有接口来进行联系,这样在修改某个模块时就能防止代码污染扩散。
3.性能战术
质量属性中的性能属性战术主要关注系统对用户请求的响应时间。针对于**系统的性能战术,我们采用了固定优先级的调度策略,为每个企业的提交请求分配一个特定的优先级,并按该优先级顺序对提交的表单进行审核。该策略能够保证为企业优先级较高的请求提供更好的服务,但是,对一些优先级较低的请求来说,可能要等待很长的时间才能得到服务,因为它前面有很多优先级较高的请求。所有我设计的优先级策略是轮转调度策略,它对请求进行排序,然后在允许的时候,把资源分配给该排序中的下一个请求。轮转的一个特殊形式就是循环执行,在循环执行中,资源分配是每隔一个固定的时间进行的。
4.安全性战术
安全性战术主要关注系统的安全,分为与抵抗攻击有关的战术、与检测攻击有关的战术以及从攻击中恢复有关的战术等。在互联网时代,一个系统的安全性能是非常重要的。在**系统的开发过程中我们采用了多方面的措施来增强系统的安全性。首先,在用户登录和注册信息处理中采用了MD5加密技术, MD5加密算法,对于普通强度的口令加密。这样在数据库的读写上都是密文传输,可以提高用户信息安全级别。另外在系统的全局上还采用了防盗链的技术,这样能防止不法用户跳过安全验证。最后采用强有力的权限管理,对用户的操作进行权限审核,权限够规定的级别之后才能继续完成该项操作,这样能防止系统内部用户的跨权限操作。
5.可测试性战术
对于**系统,我们采用了JUnit4框架进行单元测试。对新增模块也可以在Junit框架的规范下进行单元化的测试。
6.易用性战术
界面设计是软件易用性的重要体现,一个优秀的软件要想实现良好的易用性必须深入理解以人为本的理念。首先是从界面元素的定义上要符合市场上的规范,在这样统一的规范下进行易用性设计能降低用户适应软件的时间,要在界界面风格上保持一致,降低用户使用软件的学习成本。在操作上要为用户考虑,通过多种方式来为用户操作提供便捷性。另外也要考虑视觉上的舒适性,避免用户在长时间使用软件的过程中出现视觉疲劳的情况。软件的智能和记忆功能。用户登录界面最好有用户名和ID的记忆,焦点直接定位到密码输入框。单据录入界面最好有保存和载入默认值的功能。单据搜索界面可以保存用户自定义的各种搜索条件组合。用户调整过的GRID的列宽,窗口的位置可以自动记忆。系统可以根据用户的使用频度对相关功能进行自动的优先级排序。系统能够记忆不同用户的使用偏好,使用系统的固有模式和常用的自定义设置。其次,还有减少不必要的重复交互。减少不必要的各种操作,能够点一次鼠标或敲一次键盘完成的绝不作出两次或多次。提示信息要适度,太多不好,太少也不好。数据项完整性校验问题要注意光标焦点自动定位到错误处。完整业务功能不要让用户在多个窗口切换多次才能够完成。尽量减少这种切换。为了方便用户切换窗口,相关的表单最好都作为非模式的形式。相同的信息不要让用户在系统中多处或多次录入,保证入口的唯一性。系统要尽可能根据用户已经录入信息自动获取其它附属信息,而不需要用户重复的选择或录入。在导航和界面跳转方面,我们的表单新弹出对话框,对话框再弹出对话框的这种层次都控制在3层以内。所有的非模式活动窗口最好有类似桌面任务栏一样的停靠方式,方便切换窗口。系统可以支持用户自己定义常用功能和菜单。对于常用功能应该提供便捷的快捷键和工具栏按钮。对于系统中提供的各种业务和表单功能能够让用户便捷挑转到帮助信息上。对表单和界面联动和交互的时候要注意相关界面数据的自动刷新。