论软件体系架构之质量属性
MoooJL
(石家庄铁道大学,河北省石家庄市,050000)
摘 要:
软件架构(及软件架构设计师)重点关注的是质量属性。本文将从如何设计编码实现六种质量属性战术,即可用性、可修改性、性能、安全性、可测试性、易用性,以及为什么这样设计,解决什么问题,实现的过程,难度是什么等方面具体解析阐述。
关键词:质量属性;架构;软件;开发
可用性
可用性战术主要讲的是捕捉错误,主要战术有错误检测、错误恢复、错误预防等。所以在实现可用性方面,首先需要实现错误检测,所以在代码中尽量写一些捕捉错误的代码,如常见的try{}、catch{}等方法。当出现异常错误时能够及时的捕获并给出相应的提示,避免程序在运行过程中出现404-notfound等烦人的提示页面等。对于错误预防方面,在设计代码时,应该多使用自己熟悉的编程方法,这样是为了提高系统的稳定性,减少错误故障发生的概率。从而达到错误预防的目的。
可修改性
可修改性通俗地讲就是代码在不影响整个系统的基础上,代码可以进行一些方面的修改,达到希望得到的效果。如何实现这个属性,需要考虑两点:可以修改什么:可以修改系统的那个方面 ,最常见的就是系统计算的功能、系统存在平台、系统运行的环境、系统所展示的质量属性等。什么时候由谁进行修改:最常见的就是修改源代码。开发人员根据相应的要求进行代码修改,对修改后的代码进行测试,生产新的系统版本。因此在代码设计时,将可能会修改的地方和其他部分独立,如果不能独立也要让相连接部分保持不变。把变化封装到一个模块内,如何划分模块,模块内需要的内容,以及模块大小的设计是一个难题,需要进行合理的代码设计。
性能
性能是指系统的响应能力----即对外部刺激(事件)做出反应时所需要的时间或在某段时间内所处理的事件个数。对于在这个属性方面,我认为在编写代码的过程中要尽量降低算法的时间复杂度和空间复杂度,并且要兼顾好时间复杂度和空间复杂度的关系,不能偏向任何一边,要保持一定的平衡性。根据自己的经验,尽量使用高效率的方法,不要在设计编写时贪图省事。例如系统数据库中没有的资源需要实时从网络资源上进行爬取这个功能,如果让用户等待时间过长,用户就会感觉系统反应时间太慢,留下不好的印象,所以需要在用户关注点多下功夫研究,把这些地方的性能一步一步做的更好。
安全性
安全性战术是为了保护系统安全方面,安全性是衡量系统在向合法用户正常提供服务的情况下,阻止非授权使用的能力。安全性战术主要包括抵抗攻击的战术、检测攻击的战术和从攻击从恢复的战术。对于这方面的技术,最简单的就是用户的信息保护,如注册登陆,用户注册的密码可以采用MD5加密,这是一种安全性非常高的加密算法,由于这种加密的不可逆性,在使用10位以上字母加数字组成的随机密码时,几乎没有破解的可能性。系统权限也要进行控制,不同用户设置不同的使用权限,例如普通用户只能查看热词解释,但是管理员发现词解释不准确时,可以对内容进行修改。
可测试性
可测试性战术的目标是允许在完成软件开发的一个增量后,轻松地对软件进行测试,在测试程序时,首先使用了单元模块测试方法,测试的时候是对每个方法的功能进行输入测试。这就要求在编写时要尽可能的让方法完成单一职责,不要赋予一个方法过多的内容,不然到最后自己都会分不清这个函数方法到底是为了解决什么问题写的。下一步进行的是集成测试,当系统整合完成时,要对系统各个功能进行测试,例如搜索功能,可视化界面的显示等等。当这方面出现问题时,可以选择设置断点的方式对问题点进行查找,查找起来比较麻烦。所以在设计这方面的代码时,要把每个功能分模块实现,当系统报出哪个模块的异常错误,直接找到模块进行测试就方便了。
易用性
易用性与用户完成期望任务的难易程度以及系统为用户提供的支持种类有关。对于这个方面,主要是为了尽可能满足用户的需求,让系统尽量达到用户所期望的样子,因此在呈现的界面风格方面,应设计网页平铺显示,界面简约,让用户可以明确的看到期望的功能。在呈现信息方面,应设计分页显示的表结构,让相应的功能集中显示,让用户清楚哪个功能是干什么的。在操作方面多使用按钮控件进行页面之间的跳转,这样方便又快捷。
总结
总的来说软件的好与坏是各个属性综合起来产生的效果,绝对不是单一属性的原因。我们在开发软件的过程中应该将这些因素充分运用到其中。