前面我们提到了迭代式开发的巨大优势,它可以降低我们软件开发的巨大风险,它可以使我们把握用户的真正需求,它可以使我们从错误与偏差中及时纠正过来,那么我们应该如何进行迭代式开发呢?要回答这个问题,我们首先要弄清迭代式开发与传统的瀑布式开发的差别在哪里。
1.需求分析的差别
与传统的软件开发一样,迭代式开发同样需要与客户进行一个充分的需求分析。但与传统的软件开发不一样,迭代式开发不要求初期的需求分析是一个完全的需求分析。它承认需求分析需要一个过程,它承认需求的变化(或者说需求是一个进化的过程)。所以,在迭代式开发中,起初的需求分析只要进行到当时的阶段能够理解到的程度就可以了,而不是瀑布式开发那样需要完成所有的需求分析并最终确认下来。至于其它还没有分析到的内容,我们会在每个迭代的需求阶段逐渐加深理解,逐渐细化,直至最终完成软件的开发。因此,迭代式开发的需求分析始终贯穿整个软件开发的过程。
2.软件开发的差别
迭代式开发的软件开发阶段,与传统软件开发的方式存在着巨大的差异,迭代式软件开发采用的是“持续集成(Continuous Build)”的软件开发方式。传统的开发方式,当需求被确认下来并开始软件开发时,首先进行的工作是分模块进行开发,就如同车间生产一样,不同的模块被分配到了不同的小组或个人进行分头开发。在此期间,谁都不能拿出可运行的软件交付物,直到开发中后期的集成阶段。而迭代式开发不同,它将整个开发过程分为了数个迭代,并且在每个迭代结束时要交付可执行的软件,正因为如此,迭代式开发采用持续集成的方式。
持续集成的基本思想就是每个人每天完成的开发工作都能立即集成为一个可运行的软件产品。为了实现持续集成,我们必须改变我们的开发顺序。传统的开发顺序,首先是开发并完善各个子模块。当各个子模块都完成开发以后,才最终组装并集成为一个可运行的软件。采用这种顺序开发不可能保证持续集成。迭代式开发,在初次确认业务需求以后,首先开发的是软件最主要最基本的功能,在开发这些功能时也往往只考虑主流程而忽略分支流程。采用这种方式,可以在最短时间内交付可以运行的软件。之后我们交给客户去体验、去确认、给我们提意见,我们再不断去调整和完善这些主要功能,或者开发其它次要功能,使软件开发以一种进化式的方式进行下去。
采用持续集成的方式,使软件开发中利益攸关的各方随时可以了解软件开发的进度,以可视化的方式看到软件开发的成果,及时纠正软件开发过程中的问题。更重要的是,所有利益攸关方中最重要的一方——客户,由于自身的局限描述不清自己的需求,通过可视化的方式一次一次看见可运行的软件,更直观地提出自己的意见,使自己的需求越来越清晰,并有效地告知开发者。而我们作为开发中,通过这种方式,使我们有更多的机会与客户有效沟通,从而对业务领域理解越来越深刻,也使我们的开发成果始终有客户确认,与客户的需求保持一致。即使有时出现偏差,也能及时得到纠正。最终,我们交付的软件必然是客户满意的。
由此看来,迭代式开发与传统开发,其开发的过程差异真的不小。
- 浏览: 146279 次
- 性别:
- 来自: 广州
最新评论
-
lvliang169:
码农通常会被亲戚、家人、朋友认为是修电脑的
深有同感啊、、、、 ...
关于程序猿,你不知道的15件事
相关推荐
### 华为云开放实验室——助力数字化转型与迭代开发 #### 一、背景与意义 随着信息技术的飞速发展,各行各业都在经历一场深刻的数字化转型。对于运营商而言,数字化转型不仅是一种趋势,更是一项迫切的任务。华为...
在“迭代2”中,我们关注的是两个关键概念——源码分析和工具的使用,这在软件开发过程中至关重要。源码分析是理解程序工作原理、优化性能和修复错误的基础,而工具的应用则能提高开发效率并确保代码质量。在这个...
在MATLAB开发中,"迭代nTHPowerRootImageEqualization"是一种高级的图像处理技术,主要应用于图像增强和均衡化。这个技术的核心是通过迭代计算,对图像的像素值进行非线性变换,以改善图像的整体对比度和亮度分布。...
在实际开发中,我们可以通过扩展运算符(`...`)或`Array.from()`将迭代器转换为数组,这样可以方便地与其他数组方法结合使用: ```javascript let iterable = [1, 2, 3]; let array = [...iterable]; // 或者 ...
在MATLAB环境中,单基因PID(Proportional-Integral-Derivative)控制器的开发用于差分转向控制是一种常见的控制策略,特别是在机器人导航和无人驾驶车辆领域。差分转向控制利用左右轮速度的不同来实现车辆的转向,...
《傅里叶变换在时域波形分析中的应用——基于迭代FFT与vegetablels2算法的DEMO解析》 在IT行业中,傅里叶变换(Fast Fourier Transform, FFT)是处理信号和数据的一种核心工具,尤其在音频处理、图像分析、通信系统...
2. **Concrete Iterator(具体迭代器)**:实现了Iterator接口中声明的所有方法。具体迭代器通常需要记住遍历的位置,以便能够按顺序访问元素。 3. **Aggregate(聚合)**:定义了存储对象的方式,并创建用于遍历...
此外,由于版本迭代和语言的发展,较新的Delphi特性和组件可能无法被dpk2bpr 2.1完全支持,因此对于现代项目,可能需要寻找更现代的转换解决方案或者进行手动移植。 总的来说,dpk2bpr 2.1是一款针对特定时期和特定...
本话题聚焦于MATLAB的开发,具体是关于迭代Trimmed Mean Algorithm Filter(ITTM Filter)的实现,这是一种有效的噪声抑制和图像处理技术。在游戏行业中,高质量的图像处理是提升用户体验的关键因素之一,因此对噪声...
2. **缺乏明确的目标设定**:在迭代开发中,每个迭代都应有明确的目标和成果,否则容易导致方向模糊不清。 3. **忽视用户反馈**:用户反馈是迭代开发中非常重要的一个环节,忽视它可能会导致产品与市场需求脱节。 4....
2. UART驱动:USB转UART桥接器的驱动代码,用于与USB设备进行数据传输。 3. SPI接口:这部分代码实现了与STM32或其他SPI设备通信的协议,包括主设备模式(Master)的控制逻辑,以及数据的发送和接收。 4. 用户界面:...
在本次迭代计划“迭代计划1”中,项目团队将针对名为“霍格沃茨地图”的手机导游应用程序进行第二次迭代开发。这个应用旨在为用户提供一个类似霍格沃茨魔法世界的导游体验,利用先进的技术如定位、路线规划、周边...
1. 敏捷开发:以快速迭代的方式开发产品和服务,快速响应市场变化。 2. 智能决策:利用大数据和人工智能进行辅助决策,提升决策的科学性和精准性。 3. 预测性维护:通过对设备和运营数据的实时分析,预测潜在问题并...
在IT行业中,开发工具的更新迭代是常态,Visual Studio(VS)作为微软推出的强大集成开发环境,也经历了多个版本的升级。"Visual Studio 项目版本之间转换"这一主题,涉及的是如何在不同版本的VS之间迁移和管理项目...
6. **上线与迭代**:产品上线前的准备,发布后的数据监测,根据市场表现进行迭代优化。 7. **案例总结**:从成功或失败的产品案例中提炼出关键教训,以提升个人产品管理能力。 通过这本书的学习,读者不仅可以了解...
压缩包中的“fft”文件可能包含了实现上述概念的示例代码,这些代码可以帮助理解迭代FFT的工作原理,并且可以作为开发自定义FFT实现的参考。通过学习和调试这些例程,开发者可以更深入地掌握FFT算法的细节,并将其...
2. 对纬度进行限制,因为Mercator投影不适用于极点:如果φ > π/2,则φ = π/2;如果φ π/2,则φ = -π/2。 3. 计算Mercator坐标y:y = ln(tan(φ/2 + π/4))。 4. 计算Mercator坐标x:x = λ * (2π)。 在实际...
通过迭代字典,开发者可以有效地管理这些数据,进行数据分析,从而制定更有效的策略。 总之,理解和熟练运用Python字典的迭代方法对于任何Python开发者来说都是至关重要的,无论是在日常开发还是在处理特定项目如...
这种业务模式,被称为敏捷转型,它源于敏捷软件开发的实践,强调迭代开发、持续集成和快速反馈。传统企业敏捷转型的核心目标是通过敏捷实践提高企业的适应性和效率,从而更好地满足客户需求。 转型策略和思考通常...