“嗯,咳咳咳”老C大声的清着嗓子,引起了小P的注意。
“怎么,你写完了吗?”小P问道。
“呵呵,算是写完了。”老C说道。
“快让我看看,”小P道,跑到老C桌前,看到一篇这样的文档。
- 项目概述
Slam是一个自由风格的计算器。所谓“自由风格”是指可以在窗口处使用键盘输入计算式,且如果此计算式符合代数运算的规则,那么就可以得到正确的计算结果。此项目必须在寒假前完成。
- 用户、发起人及干系人需求
此项目来源于内部技术进步。项目参与者需要在项目结束后掌握C++基于对象的编程技术。表现为:
- 会使用eclipse + CDT + GCC tool chain的开发环境进行编程
- 简单了解项目开发的流程
- 掌握基本的配置管理知识和工具
- 可以编写正确的基于C++对象的程序,缺陷率低于2个/千行
- 会使用UML进行简单的类设计
- 养成良好的代码风格习惯
- 掌握基本的词法分析知识
- 掌握基本的语法分析知识
- 项目经理任命与权限
项目经理任命为老C,他具有安排项目资源的权利。小P必须严格按照他的计划和要求进行开发工作。
- 概要的里程碑
10月中旬 完成项目计划,并建立好开发环境
11月上旬 完成4则运算
11月下旬 完成代数运算
12月上旬 完成函数运算
12月中旬 Alpha测试
12月下旬 发布Beta测试版本
次年1月中旬 正式发布
- 假定与约束
- 组织、环境和外部的假定
- 组织、环境和外部的约束
- 在寒假之前完成此项目
- 不能占用正常的上课时间,需在业余时间进行
- 项目收益
小P每周请老C湘菜一次,或刀削面四次。
-----------------------------------------------------------------------------------------------------------(寂寞的分割线)
“……”小P看到最后一项有些无语,“这个……可以算作项目收益吗?”
“呵呵,基本算是吧”老C大言不惭,“要不我这个项目经理当的可没有什么乐趣,你也得有所付出吧,要不做项目的动力从哪里来?你想想,爷爷的,老子饭钱都陶了,这个项目一定要做好,要不也太对不起自己掏的腰包啦……这样才不会半途而废嘛。”
“……”小P有些被忽悠晕了,“你这么一说,好像也有些道理……”他想了想,“好吧,舍不得孩子套不住色狼,我就答应啦。”
“……”老C心想自己什么时候变成色狼了……
“那你能不能解释一下这个项目章程呢?”小P问道。
“呵呵,当然当然。”老C点头,“项目章程是Develop Project charter process的唯一输出,我们看到,在Technique & Tools里面有一个工具叫Project Selection Methods,这个工具是用来选择需要进行的项目的,当项目已经被选中,那么我们就要找人来做。这样项目经理就被授权来做这个项目——我以前已经说过,项目经理的职责和权利永远是不对等的——所以这个授权文件就相当的重要,我们来看看一般一个项目的charter都会包含哪些内容。”老C指挥着小P拉过白板。“首先我们有一个关于项目的高层描述,使用几个简单的句子说出项目的主要目标;下来是项目需求——我们除了要满足产品的要求,同时还要满足项目干系人和项目发起人的要求,这些要求有可能会是一些企业战略上的需求,比如需要在这个项目中使用一种新的技术,或者是业务需求,比如在项目中锻炼几个新人,又或者是一些企业发展的要求,比如缺陷率和项目计划完成率要达到新的标准等等……”老C找到茶杯喝了一大口,“下来就是项目经理的人名和权限,一般权限包括资源的配置权限,允许使用的资金的等级,审批的权限等;再下来就是假定和约束,假定就是我们认为是真的条件,而约束就是一些限制;最后是一些商业上的考核指标,比如我们需要达到的盈利目标,需要使客户达到的满意程度,对组织内部的贡献等等。总之一句话,我给你了规定的权限,你要给我完成这些目标!”
“哦,我差不多理解了,那么下来我们就可以开始开发工作了吧?”小P问道。
“不行,还差一些。”老C揉揉额头,“接下来我们还需要一个Preliminary Project Scope Statement才可以开始后继工作,注意,是后继工作,不是开发工作。 ”
“哦?这是做什么的东东啊?”小P追问。
“所谓Preliminary Project Scope Statement是一个对项目范围的初步说明。注意项目范围与产品范围是两回事,产品范围说的是我们要做什么样的产品,而项目范围是我们为了做出这样的产品而需要做的事情。”说着老C在白板上画了这样一个三角。
“我们做项目需要在3个要素间取得平衡,这3个要素是项目范围、费用和时间,在三角形中用三条边来表示,而关注的中心在项目和产品的质量;你可以想象,如果三角的任何一个边变长,势必会影响到其他的两条边,而在项目中其他的两条边往往是约束;所以我们在做项目时,必须要先明确项目的范围是什么,这样才要判断我们能否在约束条件下达到项目目标。”老C指着白板。
“唔,那么如果有了初步的项目范围说明书,那么我们就可以开始编程了吧?”小P问道。
“还不行。”老C摇头,“我们还需要细化我们的初步项目范围说明书。我们已经说过,项目是渐进明细的,是迭代发展的,我们会随着项目的深入,不断的认识到我们还需要进一步进行的工作,那么如何执行进一步认识我们的工作呢?我们需要制定项目计划,我们以前已经说过,一个项目被分为9个知识领域,每一个知识领域都需要我们计划-执行-监控-收尾,所谓项目计划就是告诉我们如何去进行这些工作,当我们把这些工作按照计划执行完,我们就是完成了对项目逐步深入认识的工作。只有我们对项目认识深入了,才有可能做好。否则只能靠rp了。”
“就是说我们有了初步项目范围说明书之后,还需要制定一个项目计划?”小P问道。
“没错,没错。”老C点头,“然后我们需要根据项目计划的说明去细化我们的项目,得到一个项目范围说明书。一个项目最重要的3篇文档就是项目章程、项目计划和项目范围说明书。”老C说着在白板上又画了一幅图。
“相当具有后现代解构主义的美感,很有27号的设计风格……”小P对着白板品头论足。
“呵呵,呵呵……”老C傻笑,“画的好不好另说,这个图说明了9个知识领域相互的关系,质量、范围、费用和时间是根本,沟通、人力资源和采购是支柱,风险悬而未决,需要其他部分的支撑,项目经理做整体和集成管理。而项目管理计划就是如何盖这个房子的蓝图或者说明书,下来我们就需要制定一个项目计划啦——记住,项目计划不仅仅是一些时间上的安排而已。不过在此之前我们需要一个项目初步范围说明书。”
“是么?那么我们如何做下一步的事情呢?”小P问道。
“嗯,这个也有规定好的processes,我们只要照着做就行了。我们回去吧,时间也晚了,这些事情留到明天再做吧。”老C回答。
“好,那我们明天见!”
(早睡早起,有利身体健康……)