我正在阅读有关软件开发模型和生命周期的内容,在那里我学习了瀑布模型和统一过程。然而,这个过程都涉及需求收集,设计阶段,开发测试和部署(统一过程中的开始,详细,构建和过渡阶段)。
任何人都可以帮助我解决两者之间的差异吗?
答案 0 :(得分:11)
你没有指定'哪个'统一过程或'哪个'瀑布过程 - 两者都有很多变种,因此一些比较将在概括中丢失。
以Rational Unified process为例,它与瀑布流程的不同之处在于,学科(分析,设计,编码,测试等)是迭代和同时完成的,而在waterfall processes中,学科通常是按顺序完成(例如,只有在完成要求并且设计已被接受后才开始编码。)
在RUP中,术语phases
(开始,详细,构建,过渡)并非专用于单个学科或单个可交付成果 - RUP阶段都是multi disciplinary - 例如虽然Inception主要是关于需求和分析的 ;还鼓励进行一些设计和原型编码,以降低风险并改进未来阶段的估算,甚至在施工阶段,可能还需要进一步分析。
RUP使用术语“生成”来表示另一个完整的开发周期,例如:对于项目的“版本2”,第2代的新工作将在初始阶段开始。
另一个主要区别是RUP将视觉模型(尤其是UML)的概念推广为可交付工件,描述了需求,高级和类级设计(在某些情况下,代码生成可能来自详细的UML模型),而瀑布工件通常文件很重(例如ESA / IEEE processes)
另一个区别在于商业参与的方法。瀑布通常提升了“合同”软件需求或软件规范文档的概念,该文档定义了可交付成果(功能上和非功能上),项目预算或固定价格交易将基于该目标。相反,RUP以每阶段为基础促进预算,例如由于前一阶段的可交付成果之一已经交付,因此下一阶段的工作/成本将被知晓/重复/改进。
在许多软件开发操作中,Agile processes已经取代了Waterfall和RUP,尽管瀑布和RUP的许多工件和学习仍然存在。敏捷的主要好处是将工作分解成更小的块(通常为2周冲刺,而不是长达数月的RUP阶段或长达一年的瀑布项目)。这种快速周转功能可以优先传递功能,并且比瀑布或RUP更快地识别成功障碍。敏捷也减少了很多浪费 - 让我们面对它,只有一小部分开发人员阅读过详细的规范文档,或者仔细阅读详细的UML图。