一.可用性
可用性在ISO9241/11中的定义是:一个产品可以被特定的用户在特定的境况中,有效、高效并且满意得达成特定目标的程度。
维持可用性的方法包括:
错误检测——用来检测故障的某种类型的健康监视,包括我们在系统运行中可能出现一些未知错误,造成的数据库丢失等问题;
(1)未能链接服务器:通过URL测试服务器是否可连接(服务是否开启,网络问题),提示错误信息,人工检测服务开启状态
(2)未能链接数据库服务:利用java的异常处理机制检测Driver正常连接,并提示错误信息,建立自定义的异常类, 根据错误信息人工检测服务开启状况
自动恢复——检测到故障时某种类型的恢复;
错误预防——阻止错误演变为故障
在信息热点系统中,自己用到最多的就是常见的try{}、catch{}方法,包括连接数据库时:
try { Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection(db_url, db_user, db_password); } catch (Exception e) { e.printStackTrace(); }
当出现异常错误时能够及时的捕获并给出相应的提示,对于错误预防方面在设计代码时,多使用自己熟悉的编程方法,这样是为了提高系统的稳定性,减少错误故障发生的概率。从而达到错误预防的目的。
二.可修改性
可修改性定义为就是致力于解决是否可以更加快速、安全的修改系统模块的方法,在设计模式上也最大程度的对应了单一职责原则。当我们设计代码时,就要做到对系统所有模块的代码分析,使类与类之间的耦合度降低,避免修改一个模块而波及到其他的模块造成的不便。
战术包括:
实现这个属性,最为重要的就是系统的独立性 ,常见的就是系统计算的功能、系统存在平台、系统运行的环境、系统所展示的质量属性等。 在信息热词系统中,要实现部分代码的修改不会影响到系统的整体。比如登录模块要设计登陆的泛化模块,不同身份登陆设计相同。
同时,用户是不可以修改需求表单号和基本信息的这样的处理可以限制用户的修改选择,也就降低了修改所造成的影响
三.性能分析
性能是指系统的响应能力----即对外部刺激(事件)做出反应时所需要的时间或在某段时间内所处理的事件个数,要实现高的性能要在编写代码的过程中要尽量降低算法的时间复杂度和空间复杂度,并且要兼顾好时间复杂度和空间复杂度的关系
在信息热词系统,进行线性关系图展示时,就会出现卡顿、响应很慢的情况,在较大的数据下,效率就会更加的低, 很大的原因在于数据的处理速度慢,如果使用分布式系统就会好很多:
四.安全性分析。
安全性战术是为了保护系统安全方面,安全性是衡量系统在向合法用户正常提供服务的情况下,阻止非授权使用的能力。安全性战术主要包括抵抗攻击的战术、检测攻击的战术和从攻击从恢复的战术。
在信息热词系统中,最为常见就是针对用户的MD5加密,这是一种安全性非常高的加密算法,由于这种加密的不可逆性,在使用10位以上字母加数字组成的随机密码时,几乎没有破解的可能性。系统权限也要进行控制,不同用户设置不同的使用权限。这样就很大程度上限制了用户的权限和安全。关于MD5的例子:
public class MD5Test { //main测试类 public static void main(String[] args) { String result = getMD5("aaa"); System.err.println(result); } /** * 生成md5 * @param message * @return */ public static String getMD5(String message) { String md5str = ""; try { //1 创建一个提供信息摘要算法的对象,初始化为md5算法对象 MessageDigest md = MessageDigest.getInstance("MD5"); //2 将消息变成byte数组 byte[] input = message.getBytes(); //3 计算后获得字节数组,这就是那128位了 byte[] buff = md.digest(input); //4 把数组每一字节(一个字节占八位)换成16进制连成md5字符串 md5str = bytesToHex(buff); } catch (Exception e) { e.printStackTrace(); } return md5str; } /** * 二进制转十六进制 * @param bytes * @return */ public static String bytesToHex(byte[] bytes) { StringBuffer md5str = new StringBuffer(); //把数组每一字节换成16进制连成md5字符串 int digital; for (int i = 0; i < bytes.length; i++) { digital = bytes[i]; if(digital < 0) { digital += 256; } if(digital < 16){ md5str.append("0"); } md5str.append(Integer.toHexString(digital)); } return md5str.toString().toUpperCase(); } }
我们还可以采取检查点/回滚来提高系统安全性,检查点就是使状态一致的同步点,它或者是定期进行,或者是对具体事件做出响应。当在两检查点之间发生故障时,则以这个一致状态的检查点和之后发生的事务日志来恢复系统。
五.可测试性
可测试性战术的目标是允许在完成软件开发的一个增量后,轻松的对软件进行测试。
在信息热词系统就要求了要对单元模块进行分开编写,这样就可以很大程度上增加系统的可测试性。要实现好的可测试行,代码方面必须使软件在接受到这些参数后通过一系列运算返回固定的结果。系统应该清楚的表明自己需要什么参数,以及将会生成什么返回值,这样测试者就可以知道整个系统内部的运算流程。也可使用自定义的异常类检测 用户输入请求,数据库放回响应,如果有异常,控制台提示相关异常信息,交互界面提示异常信息后续操作
六.易用性
易用性与用户完成期望任务的难易程度以及系统为用户提供的支持种类有关。这就要求系统尽量达到用户所期望的样子,因此在呈现的界面风格方面,应设计网页平铺显示,界面简约,让用户可以明确的看到期望的功能。
系统主要要做到以下几点:
(1)界面分格统一,颜色搭配舒适,界面大方简洁
(2)操作简单,错误时有相关的提示信息(错误原因,正确操作)
(3)功能描述清晰,运用控件进行功能之间的交互