统计质量控制之下的增量式开发(incremental development)是软件项目建立和保持管理控制的净室途径。增量式开发是20世纪70年代早期由Mills提出的。但直到80年代末,当Mills和他的助手们的净室论文和专项报告开始出现的时候才获得认同。Fred Brooks描述了增量式开发方法的深刻影响,针对该方法在软件实践方面的作用,给出了影响广泛的评论:“没有银弹:软件工程的本质和偶然性。”
Brooks的观察在工业实践中得到了证实。增量式开发有助于早期的和连续的质量评估、用户反馈和方便的开发进度的过程改进。增量式设计方法避免了在开发周期中部件集成之后风险的继承。而且增量式开发允许在整修开发周期过程中需求变化的系统协调。
增量式开发的技术基础是引用透明性特征。在软件开发的前后,这种特征要求规范及其实现定义了同样的数学函数。当拥有了这种特征时,设计就能显示出与它的规范的一致性。
大的软件系统由各个部分组成。系统各个部分组成的方式对项目的成功有重要的影响。增量式自顶向下的开发途径表现为软件系统的已开发和已测试部分作为功能累积子集的序列。在最早增量中开发了一个小系统,然后把功能添加到每一个后续增量中直到系统完成。这种软件系统的控制增长方式有利于客房、管理者,同样有利于技术人员。
进展的可见性
利用增量式开发,每一步增量实现了一个或多个最终用户功能。每一步增量包含所有早期的已开发的功能集加上一些新的功能;系统在逐步累积的增量中增长。例如,在早期增量结束时,开发者很有信心地说:系统的20%已100%完成了,而不是推测系统已完成了20%。
智能控制
增量式开发通过引用透明性,实现了整个系统开发过程中的智能控制。当在后续增量待实现的函数的子规范被嵌入当前增量流程逻辑中时,这种特性,即等式的等量替换令人满意。当拥有引用透明性时,一个系统的部件无需回溯就能根据其子规范得以实现。无需重做前期增量。这里策略有利于在一个完整系统中对每个增量进行正确性验证。
增量系统集成
净室增量式开发允许在整修开发生命期引用透明的用户函数增量的连续集成。因为每一步增量设计基于一个已验证的子规范和前期增量已测试的接口,因此几乎没有更深的设计和接口错误。较好的定义增量贯穿于整修系统开发过程,系统在良好定义的增量中深化。测试和验证工作始于开发周期早期。
连续质量反馈贯穿统计过程控制
已在净室中实践的增量式开发为统计过程控制提供了基础。每一个净室增量都是过程的一个完整周期,包含规范、开发和新的用户函数的验证,加上到目前为止所有已工作的测试。作为统计过程控制的典型,把过程的每一次反复的性能度量与性能目标相比较,以决定是否过程一直在控制之下(即:是否正如所期望的那样发生)。
净室软件小组常使用在测试中的开发性能度量作为过程控制的标准。通常使用的度量包括每千行代码的错误数、失效的间隔时间(MTTF)、可靠性及可信性。其他过程控制方法或许依赖于所管理的事务,而不是产品的质量。进度一致性一、预算一致性瑟整体计划的一致性等等,都是按增量的实际性能与目标性能相比较而言。净室增量度量依据的标准描述了过程控制的具体级别,要按计划继续该项目,开发小组要求此级别。如果标准不符合,开发小组能从增量中检测执行数据,确定问题所在,必要时调整项目计划,修改软件开发过程,避免此类问题的再次发生。例如,如果增量的测试提示过程失去控制(如:质量标准不符合),开发者们应停止测试,返回设计阶段,如果过程是在控制之下,下一歨增量工作才能继续。
统计过程控制(Statistical Process Control ,SPC)是为数据悼念和分析提供较好的开发技术的成熟的工程实践。丰富的方法和工具支持是希望从事更高实践的设计者可利用的。然而,SPC的基本实践要求少量的投资和努力就能产生充足的回报。统计过程控制应用的基本任务很简单:每一过程周期的性能度量,比较实际性能与预先定义的目标性能,确定不可接受偏差的原因,以及通过过程改变改进将来的性能。
例如,如果一个净室小组开发的一个产品在测试中习惯于每千行代码有三个或更少失效,那么一个增量每千行有5个失效或许认为是不可接收的偏差。在调查中,小组或许发现失效是由错误引起的,实际上在验证过程中错误才能被发现,不能证实代码改变的正确性。从这种分析中,小组认识到直到所有错误代码的改变被验证为正确之前这种验证不视为完整的。小组相应地修改验证过程,决心在将来的增量设计中避免因不正确的补丁而引起的失效。以这种方式,每步增量中产生的反馈用于改进下一歨增量过程。
统计过程控制的能力取决于针对正在进行的计划性能与实际性能的对比检验。确定造成不可接受的偏差的原因,制定专门过程改进措施,以重新获得控制或改善控制。净室软件小组实践这些基本原理,并加以发展。每个净室增量都是针对完善的期望来测试,任何失效都被认为是不可接受的。仔细分析由错误发生的失效与开发过程的关系,错误的来源是什么?为什么在小组评审中错误被忽视?如何改进过程避免相同错误站起来重犯?净室软件小组真诚地追求完美,统计过程控制是衡量和提高小组成果的工程规范。
用户使用中不断的功能反馈
增量式开发有助于用户对一个进货系统的执行功能做出尽早的不断的反馈,必要时允许改变。因为增量执行于系统环境并代表了用户功能的子集,早期的增量能通过用户对系统功能性和实用性的检测来反馈。这种反馈有助于避免开发出失效的系统和建立用户可接受的最终产品。
变更的适应性
在系统需求和项目环境中增量式开发允许不可避免变更的系统适应性。在每一步增量完成时,系统需求的积累变更所产生的影响能根据当前规范和增量设计来评估。如果变更与将来增量想到独立,则通常与现已存在的增量开发计划相合并,并对进度和资源进行可能的调整。如果变更影响已完成的增量,自顶向下修改系统开发,通常重用绝大多数已存在的增量代码(通常是全部),按照要求的进度和资源来进行相应调整。
进度与资源管理
项目资源在增量式开发全过程中能在可控制的方式下分配。可用进度是决定待开发的增量数据和其规模的一个因素。在短进度中,小规模增量将有助于在增量交付与认证组之间维持充分的时间段,允许一个有序的测试过程。然而,这将给项目开发小组设计和实现更大、更复杂的增量带来更多负担。进度和复杂性的折衷能够反映增量式开发计划。另外,从后续增量得到的反馈,为过程和产品性能的目标度量提供了管理,以允许在开发和测试中对不足和意外收获的适应。 |
相关推荐
PID控制器是工业自动控制系统中应用最广泛的一类反馈控制器,它通过比例(Proportion)、积分(Integral)、微分...因此,学习和掌握增量式PID控制器的数字实现,是控制系统和嵌入式系统开发人员的必备技能。
在现代电机控制系统中,光电增量式编码器(也称为光电角位置传感器)发挥着至关重要的作用,其主要功能是测量电动机的转速和转子位置。由于编码器具有高分辨率、快速响应、体积小、输出稳定等优点,它被广泛应用于...
增量式光电角度编码器是一种高精度的测量传感器,主要用于角位移和角速度的测量。它主要分为绝对式和增量式两种,增量式光电角度编码器由于其体积小、成本低、精度高、响应快和稳定性好等特点,在许多领域得到广泛...
同时,本文档还将对基于增量式爬虫的搜索引擎系统的优点和优势进行分析和讨论。 知识点: 1.增量式爬虫的概念和原理 增量式爬虫是一种基于增量式数据处理的爬虫技术,通过实时地对数据进行爬取和更新,可以快速地...
在实际应用中,增量式PID算法有很多优点。首先,该算法可以使用整型变量来实现,从而提高了算法的精度和效率。此外,该算法也可以根据实际情况进行调整,例如,可以根据实际情况调整_KP、_KI和_KD三个参数,以达到...
增量式PID控制是一种广泛应用在自动化控制领域的算法,特别是在温度控制系统中,它的有效性得到了广泛的验证。在单片机系统中,由于资源有限,增量式PID控制成为了一种理想的解决方案。下面我们将详细探讨增量式PID...
增量式编码器是一种光电传感器,常用于检测机械运动和位移,并将其转换为电信号,是自动化系统中的重要组成部分。它主要应用在嵌入式设备和手持设备上,因为成本低且使用简单可靠。增量式编码器根据输出信号的差异,...
文中提到的增量式PID控制算法是数字PID算法的一种,相比于传统的位置式PID算法,增量式PID算法计算误差对控制量的影响较小,具有手动和自动模式之间的无冲击切换,以及较高的可靠性等优点。增量式PID算法的实现主要...
使用纯Java代码实现增量式打包的优点是: 1. 不需要重新编译整个项目。 2. 配置简单,只需要一个Java类。 3. 耗时少,运行速度快。 4. 可以避免项目中有任何编译错误的java代码。 下面是使用纯Java代码实现增量式...
增量模型和迭代式开发适用于需求可能发生变化的项目;螺旋模型和敏捷模型适合需求复杂且不断变化的大型项目。在选择软件开发模式时,项目管理者需要综合考虑项目的特点、团队的能力和客户的需求,以确定最合适的开发...
喷泉模型是以用户需求为驱动力,以对象为中心的一种迭代式开发模型,特别适用于采用面向对象技术的软件项目。 - **特点**: - 相互迭代:软件的各个组成部分可以在开发过程中被反复修改和完善。 - 无间隙:分析、...
迭代式和增量式,即通过迭代和增量式的方式,逐步细化和完善系统的设计和实现。 RUP的优点是: 提高软件开发的质量和效率 提高软件开发团队的协作和沟通效率 提高软件开发的可重用性和灵活性 提高...
相比之下,迭代式开发是一种更灵活的方法,它将软件拆分成多个小的、可管理的部分,每次迭代都完成一部分功能。迭代式开发允许在开发过程中根据用户反馈调整需求,降低了风险,提高了生产率。它的优点在于能够快速...
迭代模型是一种与传统的瀑布式开发相反的软件开发过程,它弥补了传统开发方式中的一些弱点,具有更高的成功率和生产率。在迭代式开发方法中,整个开发工作被组织为一系列的短小的、固定长度的小项目,被称为一系列的...
1. **增强的适应性:**敏捷方法通过增量式规划,更容易调整过程以反映不断变化的客户需求。 2. **快速交付:**通过快速连续交付有用软件,提高客户满意度。 3. **注重人际互动:**相比过程和工具,更加强调人员之间...
HIPERFACE绝对式光电编码器具有普遍增量式光电编码器和绝对式光电编码器的优点,能够输出差分传输的正弦信号和余弦信号的增量信号,以及通过RS485传输的二进制数字信号。HIPERFACE绝对式光电编码器采用双向RS485接口...
不同的软件开发模型适合不同的开发场景和需求,本文将介绍瀑布模型、快速原型模型、增量模型、螺旋模型和喷泉模型五种常见的软件开发模型,并对其优缺点进行分析。 一、瀑布模型 瀑布模型是一种经典的软件开发模型...