软件质量属性包括六个方面:可用性、易用性、性能、可修改性、安全性、可测试性。
可用性:
定义介绍:可用性是在某个考察时间,系统能够正常运行的概率或时间占有率期望值。考察时间为指定瞬间,则称瞬时可用性;考察时间为指定时段,则称时段可用性;考察时间为连续使用期间的任一时刻,则称固有可用性。它是衡量设备在投入使用后实际使用的效能,是设备或系统的可靠性、可维护性和维护支持性的综合特性。
代码层次战术:
1、错误检测:对代码程序运行时产生的错误进行检测,对检测出的错误进行及时的修复,以便程序的继续运行。
2、需求考察:对软件的需求有着详细的调查,对于诸多隐藏的需求做出自己的实用性开发,使程序在各种情况下,都能可以被使用。
易用性:
定义介绍:易用性是可用性的一个重要方面,指的是产品对用户来说意味着易于学习和使用、减轻记忆负担、使用的满意程度等。产品易用性好,很可能是因为产品功能少,界面简单;也可能是用户认知成本低等因素。总之,同样的产品,功能,界面和环境都相同,对于不同的用户而言,易用性也是不同的,因为用户的认知能力,知识背景,使用经验等都不同。
代码层次战术:
1、用户主动:用户主动进行对系统的请求,如调用help命令和撤销操作。
2、系统主动:在用户操作结束后,主动检测错误,下面为eclipse自动检测分号,发现分号不存在,向用户报错。
3、混合主动:系统实时根据用户的动作给出一定的帮助,如编程时的关键词帮助。
性能:
定义介绍:产品性能是指产品具有适合用户要求的物理、化学或技术特性,如强度、化学成份、纯度、功率、转速等。而通常所说的产品性能,实际上是指产品的功能和质量两个方面。功能是构成竞争力的首要要素。用户购买某个产品,首先是购买它的功能,也就是实现其所需要的某种行为的能力。质量是指产品能实现其功能的程度和在使用期内功能的保持性,质量可以定义为“实现功能的程度和持久性的度量”,使它在设计中便于参数化和赋值。
代码层次战术:
1、资源需求:减少处理一个事件流所需要的资源。提高计算效率,如改进关键算法。减少所处理事件的数量。管理事件率,减少需求
2、限制执行时间:对于我们项目中的一些计算、以及查询数据库等等操作,如果对服务器负担太大,需限制程序运行的时间,以免占用资源时间过长争用资源。
可修改性:
定义介绍:软件可控制变化的性质,即保持某些部分或方面不变,只改变其他部分或方面,从而得到预期结果的软件性质。
代码层次战术:
1、功能封装:对于功能的实现要封装于独立的类中。大型软件就是划分为多个模块,例如淘宝的搜索模块、商品信息模块等等。这样在修改的时候只需修改对应的模块即可,而不会对其他的模块产生影响。增加新模块也是同样不会对其他模块产生影响。
2、减少类之间的依赖:例如:采用组合来替代继承的桥接模式。修改其中的任何一个维度,在其对应的类中修改即可而不需要做整体的修改。例如修改颜色,只需要在颜色类中增加相应的颜色,并在组合函数中调用即可。可用于软件的界面颜色的修改等。
3、只提供必要的接口:这个简单的理解就是代码中尽量使用private和protected去代替public。这样就具有了减少了信息暴露,在修改时,避免了同名函数之间的影响。
4、抽取公共代码:对于使用量大的一段代码就可以直接单独封装。例如设计网页中的CSS文件,对于网页的样式修改就可以直接在CSS文件中修改全部网页。
安全性:
定义介绍:为防止把计算机内的机密文件泄露给无关的用户,必须采取某种安全保密措施,这些措施的有效程序如何就称为计算机系统的安全性或保密性。
代码层次描述:
1、数据加密
数据的加密处理是维护数据机密性的有效手段。现阶段已经有很多种加密算法,我们所熟知的就有MD5加密算法,SHA-1加密算法。这两种算法原理上讲属于不可逆算法,要想破解只能暴力破解。
2、检测攻击
可以在Web服务器与Internet或者上游ISP连接之间的防火墙上建立一个滤波器,以寻找spoofed (哄骗)信息包,也就是那些不是从你自己的网络上生成的信息包。这就是所谓的出口过滤。如果在你的网络上正在生成spoofed信息包,那么这很可能是一个DDoS程序生成的。
3、数据恢复
当应用软件因意外情况关闭时,为防止用户使用时填入的数据丢失,可以设置恢复手段。该应用的典型案例就是word的自动保存功能。其实现思路就是设计模式中的备忘录模式。
可测试性:
定义介绍:可测试性是指软件发现故障并隔离、定位其故障的能力特性,以及在一定的时间和成本前提下,进行测试设计、测试执行的能力。
代码层次战术:
1、内部监视器:组件可以维持状态、性能负载、容量、安全性或其他可通过接口访问的信息。当监视状态被激活时可以记录事件。
2、特化访问路线/接口:具有特化的测试接口允许通过测试工具并独立于其正常操作,来捕获或指定组件变量的值。
3、将接口与实现分离:将接口与实现分离允许实现的代替。占位实现允许在缺少被占位组件时,对系统的剩余部分进行测试,有了标准的接口,进行有效的隔离,能够极大程度的减少测试员的工作量,模块化测试,单元测试极大地减少了测试过程中用例的原则。