下面是六个质量属性:
可用性(Availability),可用性是指系统正常工作的时间所占的比例。可用性会遇到系统错误,恶意攻击,高负载等问题的影响。主要关注软件系统的故障和它所带来的后果。
-----------------遇到节日,淘宝交易人数过多。服务器负载比较大。网站的响应时间过迟。
可修改性(Modifiability),指系统或软件的能够快速地以较高的性价比对系统进行变更的能力。比如说:对于一个网站,我们要修改它某一板块的UI界面,当我们对界面进行修改时是否会引起对另一个UI模块的影响,是否会引起后台控制,业务逻辑代码的变更,是否会引起整个网站的崩溃,这体现了一个网站的整个架构的是否具备可修改性。
可修改性主要包含两方面,第一是修改什么(什么可以修改),第二个是何时以及由谁进行修改。
可修改性也取决于用户需求和系统内在需求。举个例子。例如:一个网站的图标有人觉得不好看,有人觉得不错。使用的人们已经习惯这个图标的表示或者惯性的认为这个图标代表什么。那么是否对这个图 标进行修改?我以为没有必要修改,如果你修改了反而可能会引起使用者的错误判断,比如:这个网站是停止运维了吗?好,那我去用其他的系统吧。类似错误的判断会影响到系统的收益,所以不进行修改 就挺好的。
-----------------淘宝店铺商家广告的修改,修改主页面的广告图片,或者图片的链接。淘宝运用的数据库修改。(成交订单量的变化)MYSQL-阿里云
性能:与时间有关。事件发生时,系统必须对其作出响应。时间到达响应有很多特性,但性能基本上于事件发生时,将要消耗系统多长时间做出响应有关系。
一般我们会用等待时间、处理期限、系统吞吐量、响应抖动、未处理事件、丢失数据等指标了解系统性能。
等待时间:刺激达到和系统对其做出响应之间的时间。
处理期限:最长等待时间。
系统吞吐量:系统单位时间处理事务的次数。
响应抖动:等待时间的变化。
缺失率(未处理事件):由于系统太忙因而无法做出响应所导致的未处理事件的数量。
数据丢失:因为系统太忙所丢失的数据。
关于系统性能,对于一些小公司,资金不足的情况下,如何在硬件设备比较差的条件下提高系统性能?
① 提高系统健壮性,考虑数据库服务器和应用服务器的冗余处理。
② 通过使用读写分离技术减轻访问数据的压力。
③ 使用缓存技术,可以使用Redis缓存服务器提高系统性能。尽量使用缓存,包括用户缓存,信息缓存等,多花点内存来做缓存可以大量减少与数据库的交互,提高性能。
④ 对于数据库的设计不要将所有数据放在一个表中,而是通过分库、分表、分区存储提高可扩展性和访问性能。
⑤ 优化数据库结构,多做索引,提高查询效率。
------------------买家搜索所要购买的商品,服务器响应世界很短,马上展示搜索结果。
安全性(Security),安全性是衡量系统在向合法用户提供服务的同时,阻止非法授权使用的能力。
可能面对攻击的方式:
1、未经授权试图访问数据或服务。
2、未经授权试图修改数据。
3、试图使用系统拒绝向合法用户提供的服务。
安全性的需求:
1、对有保密性要求的数据实施安全控制;
2、提供系统运行日志监控信息,供管理员了解系统运行状态;
-------------------场景:有黑客对淘宝网进行sql注入,试图非法登陆网站后台,获取用户信息
刺激源:黑客(非授权用户)
刺激:试图采用非法手段来入侵淘宝后台以获取信息
制品:淘宝中的数据
环境:在线环境
响应:对访问用户进行验证,阻拦不正当的用户访问数据
响应度量:查到非法入侵时在1秒以内做出反应,进行阻拦处理,保护数据安全性
拦截流程示意图:
可测试性(Testability),通过测试揭示软件缺陷的容易程度。
测试目的包括以下方面:
1、 在给定的产品中尽可能多地发现错误(或bug)。
2、 演示一个给定的软件产品与它的需求规格匹配。
3、使用最小的成本和努力来验证软件的质量。
4、生成高质量的测试用例,执行有效的测试,并发布正确和有用的问题报告。
测试很重要,因为软件错误可能很昂贵甚至很危险,一个bug越长越不被发现,它就可能带来更大的隐患。此外,如果测试团队错过了准确详尽地捕捉或识别风险和软件问题,会导致一些灾难发生,那么就 需要付出昂贵的代价来检测bug,所以软件漏洞或是Bug可能会导致货币和人员的损失,历史上太多这样的例子,下面我们就来看看这些经典的事例。
2015年4月,伦敦彭博终端由于软件漏洞宕机,导致金融市场上超过30万交易商受到影响。迫使政府推迟30亿英镑的债务出售。
日产尼桑汽车由于安全气囊感应探测器的软件故障,召回超过100万辆汽车。据报道,由于此软件故障导致两起事故。
星巴克咖啡由于POS系统的软件故障无法处理交易,因此被迫关闭了美国和加拿大约60%的商店。
亚马逊的一些第三方零售商看到他们的产品由于软件故障价格全部被降至1英磅,由此导致惨重损失。
两类用于测试的战术:1、提供输入,捕获输出。2、内部监视。
-------------------开发人员测试交易功能是否保密,正常交易或者取消交易提示信息。
易用性(Usability),易用性关注的是对用户来说完成某个期望任务的容易程度和系统所提供的用户支持的种类。
------------------用户淘淘宝界面风格的设置,换肤功能。而不影响其他的操作。
在编程调试时候编程软件给的错误提示以及帮助信息。
比如一个软件系统简单明了目的明确的前端、也能给用户带来很好的体验。
word纠正错别字等等。
java树形结构菜单,供用户多级选择给用户带来便利