接前一篇文章:软考 系统架构设计师之回归及知识点回顾(2)
继续回顾一下之前已经介绍和讲解过的系统架构设计师中的知识点:
7. 净室软件工程
净室(Cleaning Room)软件工程是一种应用数学与统计学理论,以经济的方式生产高质量软件的工程技术 ,力图通过严格的工程化的软件过程达到开发中的零缺陷或接近零缺陷 。净室方法不是先制作一个产品再去消除缺陷,而是要求在规约和设计中消除错误,然后以"净"的方式制作,可以降低软件开发中的风险,以合理的成本开发出高质量的软件。
净室软件工程(Cleanroom Software Engineering,CSE)是一种在软件开发过程中强调在软件中建立正确性的需要的方法 。在净室软件工程背后的哲学是:通过在第1次正确地书写代码增量,并在测试前验证它们的正确性,来避免对成本很高的错误消除过程的依赖。它的过程模型是在代码增量积聚到系统的过程的同时,进行代码增量的统计质量验证。它甚至提倡开发者不需要进行单元测试,而是进行正确性验证和统计质量控制。
净室是一种以合理的成本开发高质量软件的基于理论、面向工作组的方法。
- 净室是基于理论的,因为坚实的理论基础是任何工程学科所不可缺少的。再好的管理也替代不了理论基础。
- 净室是面向工作组的,因为软件是由人开发出来的,并且理论必须简化到实际应用才能引导人的创造力和协作精神。
- 净室是针对经济实用软件的生产的,因为在现实生活中,业务和资源的限制必须在软件工程中予以满足。
- 净室是针对高质量软件的生产的,因为高质量改进管理,降低风险及成本,满足用户需求,提供竞争优势。
净室软件工程的理论基础 主要是函数理论 和抽样理论。
(1)函数理论
一个明确定义的函数应当具有以下特性:
- 完备性
对定义域中的每个元素,值域中至少有一个元素与之对应。对程序而言,每种可能的输入都必须定义,并有一个输出与之对应。
- 一致性
在值域中最多有一个元素与定义域中的同一元素对应。对程序而言,每个输入只能对应一个输出。
- 正确性
函数的正确性可以由上述性质判断。对程序而言,某项设计的正确性可以通过基于函数理论的推理来验证。
(2)抽样理论
不可能对软件的所有可能应用都进行测试。把软件的所有可能的使用情况看作总体,通过统计学手段对其抽样,并对样本进行测试,根据测试结果分析软件的性能和可靠性。
净室软件工程中应用的技术手段 主要有以下4种:
- 统计过程控制下的增量式开发(Incremental Development)
- 基于函数的规范与设计
- 正确性验证
- 统计测试(Statistically Based Testing)和软件认证
净室软件工程是软件开发方法的一种形式化方法 ,它可以生成质量非常高的软件。它使用盒子结构规约进行分析与设计建模,并且强调将正确性验证(而不是测试)作为发现和消除错误的主要机制。
净室软件工程在使用的过程中,也显示出了一些缺点:
- CSE太理论化,需要更多的数学知识。
- CSE开发小组不进行传统的模块测试,这是不现实的。
- CSE毕竟脱胎于传统软件工程,不可避免地带有传统软件工程的一些弊端。
8. 架构评估
系统架构评估是在对架构分析、评估的基础上,对架构策略的选取进行决策 。它利用数学或逻辑分析技术,针对系统的一致性 、正确性 、质量属性 、规划结果 等不同方面,提供描述性 、预测性 和指令性的分析结果。
系统架构评估的方法通常可以分为3类 :基于调查问卷或检查表的方式 、基于场景的方式 和基于度量的方式。
(1)基于调查问卷或检查表的方法
该方法的关键是要设计好问卷或检查表,充分利用系统相关人员的经验和知识,获得对架构的评估 。该方法的缺点是在很大程度上依赖于评估人员的主观判断。
(2)基于场景的评估方法
基于场景的方式由卡耐基梅隆大学软件工程研究所首先提出并应用在架构权衡分析法(Architecture Tradeoff Analysis Method,ATAM) 和软件架构分析方法(Software Architecture Analysis Method,SAAM) 中。它是通过分析软件架构对场景 (也就是对系统的使用或修改活动)的支持程度 ,从而判断该架构对这一场景所代表的的质量需求的满足程度。
(3)基于度量的评估方法
它是建立在软件架构度量的基础上 的,涉及3个基本活动 ,首先需要建立质量属性和度量之间的映射原则 ,然后从软件架构文档中获取质量度量信息 ,最后根据映射原则分析推导出系统的质量属性。
系统架构评估中的重要概念包括:
(1)敏感点(Sensitivity Point)和权衡点(Tradeoff Point)
敏感点和权衡点是关键的架构决策 。敏感点是一个或多个构件(和/或构件之间的关系)的特性 。研究敏感点可以使设计人员或分析员明确在搞清楚如何实现质量目标时应注意什么。权衡点是影响多个质量属性的特性,是多个质量属性的敏感点。例如,改变加密级别可能会对安全性和性能产生非常重要的影响。提高加密级别可以提高安全性,但可能要耗费更多的处理时间,影响系统性能。如果某个机密消息的处理有严格的时间延迟要求,则加密级别可能就会成为一个权衡点。
(2)风险承担者(Stakeholders)或者称为利益相关人
系统的架构涉及很多人的利益,这些人都对架构施加各种影响,以保证自己的目标能够实现。
(3)场景(scenarios)
在进行架构评估时,一般首先要精确地得出具体的质量目标,并以之作为判定该架构优劣的标准。在架构评估中,一般采用刺激(Stimulus) 、环境(Environment) 和响应(Response)三方面来进行描述。
余下的知识点回顾请看下回:
9. 数字孪生体
10. 边缘计算
11. 云计算
12. 大数据