古人云:“运筹帷幄之中,决胜千里之外。”一次成功的软件开发,制订完善的项目计划是决定性的第一步,迭代式开发更是如此。前面我们提到,迭代式开发与传统开发方式差异不小,迭代式开发其过程更加复杂,协调各方协同工作的步骤也就更多。
迭代式开发的特点就是迭代,在每个迭代期都包含需求分析、设计、开发、测试。因此,迭代式开发从一开始就要求开发中的各方人员,需求分析员、设计师、开发人员与测试人员,几乎同时开工。如何组织协调呢?另外,整个开发过程被划分为一个又一个的迭代期,那么,如何将所有的工作合理分配到每个迭代期里呢?这些都是一个迭代式开发项目计划必须考虑的问题。
那么,我们应当如何制订迭代式开发的项目计划呢?制订计划前的分析是其关键之所在。
我们采用迭代式开发的目的就是希望我们的开发获得成功。一次成功的软件开发主要需要解决的是三个问题:“What is needed, on time, on budget.”也就是需求、时间与经费。客户看待一套软件是否成功,就是三个标准:功能是否满足需求,是否按期交付,耗费的经费是否在预算内。功能是否满足需求,是在迭代开发整个过程中逐步解决的问题,而开发周期与经费预算却是软件开发初期的项目计划中就必须考虑清楚的问题。
工作量评估是预计开发周期与人员投入、制订经费预算的关键步骤。将软件划分为若干模块,将模块划分为若干功能,再将功能划分为若干项工作,仔细评估每项工作的工作量。合计每一项工作的工作量,就是整个项目的工作量。但实际的工作量评估并非如此简单,后面将会深入讨论。
工作量评估的直接作用就是评估开发周期与人员投入。一般认为开发周期与人员投入成比例,其实是一种误解。增加人员投入并非能够缩短开发周期。随着人员的增加,培训、沟通、协调的成本都将会增大。用户期望的开发周期与可以投入的人员是一对矛盾,最终需要寻找一个平衡点,当然这也是与客户反复讨论的过程。有时,当这对矛盾无法协调时,分期开发也许是一个不错的选择,毕竟客户始终是希望软件系统尽可能早地上线使用。最后,当开发周期与人员投入确定下来时,经费预算也就是计算出来了。
为每一项工作评估工作量的另一个重要作用就是将工作合理分配到各个迭代期中。迭代开发,迭代期就如同一个又一个的格子,而评估后的每一项工作就如同一颗又一颗大小不一的石子,被投放到每一个格子中。而它们孰先孰后,则是由工作的优先级决定的。靠近主营业务的、用户使用频率高的,优先级高;远离主营业务的、用户使用频率低的,优先级低。优先级决定了工作安排的顺序,它是制订计划前分析的另一个重要内容。
总之,迭代开发始于完备的项目计划,完备的项目计划的关键在于计划制订前的分析,也就是分解后的工作项目列表,及其工作量评估与优先级评估。
一次迭代式开发的研究:软件开发的风险
一次迭代式开发的研究:什么是迭代式开发
一次迭代式开发的研究:怎样进行迭代式开发
一次迭代式开发的研究:迭代开发从这里开始
一次迭代式开发的研究:准确的工作量评估
一次迭代式开发的研究:功能的优先级评估
一次迭代式开发的研究:一个迭代式项目计划
一次迭代式开发的研究:开始真正的工作
一次迭代式开发的研究:从容应对需求变更
一次迭代式开发的研究:需求变更的关键步骤
一次迭代式开发的研究:Where you are
(续)
分享到:
相关推荐
每次迭代时,都会从当前点出发,随机选择一个顶点,并朝向该顶点移动一定比例的距离。这个比例通常设定为0.5,这使得每一步都处于上一步与选定顶点之间的中点。通过重复这个过程数千乃至数百万次,最终会在屏幕上...
2. **信息量确定**:在每一次迭代过程中,算法根据信息量来确定解所在的子区域。这里的“信息量”可以理解为每个子区域的重要性或者吸引力,通常通过历史解的质量和数量来评估。 3. **解的具体值确定**:一旦确定...
- **Perl Conference Anecdote**:雷蒙德还讲述了在一次Perl会议上发生的趣事,展示了开源社区内部的活力和创造力。 #### 结论 《大教堂与集市》不仅是一篇关于软件开发模式的文章,更是对开源文化的赞美和推广。它...
1. **uniapp**:uniapp是一款基于Vue.js的多端开发框架,它允许开发者编写一次代码,就可以发布到iOS、Android、Web(H5)、以及各种小程序(微信/支付宝/百度/钉钉/QQ等)。在uniapp中,你需要理解Vue.js的基础语法...
4. **路径优化**:多次迭代后,算法会选择最优路径作为车辆的行驶路线。 5. **结果分析**:比较不同迭代次数下的路径,评估算法性能。 标签中的“软件/插件”提示可能有相关的MATLAB工具箱或自定义函数用于实现蚁群...
总的来说,本研究利用SolidWorks的二次开发能力,结合Access数据库和C++编程,创建了一款插件,实现了生化分析仪加样臂设计的高效和灵活。这种方法减少了设计迭代的时间,提高了设计精度,对于复杂的机械部件设计...
2. **非线性方程的定义**:非线性方程是指其解不能表示为变量的一次幂的方程。这类方程的求解通常比线性方程更复杂,因为它们可能没有解析解或者解析解很难找到。 3. **TLAB工具箱**:TLAB可能是“Tall Arrays Lab...
6. **F = 开始 → 计划 → 实施 → 结束**:通过这个函数关系式,我们可以看到项目管理的基本流程,即从项目启动开始,经过计划、实施最后到达结束阶段。 7. **项目周期 = 产品周期 - 运维阶段 + 立项 - 消亡 + ...
此项目适用于毕业设计、教学实践或个人项目开发,它结合了微信小程序的技术栈与数据库管理,提供了完整的源码,以便开发者进行二次开发或学习。 1. **微信小程序开发基础**: 微信小程序是一种无需安装即可使用的...
此外,压缩包中的“572”可能指的是一个项目编号或者版本号,这表明源码可能是一个特定项目的一部分,或者经过了多次迭代和改进。 综合来看,这个压缩包提供的源码是学习和实践HTML5、CSS3和JavaScript响应式设计的...
在函数式编程中,迭代器是一种处理数据流的抽象,它接收一个数据源并应用一系列操作。"猫的CoreIteratees"可能是项目中的一个子模块或者类库,用于提供核心的迭代器功能。"猫"在这里可能是项目的一个代号或者内部...
2. **定制化**:源码可以作为基础,根据需求进行二次开发,如增加关卡设计、社交功能等。 3. **降低成本**:购买或授权源码相比从零开始编写,可以节省大量人力物力成本。 4. **学习借鉴**:对于学习游戏开发的...
该问题描述了一个旅行商需要访问n个城市,并且每个城市只能访问一次,最后返回起点,目标是找到一条最短的路线。这个问题在实际应用中广泛出现,例如物流配送、电路设计等领域。 在这个"TSP.rar"压缩包中,包含的是...
5. **第215版**:这个版本号表明项目已经经过多次迭代和优化,修复了之前的问题,比如“改进了之前的滚动条指示针BUG”。这反映了软件工程中的持续改进过程,开发者不断修复问题,提升用户体验。 在压缩包中的...
他们可能进行了多次迭代,每次迭代都包含了需求分析、设计、编码、测试和评估阶段,以确保每个功能的完善和优化。 总结来说,“Git-Precita-Eyes”案例展示了如何利用Git进行高效协作,以及HTML在创建现代网页中的...
非线性方程是那些无法表示为变量的一次幂之和的方程。它们广泛存在于物理、化学、工程和经济等领域,解决非线性问题对于理解和预测复杂系统的行为至关重要。 2. **MATLAB中的数值方法**: MATLAB提供了多种数值...
模拟退火法是一种启发式搜索算法,源自固体物理中的退火过程,被广泛应用于解决复杂的优化问题,包括整数非线性规划问题。在MATLAB环境中,我们可以利用编程技巧实现这种算法。以下是对该主题的详细说明: 1. **...
旅行商问题(Traveling Salesman Problem,简称TSP)是一个经典的组合优化问题,它询问的是一个旅行商如何访问n个城市,并且每个城市只访问一次,然后返回起点,使得总行程最短。这个问题在计算机科学和运筹学中有着...
"StyleControls420"可能是这套控件库的版本号或者是特定的标识,暗示这是一次更新或改进。通常,随着版本的迭代,控件会增加新的功能,修复已知问题,并提高性能。在这个版本中,我们可能会找到一套完善且经过优化的...
2. **生成器**:提供迭代器生成指定范围内的组合或排列,避免一次性存储所有结果导致的内存问题。 3. **递归与非递归算法**:提供了多种计算方法,包括经典的卡特兰数、斯特林数等。 4. **二项式系数**:快速计算...