知识卡片

外部质量指标:可靠性、安全性、易用性

普通读书笔记卡

内容

可靠性指系统能够保持正常运行的能力,即在意外或错误使用下维持功能特性的基本能力,通常用平均失效时间(MTTF)和平均失效间隔时间(MTBF)衡量,分两个方面:容错——在错误发生时确保系统正确行为并进行内部修复(如分布式系统失去远程连接后自动恢复、重新执行进程间操作直到错误再次发生);健壮性——保护应用不受错误使用和错误输入影响、在遇到意外错误时确保系统处于已定义好的状态。书中特别区分容错与健壮性的界限:容错追求”修复后继续运行”,健壮性则允许系统”按照某种已经定义好的方式终止执行”——健壮性不承诺一定能继续运行,只承诺不会失控地崩溃。安全性衡量系统在向合法用户正常提供服务的同时,阻止未授权使用、防止拒绝服务攻击、阻止信息泄露丢失的能力,主要影响因素是机密性、完整性、可用性,主要手段是授权、加密、审计和日志——书中提到提高安全性同样能提高可靠性,两者不是独立的目标。安全性关注的典型问题包括:身份欺骗(用身份验证授权应对)、恶意输入(SQL注入/跨站脚本,用约束/拒绝/审查原则校验输入、编码输出)、数据篡改(区分匿名/识别/授权用户,用插桩日志、安全传输通道、加密签名)、拒绝行为(记录关键操作的用户交互)、信息泄露(阻止敏感信息暴露)、DoS攻击(缩短会话超时、探测并减少攻击)。易用性包含可学习性(学会使用界面要花多久)、效率(响应速度是否合适)、可记忆性(能否快速记住操作方式)、错误避免(能否预见并防止用户常犯错误)、错误处理(出错后能否帮助恢复)、满意度(能否简化用户工作)六方面含义,关注问题包括:完成任务需要过多交互(应优化屏幕流程和交互模式)、多步骤流程步骤不正确(应结合工作流简化)、数据元素和控件分类不清(应用公认UI设计模式)、错误反馈薄弱(应最大化用户交互性反馈,如AJAX异步技术)。

参考来源

- 位置:《软件架构理论与实践》第11章《软件架构质量》"11.3.2 外部质量指标"节之"3.可靠性""4.安全性""5.易用性"(源文件:_epub-src/OEBPS/text00089.html) - 结论依据:原文说明"可靠性可以分为两个方面:①容错……②健壮性……与容错相比,健壮性是指软件可以按照某种已经定义好的方式终止执行",并列出安全性和易用性各自的定义要素及关注问题,直接支撑本卡片结论。 - 原始内容:可靠性可以分为两个方面:①容错。其目的是在错误发生时确保系统正确的行为,并进行内部修复……②健壮性。这里说的是保护应用程序不受错误使用和错误输入的影响,在遇到意外错误事件时确保应用系统处于已经定义好的状态。