[软件工程]九.可依赖系统(Dependable Systems)

9.1什么是系统的可靠性(reliability)

系统的可靠性反映了用户对系统的信任程度。它反映了用户对其能够按照预期运行且正常使用中不会失效的信心程度。

9.2什么是可依赖性(dependablity)的目的

其目的是覆盖系统的可用性,可靠性,安全性和信息安全性。

9.3系统的可依赖性通常会比它们本身的具体功能更加重要

  1. 系统失效会影响到很多人(有次百度网盘失效,导致百度网盘大量数据的泄露,很多人从此不再把重要和私密文件存在百度网盘中了)
  2. 用户经常拒绝不可靠,不安全或信息安全有问题的系统
  3. 系统失效的代价可能是巨大的
  4. 可依赖性差的系统可能导致信息丢失和泄露

9.4设计一个可依赖系统我们要考虑什么

  1. 硬件失效:系统硬件失效有可能是源自设计上的失误,也可能是源自构件加工制造中的问题,或者是硬件构件已达到了它们的使用年限。
  2. 软件失效:系统软件失效可能是由于规格说明,设计和实现中的错误。
  3. 操作事务:系统的操作人员未按照预期正确地使用系统。

9.5可依赖性属性(Dependablity Property)

1)计算机系统地可依赖性是衡量其可信赖度(trustworthiness)的性能指标:

2)可依赖性包含的五个维度

  1. 可用性(availability):系统在任何时间都能运行并能够提供有用的服务
  2. 可靠性(reliability):系统的可靠性是系统在给定的时段内能够正确提供用户希望的服务的可能性
  3. 安全性(safety):系统的安全性是判断系统将会对人和系统的环境造成伤害的可能性(不会对人/物造成伤害)
  4. 信息安全性(security):系统的信息安全性是判断系统能否抵御意外或者蓄意的入侵的可能性(鲁棒性)
  5. 韧性(resilience):系统的韧性是指当出现一些干扰性事件的时候(比如,设备故障或者恶意攻击)系统保持其关键服务继续正常运行的可能性。(遭到破坏或攻击后的恢复能力)

3)还有三个属性与可依赖性有关

  1. 可维修性(Repairability)
  2. 可维护性(Maintainablity)
  3. 容错(Error tolerance)

4)成本和可依赖性的关系

  1. 如果可依赖性低,通过好的软工方法可以大大提高软件质量,但在好的措施的基础上,改进的效益低。
  2. 如果软件的可依赖性变得更高,这急剧增加了高可用性系统的成本

9.6社会技术系统(Sociotechnical systems)

1)什么是社会技术系统

将技术系统与社会系统相结合的概念。这个概念强调在设计和实施技术解决方案时,必须同时考虑技术因素和人类因素,以及它们之间的相互作用。社会技术系统理论认为,技术系统和人类系统是相互依赖的,它们共同构成了一个整体,影响着组织的效率、生产力和员工的满意度。

2)社会技术系统在软件工程中的应用

在软件工程实践中,社会技术系统理论指导开发者和组织在设计和实施软件系统时,不仅要关注技术实现,还要考虑如何通过技术来支持和改进工作流程、提高员工的工作效率和满意度、以及如何适应组织的业务目标和文化。

3)一个简单的例子

例如,在开发一个企业资源规划(ERP)系统时,不仅要考虑软件的功能性、性能和安全性,还要考虑如何通过系统来优化业务流程、提高决策效率、以及如何培训员工使用新系统。

9.7冗余和多样性(Redundancy and Diversity)

1)什么是冗余(Redundancy)

  1. 在软件工程和计算机科学中指的是系统中存在多余或重复的组件、数据或功能,这些组件、数据或功能在正常情况下可能不是必需的,但在系统出现故障或错误时可以提供额外的保护或恢复能力。冗余可以分为硬件冗余、软件冗余和数据冗余。
  2. 冗余主要是要保留多个版本

2)什么是多样性(Diversity)

  1. 多样性(Diversity)通常指的是尽量给保留的版本提供多样的形式(为软件的不同版本提供多种不同的配置、功能集、环境或部署选项。这种多样性有助于满足不同用户群体的需求,提高软件的适应性和灵活性。下面是一些具体例子来解释这个概念:)
  2. 给保留的版本提供不同的形式,提高不同的功能:比如高考的全国A卷,B卷还会有防止意外情况的备用卷,这就是多样性,给保留下的版本提供更多的形式。

3)什么时候使用冗余

在可用性(任何时间都可以提供服务)要求高的系统中,冗余的服务常常被使用。

4)什么时候使用多样性

在使用版本发布的系统中,对于新版本,提供多的形式

9.8QA:Quality Assurance(质量保证)

1)QA保证的是什么

QA不管你的结果是否正确,只是对过程进行规范,通过了QA才可以送去测试。

2)QA是完成实现阶段的标志

3)一个QA的例子

比如:A写了一个排序,QA不管是可以正确排序,只是对过程中的行为进行规范,只有通过了QA才可以送去测试

9.9QC:Quality Control

1)什么是QC

质量控制(QC)是软件开发过程中的一系列活动,旨在通过测试和检查来识别和修正软件中的缺陷。QC关注的是软件产品的质量,包括单元测试、集成测试、系统测试、验收测试等。QC的目标是确保软件产品满足用户需求和质量标准。

9.10RTM(RTraceability Matrix)需求跟踪矩阵

9.11什么标志着需求分析的结束

通过需求评审。

相关推荐
梓沂5 分钟前
pom.xml中dependencyManagement的作用
xml·java·前端
太空漫步1112 分钟前
逆序对个数
java·算法·排序算法
养佳工具人21 分钟前
Java各种排序
java·算法·排序算法
Fly_hao.belief33 分钟前
泛型的讲解(泛型类、泛型方法、泛型接口)
java
我命由我1234538 分钟前
15.Java 网络编程(网络相关概念、InetAddress、NetworkInterface、TCP 网络通信、UDP 网络通信、超时中断)
java·开发语言·网络·后端·tcp/ip·udp·java-ee
sunshine__sun40 分钟前
自动化测试报错:Exception managing chrome: error decoding response body
java·前端·chrome
蓝天星空1 小时前
spring boot 3集成swagger
java·spring boot
漫漫不慢.1 小时前
//需求:定义一个数组,存入1~5.要求打乱数组中所有数据的顺序
java
不修×蝙蝠1 小时前
搭建Tomcat(一)---Socket&ServerSocket
java·服务器·笔记·tomcat·socket·serversocket
小参宿1 小时前
【Stream流】
java·开发语言