OpenUP 是一个精益的统一过程,它在结构化的生命周期中采用迭代和增量的方法。OpenUP 强调注重实效、敏捷的哲学,将关注重点放在软件开发的协作本性上面。它是一种不约束工具和拘泥于仪式的开发过程,可以被扩展到非常广泛的项目类型之中。
精益(Lean)
从精益制造的概念受到启发,我们同样强调高质量的结果、消除浪费、处理变化和关注客户的价值。
丰田汽车早期的生产线是半机械化的方式,对于人的依赖很高,为了达到优秀的品质,需要不断地精益求精,不断地改善,这个过程叫持续改善。这种持续改善,用另外一个词说就叫精益求精。所以他的生产方式也就精益生产方式。
敏捷哲学(Agile philosophy)
敏捷软件开发宣言认为:
- 人和交互重于过程和工具
- 可以工作的软件重于面面俱到的文档
- 客户合作重于合同谈判
- 随时应对变化重于遵循计划
虽然右项也有其价值,但我们认为左项更加重要。
OpenUP 遵从 Manifesto for Agile Software Development 的原则,详细参考http://www.agilemanifesto.org。
OpenUP和RUP的关系
OpenUP结合了RUP的最佳实践和敏捷方法论,形成一套敏捷轻量型的流程。由于扎根于RUP,OpenUP提供了迭代和增量特性,同时具备用例驱动(use-case driven)、风险驱动(risk-driven)和以架构为核心(architecture-centric)的特性,并且兼具敏捷特性。OpenUP提供了一系列的特性实践对于很多项目不需要额外定制,开箱即用,同时还提供了扩展功能,可以根据项目和团队的需求进行流程的扩展和自定义。
我们也可以简单的认为RUP是OpenUP的一个商业扩展。
选择RUP,还是选择敏捷
场景:面试。一位同事为我们的另外一位同事介绍我们所使用的开发流程。
甲:我们使用的是什么开发流程?
乙:RUP或者敏捷。如果项目比较大,需求比较多,项目周期比较长,我们需要正规的开发,那么我们会采用RUP的开发方式,这是一种重型的开发方式;如果项目比较小,项目团队也比较小,需求不那么明确,我们会采用敏捷开发模式,这是一种轻量型的开发方式。
这个场景反映出了我们最初对RUP的理解,尽管这种看法存在一些错误的认识。经过几年的项目实践,我们对RUP也有了更好的认识,RUP本身的不断演进,其实RUP也越来越变得敏捷。应该说,RUP为敏捷引入了秩序,而敏捷的开发方式也为RUP带来了更多的灵活性。
OpenUP则是两者的产物,他本身定义了一整套的框架和核心价值,我们既可以更加敏捷的方式采用它,也可以采用更多计划驱动的方式,这完全取决于项目的具体状况,项目团队成员的知识结构等因素,换句话说,UP提供了剑和剑法,如何使用,完全取决于用剑的高手了。
更多资源
OpenUP Wiki :http://epf.eclipse.org/wikis/openup/index.htm
Rational Edge: OpenUP 精华 : http://www.ibm.com/developerworks/cn/rational/rationaledge/content/oct07/kroll/