一、性能⭐️
定义:性能是指系统的响应能力,即结果多长时间才能对某个事件做出响应,或者在某段时间内系统所能处理的事件的个数。
提高性能的方案:
1. 资源需求:提高计算效率(减少计算开销、管理事件率、控制采样频率)
2. 资源管理:引入并发(维持多个副本、增加可用资源)
3. 资源仲裁:资源调度策略(FIFO、固定哟先机、动态优先级、静态调用)
二、可靠性
定义:软件系统在应用或系统错误面前,在意外或错误使用的情况下维持软件系统的功能特性的基本能力。可靠性包括:容错、健壮性两方面。
容错:目的是在错误发生时确保系统正常的行为。
健壮性:保护应用程序不受错误使用和错误输入的影响,在发生意外事件是确保应用系统处于预先定义好的状态。(软件按照定义好的方式终止执行)
平均失效等待事件(MTTF)
平均失效间隔时间(MTBF)=MTTF + MTTR
平均故障修复时间(MTTR)
系统可用性:MTTF/(MTTR+MTTF)
三、可用性⭐️
定义:系统能够正常运行的时间比例。用两次故障时间的时间长度或在出现故障时系统能够恢复正常的速度标识。
可用性方案:
1. 错误检测:命令/响应、ping/echo、心跳、异常
2. 错误恢复:表决、主动冗余、内动冗余、备件
3. 错误预防:进程监视器、事物、错误服务从服务器删除
四、安全性⭐️
定义:系统在向合法用户提供服务的同时能够阻止分授权用户使用的企图或拒绝服务的能力。
安全性分为:
1. 机密性:保证信息不泄漏给未授权的用户
2. 完整性:改造信息的完整和准确,防止信息被非法修改
3. 不可否认性:信息交换的双方不能否认其在交换过程中发送消息或接受消息的行为
4. 可控性:保证对消息的传播以及内容具有控制的能力,防止为非法者所用。
安全性方案:
1. 抵抗攻击:身份验证、用户授权、数据加密、数据完整性、限制暴露、限制访问
2. 检测攻击:入侵检测
3. 从攻击中恢复:审计(审计追踪)、恢复(冗余)
五、可修改性⭐️
定义:能够快速地以较高的性价比对系统进行变更的能力。
可修改性分为:
1. 可维护性:体现在问题的修复上
2. 可扩展性:软性系统扩展新的特性的难易程度
3. 结构重构:重新组织软件系统的构建及构建间的关系的难易程度
4. 可移植性:能否在不同环境下正常工作
可修改性方案:
1. 局部化修改:维持语义移植性、泛化、抽象等
2. 防止连锁反应:封装、隐藏信息、仲裁者、限制通信路径、维持现有接口
3. 推迟绑定时间:运行时注册、配置文件、多态等
六、功能性
定义:系统完成所期望功能的能力。
七、可变性
定义:架构经扩充或变更而成为新架构的能力
八、互操作性
定义:作为系统组成部分的软件不是独立存在的,通常与其他系统或自身环境相互作用。
九、易用性
定义:完成某个期望功能的难易程度和系统所提供的用户支持的种类(语言、界面等)
十、可测试性
定义:通过测试揭示软件缺陷的难易程度