提高系统的性能无疑可以优化用户的使用体验,但是拥有一个人可以接受的正常性能则是一个系统的必然要求,不同的系统对性能的要求都不能脱离开其业务流程来谈,在提高系统性能上付出的成本也应该与其主要的业务流程和用户的体量大小相对应。
安全性战术目标:系统检测、抵抗或从攻击中恢复。
维持系统安全性的战术主要有三种:抵抗攻击、检测攻击以及从攻击中恢复。抵抗攻击可以通过身份验证、用户授权、数据加密、检验数据完整性等方式来实现。检测攻击可以通过入侵检测等方式来实现。从攻击中恢复可以通过设置冗余来恢复并设置审计追踪等方式来实现。
提高系统的安全性是为了增加系统抵抗恶意操作、恶意入侵等非法操作的能力。其重要性与系统内部的信息重要程度是成正比的,越重要的信息被坏人觊觎的可能性越大,就需要更够的堡垒来保护。
实例:提到安全性就不得不说一说区块链,区块链一向以数据透明,可溯源著称,想要篡改其中的信息就需要付出远远超出其价值的成本,通过公开广播到每一个节点的方式来实现信息的不可篡改。另外再举一个例子,如今各个社交软件的动态安全性都较高,通过对用户身份的绑定来多角度验证使用者是否是本人,密码、手机令牌、邮箱各种验证都是在提高系统的安全性。
网络环境是复杂的,你无法判断正在使用你的系统的人是一个正常用户还是一个想要窃取机密的坏蛋,拥有一个安全的防护措施是非常必要的。
可测试性战术目标:允许在完成软件开发的一个增量后,轻松地对软件进行测试。
维持系统可测试性的战术主要有两种:管理输入/输出以及内部监视。管理输入/输出可以通过记录/回放、将接口与实现分离、特化访问路线/接口等方式来实现。内部监视可以通过内置监视器等方式来实现。
检测的目的就是为了检测出错误,更早的发现错误可以减少更改错误的成本。提高系统的可测试性可以简化系统的测试流程,使得错误更容易被发现。
实例:在开发过程中经常需要测试自己代码的正确性,判断一个方法的输出是否符合要求,但是又不能每一次都为方法的测试写一个主函数来运行,所以在一个方法中应当完成一个简单单一的功能,一个模块是一个个体,可以被单独的进行测试,单个模块测试完毕之后再进行组合进行集成测试,这是一个从小变大的过程。
系统的错误发现的越晚想要更改其花费的成本就越大,尽早的发现系统中的bug可以降低维护成本,而提高系统的可测试性则是让系统可以更加全面更加容易的被测试,让错误更容易被发现。
易用性战术目标:与用户完成期望任务的难以程度以及系统为用户提供的支持种类有关。
维持系统易用性的战术主要有三种:分离用户接口、支持用户主动、维持用户一个模型。支持用户主动可以通过取消、撤销、聚合等方式来实现。维持用户一个模型可以通过建立用户模型、系统模型、任务模型来实现。
主要是为用户提供适当的反馈和协助,通过为用户提供关于系统正在做什么的反馈,以及为用户提供发出基于易用性命令的能力来增强易用性。
实例:易用性在任何一个合格的系统中都有体现,如输入法会根据你日常的键入来学习的输入习惯,从而让你更经常打的字出现在前面,再比如编译器中根据已有输入进行的代码补全,大大提高了编码的效率和正确性。
易用性提高的不仅仅是用户的使用体验,更是一种人性的理解,更容易上手的软件往往更容易得到用户的青睐。
总结:这六大系统质量属性是一个优秀的系统所必须要考虑的,但是不同的系统面向的业务流程和用户需求也不同,所以在六大战术上的侧重以及实现方式也会略有差异,需要根据实际情况灵活侧重。 个人见解:一个系统就像是一个活生生的人,他可能从事不一样的工作。如果他需要从事体育行业,那么他需要有一个强健的体魄;如果他需要从事教育行业,那么他需要有丰富的知识;如果他需要从事销售行业,那么他需要拥有八面玲珑的沟通能力。从事什么样的工作需要有相应的专长,一个系统想要优秀也需要像看病一样,对症下药。如果有什么其他的见解,或者是认为我哪里说的不太对的地方可以和我一起交流,期待!