古人云:“运筹帷幄之中,决胜千里之外。”一次成功的软件开发,制订完善的项目计划是决定性的第一步,迭代式开发更是如此。前面我们提到,迭代式开发与传统开发方式差异不小,迭代式开发其过程更加复杂,协调各方协同工作的步骤也就更多。
迭代式开发的特点就是迭代,在每个迭代期都包含需求分析、设计、开发、测试。因此,迭代式开发从一开始就要求开发中的各方人员,需求分析员、设计师、开发人员与测试人员,几乎同时开工。如何组织协调呢?另外,整个开发过程被划分为一个又一个的迭代期,那么,如何将所有的工作合理分配到每个迭代期里呢?这些都是一个迭代式开发项目计划必须考虑的问题。
那么,我们应当如何制订迭代式开发的项目计划呢?制订计划前的分析是其关键之所在。
我们采用迭代式开发的目的就是希望我们的开发获得成功。一次成功的软件开发主要需要解决的是三个问题:“What is needed, on time, on budget.”也就是需求、时间与经费。客户看待一套软件是否成功,就是三个标准:功能是否满足需求,是否按期交付,耗费的经费是否在预算内。功能是否满足需求,是在迭代开发整个过程中逐步解决的问题,而开发周期与经费预算却是软件开发初期的项目计划中就必须考虑清楚的问题。
工作量评估是预计开发周期与人员投入、制订经费预算的关键步骤。将软件划分为若干模块,将模块划分为若干功能,再将功能划分为若干项工作,仔细评估每项工作的工作量。合计每一项工作的工作量,就是整个项目的工作量。但实际的工作量评估并非如此简单,后面将会深入讨论。
工作量评估的直接作用就是评估开发周期与人员投入。一般认为开发周期与人员投入成比例,其实是一种误解。增加人员投入并非能够缩短开发周期。随着人员的增加,培训、沟通、协调的成本都将会增大。用户期望的开发周期与可以投入的人员是一对矛盾,最终需要寻找一个平衡点,当然这也是与客户反复讨论的过程。有时,当这对矛盾无法协调时,分期开发也许是一个不错的选择,毕竟客户始终是希望软件系统尽可能早地上线使用。最后,当开发周期与人员投入确定下来时,经费预算也就是计算出来了。
为每一项工作评估工作量的另一个重要作用就是将工作合理分配到各个迭代期中。迭代开发,迭代期就如同一个又一个的格子,而评估后的每一项工作就如同一颗又一颗大小不一的石子,被投放到每一个格子中。而它们孰先孰后,则是由工作的优先级决定的。靠近主营业务的、用户使用频率高的,优先级高;远离主营业务的、用户使用频率低的,优先级低。优先级决定了工作安排的顺序,它是制订计划前分析的另一个重要内容。
总之,迭代开发始于完备的项目计划,完备的项目计划的关键在于计划制订前的分析,也就是分解后的工作项目列表,及其工作量评估与优先级评估。
- 浏览: 145981 次
- 性别:
- 来自: 广州
最新评论
-
lvliang169:
码农通常会被亲戚、家人、朋友认为是修电脑的
深有同感啊、、、、 ...
关于程序猿,你不知道的15件事
相关推荐
3. 开始迭代过程,每次迭代中执行以下操作: - 识别并剔除最极端的像素值。 - 计算新的均值或中位数,取决于算法的具体实现。 - 更新图像数据。 4. 在满足停止条件后结束迭代,得到噪声抑制后的图像。 在提供的...
其0.6.9版本的发布意味着它经过了多次迭代和优化,为用户带来了更加稳定和高效的服务。 Python作为一门广泛应用于后端开发的语言,拥有丰富的库支持,3d_converter正是其中的一员。它不仅简化了3D数据处理的复杂性...
双引号先从当前目录开始搜索,找不到则转到标准库路径;尖括号则直接从标准库路径开始搜索。 - **示例**: ```c #include "myheader.h" #include ``` #### 如何获取机器日期 C语言中可以通过标准库中的`...
标题中的“matlab开发-mogomulti-objectivegrasshopper优化算法”指的是一种使用MATLAB编程环境实现的多目标优化算法,名为Mogoa,它是基于Grasshopper优化算法的一个扩展。Grasshopper Optimization Algorithm (GOA...
该库的版本0.24.3表明它已经经过多次迭代和优化,以提高性能和稳定性。"py3-none-any"这部分指的是这个轮子文件(wheel file)是为Python 3编译的,不特定于任何架构(none)和平台(any),这意味着它可以在多种...
版本号1.6.8.dev14046表明这是一款正在开发中的版本,dev14046表示这是第14046次开发迭代,而“py2.py3-none-any”则说明这个库兼容Python 2和Python 3两个主要版本。这在Python社区中是非常重要的,因为很多用户还...
Miniconda3是一款轻量级的Anaconda发行版,它为Python开发提供了一个便捷的环境管理工具,尤其适合数据科学、机器学习和人工智能等领域。这个压缩包文件"Miniconda3-py39_23.5.1-0-MacOSX-arm64.sh.zip"包含了适用于...
考虑到时间戳(ff3d085)可能是Git仓库中的一个提交ID,这可能意味着源代码是在某个开发过程中的一部分,可能已经过了一定的迭代和改进。 在iOS应用开发中,游戏通常会使用 Sprite Kit 或者 Unity 这样的游戏引擎。...
这个库的版本号是0.3.94,表明它是经过多次迭代和优化的较新版本。 CloudFront是亚马逊Web服务(AWS)提供的全球内容分发网络(CDN),能够加速静态和动态内容的交付,通过减少延迟和提高性能来改善用户体验。`cdk_...
6. **软件开发方法**:瀑布模型适用于结构化方法,它强调顺序的、阶段性的开发过程,而构件化方法和面向对象方法更适合迭代和增量的开发模式,快速原型方法则注重快速构建和验证系统原型。 7. **需求分析**:需求...
在`key_management_client-1.0.8`这个版本中,我们可以推测其已经过至少一次迭代,这意味着开发者可能已经修复了一些已知问题,并可能添加了新的功能或改进了性能。版本号中的`py3-none-any`表示该库是为Python 3...
在本篇内容中,我们将深入探讨如何利用C++与OpenCV3通过迭代器访问图像中的像素数据。这一方法不仅能够帮助我们更好地理解图像处理的基本原理,还能够在实际开发过程中提高程序效率。 ### OpenCV简介 OpenCV(Open...
这个效果在前端开发中常用于网页加载时显示,给用户带来动态视觉反馈,提升用户体验。接下来,我们将深入讨论CSS3的相关知识点以及如何创建这样的动画。 1. **CSS3概述** CSS3是层叠样式表的最新版本,它引入了...
Python库`covid19poland`的版本号为0.2.0,这表示它是一个经过至少两次迭代改进的成熟版本。开发者可能在之前的版本中修复了错误,增加了新功能,或者提高了性能。`py3-none-any`部分表示该库是为Python 3编写的,不...
安装完成后,开发者可以在Python项目中导入并使用`cdktf_provider_google`,开始声明式地定义和管理GCP资源。 **总结** 这个资源是Python开发者用于GCP基础设施管理的工具,通过cdktf将高级语言的便利性和...
9. **迭代器和链式调用**:Lowdash的函数设计允许链式调用,如`_.chain`开始一个链式操作,`_.value`结束并返回结果。 通过使用Lowdash,你可以极大地提升代码的可读性和可维护性,同时减少重复的代码量。在处理...
版本0.4.32表明该库已经经过了多次迭代和优化,以提高性能和稳定性。`py3-none-any`表示它适用于任何平台且是为Python 3编写的,这意味着它可以在大多数常见的操作系统(如Windows、Linux、macOS)上运行,并且与...