HYXT Blog

we produce valuable software for K12.
clock April 14, 2009 15:48 by author Sky Jia (贾超)

作者 Shane Hastie译者 金明 发布于 2009年4月12日 下午7时32分

在这个经济动荡的年代,越来越多的组织选择拥抱敏捷开发作为自己的生存战略。这吸引了大量学者对组织内团队迈向成功所该具备的态度和特征进行研究。业务敏捷(“察觉变化,并高效地响应变化”的能力)是非常重要的,但如何才能达到这种敏捷?

从纷繁冗杂的资料里面只挑选三个主题,我们可以发现价值观、激励以及极限面试(帮助挑选出合适的人选)的重要性。

价值观和道德观

Michele Sliger(The Software Project Manager's Bridge to Agility一书的合著者)认为敏捷是关于业务经营的道德观,通过关注如下八项道德准则从而使组织达到成功:

  1. 承诺 只做与交付业务价值相关的事情
  2. 专注 只做能交付业务价值的事情
  3. 开放 诚实展示项目的真实状态
  4. 沟通 与每个人交谈,及时回答问题,帮助团队成员协调工作
  5. 简单 目标明确,以最小代价交付最大价值,尽早交付价值
  6. 反馈 通过利益相关者的反馈让团队专注于交付中的价值
  7. 勇气 敢于作出决定,在价值交付逾越底线时敢于说不
  8. 尊重 尊重每个人以及直接团队之外的利益相关者,理解我们构建的产品的所有者,关心他们的需求

(细心的读者很容易发现以上这些正是极限编程的价值观,并且很好地契合了敏捷宣言的价值观和原则。)

餐馆老板的激励

Enthiosys上有一篇题为“厨师和敏捷的餐馆老板”的时讯比较了敏捷开发和餐饮的异同,进而讨论了业务敏捷的必要性。这篇文章提出了很多有用的对比,敏捷团队从中能大受裨益:

  • 只有在客户购买和使用我们的解决方案的时候才能创造利润,而不是在我们发布(解决方案)的时候。厨师拥有华丽的菜单并不是成功;只有人们进来点餐,才能算成功
  • 发布并不等同于利润。没协调好的厨房上错了菜式的顺序,只会让顾客不爽;只有准确地上菜才能让付钱的食客高兴,赢得回头客
  • 协调一致的发布能更快赢得利润。厨房诸项如果行云流水,则我们可以更快地摆放桌子,更快地赚到更多的钱。

挑选合适的人

如何挑选具备合适特征的人?CIO 杂志采访了两个(这方面的)先行者,他们应用“极限面试”过滤候选人,发现那些持有敏捷态度的候选人。他们关注于(候选人的)合作、创造性探索、学习态度以及团队技巧。

这种面试流程要求严格,可能会吓跑一些申请者,但它保证了加入团队的人适合团队并且拥有适当的技巧,这些对于团队的成功是非常必要的。个体胜于过程,而且雇佣合适的人提供了商业成功的最佳基础。

世上并无存在点金之术,可以保证在这个动荡时期生存下来并且获得成功。但越来越多的商业组织认识到敏捷态度和实践提供了一个框架让他们可以寄寓希望,以及可以快速响应不断变化的市场需求的工具。

查看英文原文http://www.infoq.com/news/2009/03/Achieving-Agility


clock January 20, 2009 09:46 by author Sky Jia (贾超)

Traditionally, software release is considered to be a handshake between engineering and business. Engineering passes on the tested code to business, which in turn promotes it to the market, thereby completing the cycle. However, with Agile, software release could be bucketed into two categories of internal and external releases. This helps in creating a loose coupling between the two. Internal releases are made by engineering and business has the option of using one of them as an external release.

In a recent article on the Cutter Consortium (download code RELEASEMYTH), Israel Gat of BMC makes an interesting argument for separating the “two” releases in the software world. According to him the internal and external release should be viewed as two faces of the same coin,

A body of code that delivers certain features and functionalities is one thing. The use of this body of code by marketing and sales to accomplish business results is quite another. Not only do the two activities differ, but they do not necessarily need to be tied together through a 1-to-1 relationship.

He gave an interesting metaphor example of a water pool with two pipes, one for inlet and the other for outlet. He compared engineering to the inlet pipe and business to the outlet pipe.

Think of the in-pipe in this example as engineering and the out-pipe as the business. Engineering can post releases at its own pace. The business can selectively choose from the posted releases. In this paradigm, marketing is not obligated to promote a release upon its completion. Marketing might do so in three months; it might choose to promote the current release with another release due at a later time; it might choose to make a release available on a limited basis; or it might choose never to promote a release.

Israel mentioned that since engineering is now loosely coupled with business, they can move towards a fluid release concept in which the software becomes alive and continuous. Engineering can churn out internal releases at a pace suitable to them and business can make a decision on which release gets to the customer as an external release and when.

Commenting on the article, Ryan provided some additional insights that Israel’s team ran three internal releases to one external release. He suggested that the benefit is to get valuable feedback and business can market the external release better. According to Ryan,

It worked great! As a result, I coach most agile teams to start by making sure their "internal release" cadence is twice as fast at marketing, operations and the market is used to. In this way you get a release where you can gain feedback and steer the "external release" to market better.

According to Israel, with Agile, frequent and faster internal releases make the software more alive and fluid. This renders the traditional release process obsolete. The separation of releases helps both engineering and business to work according to their release patterns without disturbing the release frequency of each other.


clock November 26, 2008 13:08 by author Sky Jia (贾超)

Jakob Nielsen, usability guru and author of Usability Engineering, raises the concern that Agile methods are a threat to traditional approaches to designing usability. He says that Agile’s greatest threat to usability is that “it's a method proposed by programmers and mainly addresses the implementation side of system development”. Alistair Cockburn counters that this claim just isn’t true:

  1. It doesn’t matter who proposed a good idea, only whether the idea is good.
  2. This sets up an “us versus them” split in the community instead of an “us plus them” coming together.
  3. Unlike the other threats Nielsen names, he doesn’t offer a solution, so he leaves us with his “us versus them” unsolvable problem, which is unacceptable.

Proposed solution: Just use good ideas – don’t worry about where they come from. As Kurt Morris posted on the agile usability list, “It’s amazing what can get accomplished once you get past the artificial “us v them” mentality.”

Nielsen goes on to raise the issue that the Agile habit of breaking the stories down into smaller tasks threatens to obscure the total user experience, allowing features to be developed in an inconsistent manner. At its worst, he says: “the user interface can end up resembling a patchwork.”. Nielsen’s solution:

  • Perform Usability testing quickly and repeatedly. He says “Weekly tests are completely feasible and give you a surefire way to integrate several user feedback rounds within even the shortest sprint.”
  • Parallel Tracks allow the usability work to be done just one step ahead of the development work.
  • Use low fidelity prototypes (such as paper) that don’t require coding minimizing the time spent upfront.

Jeff Patton has distilled 12 usability best practices (echoing several of Nielsen’s):

  1. Drive: UX practitioners are part of the customer or product owner team
  2. Research, model, and design up front - but only just enough
  3. Chunk your design work
  4. Use parallel track development to work ahead, and follow behind
  5. Buy design time with complex engineering stories
  6. Cultivate a user validation group for use for continuous user validation
  7. Schedule continuous user research in a separate track from development
  8. Leverage user time for multiple activities
  9. Use RITE to iterate UI before development
  10. Prototype in low fidelity
  11. Treat prototype as specification
  12. Become a design facilitator

The RITE (pdf) method that Jeff describes comes from Microsoft’s Games Studio: “RITE differs from a “traditional” usability test by emphasizing extremely rapid changes and verification of the effectiveness of these changes.”. Specifically, practitioners make changes to the UI (prototype or application) as soon as the problem is found and the solution spotted. Changes such renaming buttons, changing the text of menu items often happen before another participant arrives. More complicated, but obvious changes are made as rapidly as possible. This way the change can be tested as quickly as possible.

In addition, Jeff finds his role has changed: “As I've begun to work within Agile teams, my approach has changed to favor collaborative design. More and more I find myself acting as facilitator to harvest and model information from large groups of people. I find myself working with groups of users and developers to write user scenarios, and sketch user interface design.”

Finally, Alistair says (in reference to the developer/usability divide): “Just remember, ‘There’s only us."


clock November 26, 2008 12:10 by author Sky Jia (贾超)

Do work to maximize the available communication bandwidth available to your team. Provide communications tools—like conference phone, Web cams, and hands free headsets—for your team and help them adapt their existing practices to distribution. 

Don’t continually reorganize your teams for each new project. Building teams takes time, building distributed teams takes even longer. Maximize your investments in team building by minimizing churn on teams. 

Do plan to travel, especially at the project’s pivotal points. Bring everyone together for the first couple of iterations, periodically during the project, and right before final release. 

Don’t distribute the work by system components, focus on user stories. Avoid organizing distributed teams by function—for example, the offshore test team. Both these approaches create knowledge silos within the team. 

Do provide tools to augment or replace those that only work within a team room—like a work item tracking system to replace sticky notes on whiteboards. 

Don’t let remote team members be forgotten in team meetings. Pair them up with a buddy and try putting everyone on the same footing by having all members call into conference calls at least occasionally. 

Do evolve the team’s practices as they identify better ways to deal with the challenges of geographic dispersion. Frequent retrospectives are the key to getting a team to consider how to improve.

Don’t forget to include everyone in frequent team retrospectives to identify what does and does not work for the team. 

Do focus on coaching. Make sure everyone understands why agile practices need to be adapted for distributed development.

 

Distributed Agile Development at Microsoft Patterns and Practices.pdf (1.06 mb)


clock November 24, 2008 17:58 by author Sky Jia (贾超)

作者 Dave Nicolette译者 郑柯 发布于 20081119下午356

很多人都觉得:迭代的长度应该由发布周期的长短确定。我不同意,我认为这两个周期之间不应有关系。相对于长迭代来说,短迭代可以提供更为频繁的客户反馈,同时也给予团队机会,让他们可以反思并改进自己的工作实践。短周期可以形成"心跳节奏",这样的快节奏也足以展现更多意义。由于短周期的本性使然,团队不大有机会创建过于冗长的工作项目,而这样的项目会使得人们很难产生成就感,除非等到大量的工作完成之后。即使发布的周期很长,下面这些好处仍然存在。

好处

  1. 快速响应。在不影响正在进行的工作的情况下优先快速响应变化。产品负责人、客户或是代理人在迭代中期改变优先级或是添加新功能,这样的情况很多见。如果迭代时间足够 短,这种状况就可以得到更好的处理,因为变更在下个迭代中就可以容纳进来了,这样也可以避免打乱当前迭代本不应受影响的正常节奏。
  2. 问题检测。成熟的敏捷团队能够发现流程上的问题并马上处理。然而,目前看来,很多敏捷团队仍然在学习曲线上前行,他们还没有成熟到可以自己 发现并解决问题的地步。他们需要根据项目度量数据的变化来识别问题。由于趋势要靠三个点的连线才能体现出来,而项目数据每个迭代才能收集一次,因此更短的 迭代可以更快地暴露问题。
  3. 范围管理。如果待办事项列表中的条目都很小,那就可以灵活移动。较长的迭代会产生较大的用户故事。如果产品负责人需要变更待办事项列表条目的优先级,如果用户故事较大,那么变更这些用户故事造成的影响也更大。较短的迭代则趋向产生较小的用户故事。遵循INVEST原则,产品负责人也更容易变更用户故事的优先级。
  4. 迭代规划和跟踪。长迭代产生的较大的用户故事,经常要被分解为"任务",也就是要将大块儿的开发工作拆分为可操作性更强的明细任务。接下 来,为了让团队知道所有用户故事的状态,这些任务要在迭代中跟踪,要么使用类似于"看板"的系统,要么使用迭代的燃尽图。很多团队每天都会停下来重新估算 尚未完成的个人任务。使用短迭代,可以去除所有这些内部流程的管理成本;用户故事变成了更小的工作单位,而人们也能够以更简单的方式跟踪迭代状态。
  5. 成为转向"无迭代流程"的基础。迭代式开发保留了一些瀑布开发过程固有的管理成本,即使我们付出代价想去掉它们也是如此。如果将每个迭代从 头到尾画一个价值流累积图(cumulative flow diagram),这些管理成本就会以"在途时间(lead time"的形式体现出来。我参与过的一些团队,他们在自己承受范围之内尽量压缩迭代的时间。我注意到他们可以消除大量类似的管理成本。迭代时间越短, 让一切工作顺利进行所需花费的流程管理成本就越少。

从另一方面来看,在有严格时间限制的迭代中工作,也可以带来一些敏捷方法的附加价值,包括频繁和有规律的演示和回顾、用来交付增量开发结果的一致性时间表、频繁得到客户反馈的机会、以及对于"心跳"或是"脉搏"类似节奏的感觉,这样的感觉可以让团队在长期的开发过程中保证认真投入。使用时间盒的方式工作是有一些额外的好处的,而有些团队在采纳无迭代的流程时会把这些好处丢掉,这就等于是"连孩子带洗澡水一起泼出去了"。而使用短迭代,可以减少转向超轻量级、无迭代的流程所带来的痛苦;这也是可以预期的。

人们在转向无迭代流程时经常会犯一个错误,他们会将所有与"迭代"有关系的实践都抛弃掉。我们要将"迭代"的概念与有附加价值的敏捷开发特定实践区分开,并寻找能够减少流程管理成本、同时还可以保留有价值实践的解决之道。

潜在问题

有人在使用短迭代时遇到了困难。短迭代的拥护者Mishkin Berteig也提到一些潜在的问题 

  • "密集的工作回让人筋疲力尽。"我想这是团队选择何种工作方式的问题。周期短,不一定意味着工作就一定密集。短迭代可能仅仅意味着小时间盒;也就是说,每 个时间盒承诺交付的工作更少了。在工作密度上不一定有什么变化。其他的敏捷原则(特别是"可持续的步调")就是为了防止发生筋疲力尽的情况。
  • "战略层面的思考很难跟日程相结合。"战略层面的思考跟每个迭代要做的具体工作没有太大干系。迭代是战术层面的。战略层面的思考是……呃,非战术层面的。这听起来更像是管理上的问题,而不是短迭代的特性之类的东西。
  • " 每个迭代必须完成的、耗费管理成本的相关任务占用了短迭代的大部分时间。"这似乎又是一个团队如何选择工作方式的问题。我曾观察到挤压迭代时间长度而引 发的一个有趣结果:人们首先"发现"一些并不是非常必要的管理任务,然后就不再做它们了。最后,团队只做必要的事情,换句话说,他们去除了流程中的浪费。 实际上,这些观察让我对Jim ShoreJava Ranch上的发言 保留意见。他认为更长的迭代给团队的压力更小,因此有经验的敏捷团队更适合用长期的迭代。我觉得我们不必在迭代规划上花费更多时间, 我认为迭代规划还可以更少些。我支持更短的迭代,如果客户可以采取拉式的方法以单件流 single piece flow)的方式提出需求,这些迭代甚至可能逐渐消弭。
  • "对团队之外的资源或是人员的等待,这会使得工作的完成要跨越多个迭代。"组织上的约束造成了此类状况。如果试图采取的迭代长 度过短,以至于组织不能应 对,这样做并不合适。如果真这么做了,也就不能称之为"迭代"了,因为不可能在那样短的时间内交付工作结果,而组织也无法吸收这样的结果。要想有所进步, 我们必须识别出组织的约束。我并不认为临时的组织约束(它们是临时的,只要你真心愿意改变)就会使得短迭代不可行。简单么?没人会这么想。但如果组织的变 革很容易的话,那就没什么乐趣了,不是么?

相关内容: Extremely Short Iterations as a Catalyst for Effective Prioritization of Work

作者简介

Dave Nicolette 1977年起就从事IT行业了,他在2002年找到了敏捷,并视其为传统IT行业很多内在问题的缓解和去除之道。从那时起,在敏捷和精益的思考和实践上,他就成为了一名尽心竭力的实践者和大力鼓吹的提倡者。他喜欢与IT从业人士分享经验和有益的实践,并积极参与到敏捷社区的活动中。Dave目前是美国 Valtech科技公司的敏捷团队教练。


clock November 24, 2008 17:53 by author Sky Jia (贾超)

作者 Mike Bria译者 郭晓刚 发布于 20081116上午244

表面上看,多数敏捷方法都简单地根据业务价值决定故事的开发顺序。但在很多情况下,更明智的做法是将增加业务价值与有意识的"获取知识"步骤结合起来。Alistair Cockburn介绍了如何有效地进行此种结合,以及如何借助这样的实践在正确的时间交付正确的功能。

Cockburn的阐述从一项基本断言入题——设计活动的关键产出是创造知识:

在任何团队的设计活动中,我们都是在解决一项当前仍未理解通透的问题,建立一种当前仍未理解通透的解决方案,用我们仍未完全领会的语言及技术来表达自身想法——而以上各方面都在我们的眼前不断变化着。 
随着工作进展,我们对问题了解得愈多,对技术了解得愈多,对规划中的方案了解得愈多……

接着Cockburn举出瀑布方法的典型特征——"大爆炸"式的集成作为极端的例子,说明它是如何妨碍任何实质上的知识获取,直到项目的最后阶段,从而必然导致没有时间应对的"大惊喜"。用精益的术语来说,积累起来的未经验证的设计决策,构成了不断增长的"库存(inventory"Cockburn的原话,"从减少风险的角度来说,我们认为该情形直到最后都留有很大风险,在很后的阶段才产生知识,总之不是什么赏心悦目之事。

Cockburn
接着介绍了一种敏捷的处理方式,在其中团队将早期的迭代重点放在"积累知识",也就是学习

团队及早地、经常地集成,可使"大惊喜"分散到许多小的阶段中。这样做,团队可及早发现自身的错误,"学习"到错在何处,并因而减少以后的集成出现重大失败的机会。换言之,"学习"因素对项目的影响越来越小。这是一件好事。

为了促进这种实践,Cockburn建议团队问自己"我们担心/害怕什么?"的问题,并且将开发前期的精力集中在减少那些恐惧因素,而不要盲从"业务价值高的优先"这种教条。他提醒说这一阶段的工作次序可能表现得没什么条理,"但是它会满足在花费同样金钱之下,知识提升速度从高到低的排列次序,和降低项目风险从多到少的次序

这种方法的底线是,一旦减轻了大的风险,就开始按照业务价值的次序安排工作

当知识曲线开始变平坦,那就是转向按照业务价值高低排列的时刻。这时候就与一般的敏捷建议相一致了。请注意,原则上在着力获取知识的阶段,业务价值也总是在提高的;因此并非把业务价值丢到一边,只不过获取业务价值不是主导的推动力。

读者还应该注意,Alistair特别明确警告不要将"获取知识""BDUF Big Design Up Front"的意义相混淆。

Cockburn在最后收尾时解释如何将这种实践与功能疏剪(Feature thinning的一种实际运用相结合,使项目有效地平滑收尾,最终有效地提升团队的敏捷程度:

当知识曲线与业务价值曲线都变平后,资方就处在一种位置,既可以按时交付一组疏剪过的功能(或因竞争对手的动作而提前!),又可以稍后交付完整的功能集合。决定权理所应当地在资方的手上。

一如既往,请把这篇新闻仅仅当作一则提纲挈领的广告,务必阅读Alistair的完整文章。文章中还包括了几幅很有说服力的图,Alistair也介绍了他在两个截然不同的实际项目中采用这种实践的经验。

那么,您的看法如何呢?Alistair的方法符合你的经验吗?假如把这种方法用在你过去的项目中会不会有帮助?现在的项目又如何,以后的呢?如果有帮助,好在哪里?如果没有,又为什么?你会不会觉得这种方法"不是敏捷"?请留下您的想法。

查看英文原文:Iterating To Acquire Knowledge, Not Just 'Business Value'


clock October 23, 2008 17:49 by author Sky Jia (贾超)

The nice thing about software development methodologies is that they are just like standards. There are so many to choose from! Come to think of it... some of them are standards (which more or less proves my point). Unfortunately, despite a lot of searching I haven't found any page with a list of all major software development methods. So I decided to create one myself.

Here it is... and I hope you will let me know what you think of it.

Terminology

In the various descriptions of methods on Wikipedia I have noticed many different terms being used, like methodprocessmodelframework, etc.. In an effort to be more consistent than the Wikipedia authors I have tried to redefine the methods using the following definitions:

  • methodology (or method) - one specific collection of principles and/or practices
  • methodology family - a set of alternative methods that exist alongside each other
  • framework - a skeleton (for methods) that must be customized/augmented before use
  • model - a description (for methods) that must be implemented by a method, family or framework

For the software developers among us: A methodology is like a class that can be instantiated for a specific project. A methodology family is like a namespace of different but comparable classes. A methodology framework is like an abstract class that cannot be instantiated itself and must be inherited and extended first. A methodology model is like an interface that is just a description of something that must be implemented by one or more classes.

Methodology Leaders

I consider the following methods to be the "leaders" in the crowd. Each of them has achieved a status as a "standard" in a significant part of the IT industry.

Scrum
Scrum is an agile project management methodology, created by Ken Schwaber andJeff Sutherland. It is a skeleton that includes a small set of practices and predefined roles. Scrum is becoming a de facto standard for managing agile software development projects. One reason for Scrum's popularity is that it consists of only a few common sense practices that can be applied in many situations. This also means that Scrum by itself is never enough, and that development teams have to shop in other methods (usually XP) for additional practices.

Extreme Programming
Extreme Programming (or XP) is an agile software engineering methodology, created by Kent Beck. It is a set of best practices of which some are taken to an "extreme" level. As with other agile methods, XP regards ongoing changes to requirements as a natural and desirable aspect of software development. In the selection of its practices XP leans towards the daily software engineering activities of developers. XP is often seen as complementary to Scrum, filling most of the holes that Scrum leaves wide open.

Lean Software Development
Lean Software Development (LSD ?) is an agile project management framework, translated from lean manufacturing to the software development domain. Originally promoted by Mary Poppendieck and Tom Poppendieck, Lean Software Development is adapted from the Toyota product development system, and it is the embodiment of the "lean" subculture that exists within the agile community (and that has by now become big enough not to be able to call itself lean anymore). It is said that the lean and agile concepts form a perfect match.

Unified Process
The Unified Software Development Process (USDP) is a software engineering framework, created by Ivar JacobsonGrady Booch and James Rumbaugh. The USDP is an extensible framework that should be customized for specific organizations and projects. It aims to be a complete solution, which means that the full framework is far too big for all but a few projects. However, stripping the framework to its bare essentials is like turning a plane into a bicycle. It might be easier simply to select another more lightweight method.

Rational Unified Process
The Rational Unified Process (RUP) is a software engineering framework, created and maintained by the people at Rational Software (now owned by IBM), includingPhilippe Kruchten. It is a commercial product delivered as a more detailed version of the Unified Software Development Process (which is presented as a generic public domain process). This also means that the RUP suffers from the same problem as the USDP, being bloated and too costly to customize for small projects.

Dynamic Systems Development Method
Dynamic Systems Development Method (DSDM) is a agile project management methodology, created and maintained by the UK-based DSDM Consortium, which includes both vendors and experts. It was originally based upon the concepts ofRapid Application Development. DSDM finds itself on the same level as Scrum, meaning that it lists a small number of practices for project management of software development, while leaving the details of the real work (building a product) to be filled in by the development teams.

Prince2
Projects in Controlled Environments (Prince2) is a project management methodology, developed by the UK’s Office of Government Commerce (OGC). Prince2 describes many processes and activities covering the management, control and organization of projects, and is deliberately not restricted to IT projects. Even though Prince2’s popularity makes it a de facto standard for project management (particularly in Europe), it is criticized (by many including me) for being too prescriptive, too big and not easily customizable.

Project Management Body of Knowledge
The Project Management Body of Knowledge (PMBOK) is a project management methodology, developed by the US-based Project Management Institute (PMI). It is an internationally recognized standard providing the fundamentals of project management, not limited to IT-projects. Similar to Prince2, the PMBOK describes many processes and activities, though the PMBOK can be seen as being descriptive (what), while in contrast Prince2 is more prescriptive (how). Their main similarity is that both are criticized for not being agile.

Capability Maturity Model Integration
The Capability Maturity Model Integration (CMMI) is a software engineering model, originally developed by Watts Humphrey. The CMMI aids in the definition and understanding of an organization’s processes and was originally intended as a tool for assessing the maturity of an organization’s processes. These days it is also used as a roadmap for process improvement. The CMMI is heavily criticized for focusing on processes rather than people, and it may lead organizations down the road of bureaucracy.

Methodology Followers

I consider the following methods to be the "followers", because they trail the leaders in their number of references, users and implementations.

Feature Driven Development
Feature Driven Development (FDD) is a software engineering methodology, devised by Jeff De Luca and influenced by Peter Coad’s approach to object modeling. FDD is a model-driven process, distinguishing itself from some other agile methods by explicitly allowing time for the creation of an up-front design. It also applies a refreshingly nonconformist approach to code ownership and several other development practices.

Microsoft Solutions Framework
Microsoft Solutions Framework (MSF) is a software engineering framework, created by Microsoft. As always, Microsoft has its own alternative stance on the subject of developing software. MSF provides a metamodel of descriptive components, and it contains two out-of-the-box templates as prescriptive implementations: MSF for Agile Software Development and MSF for Capability Maturity Model Integration.

Open Unified Process
The Open Unified Process (OpenUP) is a software engineering methodology family. Part of the Eclipse Process Framework (which includes OpenUP/Basic) it embraces a pragmatic and agile philosophy, meaning that the creators have preserved the essential characteristics of the RUP/Unified Process, while having thrown out a lot of stuff to make the original framework actually usable.

Essential Unified Process
The Essential Unified Process (EssUP) is a software engineering framework, invented by Ivar Jacobson. It was created as an improvement on the RUP and identifies practices (most of them borrowed from the RUP and agile development methods) that you can choose and combine to create your own method. This is considered an improvement, because with the RUP all practices are intertwined and cannot be seen in isolation.

Agile Unified Process
The Agile Unified Process (AUP) is a software engineering methodology, created byScott Ambler. It presents yet another attempt at simplifying the RUP, describing an easy to understand approach to developing business application software using agile techniques and concepts. Yet it still aims to remain true to the ideas behind the RUP.

Enterprise Unified Process
The Enterprise Unified Process (EUP) is yet another software engineering methodology, created by Scott Ambler. It is an extension of the Rational Unified Process, adding several new phases and disciplines to a process that was already quite big in the first place.

Crystal
Crystal is a software engineering methodology family, created by Alistair Cockburn. It is called a self-adapting family of human-powered software development methods, of which Crystal Clear is its most prominent member (being the only one with a Wiki entry and its own book).

Evo
Evo is a project management methodology, created by Tom Gilb. Even though Evo is one of the older (and least-known) methodologies, according to some critics it has proven to be one of the most successful evolutionary methods available.

And that's it. I'm sure lots of people will not agree with some of my terminology, classifications or descriptions. And that's good! I love to learn and improve my thinking. So please feel free to add your thoughts...

 转发自: http://www.noop.nl/2008/07/the-definitive-list-of-software-development-methodologies.html


Search

Calendar

<<  September 2010  >>
SuMoTuWeThFrSa
2930311234
567891011
12131415161718
19202122232425
262728293012
3456789

Categories

Tags