规范制定有很多方法。基于顺序的规范是指逐步构造出完备、一致和正确的黑盒和状态盒规范的过程。本节讨论的就是这种方法。
在基于序列的规范过程中,按严格顺序系统地举出所有可能的激励(历史激励)序列,如按长度0、1、2……排列。因为每个序列映射至其正确的响应,所以可通过应用归约规则辨识等价序列,当完备和一致地定义了系统以后枚举过程结束。
基于Mills(1975)、Pamas(1992)、Mao(1993)Drowell(1996)和 Poore(Prowell和Poore,1998)的工作,基于序列的规范产生了明显的问题,软件使用的各种情况的组合产生的用例个数是天文数字。通过序列枚举,开发人员考虑系统激励的所有排列和组合。每种序列代表一种使用场景。在逐步枚举过程中,要区别可能的场景和不可能的场景,计划中的使用和错误的使用,可规约的序列和不可规约的序列。这些不可规约的序列(称为典型序列)是软件行为的精确规范的基础,这种精确是指数学意义上的完备性、一致性和可追踪正确性。
序列书面枚举提供了完备性的直接验证。能按序列的从小到大的长度(1,2,3……)逐一验证激励的所有组合和排列是否已映射到一个响应。
序列顺序枚举保证了任何所给使用场景只出现一次。和完备性一样,一致性也是枚举的直接的推论。
基于序列的规范的每一元素都可追溯到最初的需求。如果一个序列的正确响应在需求中找不到,那么必须澄清所期望的行为并修改需求。
基于序列的规范工作流程以连续方式对掌握需求分析、黑盒规范、状态盒规范方面提供了自动支持的可能性。其步骤在下面的小节中作简要说明。 黑盒定义 加上标签的需求。将需求加上标签序号用于验证后续工作产品的每一要素的正确性。有条理的顺序枚举过程可暴露出需求的含糊不清或遗漏的地方。在基于序列的规范中得到清晰的需求是很自然的事。 定义系统边界。系统边界决定了组件是在系统的内部还是外部。处于系统外部的实体是激励来源和响应的目的地。激 励和响应的标识始于最基本层次。进一步考虑(可能包括初期枚举)后常用抽象这种方法来简化枚举进程。 抽象用于隐藏易于明白的细节。以反映问题的自然划分或将一个较大的元素集归约为较小的元素集。必须有一个好的定义将大集合中的元素映射到小集合中的元素。激励集(或响应集)可能由不同的粒度混合而成(有基本的,有抽象的)。不管是什么粒度层次,激励集(或响应集)必须是互斥的。
顺序枚举。将所有序列的排列组合按长度顺序列举。对每个序列进行检查时,完成如下评价工作:
1. 不可能的序列(如在系统启动之前的激励)标上"非法"。任何非法序列的扩展仍是非法的,所以标有"非法"的序列在列举时不再扩展。
2. 对应于需求,对每个序列的正确响应要记录归档。如果没有需求与之对应,要记下一个导出需求。导出需求代表假设或解释,所以必须和原来的需求一起进行确认。
3. 如果两个序列对未来激励的响应是一样的,则称它们是等价的。既然两个等价序列的扩展对应同样的行为,就没有必要都扩展,只需将较短的进行扩展。
当一个给定长度的所有序列或者非法或者和先前的序列等价时,就停止枚举。
完全的枚举表示数学上完备的、一致的和可验证正确的黑盒规范。因为每一个序列映射到一个响应,所以规范是完备的;因为每个序列只对应一个响应,所以规范是一致的。由领域专家去验证其正确性,每序列对应的行为追溯到需求正好是所需的行为,则验证了正确性。
典型序列分析。枚举中的合法的不与任何先前序列等价的序列,称为典型序列。典型序列代表了系统使用的独一无二的情况,对于给定抽象层次的黑盒子,对典型序列的分析将产生系统的状态空间。
在典型序列分析中,用变量来封装每一激励序列的条件。这些变量可视为系统的状态数据。对相关变量的典型序列进行检查可得到每个变量的范围。对每一典型序列,变量值的组合是惟一的。这使得在分析完成时典型序列都是不相交的。 状态盒定义 黑盒规范中每一序列可看作是个元组(当前的激励、以前的激励)。黑盒中位于每个序列上的以前的激励事实上是典型序列。基于这一点,制定系统的状态盒子规范只是一个装配的事。可将每个合法的黑盒映射(序列→响应)替换成状态盒映射(当前激励、状态→响应、状态更新)。状态盒可以自动从黑盒生成,如果借助认证工具生成,则无需再验证。
状态盒的最后形式是一系列映射表的集合,每个激励对应一个映射表。映射表的格式如下图所示。 状态盒规范是规范的最后产品。在从状态盒细化到明盒子的过程中将继续用到净室盒子结构规范和设计方法。在明盒中将进行完整的过程设计。 |
相关推荐
实现该接口的类不仅可以控制对象的序列化过程,还可以控制反序列化过程。 **1.12 枚举常量的序列化** 枚举常量的序列化过程相对简单。Java自动处理枚举类型的序列化,无需显式指定序列化策略。 **1.13 保护敏感...
Hessian序列化的过程可以分为以下几个步骤: 1. **数据类型编码**:Hessian首先对每个值的数据类型进行编码,比如整数、浮点数、字符串等,每种类型都有对应的标识字节。 2. **值编码**:对于基本类型,直接编码其...
本项目“基于Verilog的伪随机序列的发生及曼彻斯特编码”聚焦于两个核心概念:伪随机序列生成器和曼彻斯特编码。 首先,我们来探讨伪随机序列的发生器。在通信、加密、测试等领域,伪随机序列具有重要的应用。这些...
1. **JBoss**:这是一个开源的应用服务器,基于Java EE规范。反序列化漏洞可能存在于其处理RMI(远程方法调用)或EJB(企业JavaBean)通信的地方。攻击者可以通过构造特定的序列化数据来触发RCE。 2. **WebLogic**...
它采用了二进制格式,相比基于文本的序列化协议(如JSON或XML),二进制格式在数据体积和解析速度上都有显著优势。 2. 设计目标 Hessian 2.0的主要设计目标有以下几点: - 简洁性:协议应当简洁,便于解析和实现。 ...
综上所述,基于FPGA的LTE同步信号序列产生方案通过查表和优化算法,显著降低了硬件资源的需求,提升了生成效率,为LTE小区搜索过程提供了高效且可靠的解决方案。这种方法不仅适用于FPGA,还可能扩展到其他可编程硬件...
本项目“基于混沌序列的图像加解密仿真_源码”聚焦于利用混沌理论来设计高效且安全的图像加密算法。混沌理论是一种复杂系统的行为研究,其特征是高度敏感依赖初始条件和非线性动力学,这使得混沌序列具有良好的随机...
《Java语言规范 基于 Java SE 8》是一本深度解析Java编程语言的重要参考资料,主要针对Java 8这一版本进行详细阐述。Java作为一种广泛应用于企业级应用、云计算、移动开发等多个领域的高级编程语言,其规范是开发者...
它们简化了与XML格式的数据交互,并能方便地应用到PLCOpen或其他任何基于XML的规范或标准中。通过理解并熟练掌握这一技术,开发者可以更高效地管理应用程序中的数据,尤其是在需要跨平台或跨系统通信时。
其计算基于时间序列中的观测值之间的差分,通过相关系数的大小来判断时间序列中的数值是否与其历史值存在统计学上的相关性。通过计算时间序列中观测值与其滞后值的相关系数,可以帮助识别时间序列中的周期性特征或...
序列化是将对象的状态转换为可以存储或传输的数据格式的过程,而反序列化则是将这些数据恢复为原来的对象状态。在Web服务中,这是至关重要的,因为数据需要在网络中以XML格式传递。Axis1.4支持Java对象到XML的自动...
1. **Schema-based**: Avro的数据格式基于Schema,这是一种JSON格式的规范,定义了数据的结构。Schema使得在不同系统之间交换数据变得更加容易,因为它提供了数据的元信息,允许接收方理解接收到的数据。 2. **...
### 基于JSON的对象序列化算法 #### 摘要 随着Web应用程序系统的不断发展,XML作为数据交换格式被广泛采用,特别是在基于Ajax(异步JavaScript和XML)的技术框架下。然而,作为一种结构化的文档,XML在服务器端与...
【基于SOFL规范的语义分析】 SOFL(Structured Object-Oriented Formal Language)是一种结合了形式化方法和面向对象编程特性的语言,旨在克服传统形式化方法的局限性,如对程序员的高教育背景需求和严格的证明要求...
1. **通信管理**:AutoSAR规范中的通信管理服务提供了端到端的通信保障,确保数据在传输过程中的完整性和安全性。这包括错误检测与恢复机制、服务质量(QoS)管理以及对不同通信协议的支持。 2. **SOME/IP(Service ...
统一建模语言(Unified Modeling Language, UML)是一种用于规范化的软件系统建模标准,广泛应用于面向对象的软件开发过程中。它提供了一套图形化的符号系统来描述软件系统的架构和行为。UML不仅仅是一组图形符号,...
随着技术的发展,JSON格式也进行了更新,虽然在实际应用中"JSON 2.0"这一术语并不常见,通常我们谈论的是JSON标准的最新版本,它基于ECMAScript 2019规范。在这里,我们将深入探讨JSON的序列化过程,以及相关的编程...