什么能够称之为软件开发中的方法论?个人认为应该是贯彻整个软件生命周期流程的,整合了软件项目管理和软件工程域以及支持过程的一个体系化的方法,规范和流程。而我们经常谈到的子实践仅仅是方法论中的很小的一个单元。从这个意义上来看,XP,FDD,TDD等都不能称为软件开发中的方法论。而我们比较认可的方法论主要是Rational统一软件过程中的RUP方法论,微软提出的MSF方法论,还有就是SCRUM敏捷软件开发的方法论。项目经理博客
可以看到RUP方法论是观察了整个需求到实现过程的,我们常谈的RUP的三个核心是用例驱动,架构为核心和增量迭代。RUP很大程度上基于面向对象的分析和设计思想,相当的系统化和严密,是大型软件开发中常使用的方法论,在这里不能单纯的将RUP和瀑布模型等同,RUP是一整套的软件分析和设计方法和流程,而瀑布模型仅仅是强调了软件生命周期和阶段的划分。
在RUP中提到了一个重点即增量迭代,而迭代正是敏捷方法论的一个核心内容,同时敏捷方法论更加强调了短周期迭代。但是到了SCRUM方法论不再强调架构为核心,SCRUM方法论中一个很重要的趋势就是需求条目化导致了后续完全条目化跟踪和实现,这和架构里面谈的分解和再集成有一定的冲突。因此SCRUM方法论个人认为对于完全全新的系统设计和开发仍然存在较大的局限性,全新系统无法真正剥离到架构这个重要环节。项目管理者联盟
在我们谈SCRUM方法论的时候容易一下子过渡到了方法论中的一些重要实践,如短周期迭代,站立会议,Product Backlog,Spring Backlog,敏捷回顾,看板可视化等。但是这些仅仅是工具和术的层面,在谈SCRUM方法论的时候仍然首先要明确敏捷方法论的核心指导思想和原则。项目经理圈子
SCRUM的一个核心思想就是基于过程动态学的可能性艺术,它强调人们想事情的时候不应该把注意力集中在“不能做的事情”,而是应该把注意力放在“什么事情可以做或者可能做”,不要被诸多的不确定性因素所困扰,先做可以做的,然后看有什么新的发现,有什么新的思维出现。再简单来讲就是要尽快去做,把复杂事物进行分解,尽早的开始可以做的事情,当可以做的事情完成后你会发现很多原来不可能的事情又变成了可能,一切原来模糊的东西都逐渐变清晰,这是SCRUM的最高指导思想。
在最高指导思想下我们看到SCRUM的核心主要体现在如下几个方面:项目管理者联盟
1)以故事为基础的需求条目化,以任务为基础的实现条目化。(Product Backlog,Spring Backlog)项目经理博客
2)2-4周的短周期迭代,而每天又是一个最小的迭代。(Product Backlog,Spring Backlog)转自项目管理者联盟
3)基于持续集成思想的进度和质量可视化(看板,燃尽图)。项目管理者联盟
对于第一点借鉴了很多FDD特征驱动开发方法中的思想,故事更加体现实现业务和用户价值,而故事又必须拆分到最小的业务价值单位以方便后续进度和质量跟踪。在这种方法中弱化了架构,架构思考的过程转移到了故事本身的分解和任务的分解过程中,而这些工作在Spring计划会议中就会完成。项目管理者联盟
对于第二点重点是借鉴RUP增量迭代的思路,注意迭代的真正含义是每个迭代版本都是可以真正向用户交互的版本。每个迭代中都涉及到多个较小的瀑布模型。项目管理者联盟
对于第三点位了实现可视化项目管理大量借鉴了精益生产中的看板管理的思路,为了使燃尽图真正有价值又要求了故事本身的粒度应该相差不大,通过这种方式将传统项目管理中的挣值管理方法进行简化,真正体现了进度和质量跟踪中的实用性。club.mypm.net 项目管理者联盟
|