敏捷开发

发布于 2024-08-23 06:01:15 字数 350 浏览 11 评论 0 原文

在大学里我们讨论了敏捷编程,但也讨论了有多少敏捷方法没有在商业中使用,比如结对编程。

我想知道哪些方法属于敏捷编程(极限编程、结对编程)以及哪些方法是真正使用/你使用的。迭代和增量开发怎么样?

编辑:对于那些因为“主观和争论”而想要结束该问题的人。 这个问题是可以回答的,因为敏捷开发是一种定义好的表达方式。 http://en.wikipedia.org/wiki/Agile_software_development。 此外,更多用户对此问题感兴趣,关闭它并没有得到很好的考虑

At university we talked about agile programming, but also how many agile methods aren't used in business, like pair programming.

I would like to know which methods belong to agile programming (extreme programming, pair programming) and which are really used / do you use. What about iterative and incremental development?

edit: to those who wanted to close that Question because of "subjective and argumentative".
This question can be answered,because agile development is a defined expression.
http://en.wikipedia.org/wiki/Agile_software_development.
Further more many Users are interested in this Question, to close it isn't well considered

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

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

发布评论

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

评论(11

给妤﹃绝世温柔 2024-08-30 06:01:15

敏捷开发本身并不是一种方法,它是一个总括术语,描述了几种敏捷方法(它们都属于迭代和增量开发 - IID - 系列)。

替代文本 http://img62.imageshack.us/img62/6374/dd997578teamprojagileum.png< /a>

2001 年敏捷宣言的签署中,提出了以下方法:极限编程( XP)、Scrum、DSDM、自适应软件开发 (ASD)、Crystal、功能驱动开发 (FDD)、实用编程。他们每个人都共享敏捷宣言的核心价值观,但实施方法略有不同。

相反,结对编程是一种工程实践(它是 XP 的实践之一,它捕获许多做法作为不可分割的集合,但您可以在 XP 之外使用它)。而且,虽然我非常重视实践,但请记住,实践不是目的,它们只是我写的一种手段 以前敏捷不是结对编程、站立会议等。敏捷是最大化客户价值,同时最小化浪费,以提供最佳的投资回报率。敏捷是面向业务的,实践只是在给定环境下实现这一目标的一种方式。

Scrum 和 XP(一起使用)是当今最常用的。

Agile development is not a methodology in itself, it's an umbrella term that describes several agile methodologies (that all belong to the Iterative and Incremental Development - IID - family).

alt text http://img62.imageshack.us/img62/6374/dd997578teamprojagileum.png

At the signing of the Agile Manifesto in 2001, the following methodologies were represented: eXtreme Programming (XP), Scrum, DSDM, Adaptive Software Development (ASD), Crystal, Feature-Driven Development (FDD), Pragmatic Programming. Each of them share the core values of the Agile Manifesto but implement them with a slightly different approach.

In contrast, pair programming is an engineering practice (it is one of the practices of XP which captures many practices as an indivisible set but you can use it outside of XP). And, while I value practices very much, just keep in mind that practices are not an end, they are just a mean as I wrote previously. Agile is not about doing pair programming, stand up meetings, etc. Agile is about maximizing the customer value while minimizing waste to provide the most optimal ROI. Agile is business oriented, practices are just a way to achieve this goal in a given context.

Scrum and XP (used together) are the most commonly used nowadays.

梦魇绽荼蘼 2024-08-30 06:01:15

关于行业中使用的实践的一些最新经验数据:

我刚刚看到敏捷实践调查结果:2009 年 7 月。这是一个相当小的样本集 (123),但它提供了一些有趣的视角。例如,前 10 名最有效的敏捷实践(根据受访者的报告)是:

  1. 持续集成
  2. 每日站会
  3. 开发人员 TDD
  4. 迭代计划
  5. 代码重构
  6. 回顾 结
  7. 对编程
  8. 积极的利益相关者参与
  9. 潜在可交付的软件
  10. 燃尽追踪

还提供了前 10 名敏捷的图表实践:

  • 被认为是最容易学习的。
  • 被认为是最难学的。
  • 最有可能被尝试然后被放弃。
  • 人们想要领养但还没有这样做。

实践不是重点

我们不会为了实践而实践。敏捷实践源于遵循敏捷原则,如宣言网站。敏捷的最高原则是:“通过尽早、持续地交付有价值的软件来满足客户”。 早期持续有价值是其中的关键词。如果一个团队不理解原则如何驱动实践,那么他们就会冒着成为货物崇拜者的风险,正如 @Guildencrantz 所说,没有获得他们期望的神奇成功,宣布敏捷失败,并放弃它。

在新项目上保持敏捷比将项目转换为敏捷更容易:

我手头没有很好的引用,但通常认为在 绿地项目,而不是转换棕地项目转向敏捷。原因之一是现有代码的编写方式通常很难添加自动化测试。 Michael Feathers 写了一本关于向遗留代码添加测试的书。

Some Recent Empirical Data About Practices in Use in Industry:

I just came across the Agile Practices Survey Results: July 2009. It's a fairly small sample set (123), but it offers some interesting perspective. For instance, the top 10 most effective agile agile practices (as reported by respondents) were:

  1. Continuous Integration
  2. Daily Stand Up Meeting
  3. Developer TDD
  4. Iteration Planning
  5. Code Refactoring
  6. Retrospectives
  7. Pair Programming
  8. Active Stakeholder Participation
  9. Potentially Shippable Software
  10. Burndown Tracking

There are also charts for top 10 agile practices that:

  • are believed to be easiest to learn.
  • are believed to be hardest to learn.
  • were most likely to be tried and then abandoned.
  • people want to adopt but have not yet done.

The Practices are Not the Point

We don't do the practices for the practices's sake. The agile practices come out of following the agile principles as explained on the manifesto website. The highest agile principle is: "to satisfy the customer through early and continuous delivery of valuable software". Early, continous, and valueable are the key words there. If a team doesn't understand the how the principles drive the practices, then they run the risk of being, as @Guildencrantz said, cargo-cult, not having the magic-bullet success that they expect, declaring agile a failure, and abandoning it.

It's Easier to be Agile on a New Project Than it is to Convert a Project to Agile:

I don't have a good citation at hand, but it's generally thought of as easier to be agile on greenfield projects than it is to convert a brownfield project to agile. One reason for that is that existing code is often written in a way that makes it hard to add automated tests. Michael Feathers wrote a whole book about adding tests to legacy code.

沒落の蓅哖 2024-08-30 06:01:15

听起来你真的很想知道人们在现实世界中实际使用的是什么。有很多网站介绍什么是敏捷实践/方法,什么不是敏捷实践/方法。

所以,到目前为止,我在最近(过去 5 年)的角色中的经验是:

  1. 除了恐慌情况(零时间修复重大错误)之外,没有人使用结对编程,经理们仍然根本不相信这个想法 - 而我根本不说话,这很遗憾,因为我很喜欢它。
  2. 用户故事和用户选择下一个版本的套牌 - 除非用户真的真正购买,否则不会真正起作用,这是我还没有看到的。我所在地区的用户总是说一切都是最重要的,他们离不开任何东西。我个人只是将其改为“您认为我个人应该以什么顺序来完成这些任务?”。
  3. 测试驱动开发 - 这种情况很少发生,但是编写了很多单元测试(在代码完成之后),所以我差点就错过了
  4. 持续集成 - 这高度依赖于团队,在过去 5 年里,我所有的团队都它,但它经常会在引起注意之前连续几天/几周失效(损坏的构建)。很多人仍然不相信这一点。
  5. 经常重构——这实际上得到了一些认真的支持。重构是一项技能,如果您不具备,可能会出现严重的问题。
  6. 小版本 - 这(在我的工作中)通常是常态,尽管可能已经完成了
  7. 编码标准 - 是的
  8. 集体代码所有权 - 指责仍然很普遍,并且通常“坏”模块永远不会真正得到修复,因为产生的编码器它只是修复并修复它直到它“起作用”。
  9. 没有加班 - 几乎,但高度依赖于团队领导 - 我见过最糟糕的事情(死亡行军)发生在我的团队几英尺之内......
  10. 发现错误时首先进行测试 - 这在我的经验中发生过。是一件非常好的事情。

Sounds like you really want to know what people are actually using in the real world. There are plenty of sites about what is in and what is not an Agile practice/methodology.

So, my experience so far in my recent (last 5 years) roles:

  1. Nobody used pair programming except in panic situations (major bug fix in zero time), managers still just don't buy into the idea at all - and I'm talking AT ALL, which is a shame as I quite like it.
  2. User stories and users choosing a deck for next release - doesn't really work unless the users really really buy in, which I've not seen yet. Users in my area always say that everything is of top importance, they cannot live without any of it. I personally just rephrase into "what order should I personally work on these tasks in your opinion?".
  3. Test driven dev - very little of this happens, but a lot of unit tests get written (after the code does though), so a near miss imho
  4. Continuous integration - this is highly dependent on the team, in last 5 years all my teams had it, but it often lapsed (broken build) for days/weeks at a time before it got attention. A lot of people still don't buy into this.
  5. Refactoring often - this is actually getting some serious buy-in. Refactoring is a skill that if you don't have is likely to be a serious problem.
  6. Small releases - this (in my work) is generally the norm anyway, although probably being done
  7. Coding standards - yes
  8. Collective code ownership - blame is still pretty much rife, and often a "bad" module never really gets fixed cos the coder that produced it just fixes and fixes it till it "works".
  9. No overtime - nearly, but highly dependent on the team lead - I've seen the worst stuff (death marches) going on within a few feet of my team...
  10. Tests first when find bugs - this happens in my experience. Is a very good thing.
断肠人 2024-08-30 06:01:15

大多数经验丰富的开发人员从此成为项目经理或 IT 总监。当时,大约 20 年前,敏捷软件开发等方法甚至还不存在,但它们能够生产和交付工作系统。

这些人可能缺乏对这些新方法论中提出的实践的了解,从而导致对提出这些方法的某种抵制。

因此我们不能对他们粗暴,他们只会抵制他们不知道甚至不理解的变化,就像我们说一个习惯于以一种方式工作的客户,然后我们用我们的新方法来改变这个客户的一天之内养成习惯!出现这些阻力是很正常的,这是人类的行为。

此外,对于一些更有经验的人来说,他们不仅不明白结对工作的意义,例如。就像他们通常不相信 Scrum 会议一样,他们更喜欢老式的方式,这种方式在某种程度上已经取得了成功,即每周持续 1 到 2 小时的会议。

对于那些负责编程资源预算的管理员来说,对于结对编程来说,付钱给一个无所事事的程序员,而这个无所事事的程序员可以处理代码的另一部分,以提高生产力。你也不能怪他们,因为他们的想法很有道理。

与其他建议相比,敏捷软件开发中的一些建议更容易受益。虽然结对编程在实践中可能不知道真正的成功,甚至每天的 scrum 会议也不知道,但根据我的经验,成功的标准是一旦我们获得了足够精确的软件草图、它的要求和功能就开始编码,而永远不会忘记客户自己给出的优先级。然后,在开发迭代时更新 UML 分析。

根据我的经验,软件迭代开始取得越来越成功。

慢慢来,敏捷软件开发,例如测试驱动开发,在我所在的地区仍然是新事物。我相信,一旦他们有了更多的练习者,他们的实践就会随之增长。

Most of experienced developers have become project managers since or IT directors. Back then, about 20 years ago, those methodologies such as Agile Software Development didn't even exist, and they were able to produce and to deliver working systems.

These same guys might lack the knowledge of such proposed practice from these new methodologies resulting of some sort of resistance against bringing forward those approach.

We cannot be rough at them for so, they only resist to changes they don'T know or even understand, just like let's say a customer who is used to work one way, and then we come with our new methods and then change this customer's habits within a day! It's quite normal that these resistances occur, they're human bahviours.

Furthermore, for some of these more experienced-guys, they don't just don't get the point of working in pair, for example. Just like they generally don't believe in scrum meetings, they prefer the old-school way, which has known its success in some way, of a meeting lasting from 1 to 2 hours a week.

As for administrators, those responsible for the budgets of programming resources, it is seen, as for pair programming, to pay a programmer doing nothing while this doing-nothing-programmer could work on another part of code to multiply productivity. You cannot really blame them neither, as what they think makes full of sense.

Some suggestions from the Agile Software Development are easier to get the benefit from in comparison to some others. While pair programming might not know a real success in practice, or even daily scrum meetings, what is a success though, in my experience, is beginning coding as soon as we get a precise enough sketch of the software, its requirements and features, never to forget the priorities given from the customer himself. Then, updating the UML analysis while developing for an iteration.

Software iterations, in my experience, begin a growing success.

Let it time, Agile Software Development, such as Test Driven Development, well in my region, are still new stuff. Once they will get more practitioners, their practiced practices will grow with it, I believe.

囚你心 2024-08-30 06:01:15

这取决于公司。我工作的公司一直都在做所有 TDD、所有配对、所有 CI。如果您提交代码,但没有提交单元/FitNesse 测试,团队并不害怕给您打电话,并且在您提交代码后不到一分钟,CI 服务器就会运行整套测试,并且如果您的代码破坏构建或艾米测试失败,灯熄灭,您被标记为破坏构建的人。

这不是最常见的情况,但确实有一些公司在实践敏捷。

It depends on company to company. I work for a company that does all TDD, all pairing, all CI, all the time. The team isn't afraid to call you on it if you submit code, but didn't submit unit/FitNesse tests, and less than a minute after you submit code, the CI server runs the whole suite of tests, and if your code breaks the build or Amy ofthe tests fail, lights go off and you're flagged as the one that broke the build.

It's not the most common situation, but there are companies out there that truly do practice Agile.

白芷 2024-08-30 06:01:15

在商业中,我认为你通常会看到团队从不同的编程方法中汲取他们喜欢的方面,并将它们结合到自己的实践中。他们可能会使用他们想要的任何术语,即使它不是 100% 准确。

在我们的团队中,我们应用每日站立会议和团队编程(大约一半的时间 - 取决于任务)。但我们并不声称自己做到了敏捷。

In business I think you generally will see teams taking the aspects they like from different programming methodologies and combine them into their own practices. They they will probably apply whatever term they want to it even though it's not 100% accurate.

In our team we apply daily stand-ups and team programming (about half the time--depends on the task). We don't claim to do agile though.

夜血缘 2024-08-30 06:01:15

敏捷方法论是敏捷开发的基础。

换句话说,极限编程Scrum 等都是基于敏捷原则的敏捷方法论。深入检查这些将回答您的问题。

至于敏捷本身,以及所有这些类型的敏捷开发的共同点,请查看 Wikipedia 了解一个很好的概述。

The agile methodology is a basis for agile development.

In other words, eXtreme Programming, Scrum and so forth are agile methodologies based on agile principles. Checking out these in depth will answer your questions.

As for agile itself, and what all these types of agile development have in common check out Wikipedia for a nice overview.

南城旧梦 2024-08-30 06:01:15

Thoughtworks 是实施敏捷开发的公司之一。直接从 Martin Fowler 的 网站了解有关敏捷开发的更多信息。

Thoughtworks is one of the companies that have Agile Development in force. Read more about Agile development directly from Martin Fowler's website.

同展鸳鸯锦 2024-08-30 06:01:15
  • Scrum 非常流行(尽管它只是一种管理技术而不是技术学科),
  • 极限编程则不太流行,尽管它确实得到了应用。 (我已经完成了大量的商业 XP 项目 - 尽管很难找到想要做 XP 的团队。
  • 测试驱动开发 (TDD) 是 XP 的一部分,尽管很多人这样做(而且更多人说他们这样做) ...)

很多人似乎误解了重构、结对编程和自组织团队的一般概念等概念...对于那些从瀑布中获得一定成功并已根深蒂固的人来说,这些可能很困难让这些人尝试 XP 是一个问题。

  • Scrum is very popular (although it's just a management technique rather that a technical discipline)
  • Extreme programming is a lot less popular, although it does get applied. (I've done loads of commercial XP projects - although it is hard to find teams that want to do XP.
  • Test-Driven Development (TDD) is part of XP, although many people do it (and a lot more say that they do...)

Lots of people seem to misunderstand concepts like refactoring, pair programming and the general concept of self-organising teams... those can be difficult for people who've gotten a measure of success from waterfall and have gotten entrenched in that way of doing things. It is a problem getting those people to try XP.

柠檬色的秋千 2024-08-30 06:01:15

正如其他人提到的,敏捷是一个总括术语,可以通过多种不同的方式实施;话虽这么说,敏捷当前的流行语状态导致许多公司尝试实施敏捷,但实际上只是实施了一组 货物崇拜式程序并期望敏捷的灵活性。

As others have mentioned agile is an umbrella term and can be implemented in a number of different ways; that being said agile's current buzzword status has lead to a lot of companies trying to implement agile who really just implement a set of cargo cult-esque procedures and expect agile's flexibility.

萌逼全场 2024-08-30 06:01:15

在我以前的公司,经理们抓住了敏捷,就像它是他们所有问题的答案一样。但它所做的唯一一件事就是制造了更多的问题。

我们定期举行会议,称为“站立会议”(某种敏捷术语)。

我认为他们尝试了很多敏捷技术,但当时对我们来说效果并不好。

In my previous company, the managers grabbed a hold of agile like it was the answer to all their problems. But the only thing it did was create a whole lot more problems.

We had very regular meetings that were called "standups" (some sort of agile term).

I think they tried a lot of agile techniques but it didn't really work well for us at the time.

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