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

增量式开发的优点

阅读更多

增量式开发的优点

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

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

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

  统计质量控制之下的增量式开发(incremental development)是软件项目建立和保持管理控制的净室途径。增量式开发是20世纪70年代早期由Mills提出的。但直到80年代末,当Mills和他的助手们的净室论文和专项报告开始出现的时候才获得认同。Fred Brooks描述了增量式开发方法的深刻影响,针对该方法在软件实践方面的作用,给出了影响广泛的评论:“没有银弹:软件工程的本质和偶然性。”

  Brooks的观察在工业实践中得到了证实。增量式开发有助于早期的和连续的质量评估、用户反馈和方便的开发进度的过程改进。增量式设计方法避免了在开发周期中部件集成之后风险的继承。而且增量式开发允许在整修开发周期过程中需求变化的系统协调。

  增量式开发的技术基础是引用透明性特征。在软件开发的前后,这种特征要求规范及其实现定义了同样的数学函数。当拥有了这种特征时,设计就能显示出与它的规范的一致性。

  大的软件系统由各个部分组成。系统各个部分组成的方式对项目的成功有重要的影响。增量式自顶向下的开发途径表现为软件系统的已开发和已测试部分作为功能累积子集的序列。在最早增量中开发了一个小系统,然后把功能添加到每一个后续增量中直到系统完成。这种软件系统的控制增长方式有利于客房、管理者,同样有利于技术人员。

进展的可见性

  利用增量式开发,每一步增量实现了一个或多个最终用户功能。每一步增量包含所有早期的已开发的功能集加上一些新的功能;系统在逐步累积的增量中增长。例如,在早期增量结束时,开发者很有信心地说:系统的20%已100%完成了,而不是推测系统已完成了20%。

智能控制

  增量式开发通过引用透明性,实现了整个系统开发过程中的智能控制。当在后续增量待实现的函数的子规范被嵌入当前增量流程逻辑中时,这种特性,即等式的等量替换令人满意。当拥有引用透明性时,一个系统的部件无需回溯就能根据其子规范得以实现。无需重做前期增量。这里策略有利于在一个完整系统中对每个增量进行正确性验证。

增量系统集成

  净室增量式开发允许在整修开发生命期引用透明的用户函数增量的连续集成。因为每一步增量设计基于一个已验证的子规范和前期增量已测试的接口,因此几乎没有更深的设计和接口错误。较好的定义增量贯穿于整修系统开发过程,系统在良好定义的增量中深化。测试和验证工作始于开发周期早期。

连续质量反馈贯穿统计过程控制

  已在净室中实践的增量式开发为统计过程控制提供了基础。每一个净室增量都是过程的一个完整周期,包含规范、开发和新的用户函数的验证,加上到目前为止所有已工作的测试。作为统计过程控制的典型,把过程的每一次反复的性能度量与性能目标相比较,以决定是否过程一直在控制之下(即:是否正如所期望的那样发生)。

  净室软件小组常使用在测试中的开发性能度量作为过程控制的标准。通常使用的度量包括每千行代码的错误数、失效的间隔时间(MTTF)、可靠性及可信性。其他过程控制方法或许依赖于所管理的事务,而不是产品的质量。进度一致性一、预算一致性瑟整体计划的一致性等等,都是按增量的实际性能与目标性能相比较而言。净室增量度量依据的标准描述了过程控制的具体级别,要按计划继续该项目,开发小组要求此级别。如果标准不符合,开发小组能从增量中检测执行数据,确定问题所在,必要时调整项目计划,修改软件开发过程,避免此类问题的再次发生。例如,如果增量的测试提示过程失去控制(如:质量标准不符合),开发者们应停止测试,返回设计阶段,如果过程是在控制之下,下一歨增量工作才能继续。

  统计过程控制(Statistical Process Control ,SPC)是为数据悼念和分析提供较好的开发技术的成熟的工程实践。丰富的方法和工具支持是希望从事更高实践的设计者可利用的。然而,SPC的基本实践要求少量的投资和努力就能产生充足的回报。统计过程控制应用的基本任务很简单:每一过程周期的性能度量,比较实际性能与预先定义的目标性能,确定不可接受偏差的原因,以及通过过程改变改进将来的性能。

  例如,如果一个净室小组开发的一个产品在测试中习惯于每千行代码有三个或更少失效,那么一个增量每千行有5个失效或许认为是不可接收的偏差。在调查中,小组或许发现失效是由错误引起的,实际上在验证过程中错误才能被发现,不能证实代码改变的正确性。从这种分析中,小组认识到直到所有错误代码的改变被验证为正确之前这种验证不视为完整的。小组相应地修改验证过程,决心在将来的增量设计中避免因不正确的补丁而引起的失效。以这种方式,每步增量中产生的反馈用于改进下一歨增量过程。

  统计过程控制的能力取决于针对正在进行的计划性能与实际性能的对比检验。确定造成不可接受的偏差的原因,制定专门过程改进措施,以重新获得控制或改善控制。净室软件小组实践这些基本原理,并加以发展。每个净室增量都是针对完善的期望来测试,任何失效都被认为是不可接受的。仔细分析由错误发生的失效与开发过程的关系,错误的来源是什么?为什么在小组评审中错误被忽视?如何改进过程避免相同错误站起来重犯?净室软件小组真诚地追求完美,统计过程控制是衡量和提高小组成果的工程规范。

用户使用中不断的功能反馈

增量式开发有助于用户对一个进货系统的执行功能做出尽早的不断的反馈,必要时允许改变。因为增量执行于系统环境并代表了用户功能的子集,早期的增量能通过用户对系统功能性和实用性的检测来反馈。这种反馈有助于避免开发出失效的系统和建立用户可接受的最终产品。

变更的适应性

  在系统需求和项目环境中增量式开发允许不可避免变更的系统适应性。在每一步增量完成时,系统需求的积累变更所产生的影响能根据当前规范和增量设计来评估。如果变更与将来增量想到独立,则通常与现已存在的增量开发计划相合并,并对进度和资源进行可能的调整。如果变更影响已完成的增量,自顶向下修改系统开发,通常重用绝大多数已存在的增量代码(通常是全部),按照要求的进度和资源来进行相应调整。

进度与资源管理

  项目资源在增量式开发全过程中能在可控制的方式下分配。可用进度是决定待开发的增量数据和其规模的一个因素。在短进度中,小规模增量将有助于在增量交付与认证组之间维持充分的时间段,允许一个有序的测试过程。然而,这将给项目开发小组设计和实现更大、更复杂的增量带来更多负担。进度和复杂性的折衷能够反映增量式开发计划。另外,从后续增量得到的反馈,为过程和产品性能的目标度量提供了管理,以允许在开发和测试中对不足和意外收获的适应。

分享到:
评论

相关推荐

    最新版本全家桶!Vue.js全家桶及源码解析实战教程 进阶VUE组件化开发与项目最佳实践

    它以数据驱动和组件化思想构建,采用自底向上增量开发的设计思想。相比Angular.js,Vue.js API更加简洁;相比 React + Redux 复杂的架构,Vue.js 上手更加容易。 最新的Vue.js全家桶课程,集中的讲解了VUE全家桶...

    云大软件工程实验三-软件设计.pdf

    实验报告 课程: 软件工程实验 任课教师: 指导教师: 序号: 专业: 学号: 姓名: 成绩: 实验三 软件设计 1.... (3)分层的方法支持系 统的增量式开发。 (1)用分层的方法构成系 统可能是困难的;(2)可 能存

    ltp-cws:LTP中文分词模块

    另外还新增了个性化(增量式)训练功能,用户可以根据自己的实际需求,如对新领域的文本进行分词等,自行标注少量句子的分词结果(比如对LTP分词结果的修正),LTP分词模块可以重新训练一个更好应对新领域的分词器,...

    可能是目前最完整的前端框架Vue.js介绍

    2016年最火的前端框架当属Vue.js了,很多使用过vue的程序员这样评价它,“vue.js兼具angular.js和react.js的优点,并剔除了它们的缺点”。...它是以数据驱动和组件化的思想构建的,采用自底向上增量开发的设

    基于DSP和FPGA的编码器信号测量及处理的通用模块

    本文针对实验用转台使用的海德汉编码器设计出了增量式和绝对式的通用数据处理模块。该模块具有信号处理速度快、精度高、数据准确、应用灵活广泛、使用和调试方便、成本低廉等优点,能很好满足使用需求。

    整理后java开发全套达内学习笔记(含练习)

    abstract (关键字) 抽象 ['æbstrækt] access vt.访问,存取 ['ækses]'(n.入口,使用权) algorithm n....Annotation [java] 代码注释 [ænәu'teiʃәn] anonymous adj.匿名的[ә'nɒnimәs]'(反义:directly adv....

    Scrum捷径——敏捷策略、工具与技巧

    敏捷的概念也是相对于传统的瀑布式阶段性开发来讲,敏捷式开发通过增量方式交付可运行且高质量的功能。它的优点有减轻风险(可阶段性验收功能),可见、透明和意外状况更少(任务板及定期sprint评审),持续改进,...

    步进电机的单片机控制系统设计.doc

    绪论 1 课题研究背景及主要内容 1 课题研究背景 步进电动机是一种新型增量式电机,是数字控制系统的一种执行元件。它是利用电脉 冲信号进行控制,将电脉冲信号转换成相应的角位移或线位移的电动机。它的位移与输 入...

    软件工程知识点

    增量模型结合了瀑布模型与原型进化模型的优点。在整体上按照瀑布模型的流程实施开发,以方便对项目的管理。但在软件的实际创建中,则将软件系统按功能分解为许多增量构件逐个地创建与交付,直到全部构件创建完毕,并...

    第十届“飞思卡尔”杯智能汽车大赛论文+线性CCD方案-电路方案

    在相应的时间片分别控制车体的平衡,速度和转向,由线性CCD传感器采集赛道信息到单片机,再由单片机读取信号进行分析处理,运用我们自己的软件程序对赛道信息进行提取并选择最佳路径,采用PID增量式算法对电机的精确...

    可能是目前最完整的前端框架Vue.js全面介绍

    2016年最火的前端框架当属Vue.js了,很多使用过...它是以数据驱动和组件化的思想构建的,采用自底向上增量开发的设计。相比于Angular.js,Vue.js提供了更加简洁、更易于理解的API,使得我们能够快速地上手并使用Vue.js

    全面介绍vue 全家桶和项目实例

    简介 “简单却不失优雅,小巧而不乏大匠”...它是以数据驱动和组件化的思想构建的,采用自底向上增量开发的设计。相比于Angular.js,Vue.js提供了更加简洁、更易于理解的API,使得我们能够快速地上手并使用Vue.js;同时

    开涛高可用高并发-亿级流量核心技术

    16 构建需求响应式亿级商品详情页 324 16.1 商品详情页是什么 324 16.2 商品详情页前端结构 325 16.3 我们的性能数据 327 16.4 单品页流量特点 327 16.5 单品页技术架构发展 327 16.5.1 架构1.0 328 16.5.2 架构2.0 ...

    大数据什么是ETL.pdf

    第三种是综合了前⾯⼆种的优点,会极⼤地提⾼ ETL 的开发速度和效率。 数据的抽取( 数据的抽取(Extract) ) 这⼀部分需要在调研阶段做⼤量的⼯作,⾸先要搞清楚数据是从⼏个业务系统中来,各个业务系统的数据库...

    Radmin3.4key

    安全的“拖放式”文件传输,带有“增量复制”(DeltaCopy)功能 使用Radmin您可以在资源管理器风格的界面中轻松拖放,对远程电脑上的任何文件以加密方式进行传输。Radmin在复制文件的时候有项功能,可以允许仅更新在...

    高级软件架构师复习提纲

    拥有共同的远景/关注业务价值 /灵活敏捷,主动应变 /向团队成员授权/鼓励开放式沟通/职责清晰,责任共享 25、微软运营框架将配置管理定义为一个非常重要的过程,关于“配置管理”说法正确的是:实现再现或回退到前一...

Global site tag (gtag.js) - Google Analytics