`
softstone
  • 浏览: 480987 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

增量式开发的理论基础

阅读更多

增量式开发的理论基础

未经允许,严禁转载本栏目内容

本文经许可转载自软件工程专家网www.21cmm.com

未经CSDN许可,请勿随便转载,谢谢合作

  净室过程中实践的增量式开发技术是基于引用透明性原理的。引用透明性意味着一个表达式所关心的惟一的事情是它的值,能用其值相等的子表达式代替。引用透明性暗示,一个实体的有关低层细节被抽象了,而不是忽略了高层描述的特定系统。因此,当置身于较大的上下文中时,高层描述包含的每一件事必须明白表达实体。引用透明性的概念已在广泛的领域得到应用,这些领域包括:计算机科学、语言学、数学和逻辑学。

算术中的引用透明性

  引用透明性具有的特性,保证冗长的算术表达式的估算将产生正确的回答。例如,在表达式(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控制

    通过以上讲解,我们可以看出C#中的增量式PID控制不仅理论基础坚实,而且在实践中的实现也是直观且灵活的。对于初学者来说,这既是一个学习控制理论的好平台,也是锻炼编程技能的有效途径。通过不断实践和优化,你将...

    PID增量式算法模块设计

    这个压缩包提供的"PID增量式算法模块设计"包含了一个C语言实现的PID控制算法,适用于Keil开发环境。 PID控制器由三个部分组成:比例(P)部分,积分(I)部分和微分(D)部分。比例项对当前误差进行反应,积分项...

    pid.rar_PID积分限幅_pid_增量式PID控制_增量式pid_控制

    它不仅涵盖了增量式PID控制与积分限幅的关键技术,而且通过集成的程序代码,简化了从理论到实践的过渡过程。对于那些希望深化对PID控制器理解的工程师和技术人员而言,这一资源包无疑是一份珍贵的资料,它能够帮助...

    增量式教学在高职Java Me游戏设计课程中的实践.pdf

    这一方法借鉴了软件开发中的增量式开发理念,即把复杂的开发任务分解成多个小的、可管理的部分,并且每个部分都能够独立运行。增量式开发强调的迭代和持续集成的思想,适应性强且能及时响应变化,这些特点同样适用于...

    基于BP神经网络的增量式PID控制

    **基于BP神经网络的增量式PID控制** 在自动化和控制理论领域,PID(比例-积分-微分)控制器因其简单易用和广泛适应性而被广泛应用。然而,传统的PID控制器在面对复杂动态环境时,其参数调整往往需要大量实验与经验...

    增量式编码器在双天线差分GPS校验方法中的设计与应用.pdf

    为了克服现有校验技术的不足,本研究提出了一种新的校验方案,即以增量式编码器为基础设计的双天线差分GPS校验装置。该装置采用转台式结构设计,内部嵌入高精度的增量式编码器。校验装置在工作时能够实时输出转台的...

    校企结合下的一体化增量式Java项目教学研究.pdf

    随着信息技术的发展,企业对计算机人才的需求日益多元化,尤其是对那些具备扎实理论基础和良好实践技能的人才需求旺盛。独立学院作为应用型本科人才培养的主要阵地,其目标是培养符合市场需求的毕业生。Java编程课程...

    软件工程中的迭代与增量开发.pptx

    - **《软件工程》出版**:这一里程碑式的著作进一步巩固了软件工程的基础理论与实践方法。 **软件工程的基本原则** - **模块化**:将系统划分为独立的组件,以便于管理和维护。 - **抽象化**:简化问题的复杂度,...

    基于FPGA的增量式PID智能湿度控制器的设计.pdf

    在介绍基于FPGA的增量式PID智能湿度控制器设计之前,首先需要了解一些基础概念和关键技术。本知识点将围绕PID控制算法、FPGA硬件技术、硬件电路设计以及Verilog HDL语言这几个方面展开。 首先,PID控制算法是一种...

    基于卡尔曼滤波和增量式PID控制的智能车载系统.pdf

    数学模型为后续的控制系统设计提供了理论基础,确保系统能够对电机行为有准确的预测和控制。在模型建立之后,增量式PID算法作为核心控制策略被应用于系统。增量式PID算法相较于传统PID算法,具有更加简便的控制增量...

    PID.rar_PID MSP430_msp430 pid_msp430 增量式pid_msp430的PID算法_pid

    在本项目中,"PID.rar" 包含了针对MSP430实现的PID控制算法,分为位置式和增量式两种。 1. **PID算法基础**: PID控制器通过结合比例(P)、积分(I)和微分(D)三个部分来调整系统的响应。比例项对当前误差进行...

    工业大数据特征学习的增量式深度卷积计算模型

    为了解决这个问题,提出了增量式深度卷积计算模型(Incremental Deep Convolutional Computation Model,DCCM),其核心在于开发了两种增量式算法:参数增量算法(parameter-incremental algorithm)和结构增量算法...

    敏捷软件开发:原则、模式与实践(全)

    敏捷开发强调的是迭代、增量式的开发过程,以适应需求变化和快速响应市场变化。它倡导“以人为本,迭代开发,持续改进”的原则,鼓励团队成员之间的紧密协作和沟通,以及对客户需求的快速反馈和调整。 书中详细介绍...

    迭代进化式开发引入软件工程课程教学.pdf

    在介绍迭代进化式开发如何引入软件工程课程教学之前,首先需要明确一些核心概念,包括迭代进化式开发(RUP)、统一建模语言(UML)等,并探讨这些概念在软件工程教育中的作用和重要性。 迭代进化式开发(Rational ...

    软件测试基础 -集成测试

    - **测试形式**:非增量式测试和增量式测试各有优势,选择适合项目特点的测试形式。 - **测试技术**:黑盒测试和白盒测试相结合,全面评估软件质量和稳定性。 综上所述,集成测试是软件开发过程中不可或缺的一环,...

    Iterative and Incremental Development

    增量开发和迭代开发是软件工程领域的两个重要概念,它们共同构成了迭代增量式开发(Iterative and Incremental Development,简称IID)的基础。这种开发方法可以追溯到20世纪中叶,并在随后的几十年中逐渐发展成熟,...

    基于样本不确定性的增量式数据流分类研究

    由于提供的文件信息中仅包含标题、描述和标签,而没有具体的内容文本,因此我无法根据实际内容生成具体的知识点。...在实际应用中,这要求研究者具备深厚的理论基础和实践经验,以解决真实世界问题中的复杂挑战。

    火星人敏捷开发手册 2012-12-25

    与传统的瀑布式开发模型不同,Scrum采用迭代和增量的方式推进项目,每个迭代周期(Sprint)通常持续2至4周,专注于交付一小部分可工作的软件功能。 #### Scrum中的角色与工作产品 在Scrum框架下,有三个关键角色:...

Global site tag (gtag.js) - Google Analytics