最近我负责的一个软件开发项目出现状况。因为没有做好项目任务分配和控制,结果项目进行得一塌糊涂。在阶段报告会议上,面对各方质问我无言以对,连项目到底已经完成了什么任务,还有多少任务没有完成都没有一个清晰的说法。最后项目被迫暂停整顿。
面对项目重启千头万绪的工作,我只感到眼前一遍漆黑,摸不着头脑。我的经验、智慧、精力和能力都受到极大的挑战。为此我专门请教资深的开发专家,经过分析 他认为,造成如此窘境的原因在于我在接受任务后,没有认真地把开发任务进行显形化和可视化管理,就匆忙地展开开发活动,以致落入今天一筹莫展的境况。
一般来说,由于软件开发项目具有人多、钱多、事多、过程长,而且复杂度高、风险不可控等特点,所以在开发过程中很容易引起各种混乱。当不能及时有效地解决 时,就会造成进度失控、预算超支、质量差等问题,严重时项目还可能会无疾而终。因此,该专家建议我应该学会利用项目管理的方法、工具和技术构建一个可视化 平台,将复杂纷乱的项目任务进行图像化和可视化管理,这正是我能否走出项目混乱泥潭的关键所在。
什么是可视化WBS方法?
如何对软件开发进行可视化管理是一件让人头痛的事情。专家给我的建议是:软件开发好的管理必须做好一件事情,就是分配、执行和追踪任务都能用图形化表示出 来,而且必须一目了然。在经历多次痛苦的失败和反思后,我终于找到一种可视化的开发管理工具,那就是在软件开发中应用WBS方法。这种可视化的管理方法使 我有一种四两拔千斤,项目混乱灰飞烟灭的感觉。
(1)什么是可视化的WBS
WBS(Work Breakdown Structure)即工作分解结构,是根据项目目标把工作分解成许多层次分明的、可交付成果的工作任务,然后用逻辑图形或树形结构表示出来。WBS是由 3个关键元素构成:W,工作,可以产生有形结果的工作任务;B,分解,是一种逐步细分和分类的层级结构;S,结构,按照一定的模式组织各部分。
WBS表现为一种可视化、层次化的树状结构,它定义了整个开发项目的工作范围,WBS的层次结构是以可交付任务成果为对象,包括内部和外部可交付成果。随 分解层次的深入,所定义的项目任务也就越详细越具体。每向下分解一个层次,就意味着项目工作的定义深入了一步。位于整个WBS分解结构最底层是不能再进一 步细分的任务,称为工作包。因此,在项目规划的过程中,应用可视化WBS方法进行工作任务分解,就能在此基础之上再进行资源分配、进度计划预估和成本预 估。
(2)WBS的基本要素:结构、工作包、字典和报告
在项目管理中,WBS是一个分层次的、从全面到细节的树形结构,由可交付成果和需要执行的任务组成。WBS的目的是识别项目中实际需要完成的工作任务,因此WBS有四个基本要素:
一是结构化编码:WBS结构是以等级状或树状来构成,底层代表详细的信息,逐层向上。WBS的结构应是科学的逻辑结构,而不是单个的、离散的、在时间顺序 上不连续的成果的描述结构。WBS结构由层层的逻辑包含关系构成,非常严谨。在表现结构化的时候,最好的方式是应用结构化的编码体系来体现。
二是工作包:工作包是WBS的最底层元素,也是最小的可交付成果。通过这些最小的可交付成果很容易就能识别出完成它的活动、成本和责任人,以及其它资源信息。
三是WBS字典:在开发管理中规范化、标准化一直是软件开发追求的目标,WBS字典就是这样一种工具。它用于描述和定义WBS分解的工作文档。同时,WBS字典也使得WBS易于沟通和被开发团队以外的相关参与者理解(如高层领导和客户等)。
四是工作报告:可视化的工作任务完成报告的目的是要反映开发到目前为止的进展。通过任务完成报告,领导能够判断和评价开发过程的各个方面是否偏离目标,偏离程度是多少。
为什么WBS具有可视化作用?
在原先暂停的项目中,我也曾应用多种项目管理工具,其中也进行了项目任务分配和跟踪,但结果还是丢三落四,混乱不清。后来分析主要原因发现,是不能直观地看到任务的分配和完成情况带来的恶果。那么,为什么WBS具有直观的可视化功能呢?
作为一个描述开发任务分解的可视化工具,WBS能直观地展现一个项目全貌,清晰地用树形图表(或其它逻辑图形)来表示各工作任务之间的相互联系,详细说明 为完成项目所必须完成的各项任务的计划工具。同时,它在图表上直观的标注和定义里程碑事件,这可以作为项目状况的可视化工具向高层报告项目完成情况。当项 目结束时,还可以是项目绩效衡量的量化依据。因此,它能帮助项目经理把工作任务图形化和显影化,也能更直观的管理和评价开发工作的绩效。
(1)初期作用:图形化项目任务规划
WBS是面向可交付成果的一组工作任务,这些任务定义了工作范围,未在WBS中包括的工作任务就不属于开发的范围。WBS树形图每下降一层就代表对项目工 作更加详细的定义和描述。因此,可视化的可交付成果工作分解可以防止遗漏项目的可交付成果,这能帮助项目经理直观的关注项目目标和明确职责。
(2)项目计划时:使项目进度表一目了然
可视化的WBS能帮助改进时间、成本和资源估计的准确度。软件开 发是个庞大的项目,过程控制主要是体现在执行过程中的时间进度控制,而WBS能把开发计划过程图形化,能在图形上标注各阶段投入的资源和达到目标所用的时 间。通过图表化的树形结构能把大任务分解成多个小任务,使可视化的项目可交付成果一目了然。因此,这种可视化的WBS方法不但能更加精确估算工作量和分配 工作,并且能更加细密的跟踪,而且也有利于按质按量的在规定时间内完成任务。
(3)WBS可视化有利于多方沟通
在软件开发过程中,一般要历时一段时间,这会涉及到大量的资源和人员。因为原先设想的开发环境会随着项目进展发生很大的变化,这时就非常需要一个简洁高效 的沟通工具。而图表化的WBS能把开发过程中的各类信息通过显形化、图象化表现出来,这就使得用户和各方参与者有了一个简洁易懂的信息沟通联接器。
(4)明确划分和落实人员职责
WBS分解的核心思想之一是体现在人员职责的明确划分和落实,这正是图表化WBS的强项之一。责任到人是软件开发管理的核心,软件开发中最怕的就是“没人 认账,没人负责”。要避免这个问题的出现,就要在每一层次WBS分解过程中都考虑到人员责任的划分和归属,尽可能每一个最底层的节点任务都有唯一责任人 (或部门)相对应。
(5)有利于全过程进度监控
开发管理很重要一点就是在确保质量的前提下做好进度监控,进度滞后的软件项目是许多项目经理心中永远的痛。因此,无论是小的开发项目还是大的开发项目,进度控制是一个重要的工作。当应用可视化WBS时,由于任务结构划分一目了然,进度监控自然也就能一目了然。
而且当开发项目规模越大时,可视化WBS就更重要了。通过查看WBS图形(如用不同的颜色区分),项目经理就能在项目过程中及时了解项目实际进展,并与进 度计划进行比较,对出现偏差的原因和影响进行分析,及时找出调整方法并对原计划进行变更,如此不断循环,就按计划进行项目验收。
怎样制作软件开发的可视化WBS?
许多资深开发人员都会认为“没有WBS,就没有软件开发管理”。因此,如何制定正确的可视化WBS就成为软件开发管理的核心过程。构建可视化WBS有很多 不同的方法,对于软件开发管理比较成熟的软件公司,针对不同类型的开发项目都有不同的可视化WBS模版供项目经理参考。这里与大家分享我制定项目开发的可 视化WBS的过程。
(1)列出树形图表化的目标任务清单
目标清单(Working List)是开发活动需要产出的工作结果,可以是开发最终交付成果的组成部分,也可以是开发中间过程的阶段性结果。目标清单有大有小,有的相互关联,有隶 属的关系,但核心一点是要列出树形结构图表。在列出开发工作清单的过程,可以是头脑风暴的方法,由项目组成员和资深技术专家共同完成。在分解项目目标时, 如果有现成的模板应该尽量利用,这样可以大大提高工作效率。
(2)画出图形化的工作任务分解结构图
针对项目目标进行任务分解得到WBS,然后画出图形化的WBS的层次结构图。简单说,是将主要项目可交付成果细分为更小的、易于管理的工作包,工作包必须 详细到可以对该工作包进行估算(成本和历时)、安排进度、预算、分配负责人员或部门。如果有必要,可建立一个树形的逻辑编码系统。最后,需要不断地对可视 化的WBS更新或修正,直到覆盖所有工作。
(3)画出图表化的人员职责分解结构图
当可视化WBS中的工作任务确定了后,这时就需要对完成任务的责任人也用图表化来明确。例如,具体明确由那些人来完成哪些任务,将得到什么样的可交付成果。因为人员职责的图表结构化也是可视化WBS的一个特点,也是关键的一步。
(4)建立图表化的WBS字典
一般来说,如果WBS含有数百(或数千)条详细的活动,那么各方人员沟通和理解就是一件繁重的工作。在这种情况下,把所有重要信息放入一个图表化的WBS字典中会有好处,因为图表化的WBS字典会对项目范围和工作任务清晰的定义发挥着的重要作用。
总之,可视化的WBS能体现出开发任务、人员职责的明确划分和落实。它是贯穿开发全过程的一条主线,能将开发计划、过程控制、业绩评价串联起来形成有效的 管理。简单说,就是可视化WBS是把一个比较复杂的软件开发项目逐步分解为比较简单的过程, 让原来看起来不可控的一件事情变得清晰直观和可控。