`
fangang
  • 浏览: 877178 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
311c4c32-b171-3767-b974-d26acf661fb2
谈谈用例模型的那些事儿
浏览量:38661
767c50c5-189c-3525-a93f-5884d146ee78
一次迭代式开发的研究
浏览量:68822
03a3e133-6080-3bc8-a960-9d915ed9eabc
我们应当怎样做需求分析
浏览量:409987
753f3c56-c831-3add-ba41-b3b70d6d913f
重构,是这样干的
浏览量:91641
社区版块
存档分类
最新评论

一次迭代式开发的研究:怎样进行迭代式开发

阅读更多
前面我们提到了迭代式开发的巨大优势,它可以降低我们软件开发的巨大风险,它可以使我们把握用户的真正需求,它可以使我们从错误与偏差中及时纠正过来,那么我们应该如何进行迭代式开发呢?要回答这个问题,我们首先要弄清迭代式开发与传统的瀑布式开发的差别在哪里。

1.需求分析的差别
与传统的软件开发一样,迭代式开发同样需要与客户进行一个充分的需求分析。但与传统的软件开发不一样,迭代式开发不要求初期的需求分析是一个完全的需求分析。它承认需求分析需要一个过程,它承认需求的变化(或者说需求是一个进化的过程)。所以,在迭代式开发中,起初的需求分析只要进行到当时的阶段能够理解到的程度就可以了,而不是瀑布式开发那样需要完成所有的需求分析并最终确认下来。至于其它还没有分析到的内容,我们会在每个迭代的需求阶段逐渐加深理解,逐渐细化,直至最终完成软件的开发。因此,迭代式开发的需求分析始终贯穿整个软件开发的过程。

2.软件开发的差别
迭代式开发的软件开发阶段,与传统软件开发的方式存在着巨大的差异,迭代式软件开发采用的是“持续集成(Continuous Build)”的软件开发方式。传统的开发方式,当需求被确认下来并开始软件开发时,首先进行的工作是分模块进行开发,就如同车间生产一样,不同的模块被分配到了不同的小组或个人进行分头开发。在此期间,谁都不能拿出可运行的软件交付物,直到开发中后期的集成阶段。而迭代式开发不同,它将整个开发过程分为了数个迭代,并且在每个迭代结束时要交付可执行的软件,正因为如此,迭代式开发采用持续集成的方式。

持续集成的基本思想就是每个人每天完成的开发工作都能立即集成为一个可运行的软件产品。为了实现持续集成,我们必须改变我们的开发顺序。传统的开发顺序,首先是开发并完善各个子模块。当各个子模块都完成开发以后,才最终组装并集成为一个可运行的软件。采用这种顺序开发不可能保证持续集成。迭代式开发,在初次确认业务需求以后,首先开发的是软件最主要最基本的功能,在开发这些功能时也往往只考虑主流程而忽略分支流程。采用这种方式,可以在最短时间内交付可以运行的软件。之后我们交给客户去体验、去确认、给我们提意见,我们再不断去调整和完善这些主要功能,或者开发其它次要功能,使软件开发以一种进化式的方式进行下去。

采用持续集成的方式,使软件开发中利益攸关的各方随时可以了解软件开发的进度,以可视化的方式看到软件开发的成果,及时纠正软件开发过程中的问题。更重要的是,所有利益攸关方中最重要的一方——客户,由于自身的局限描述不清自己的需求,通过可视化的方式一次一次看见可运行的软件,更直观地提出自己的意见,使自己的需求越来越清晰,并有效地告知开发者。而我们作为开发中,通过这种方式,使我们有更多的机会与客户有效沟通,从而对业务领域理解越来越深刻,也使我们的开发成果始终有客户确认,与客户的需求保持一致。即使有时出现偏差,也能及时得到纠正。最终,我们交付的软件必然是客户满意的。

由此看来,迭代式开发与传统开发,其开发的过程差异真的不小。

一次迭代式开发的研究:软件开发的风险
一次迭代式开发的研究:什么是迭代式开发
一次迭代式开发的研究:怎样进行迭代式开发
一次迭代式开发的研究:迭代开发从这里开始
一次迭代式开发的研究:准确的工作量评估
一次迭代式开发的研究:功能的优先级评估
一次迭代式开发的研究:一个迭代式项目计划
一次迭代式开发的研究:开始真正的工作
一次迭代式开发的研究:从容应对需求变更
一次迭代式开发的研究:需求变更的关键步骤
一次迭代式开发的研究:Where you are
(续)
分享到:
评论
1 楼 fangang 2011-11-08  
本文提到了持续集成,持续集成是DDD(领域驱动设计)的重要概念(个人认为,领域驱动设计可以归结为三个词:持续学习、持续集成、持续重构),也是敏捷开发的重要方法。

大师Martin Fowler对持续集成是这样定义的:持续集成是一种软件开发实践,即团队开发成员经常集成它们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽快地发现集成错误。许多团队发现这个过程可以大大减少集成的问题,让团队能够更快的开发内聚的软件。

但是,要做到持续集成,没有持续集成的管理软件是不行的。持续集成工具提供的功能就是能够定期地、自动化地完成系统的集成、编译、发布、测试等工作。目前比较主流的开源持续集成工具包括:
CruiseControl http://cruisecontrol.sourceforge.net/
Hudson http://java.net/projects/hudson/
LuntBuild http://luntbuild.javaforge.com/
另外还有一些商用的持续集成工具:TeamCity,AntHill Pro,Bamboo,QuickBuild

要使用持续集成工具,首先需要一个代码配置库,如svn,vss,cvs等,然后配置一个持续集成服务器和系统发布服务器。持续集成服务器说白了就是安装了持续集成系统软件的电脑,它定期去配置库获取更新的代码,经过在本地的集成、编译、测试,最后发布到发布服务器上。发布服务器就是一个应用服务器,将集成后的代码发布到tomcat或weblogic中运行。

相关推荐

    RUP迭代式开发全中文资料

    RUP迭代式开发全中文资料---强烈推荐

    迭代化软件开发

    每个阶段性目标(即一次迭代)都包含了一系列开发活动,如需求分析、设计、编码、测试等。每个迭代结束后都会对完成的结果进行评估,以便为下一次迭代提供反馈和调整方向。 迭代化开发的主要特点包括: 1. **允许...

    Rational迭代化软件开发

    RUP是一种面向对象的、基于构件的软件开发过程框架,它结合了迭代开发的思想和最佳实践。RUP提供了详细的指导,包括工作产品模板、角色定义、活动和最佳实践,以支持软件开发的各个阶段。 ### 4. 优点 - **适应...

    迭代软件开发作业流程.doc

    7. 迭代步骤本身可在进行过程中得到改善和精炼:一次迭代结束时评定不仅要从产品和进度角度来考察项目标情况,而且还要分析组织和步骤本身有什么待改善之处,方便在下次迭代中愈加好地完成任务。 迭代软件开发作业...

    迭代软件开发流程.pdf

    整个迭代过程包含了需求、设计、实施(编码)、部署、测试等各种类型的开发活动,迭代完成之后需要对迭代完成的结果进行评估,并以此为依据来制定下一次迭代的目标。 迭代软件开发流程具有以下特点: 首先,迭代...

    迭代软件开发流程.doc

    迭代软件开发流程 ...8. 迭代流程自身可在进行过程中得到改进和精炼:一次迭代结束时的评估不仅要从产品和进度的角度来考察项目的情况,而且还要分析组织和流程本身有什么待改进之处,以便在下次迭代中更好地完成。

    迭代软件开发流程参考.pdf

    - 渐进式集成:每次迭代集成一部分功能,减少一次性集成的复杂性和风险。 - 早期风险降低:初期迭代侧重架构设计,确保核心需求的满足,降低整体项目风险。 - 提升团队士气:开发人员能快速看到成果,增加工作...

    软件工程中的迭代开发方法.pptx

    ### 软件工程中的迭代开发方法 #### 第一章:软件工程概述 - **软件工程定义**: - 软件工程是一种系统化的、规范化的、可度量化的方法论,旨在指导软件的开发、维护及运行过程。 - 其目标在于提升软件的质量、...

    产品迭代开发流程图

    ### 产品迭代开发流程详解 #### 一、项目立项与规划 在进行任何具体工作之前,首先要明确项目的立项。这一步骤通常涉及到对项目背景、目标、预期成果以及潜在风险等因素的综合考量。项目立项阶段完成后,需要进一步...

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

    迭代开发模型是一种软件开发方法,可以根据实际情况灵活调整需求,每次迭代都能交付可用版本,有利于客户的验收和反馈。这种方法有助于及早发现问题,提高软件质量。增量开发模型是一种基本功能版本开发出基本功能较...

    RUP迭代开发过程

    RUP迭代开发过程,喜欢研究面向对象的软件开发模式的朋友可以看看。

    管理迭代化的软件开发项目

    本文将深入探讨迭代化开发的核心概念、与瀑布模型的区别、软件项目的开发阶段、制定项目开发计划以及迭代开发的指导原则和实例分析。 首先,统一软件开发过程(Rational Unified Process,RUP)是IBM软件集团...

    牛顿迭代法求二元一次方程C++代码及其软件

    在本项目中,我们采用C++编程语言,并结合Qt库来实现对二元一次方程的牛顿迭代法求解,同时通过图形化界面展示迭代过程。以下是关于这个项目的关键知识点: 1. **牛顿迭代法**: 牛顿迭代法是基于切线近似的思想,...

    软件工程与软件迭代开发方法.pptx

    ### 软件工程与软件迭代开发方法 #### 第1章 软件工程概述 **软件工程定义:** 软件工程是一门应用工程原则、方法和工具来开发和维护软件的学科。它主要关注如何有效地组织和管理软件开发过程,以达到提高软件产品...

Global site tag (gtag.js) - Google Analytics