h1 {border-width: 1; border: solid; text-align: center}
div.imagemap { align: center; border: 0; }
过程与方法论
作者:fasiondog(fasiondog@gmail.com)
来源:http://blog.csdn.net/KongDong/
![](/images/load.gif)
[url=http://dev.csdn.net/#id2246404][url=http://dev.csdn.net/#id2246509][url=http://dev.csdn.net/#id2246561][url=http://dev.csdn.net/#id2246621][url=http://dev.csdn.net/#id2246673][url=http://dev.csdn.net/#id2246758][url=http://dev.csdn.net/#id2246323][url=http://dev.csdn.net/#id2247139][url=http://dev.csdn.net/#id2247231] 什么是过程? 一个过程的定义——一个工作比较复杂,我们将它分解为一系列活动,给出每个活动的时机、输入、角色、输出,并将活动串起来,最终达到工作的目标。 在上述的定义中,可以看到任何带有目的性的一系列活动的集合都可以称之为过程,由于一个复杂过程中的活动常常还可以继续分解成更多的子活动的集合,那么这通常被称之为子过程。 另外,在上面的定义里,还有一个容易被忽视的地方:“将活动串起来”。这里隐含着一个问题——活动应该如何被串起来?大家都有这样的体会,按照不同的顺序执行的活动,有着可能完全不同的效果。因此,好的过程应该是一系列互相协调一致的、能产出更好结果的活动的集合。由此可见,一个软件组织所尽力追求的“流程”实际上一个组织所寻找和认定的对自身而言好的过程,这显然不仅仅是管理的需要,对每一位软件开发人员而言都是同样的重要。但是,“好的过程”究竟是怎样的?对这一问题的理解是造成开发人员和管理人员之间对“流程”看法的冲突所在,一个致力于发展的软件公司必然会不断的努力寻找“好的过程”,而这正是“持续改进”的意义所在。 下面是经典过程定义中的三要素:活动、产品、角色,这里就不再多作解释了: 活动 活动是过程中要执行的工作。过程中的活动具有很强的目的性,一个已定义的过程中是不应该存在无缘无故的活动。由于活动具有目的性,也决定了活动的根本——输入与输出。输入对应了活动的前提条件,而输出则对应了活动的目标的结果。 工作产品 工作产品的英文名称是“Work Product“,由于中文翻译的问题很多人容易把过程中的“工作产品”当作我们常知的在商店柜台上出售的最终产物。其实,在过程中的一切产出都可以成为工作产品,它包含了文档、可执行文件、代码、计划等等。在一系列的工作产品中对于最终交给客户的往往又称为交付件或最终产品,而过程中其他的产出则对应为“中间产品”。由于中文翻译的问题,“工作产品”在某些地方也称之为“工件”。 角色 “角色”最容易理解,也就是活动的执行主体-人。由于不同的活动需要不同的相关技能,在过程定义中,便将人按照一定的职责划分,便于理解和指导人们掌握不同的技能。它的本质是对掌握某一类技能并被赋予某类职责的人的抽象。 什么是方法论? 方法论则是研究方法的理论,或者说是方法的系统论。它的任务是研究和批评具体的方法,是将某一领域分散的各种具体方法组织起来并给予理论上的说明。 可见,方法论包含了两个方面: 1、研究和批评具体的方法 2、研究如何将某一领域的各种具体方法组织和协调起来,并给出基本的原理 过程与方法论的关系 现在来看看过程和方法论之间到底是什么关系? 一个软件组织为了提高客户满意度、提高生产率必定会不断的追寻一个“好的过程”。在这个过程里包含了一系列协调一致的活动,每个活动都有自己一系列的特定的实现技术和工具(见下面的图示),那么这些技术应该怎样如何选定的呢?——这就是方法论所研究的对象了。方法论除了选定某个特定活动的特定技术外,更要的是如何将这些零散、具体的技术组织起来,让它们协调一致的共同发挥更大的作用。从这里可以看出,对一个软件组织来说,割裂的研究单个实现技术是没有意义的,必须将一系列的活动以及它们的可选技术结合起来进行研究。大多数的软件组织以及开发人员本身并没有这么多的时间来系统的研究各种方法以及它们之间的关系,这项艰巨的任务显然落在了那些方法论学者的身上,而对于软件组织以及开发人员,大多数的时候,只需要实行拿来主义,然后再在这一套方法论的指导思想(基本原理)上,制定自己的开发过程以及基于自己的实践不断的优化和改进某项活动的具体特定技术,形成自己的开发过程。可见,在软件组织没有自己过程的初期,只需要关注那些方法论研究的结果,如:RUP、敏捷,而在后期,则必须基于对选定方法论原理的深刻理解上以及自身的实践基础上,改进和优化自己的过程,也许有一天当对方法论的基本原理都进行了深刻的改变,便形成了自己的独特方法论。 从上面的论述里看,似乎只要方法论就足够了,还要自己定义的过程干什么?其实,方法论更多的关注选定技术的方法和基本原理,它所生成的结果往往是一系列的方法集合以及它们之间的联系顺序,但是,它对每个方法的输入、输出、工作产品、模板等往往没有非常明晰的定义,而缺少这些会使人们在执行时不知所措,尤其是在没有理解方法论背后本身的原理时。 可以这样做一个粗略的总结: 1、方法论是“好的过程”背后的基础 2、过程则是方法论在具体组织的特化和落实 3、对一个组织来说,脱离方法论背后的基本原理孤立的研究单个活动的技术,在初期意义不大。 4、在没有理解方法论的基本原理和目标时,争论方法论本身没有意义,尤其是仅对不同方法论中的单个技术进行比较、争论时。
![](/images/load.gif)