净室过程中实践的增量式开发技术是基于引用透明性原理的。引用透明性意味着一个表达式所关心的惟一的事情是它的值,能用其值相等的子表达式代替。引用透明性暗示,一个实体的有关低层细节被抽象了,而不是忽略了高层描述的特定系统。因此,当置身于较大的上下文中时,高层描述包含的每一件事必须明白表达实体。引用透明性的概念已在广泛的领域得到应用,这些领域包括:计算机科学、语言学、数学和逻辑学。
算术中的引用透明性
引用透明性具有的特性,保证冗长的算术表达式的估算将产生正确的回答。例如,在表达式(6+2)*(5-3)中,因为6+2=8,表达式等价于8*(5-3)。另外因为5-3=2,它也等价于8*2。最后,因为8*2=16,它就等价于16。引用透明性保证无条件地用8来代替;无须担心是否结果将继续与(5-3)相乘,或者与17相减,等等。引用透明性只建立一次应用于形式算术逻辑中。
注意,因为引用透明性,可能每执行一步,都是往正确答案进一步。因此,我们充满信心地说,在三步问题中,第一步完成时,问题1/3已完成。这就是,完成后续的步骤,以前的步骤无须重新访问。另外,由于每一步对其他步无负影响,在同样的层次上,小组可按任意顺序进行评估。因此,这种特性与重要软件概念在抽象、规范、解决方案和没有负作用上具有相似性。
软件中的引用透明性
软件增量式开发的基础在于为程序和程序部分制定数学函数规则(Linger、Mills和Witt1977)。这种观点认为程序开发作为一种自顶向下的控制结构或子函数(子规范)的函数改进(规范)过程,这种改进将导致基于对象或函数分解,或者是二者的结合。例如,一个给定的函数(规范) f能改进为如下的任一种形式: do f1 ; f2 enddo 顺序 if p then f1 else endif 选择 while p do endo 循环
其中f1和 f2表示更进一步改进的子函数(子规范)。后续函数改进必须维持每一步正确性验证了的函数等价性。例如,在上述顺序改进中,子函数f1和 f2的合并对原函数f在数据影响上必须等价。引用透明性要求任意函数(f,f1或 f2)在设计中应该完整定义在该点所要求的效果,没有更多的为单独改进而涉及到其他设计部分的影响。
因为引用透明性,任何精化步骤的验证能够与其他精化步骤相互独立地进行,这就意味着,在系统的在部分组件写出之前,在早期的增量中,系统的体系能够被验证,在后期的增量中,体系结构不须重新验证。然而应注意,进入体系认证系统组件的规范,实际上提供了精确的接口文档,在编码完成时,保证系统作为一个整体达到所要求的性能。
引用透明性在程序设计级函数精化的实例如图。图中右边的两步精化保持了在每一步函数间的等价。首选,精化初始规范为f循环初始代码g和子规范k,其中k规定了接口和 图 精化引用透明性的一个实例 设计时所要求的处理效果。其次,在第二步精化子规范k为循环。这些扩充步是引用透明性的,代表可能的增量定义。这样,第一步增量用g表示循环初始代码,用k中顺序中定义和连接来验证f。但在代码中取消桩。关键是代码g顺序连接子规范k在功能上等价于原定义f。第二步增量应用while do 循环来精化,功能上等价于。另一种设计方案,如图左边给出的那样,将违背引用透明性和失去自定义向下设计的智能控制。在这个简单例子中,这些方法的差别很小,但如果g和k分别代表50000行和500行代码(KLOC),它们间存在复杂的接口,引用透明性就意味着在项目的成功和失效间的差别。 |
相关推荐
通过以上讲解,我们可以看出C#中的增量式PID控制不仅理论基础坚实,而且在实践中的实现也是直观且灵活的。对于初学者来说,这既是一个学习控制理论的好平台,也是锻炼编程技能的有效途径。通过不断实践和优化,你将...
这个压缩包提供的"PID增量式算法模块设计"包含了一个C语言实现的PID控制算法,适用于Keil开发环境。 PID控制器由三个部分组成:比例(P)部分,积分(I)部分和微分(D)部分。比例项对当前误差进行反应,积分项...
**基于BP神经网络的增量式PID控制** 在自动化和控制理论领域,PID(比例-积分-微分)控制器因其简单易用和广泛适应性而被广泛应用。然而,传统的PID控制器在面对复杂动态环境时,其参数调整往往需要大量实验与经验...
随着信息技术的发展,企业对计算机人才的需求日益多元化,尤其是对那些具备扎实理论基础和良好实践技能的人才需求旺盛。独立学院作为应用型本科人才培养的主要阵地,其目标是培养符合市场需求的毕业生。Java编程课程...
- **《软件工程》出版**:这一里程碑式的著作进一步巩固了软件工程的基础理论与实践方法。 **软件工程的基本原则** - **模块化**:将系统划分为独立的组件,以便于管理和维护。 - **抽象化**:简化问题的复杂度,...
在介绍基于FPGA的增量式PID智能湿度控制器设计之前,首先需要了解一些基础概念和关键技术。本知识点将围绕PID控制算法、FPGA硬件技术、硬件电路设计以及Verilog HDL语言这几个方面展开。 首先,PID控制算法是一种...
在本项目中,"PID.rar" 包含了针对MSP430实现的PID控制算法,分为位置式和增量式两种。 1. **PID算法基础**: PID控制器通过结合比例(P)、积分(I)和微分(D)三个部分来调整系统的响应。比例项对当前误差进行...
为了解决这个问题,提出了增量式深度卷积计算模型(Incremental Deep Convolutional Computation Model,DCCM),其核心在于开发了两种增量式算法:参数增量算法(parameter-incremental algorithm)和结构增量算法...
敏捷开发强调的是迭代、增量式的开发过程,以适应需求变化和快速响应市场变化。它倡导“以人为本,迭代开发,持续改进”的原则,鼓励团队成员之间的紧密协作和沟通,以及对客户需求的快速反馈和调整。 书中详细介绍...
在介绍迭代进化式开发如何引入软件工程课程教学之前,首先需要明确一些核心概念,包括迭代进化式开发(RUP)、统一建模语言(UML)等,并探讨这些概念在软件工程教育中的作用和重要性。 迭代进化式开发(Rational ...
增量开发和迭代开发是软件工程领域的两个重要概念,它们共同构成了迭代增量式开发(Iterative and Incremental Development,简称IID)的基础。这种开发方法可以追溯到20世纪中叶,并在随后的几十年中逐渐发展成熟,...
由于提供的文件信息中仅包含标题、描述和标签,而没有具体的内容文本,因此我无法根据实际内容生成具体的知识点。...在实际应用中,这要求研究者具备深厚的理论基础和实践经验,以解决真实世界问题中的复杂挑战。
与传统的瀑布式开发模型不同,Scrum采用迭代和增量的方式推进项目,每个迭代周期(Sprint)通常持续2至4周,专注于交付一小部分可工作的软件功能。 #### Scrum中的角色与工作产品 在Scrum框架下,有三个关键角色:...
1. 敏捷开发背景:在20世纪90年代末,随着互联网的快速发展,传统的瀑布式开发模式无法应对需求频繁变动的情况,因此诞生了敏捷开发。它以“敏捷宣言”为基础,强调个体和互动高于流程和工具,可工作的软件高于详尽...
与传统的瀑布式开发方法相比,敏捷开发更加注重人与人之间的交流、协作和应对变化的能力。它通常采用迭代和增量的方式进行软件构建,而非一次性完成所有需求。敏捷软件开发的出现,是为了解决传统开发模式在快速变化...
标题中的知识点:“最大化增量式多载波传输的可实现速率策略”涉及的研究领域是无线通信技术,特别是多载波传输...文中涉及的理论推导和仿真分析能够帮助读者更好地理解增量式多载波传输在实际应用中的可行性和效率。
PID基础入门:开发手册 PID控制器是自动化领域中不可或缺的一部分,它通过比例、积分和微分三个组件来调整系统的响应,以实现精确的控制。在本手册中,我们将深入探讨PID控制理论及其在直流电机控制中的应用。 1. ...