迭代软件开发流程精编WORD版
软件开发流程

软件开发流程软件开发是一个复杂而又精密的过程,它需要开发团队的协同合作,以及严谨的流程管理。
在软件开发的过程中,一个完整的开发流程可以帮助团队高效地完成项目,保证软件质量,减少开发周期,降低开发成本。
下面将介绍一般软件开发流程的主要步骤。
首先,软件开发流程的第一步是需求分析。
在这一阶段,开发团队需要与客户充分沟通,了解客户的需求和期望。
通过调研和分析,明确软件的功能模块、性能要求、用户界面等方面的需求,为后续的开发工作奠定基础。
接着,是系统设计阶段。
在这一阶段,开发团队将根据需求分析的结果,对软件系统进行整体设计。
包括系统架构设计、模块划分、数据结构设计等。
设计阶段的目标是明确系统的整体框架,为后续的编码和测试工作提供指导。
然后,是编码阶段。
在这一阶段,开发团队将根据系统设计的结果,进行具体的编码工作。
开发人员需要根据设计文档,编写代码实现系统的各项功能。
在编码的过程中,需要严格遵守编码规范,保证代码的质量和可维护性。
紧接着是测试阶段。
在这一阶段,开发团队将对编码完成的软件进行各种测试,包括单元测试、集成测试、系统测试等。
测试的目的是发现和解决软件中的缺陷和问题,保证软件的稳定性和可靠性。
最后,是部署和维护阶段。
在这一阶段,开发团队将完成的软件部署到生产环境中,让用户开始使用。
同时,团队需要对软件进行维护和升级,及时修复软件中出现的问题,确保软件长期稳定运行。
总的来说,软件开发流程是一个系统工程,需要各个环节的紧密配合和协同合作。
只有严格按照规定的流程进行,才能保证软件开发的顺利进行,最终交付高质量的软件产品。
在实际的软件开发过程中,开发团队还需要根据具体的项目情况,对流程进行灵活调整和优化,以适应不同的需求和变化。
迭代开发流程

迭代开发流程Iterative development process is a crucial aspect of the software development lifecycle. It involves breaking down a project into smaller, more manageable chunks or iterations, each of which results in a working piece of software. This approach allows for frequent adjustments and improvements based on feedback received from stakeholders and end users. 迭代开发流程是软件开发生命周期的重要组成部分。
它包括将项目分解为更小、更易管理的块或迭代,每个迭代都会产生一个可工作的软件部分。
这种方法允许根据来自利益相关者和最终用户的反馈频繁进行调整和改进。
One of the key advantages of iterative development is the ability to adapt to changing requirements and priorities. By focusing on delivering functional increments of the software, teams can quickly respond to new information and make necessary adjustments without disrupting the entire project. This flexibility is especially valuable in today's fast-paced and dynamic business environment. 迭代开发的一个关键优势在于能够适应不断变化的要求和优先级。
软件的开发流程

软件的开发流程软件开发是一个复杂而又精密的过程,它需要经历多个阶段和环节,才能最终完成一款功能完善、稳定可靠的软件产品。
在软件开发的过程中,开发团队需要遵循一定的开发流程,以确保项目能够按时交付,并且达到客户的需求。
下面将详细介绍软件的开发流程。
首先,软件开发的第一步是需求分析阶段。
在这个阶段,开发团队需要与客户充分沟通,了解客户对软件的需求和期望。
开发团队需要收集、整理和分析客户提出的各种需求,包括功能需求、性能需求、安全需求等。
通过需求分析,确定软件开发的目标和范围,为后续的开发工作奠定基础。
接下来是软件设计阶段。
在这个阶段,开发团队将根据需求分析的结果,进行软件的整体架构设计和详细设计。
整体架构设计包括确定软件的模块划分、模块之间的关系和数据流程等;详细设计则包括具体的算法设计、数据结构设计、界面设计等。
设计阶段的工作是将需求转化为可执行的计划和方案,为后续的编码和测试工作提供指导和依据。
然后是软件的编码阶段。
在这个阶段,开发团队根据设计文档,进行具体的编码工作。
编码阶段需要严格遵循设计规范和编程规范,保证编写的代码结构清晰、逻辑严谨、易于维护。
同时,开发团队需要进行代码的版本管理和文档的编写,确保代码的可追溯性和可维护性。
接着是软件的测试阶段。
在这个阶段,开发团队对编写完成的软件进行各种测试,包括单元测试、集成测试、系统测试等。
测试阶段的目标是发现和解决软件中存在的缺陷和问题,保证软件的质量和稳定性。
测试工作需要充分覆盖各种测试场景和测试用例,确保软件在各种情况下都能正常运行。
最后是软件的部署和维护阶段。
在这个阶段,开发团队将软件部署到客户的环境中,并进行相关的培训和文档的交付。
同时,开发团队需要及时响应客户的反馈和问题,进行软件的维护和升级。
部署和维护阶段是软件开发的最后一个环节,也是软件能否成功应用的关键所在。
综上所述,软件的开发流程包括需求分析、设计、编码、测试、部署和维护等多个阶段。
软件产品开发流程:从设计到迭代的实践演练

软件产品开发流程:从设计到迭代的实践演练软件产品开发是一个复杂的过程,需要经历从设计到迭代的多个阶段。
本文将详细介绍软件产品开发的流程,并重点关注实践演练。
一、需求分析软件产品开发的第一步是需求分析。
在这个阶段,开发团队与客户合作,详细了解客户的需求和期望。
建立一个清晰的需求文档是至关重要的,它将定义软件的功能、特性和用户界面。
实践演练:在这个阶段,开发团队与客户进行面对面的会议,并使用例如用户故事和原型等工具来收集和整理需求。
开发团队可以提出问题,澄清模糊的需求,并寻找解决方案。
二、架构设计在需求分析阶段之后,开发团队将制定软件的整体架构设计。
这是一个重要的阶段,决定了软件的可扩展性、性能和安全性。
实践演练:开发团队将使用设计工具和技术来创建一个详细的架构设计文档。
这将包括系统的各个组件和它们之间的交互。
开发团队还将考虑到软件的性能和可扩展性,以确保它能够应对未来的需求。
三、开发在架构设计完成之后,开发团队将开始编码和开发软件。
他们会使用选择的编程语言和开发工具来实现软件的功能和特性。
实践演练:在开发过程中,开发团队将遵循软件工程的最佳实践。
他们会使用版本控制系统来跟踪代码的变化,并进行团队协作。
开发团队还将使用测试驱动开发(TDD)的方法来编写单元测试,并确保软件的质量。
四、测试一旦软件开发完成,测试团队将开始对软件进行测试。
测试的目的是发现和修复任何错误和缺陷,并确保软件的质量和稳定性。
实践演练:测试团队将使用不同类型的测试方法,如单元测试、集成测试和系统测试。
他们将使用测试工具和技术来模拟真实用户的行为,并验证软件是否按照预期工作。
测试团队还将与开发团队密切合作,确保错误被及时修复。
五、部署在测试通过之后,软件将被部署到生产环境中。
这是一个关键的阶段,需要确保软件在用户环境中的稳定性和可用性。
实践演练:开发团队将在生产环境中进行部署,并与运维团队合作,确保软件的正确安装和配置。
他们还将与用户进行培训,以确保用户能够正确使用软件。
软件开发流程

软件开发流程软件开发是一个复杂且多阶段的过程,通过一系列的步骤和活动来完成软件产品的设计、编码、测试和交付。
在软件开发过程中,开发团队需要严格按照事先规定的流程来组织和安排工作,以确保项目的顺利进行和最终的成功交付。
本文将探讨软件开发的一般流程,并介绍每个阶段的主要活动和重点。
一、需求分析阶段在软件开发的初期阶段,需求分析是一个至关重要的环节。
在这个阶段,开发团队与客户密切合作,明确和整理客户的需求和期望。
主要活动包括需求收集、需求分析和需求规格说明书的编写。
开发团队必须充分理解客户的业务需求,在详细的需求规格说明书中准确地记录下来,为后续的设计和开发提供有效的参考。
二、设计阶段设计阶段是软件开发流程中的核心环节之一。
在这个阶段,开发团队根据需求分析阶段的结果,制定出合适的软件架构和设计方案。
主要活动包括系统设计、详细设计和界面设计等。
开发团队需要根据功能需求和性能要求,选择合适的技术方案和设计模式,确保系统具有良好的可扩展性和可维护性。
三、编码阶段在设计阶段完成后,开发团队将根据设计文档和规范进行编码工作。
开发人员需要根据需求和设计要求,使用编程语言和开发工具来实现各个模块的功能。
编码阶段要注意编写规范的代码,并进行适当的单元测试,以保证代码的质量和功能的正确性。
四、测试阶段测试是软件开发过程中的一项重要活动,旨在发现和修复潜在的问题和缺陷。
测试阶段包括单元测试、集成测试和系统测试等不同层次和范围的测试活动。
开发团队需要编写测试用例,并使用相应的测试工具来验证软件的功能和性能。
通过不断进行测试和修复,确保软件的质量和稳定性。
五、部署和维护阶段在经过测试和修复后,软件开发团队将软件部署到目标环境中。
在部署阶段,开发团队需要确保软件能够正确地安装和配置,并进行必要的数据迁移和系统集成工作。
一旦软件正式投入使用,维护阶段开始。
在维护阶段,开发团队将负责软件的日常运行和故障处理,根据用户反馈和需求变更进行相应的更新和修复。
软件开发迭代计划【论迭代式软件开发过程与方法】

软件开发迭代计划【论迭代式软件开发过程与方法】传统的软件开发模型――瀑布式过程模型,将软件生命周期划分为可行性分析、需求分析、软件设计、代码编写、软件测试和运行维护等六个基本活动。
该模型给出了一个固定的顺序,将生存期活动从上一个阶段向下一个阶段逐级过渡,如同瀑布流水,最终得到所开发的软件产品,投入使用。
瀑布模型强调文档的作用,并要求每个阶段都要仔细验证。
但是,这种模型的线性过程太理想化,已不再适合现代的软件开发模式,几乎被业界抛弃,其主要问题在于:1.需求或设计中的错误往往只有到了项目后期才能够被发现;2.对于项目风险的控制能力较弱;3.软件项目常常延期完成或开发费用超出预算;4.项目管理人员专注于文档的完成和审核来估计项目的进展情况。
在软件开发的早期阶段就想完全、准确捕获用户的需求几乎是不可能的。
我们经常遇到的问题是需求在整个软件开发工程中经常会改变。
迭代式开发允许在每次迭代过程中需求可能有变化,通过不断精化来加深对问题的理解。
与传统的瀑布过程模型相比较,迭代过程具有以下优点:1.允许变更需求;2.逐步集成元素;3.尽早降低风险;4.有助于提高团队的士气;5.生成更高质量的产品;6.保证项目开发进度。
RUP(统一开发过程)是目前主要的迭代式开发过程和方法之一。
根据迭代计划的安排,典型的迭代策略模式通常有以下四种:1.增量式(Incremental)这种模式的特点是项目架构的风险较小(往往是开发一些重复性的项目),所以精化阶段只需要一个迭代。
但项目的开发工作量较大,构建阶段需要有多次迭代来实现,每次迭代都在上一次迭代的基础上增加实现一部分的系统功能。
2.演进式(Evolutionary)当项目架构的风险较大时(从未开发过类似项目),需要在精化阶段通过多次迭代来建立系统的架构,架构是通过多次迭代的探索,逐步演化而来的。
当架构建立时,往往系统的功能也已经基本实现,所以,构建阶段只需要一次迭代。
3.增量提交(Incremental Delivery)这种模式的特点是产品化阶段的迭代较多,比较常见的例子是项目的难度并不大,但业务需求在不断地发生变化,所以需要通过迭代来不断地部署完成的系统;但同时又要不断地收集用户的反馈来完善系统的需求,并通过后续的迭代来补充实现这些需求。
软件开发流程

软件开发流程在现代科技社会中,软件开发成为了一个不可或缺的过程。
无论是开发一个小型应用程序,还是一个大型软件系统,都需要经历一系列固定的流程。
本文将介绍软件开发的一般流程,帮助读者了解软件开发的步骤和重要环节。
需求分析阶段软件开发的第一步是需求分析阶段。
在这个阶段,软件开发团队与客户合作,明确软件的需求和目标。
通过与客户交流、访谈和分析,团队可以确定软件所需的功能、性能、界面设计和其他限制条件。
将需求文档编制成明确的规范,以便开发人员理解和遵循。
技术设计阶段在需求分析阶段确定需求后,接下来是技术设计阶段。
开发团队将根据需求文档创建软件架构和设计。
这包括确定软件的模块组成、功能分配和数据结构。
设计阶段的目标是确保软件的可靠性、可扩展性和可维护性。
通过设计文档,开发人员可以指导编码和测试过程。
编码阶段在技术设计阶段完成后,开发人员将根据设计文档开始编码。
他们使用编程语言和开发工具来实现软件的各个功能模块。
在编码过程中,开发人员应遵循编码规范和代码管理原则。
他们应使用注释来解释代码逻辑和功能,以便其他开发人员能够理解和修改代码。
测试阶段编码完成后,软件进入测试阶段。
测试团队将根据需求文档和设计文档创建测试用例。
他们将使用不同的测试方法和工具,检查软件的功能是否符合预期,是否存在缺陷和错误。
测试阶段的目标是发现和修复所有问题,确保软件的质量和稳定性。
部署和实施阶段通过测试阶段的确认,软件将进入部署和实施阶段。
在这个阶段,软件将被安装和配置到最终用户的环境中。
部署团队将处理软件的安装、数据迁移和用户培训等任务。
他们还将确保软件与现有系统及其他外部环境的兼容性。
维护和升级阶段软件开发流程的最后一个阶段是维护和升级阶段。
一旦软件被部署并交付给用户,可能会出现新的需求、错误或改进。
在这种情况下,开发团队将根据用户的反馈和需求变更进行维护和升级。
维护包括诊断和修复错误,升级包括添加新功能或改进现有功能。
总结软件开发流程是一个复杂而有序的过程,需要注意每个步骤的细节和规范。
迭代流程(操作性极强)

迭代流程(操作性极强)本文档旨在介绍迭代流程的操作性极强的步骤和注意事项。
迭代是一种有效的项目管理方法,能够帮助团队高效地完成任务并持续改进。
1. 定义项目目标和范围在开始迭代之前,首先需要明确项目的目标和范围。
这包括确定项目的关键目标和可测量的绩效指标,以及明确项目的边界和所需资源。
2. 制定迭代计划制定迭代计划是确保项目按时完成的关键步骤之一。
迭代计划应包括以下内容:- 确定迭代的时间框架:明确每个迭代的开始和结束日期。
- 确定迭代的目标:明确每个迭代的具体目标,使其与项目目标相对应。
- 制定迭代计划:确定每个迭代中需要完成的任务、分配资源和时间表。
3. 执行迭代计划在执行迭代计划期间,团队成员应积极参与,并按照计划完成各项任务。
团队应保持良好的沟通和协作,及时解决遇到的问题,并调整计划以应对任何变更或挑战。
4. 进行评估和回顾每个迭代结束后,团队应进行评估和回顾,以评估迭代的效果并确定改进的机会。
这包括与项目目标和范围进行比较,识别成功之处和需改进之处,并制定相应的行动计划。
5. 改进和优化根据评估和回顾的结果,团队应对迭代过程进行改进和优化。
这可能包括调整迭代计划、优化资源分配、改进沟通和协作方式等。
团队应保持持续的改进意识,并根据实际情况进行调整。
注意事项- 确保迭代计划的合理性和可行性,避免过于复杂或不切实际的任务安排。
- 在迭代过程中保持良好的沟通和协作,及时解决问题,并确保团队成员的参与和支持。
- 定期进行评估和回顾,对迭代的效果进行客观评估,并及时调整和改进。
- 维持持续改进的意识,不断寻找优化迭代过程的机会,并灵活调整计划和策略。
以上是迭代流程的操作性极强的步骤和注意事项。
通过遵循这些步骤和注意事项,您可以更加高效地执行项目,并持续改进项目成果。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
迭代软件开发流程精编W O R D版IBM system office room 【A0816H-A0912AAAHH-GX8Q8-GNTHHJ8】1. 传统开发流程的问题?传统的软件开发流程是一个文档驱动的流程,它将整个软件开发过程划分为顺序相接的几个阶段,每个阶段都必需完成全部规定的任务(文档)后才能够进入下一个阶段。
如必须完成全部的系统需求规格说明书之后才能够进入概要设计阶段,编码必需在系统设计完成之后才能够进行。
这就意味着只有当所有的系统模块全部开发完成之后,我们才进行系统集成,对于一个由上百个模块组的复杂系统来说,这是一个非常艰巨而漫长的工作。
随着我们所开发的软件项目越来越复杂,传统的瀑布型开发流程不断地暴露出以下问题:需求或设计中的错误往往只有到了项目后期才能够被发现例如:系统交付客户之后才发现原先对于需求的理解是错误的,系统设计中的问题要到测试阶段才能被发现。
对于项目风险的控制能力较弱项目风险在项目开发较晚的时候才能够真正降低,往往是经过系统测试之后,才能确定该设计是否能够真正满足系统需求。
软件项目常常延期完成或开发费用超出预算项目开发进度往往会被意外发生的问题所打乱,需要进行返工或其他一些额外的开发周期,造成项目延期或费用超支。
项目管理人员专注于文档的完成和审核来估计项目的进展情况所以项目经理对于项目状态的估计往往是不准确的,当他回答系统已完成了80%的开发任务时,剩下20%的开发任务实际上消耗的是整个项目80%的开发资源。
在传统的瀑布模型中,需求和设计中的问题是无法在项目开发的前期被检测出来的,只有当第一次系统集成时,这些设计缺陷才会在测试中暴露出来,从而导致一系列的返工:重新设计、编码、测试,进而导致项目的延期和开发成本的上升。
2. 采用迭代化开发控制项目风险?为了解决传统软件开发流程中的问题,我们建议采用迭代化的开发方法来取代瀑布模型。
在瀑布模型中,我们要完成的是整个软件系统开发这个大目标。
在迭代化的方法中,我们将整个项目的开发目标划分成为一些更易于完成和达到的阶段性小目标,这些小目标都有一个定义明确的阶段性评估标准。
迭代就是为了完成一定的阶段性目标而所从事的一系列开发活动,在每个迭代开始前都要根据项目当前的状态和所要达到的阶段性目标制定迭代计划,整个迭代过程包含了需求、设计、实施(编码)、部署、测试等各种类型的开发活动,迭代完成之后需要对迭代完成的结果进行评估,并以此为依据来制定下一次迭代的目标。
与传统的瀑布式开发模型相比较,迭代化开发具有以下特点:允许变更需求需求总是会变化,这是事实。
给项目带来麻烦的常常主要是需求变化和需求"蠕变",它们会导致延期交付、工期延误、客户不满意、开发人员受挫。
通过向用户演示迭代所产生的部分系统功能,我们可以尽早地收集用户对于系统的反馈,及时改正对于用户需求的理解偏差,从而保证开发出来的系统真正地解决客户的问题。
逐步集成元素在传统的项目开发中,由于要求一下子集成系统中所有的模块,集成阶段往往要占到整个项目很大比例的工作量(最高可达40%),这一阶段的工作经常是不确定并且非常棘手。
在迭代式方法中,集成可以说是连续不断的,每一次迭代都会增量式集成一些新的系统功能,要集成的元素都比过去少得多,所以工作量和难度都是比较低的。
尽早降低风险迭代化开发的主要指导原则就是以架构为中心,在早期的迭代中所要解决的主要问题就是尽快确定系统架构,通过几次迭代来尽快地设计出能够满足核心需求的系统架构,这样可以迅速降低整个项目的风险。
等到系统架构稳定之后,项目的风险就比较低了,这个时候再去实现系统中尚未完成的功能,进而完成整个项目。
有助于提高团队的士气开发人员通过每次迭代都可以在短期内看到自己的工作成果,从而有助于他们增强信心,更好地完成开发任务。
而在非迭代式开发中,开发人员只有在项目接近尾声时才能看到开发的结果,在此之前的相当长时间,大家还是在不确定性中摸索前近。
生成更高质量的产品每次迭代都会产生一个可运行的系统,通过对这个可运行系统进行测试,我们在早期的迭代中就可以及时发现缺陷并改正,性能上的瓶颈也可以尽早发现并处理。
因为在每次迭代中总是不断地纠正错误,我们可以得到更高质量的产品。
保证项目开发进度每次迭代结束时都会进行评估,来判断该次迭代有没有达到预定的目标。
项目经理可以很清楚地知道有哪些需求已经实现了,并且比较准确地估计项目的状态,对项目的开发进度进行必要的调整,保证项目按时完成。
容许产品进行战术改变迭代化的开发具有更大的灵活性,在迭代过程中可以随时根据业务情况或市场环境来对产品的开发进行调整。
例如为了同现有的同类产品竞争,可以决定采用抢先竞争对手一步的方法,提前发布一个功能简化的产品。
迭代流程自身可在进行过程中得到改进和精炼一次迭代结束时的评估不仅要从产品和进度的角度来考察项目的情况,而且还要分析组织和流程本身有什么待改进之处,以便在下次迭代中更好地完成任务。
迭代化方法解决的主要是对于风险的控制问题,从下图可以看出,传统的开发流程中系统的风险要到项目开发的后期(主要是测试阶段)才能够被真正降低。
而迭代化开发中的风险,可以在项目开发的早期通过几次迭代来尽快地解决掉。
在早期的迭代中一旦遇到问题,如某一个迭代没有完成预定的目标,我们还可以及时调整开发进度以保证项目按时完成。
一般到了项目开发的后期(风险受控阶段),由于大部分高风险的因素(如需求、架构、性能等)都已经解决,这时候只需要投入更多的资源去实现剩余的需求即可。
这个阶段的项目开发具有很强的可控性,从而保证我们按时交付一个高质量的软件系统。
迭代化开发不是一种高深的软件工程理论,它提供了一种控制项目风险的非常有效的机制。
在日常的工作我们也经常地应用到这一基本思想,如对于一个非常大型的工程项目,我们经常会把它分为几期来分步实施,从而把复杂的问题分解为相对容易解决的小问题,并且能够在较短周期内看到部分系统实现的效果,通过尽早暴露问题来帮助我们及早调整我们的开发资源,加强项目进度的可控程度,保证项目的按时完成。
3. 管理迭代化的软件项目?当我们在实际工作中实践迭代化思想时,Rational统一开发流程RUP(Rational Unified Process)可以给予我们实践的指导。
RUP是一个通用的软件流程框架,它是一个以架构为中心、用例驱动的迭代化软件开发流程。
RUP是从几千个软件项目的实践经验中总结出来的,对于实际的项目具有很强的指导意义,是软件开发行业事实上的行业标准。
3.1 软件开发的四个阶段?在RUP中,我们把软件开发生命周期划分为四个阶段,每个阶段的结束标志就是一个主要的里程碑(如下图所示)。
这四个阶段主要是为了达到以下阶段性的目标里程碑:先启(Inception):确定项目开发的目标和范围精化(Elaboration):确定系统架构和明确需求构建(Construction):实现剩余的系统功能产品化(Transition):完成软件的产品化工作,将系统移交给客户每个目标里程碑都是一个商业上的决策点,如先启阶段结束之后,我们就要决定这个项目是否可行、是否要继续做这个项目。
每一个阶段都是由里程碑来决定的,判断一个阶段是否结束的标志就是看项目当前的状态是否满足里碑中所规定的条件。
从这种阶段划分模式中可以看出,项目的主要风险集中在前两个阶段。
在精化阶段中经过几次迭代后,我们要为系统建立一个稳定的架构,在此之后再实现更多的系统需求时,不再需要对该架构进行修改。
同时,在精化阶段中,我们通过迭代来不断地收集用户的需求反馈,便得系统的需求逐步地明确和完整。
3.2 关于开发资源的分配?基于 RUP风险驱动的迭代化开发模式,我们只需要在项目的先启阶段投入少量的资源,对项目的开发前景和商业可行性进行一些探索性的研究。
在精化阶段再投入多一些的研发力量来实现一些与架构相关的核心需求,逐步地把系统架构搭建起来。
等到这两个阶段结束之后,项目的一些主要风险和问题也得到了解决,这时候再投入整个团队进行全面的系统开发。
等到产品化阶段,主要的开发任务已经全部完成,项目不再需要维持一个大规模的开发团队,开发资源也可以随之而减少。
在项目开发周期中,开发资源的分配可以如下图所示。
这样安排可以最充分有效地利用公司的开发资源,缓解软件公司对于人力资源不断增长的需求,从而降低成本。
另外一方面,由于前两个阶段(先启和精化)的风险较高,我们只是投入部分的资源,一旦发生返工或是项目目标的改变,我们也可以将资源浪费降到最低点。
在传统的软件开发流程中,对于开发资源的分配基本上是贯穿整个项目周期而不变的,资源往往没有得到充分有效地利用。
基于这种资源分配模式,一个典型的项目在项目进度和所完成的工作量之间的关系可能如下表中的数据所示。
先启精化构建产品化工作量~5%20%65%10%进度10%30%50%10%3.3 迭代策略?关于迭代计划的安排,通常有以下四种典型的策略模式:增量式(Incremental)这种模式的特点是项目架构的风险较小(往往是开发一些重复性的项目),所以精化阶段只需要一个迭代。
但项目的开发工作量较大,构建阶段需要有多次迭代来实现,每次迭代都在上一次迭代的基础上增加实现一部分的系统功能,通过迭代的进行而逐步实现整个系统的功能。
演进式(Evolutionary)当项目架构的风险较大时(从未开发过类似项目),需要在精化阶段通过多次迭代来建立系统的架构,架构是通过多次迭代的探索,逐步演化而来的。
当架构建立时,往往系统的功能也已经基本实现,所以构建阶段只需要一次迭代。
增量提交(Incremental Delivery)这种模式的特点产品化阶段的迭代较多,比较常见的例子是项目的难度并不大,但业务需求在不断地发生变化,所以需要通过迭代来不断地部署完成的系统;但同时又要不断地收集用户的反馈来完善系统需求,并通过后续的迭代来补充实现这些需求。
应用这种策略时要求系统架构非常稳定,能够适应满足后续需求变化的要求。
单次迭代(Grand Design)传统的瀑布模型可以看作是迭代化开发的一个特例,整个开发流程只有一次迭代。
但这种模式有一个固有的弱点,由于它对风险的控制能力较差,往往会在产品化阶段产生一些额外的迭代,造成项目的延误。
这几种迭代策略只是一些典型模式的代表,实际应用中应根据实际情况灵活应用,最常见的迭代计划往往是这几种模式的组合。
3.4 制定项目开发计划?在迭代化的开发模式中,项目开发计划也是随着项目的进展而不断细化、调整并完善的。
传统的项目开发计划是在项目早期制定的,项目经理总是试图在项目的一开始就制定一个非常详细完善的开发计划。
与之相反,迭代开发模式认为在项目早期只需要制定一个比较粗略的开发计划,因为随着项目的进展,项目的状态在不断地发生变化,项目经理需要随时根据迭代的结果来对项目计划进行调整,并制定下一次迭代的详细计划。