增量软件过程模型、进化模型和螺旋模型之间有什么区别?

发布于 2024-09-26 22:46:49 字数 168 浏览 3 评论 0 原文

我今年正在学习软件工程,我对标题中的问题有点困惑。

我的教授和参考文献(“软件工程从业者方法”)都将这三个标题区分为不同的模型。但是,我看不到明显的差异,因为它们的方法对我来说看起来相同,但使用不同的语句来定义它们。 我觉得实际上它们都代表相同的流程模型。

有人可以更好地解释不同的模型吗?

I am studying Software Engineering this year and I am little confused about the question in the title.

Both of my professor and the reference ("Software Engineering A Practitioner Approach") differentiates the three titles as different models. However, I can't see obvious difference as their methodologies look the same to me but using different statements to define them.
I feel that practically they all represent the same process model.

Can anybody explain the different models better?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

在你怀里撒娇 2024-10-03 22:46:49

Craig Larman 在这个主题上写了大量文章,我推荐他的著名论文 迭代和增量开发:简史 (PDF) 和他的书 敏捷迭代开发:经理指南

我的总结如下:

增量开发

增量开发是一种将系统功能分割成增量(小部分)的实践。在每个增量中,通过完成软件开发过程的所有活动(从需求到部署)来交付垂直功能。

在软件开发中,增量开发(添加)经常与迭代开发(重做)一起使用。这称为迭代增量开发 (IID)。

进化方法

汤姆·吉尔布 (Tom Gilb) 在 1976 年出版的《软件度量》一书中引入了术语“进化”和“进化”,他在书中介绍了他的实践 EVO IID(也许是最古老的)。渐进式开发的重点是尽早向利益相关者提供高价值,并获取和利用利益相关者的反馈。

软件开发:迭代与迭代进化论,克雷格·拉曼 (Craig Larman) 是这样说的:

渐进式迭代开发意味着需求、计划、估算和解决方案在迭代过程中演变或得到完善,而不是完全定义和“冻结”在开发迭代开始之前进行主要的前期规范工作。进化方法与新产品开发中不可预测的发现和变化的模式是一致的。


然后进一步讨论进化需求进化和适应性规划进化交付。检查链接。

螺旋模型

螺旋模型是另一种 IID 方法,由 Barry Boehm 在
20 世纪 80 年代中期作为瀑布的延伸,以更好地支持迭代开发,并特别强调风险管理(通过迭代风险分析)。

引用 迭代和增量开发:简史

1985 年 IID 出版物的里程碑
是巴里·伯姆(Barry Boehm)的“螺旋模型”
软件开发和增强”
(虽然更频繁的引用
日期是 1986 年)。螺旋模型是
可以说,这并不是第一例
团队优先考虑开发周期
风险:Gilb 和 IBM FSD 此前曾
应用或提倡的变化
例如这个想法。然而,
螺旋模型确实形式化并使得
突出风险驱动的迭代
概念和使用离散的需要
每个步骤的风险评估
迭代。

现在怎么办?

敏捷方法是 IID 和进化方法的子集,并且是当今的首选方法。

参考文献

Craig Larman wrote extensively on this topic and I suggest his famous paper Iterative and Incremental Development: A Brief History (PDF) and his book Agile and Iterative Development: A Manager's Guide.

Here is how I would summarize things:

Incremental Development

Incremental Development is a practice where the system functionalities are sliced into increments (small portions). In each increment, a vertical slice of functionality is delivered by going through all the activities of the software development process, from the requirements to the deployment.

Incremental Development (adding) is often used together with Iterative Development (redo) in software development. This is referred to as Iterative and Incremental Development (IID).

Evolutionary method

The terms evolution and evolutionary have been introduced by Tom Gilb in his book Software Metrics published in 1976 where he wrote about EVO, his practice of IID (perhaps the oldest). Evolutionary development focuses on early delivery of high value to stakeholders and on obtaining and utilizing feedback from stakeholders.

In Software Development: Iterative & Evolutionary, Craig Larman puts it like this:

Evolutionary iterative development implies that the requirements, plan, estimates, and solution evolve or are refined over the course of the iterations, rather than fully defined and “frozen” in a major up-front specification effort before the development iterations begin. Evolutionary methods are consistent with the pattern of unpredictable discovery and change in new product development.

And then discusses further evolutionary requirements, evolutionary and adaptive planning, evolutionary delivery. Check the link.

Spiral model

The Spiral Model is another IID approach that has been formalized by Barry Boehm in the
mid-1980s as an extension of the Waterfall to better support iterative development and puts a special emphasis on risk management (through iterative risk analysis).

Quoting Iterative and Incremental Development: A Brief History:

A 1985 landmark in IID publications
was Barry Boehm’s “A Spiral Model of
Software Development and Enhancement”
(although the more frequent citation
date is 1986). The spiral model was
arguably not the first case in which a
team prioritized development cycles by
risk: Gilb and IBM FSD had previously
applied or advocated variations of
this idea, for example. However, the
spiral model did formalize and make
prominent the risk-driven-iterations
concept and the need to use a discrete
step of risk assessment in each
iteration.

What now?

Agile Methods are a subset of IID and evolutionary methods and are preferred nowadays.

References

你穿错了嫁妆 2024-10-03 22:46:49

这些概念通常很难解释。

增量是工作产品(文档、模型、源代码等)的属性,这意味着它们是一点一点地创建的,而不是一次创建的。例如,您在需求分析期间创建类模型的第一个版本,然后在 UI 建模之后对其进行扩充,然后甚至在详细设计期间对其进行更多扩展。

进化是可交付成果的属性,即交付给用户的工作产品,就这一点而言,它是一种特殊的“增量”。这意味着无论交付什么,它都会尽早以初始形式交付,而不是完全功能化,然后每隔一段时间重新交付一次,每次都具有越来越多的功能。这通常意味着一个迭代生命周期。

[迭代生命周期,但方式,是指您执行的任务(与“增量”相对,“增量”指的是产品;这是 SEMAT),这意味着您一遍又一遍地执行相同类型的任务。例如,在迭代生命周期中,您会发现自己一遍又一遍地进行设计,然后编码,然后单元测试,然后发布,然后再次进行相同的事情。请注意,迭代和增量并不相互暗示;两者的任意组合都是可能的。]

生命周期的螺旋模型是由提出的模型Barry Boehm 将瀑布式的各个方面与迭代方法和内置质量控制等创新进步相结合。

有关“工作产品”、“任务”、“生命周期”等概念,请参见ISO/IEC 24744

希望这有帮助。

These concepts are usually poorly explained.

Incremental is a property of the work products (documents, models, source code, etc.), and it means that they are created little by little rather than in a single go. For example, you create a first version of your class model during requirements analysis, then augment it after UI modelling, and then you even extend it more during detailed design.

Evolutionary is a property of deliverables, i.e. work products that are delivered to the users, and in this regard it is a particular kind of "incremental". It means that whatever is delivered it is delivered as early as possible in a initial form, not fully functional, and then re-delivered every so often, each time with more and more functionality. This often implies an iterative lifecycle.

[An iterative lifecycle, but the way, refers to the tasks that you carry out (as opposed to "incremental", which refers to the products; this is the view adopted by SEMAT), and it means that you perform tasks of the same type over and over. For example, in an iterative lifecycle you would find yourself doing design, then coding, then unit testing, then release, and then again the same things, over and over. Please note that iterative and incremental do not imply each other; any combination of both is possible.]

The spiral model for lifecycles is a model proposed by Barry Boehm that combines aspects of waterfall with innovative advances such as an iterative approach and built-in quality control.

For the concepts of "work product", "task", "lifecycle", etc. please see ISO/IEC 24744.

Hope this helps.

执着的年纪 2024-10-03 22:46:49

这是 ISO 24748-1:2016(系统和软件工程生命周期管理)中的 ipsis litteris 定义:

有许多不同的开发策略可以应用于系统和软件项目。其中三种策略总结如下:

a) 一次性。 “一次性”策略也称为“瀑布”,包括执行一次开发过程。简单地说:确定用户需求、定义需求、设计系统、实施系统、测试、修复和交付。

b) 增量式。 “增量”策略确定用户需求并定义系统要求,然后按构建顺序执行其余的开发。第一个构建包含部分计划功能,下一个构建添加更多功能,依此类推,直到系统完成。

c) 进化的。 “进化”策略也在构建中开发系统,但与增量策略的不同之处在于,它承认用户需求尚未完全理解,并且无法预先定义所有需求。在此策略中,用户需求和系统要求是预先部分定义的,然后在每个后续构建中进行细化。

希望这有帮助。塔蒂

This is the ipsis litteris definition from ISO 24748-1:2016 (Systems and Software Engineering Life Cycle Management):

There are many different development strategies that can be applied to system and software projects. Three of these strategies are summarized below:

a) Once-through. The “once-through” strategy, also called “waterfall,” consists of performing the development process a single time. Simplistically: determine user needs, define requirements, design the system, implement the system, test, fix and deliver.

b) Incremental. The “incremental” strategy determines user needs and defines the system requirements, then performs the rest of the development in a sequence of builds. The first build incorporates part of the planned capabilities, the next build adds more capabilities, and so on, until the system is complete.

c) Evolutionary. The “evolutionary” strategy also develops a system in builds but differs from the incremental strategy in acknowledging that the user need is not fully understood and all requirements cannot be defined up front. In this strategy, user needs and system requirements are partially defined up front, and then are refined in each succeeding build.

Hope this helps. Tati

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文