`

软件开发过程 --迭代,进化和敏捷

 
阅读更多

介绍

相对于顺序或“瀑布”生命周期,迭代和进化式开发(iterative and evolutionary development)对部分系统及早地引入了编程和测试,并重复这一循环。这种方式通常会在还没有详细定义所有需求的情况下假设开发开始,同时使用反馈来明确和改进演化中的规格说明。

迭代开发是UP和大多数其他现代方法中的关键实践。在这种生命周期方法中,开发被组织成一系列固定的短期(如三个星期)小项目,称为迭代(iteration);每次迭代都产生经过测试、集成并可执行的局部系统。每次迭代都具有各自的需求分析、设计、实现和测试活动。

示例

1. 在第一次迭代之前,召开明确为2天的需求工作会议,该会议的出席人员包括业务人员和开发人员(包括首席架构师)。

  • 在第一天上午,只进行high-level的需求分析,例如只确定用例和特性的名称,以及关键的非功能性需求。注意:这种分析绝不可能是完美的。
  • 通过咨询首席架构师和业务人员,从high-level 列表中选择10%-20%比例的用例准备进行详细的分析,选择的依据为具有重要的架构意义;具有高业务价值;具有高风险。
  • 在剩下的一天半内,对选出的用例的功能和非功能性需求进行详细的分析。

2. 在第一次迭代之前,召开迭代计划会议,对细化好的用例,在特定时间内进行设计、构造(Build)和测试。要注意的是,因为其中包含大量的工作,所以并不是在第一次迭代中就要构造(Build)出全部的已经细化的用例。

3. 在三到四周内完成第一次迭代

  • 在开始的两天内,开发者和其他成员进行分组的建模和设计工作,在首席架构师(或项目经理)的带领和指导下,在足够大的白板上画出UML的草图并用数码相机记录。
    [注意:UML只是用于交流和理解设计,并不是必要并且必须细化到能够生成代码的地步的那种UML文档。]
  • 然后,剩余的时间几乎全部用于编程、测试和集成工作,开发者应将建模草图作为其灵感的起点,并且要清楚这些模型是局部并且概念模糊的。
  • 进行大量的测试,包括单元测试,验收测试,负载测试和可用性测试等。
  • 在结束前一周确认能够完成初始的迭代目标,否则缩小迭代的范围,将次要目标置回任务列表中。
  • 在最后一周的星期二,Check In全部代码,并集成和测试所有代码,建立迭代的基线。
  • 星期三上午,向外部演示此局部系统,展示早期可视进展,同时要求反馈。

4. 在第一次迭代即将结束时,召开第二次需求工作会,对上一次会议的所有材料进行复查和精化。再选择具有重要架构意义和高业务价值的另外一定比例的用例,用1到2天对其进行详细分析。等这项工作完成后,会详细记录下大概40%的用例和非功能性需求。

5. 于周五上午,举行下一迭代的迭代计划会议。

6. 以相同步骤进行第二次迭代。

7. 反复进行4次迭代和五次需求工作会,这样在第4次迭代结束时,基本上已经记录了大概80%-90%的需求,但是很可能只实现了其中的40%左右。

注意:需求集是基于反馈和进化的,因此其质量远高于纯粹依靠推测而得出的瀑布式规格说明。

8. 用UP的术语来说就是细化阶段的结束,以后基本不再需要什么需求工作会议,需求已经稳定了。正式进入UP术语的构造阶段!接下来是一系列为期三周的迭代,在最后一周的周五的迭代计划会上选择适宜的下一步工作。

9. 待项目全部完成后,进行Beta测试和移交。

UP项目开发的四个主要阶段

1. 初始(Inception):

大体上的构想,业务案例、范围和模糊评估。

2. 细化(Elaboration):

已精化的构想、核心架构的迭代实现、高风险的解决、确定大多数的需求。

3. 构造(Construction):

对遗留下来的风险较低和比较简单的元素进行迭代实现,准备部署。

4. 移交(Transition):

进行Beta测试和部署。

用例

资料来源:

l 《UML和模式应用》(第三版) (<<Applying UML and Patterns –An Introduction to Object-Oriented Analysis and Design and Iterative Development>>)

分享到:
评论

相关推荐

    高级软件开发过程——Rational统一过程、敏捷过程与微软过程-第一章.doc

    为了解决这些困境,软件开发过程需要不断进化和优化。RUP、敏捷过程和微软过程都提供了一种框架,帮助团队更好地管理需求、应对变更、优化架构和提升产品质量。通过学习和应用这些高级开发过程,软件企业可以提高...

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

    迭代进化式开发(Rational Unified Process,RUP)是一种软件工程方法论,其核心在于将整个软件开发过程分解为多个较小的、可管理的迭代周期。在每个迭代中,团队完成一部分设计、编码和测试工作,从而逐步构建最终...

    敏捷软件开发精要.pdf

    敏捷软件开发是一种以人为核心,迭代、循序渐进的软件开发方法。...敏捷宣言背后的价值观和原则,以及实施过程中的具体实践方法,共同构成了敏捷开发方法的精髓,为软件开发行业带来了革命性的变革。

    软件工程--2敏捷开发(AM).docx

    敏捷开发的主要特点是采用迭代、循序渐进的方法进行软件开发,在每个迭代中都可以生产或开发出一个可以交付的软件产品。 敏捷开发的核心思想是以人为核心、需求进 hóa为核心,而不是以文档为依据。这是因为敏捷...

    适合ChatGPT的水母式软件开发模式-陈斌.pdf

    《适合ChatGPT的水母式软件开发模式》不仅为软件开发者提供了一种全新的思考角度,更重要的是它为我们展示了如何借助先进的人工智能技术来提升软件工程领域的效率和质量。随着ChatGPT等自然语言处理技术的不断发展和...

    软件开发模式-PPT.pptx

    根据提供的文件信息,我们可以深入探讨软件开发模式的关键知识点,尤其是围绕传统的瀑布模型和现代的敏捷开发模式。 ### 一、瀑布模型 瀑布模型是最早期的软件开发模型之一,其核心理念是按照一定的顺序和阶段来...

    敏捷软件开发-原则、模式与实践

    敏捷开发是一种以人为本、迭代且增量的软件开发方法论,它强调适应性、灵活性和客户合作。在敏捷开发中,团队通过频繁交付可工作的软件,不断调整和优化项目方向,以满足客户的需求。这种开发方式鼓励面对不确定性,...

    软件开发设计外文翻译--软件开发概念和设计方法.doc

    随着对软件开发过程理解的加深,设计方法也在不断进化,以适应技术进步和开发流程的变化。早期的设计方法主要关注开发过程的特定阶段,而现在的方法则试图覆盖软件开发的整个生命周期。设计方法通常按照引入时期和...

    敏捷软件开发之Scrum实践

    随着市场和技术的快速发展,传统的瀑布式软件开发模式已经难以满足当前项目管理和产品迭代的需求。为了应对日益增加的变化和不确定性,一种更加灵活和高效的开发模式——敏捷开发,应运而生。其中,Scrum作为敏捷...

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

    - **定义**:软件工程是一门专注于管理和优化软件开发过程的学科。 - **目标**:提升软件产品的质量和开发效率。 2. **基本原则**: - **可靠性**:确保软件在不同条件下稳定运行。 - **可维护性**:便于理解、...

    敏捷开发相关内容的ppt

    敏捷开发是一种轻量级的项目管理和软件开发方法论,它强调快速响应变化、持续交付可用的软件产品、加强团队之间的协作以及追求持续改进。相较于传统的瀑布式开发模式,敏捷开发更注重灵活性和高效性。 **敏捷开发的...

    软件过程与管理期末复习知识点整理-西交宋永红软件过程与管理

    - **合并产品和过程**:将产品的开发和维护流程整合。 - **过程分解**:细化每个开发阶段的具体步骤。 ##### 项目 - **避免软件项目发生危险**:实施风险管理、保持沟通透明等。 #### 六、过程度量与项目度量 ###...

    软件开发设计外文翻译-软件开发概念和设计方法大学论文.doc

    总之,软件开发的概念和设计方法经历了从早期的盲目应用到工程化、结构化的过程,再到如今的敏捷、面向对象和模型驱动的演变。随着技术和实践的不断进步,软件设计方法将持续创新,以满足日益复杂的软件需求和不断...

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

    在当今快速变化的商业环境中,软件开发方法论必须不断进化以适应需求的快速迭代和不确定性。敏捷软件开发就是这种演变的产物,它强调灵活性、协作和客户满意度。《敏捷软件开发:原则、模式与实践(C#版)》这本书由...

    《软件工程》复习题1

    《软件工程》复习题涵盖了软件工程的多个关键领域,包括软件开发的基础、项目管理、软件过程、软件开发、面向对象方法以及软件测试和敏捷方法。以下是对这些主题的详细解析: 1. **软件工程克服软件危机**:软件...

Global site tag (gtag.js) - Google Analytics