隐喻在项目管理中的应用

来源:项目管理师    发布时间:2012-05-06    项目管理师视频    评论

  隐喻是极限编程方法学中的重要概念。但隐喻比较晦涩,它表示什么意思?在项目中如何应用?这值得我们深入探讨。
XP项目管理流程图。XP的分析设计比起RUP会少很多,因为每一次迭代的粒度不太大,每个阶段的分析与设计相对简单一些,并且在迭代的过程中可以逐步改进。
  最近阅读了《代码大全》其中的一章“隐喻”,对隐喻在项目管理中的应用有了一定体会:它能够促进分析人员、设计人员、开发人员之间的沟通与对项目业务的理解。
  项目规模决定规划
  首先,软件工程是从建筑领域引申进来的,“设计模式”便是起源于建筑大师亚历山大所写的《建筑的永恒之道》一书。
我们可以把一个开发项目比喻成建造房子。很明显,建造摩天大厦和建造一层楼的准备工作是截然不同的。建造摩天大厦需要前期经过非常仔细的规划,比如成本核算、时间核算、设计模型、设计图纸等。因为如果前期不规划好,我们不可能建到一半推倒重建,它的成本太高了。这就是我们软件工程里面“瀑布模型”的由来。其实这和软件开发项目是一一对应的,项目也要经过类似的成本时间估算、分析模型、设计模型这些过程。
  而建造一层楼就不同了,因为它涉及的成本更低,前期所做的规划肯定简单一些。但不管如何,必要的成本核算、时间核算、设计模型、设计图纸等前期规划还是需要的。那么再更进一步,如果想建一个狗窝,我们会去做仔细的规划吗?我想不会。在项目开发中,我们同样必须根据项目的规模大小,去衡量我们所需要做的前期规划的详细程度。
  其次,无论建造什么房子—摩天大厦也好,一栋楼房也好,在前期核算、设计等准备工作完成以后,必须先打地基,只有扎实的地基,才能支撑起整栋房子。程序开发也同样如此。在编码构建阶段开始的时候,我们必须在CVS上先搭建好整个开发环境,确定整个系统的代码目录结构,确定接口、类、方法、参数的名称以及它们之间的交互关系。如果采用UML统一建模语言来描述,设计阶段必须产生包关系图、类关系图这两种制品。我们在编码初始阶段必须根据这两种制品产生相应的代码骨架,为接下来的构建打下坚实的基础。我们以前开发的时候就吃过这样的亏,在设计阶段和编码初始阶段,没有定义好这些程序架构,先由各程序员自行定义,后来重新定义的时候要耗费大量的人力物力进行代码迁移。因此无论是建房子还是程序开发,打地基都是相当重要的。
  再次,建造房子的时候,经过前面所说的核算、设计、打地基,接下来会一层一层地建造房子,建造每一层之前我们可能会进一步细化、优化这一层的设计蓝图。这个过程就类似于软件开发过程的迭代开发,先集中精力对若干个特征或功能点进行详细设计和代码构建。这次开发完成以后,再过渡到另外的若干个功能点,形成一次一次的迭代。
迭代粒度的奥秘
  从上面可以看到,迭代对软件开发来讲是非常重要的,其实程序算法中的“分治法”也是这个道理。毫无疑问,RUP(Rational Unified Process,统一软件开发过程)和XP(eXtreme Programming,极限编程)都是强调迭代的,但为什么XP更轻量级、更加不注重详细的分析与设计,而RUP更加重量级,需要各种文档和详细的分析设计呢?
  同样是建造一栋摩天大厦,在RUP开发方法学里面,它是从一次建造一层楼的粒度来进行迭代开发的,因此每一次迭代仍然需要相对详细的分析与设计。而XP的方法则不同。它会以一套房子或者以一个房间的粒度去建造整栋摩天大厦,每一次迭代开发的功能点不会太多,因此所需要做的前期规划自然要少得多。软件大师Robert C.Martin在他的《敏捷软件开发—原则、模式与实践》中提到,XP理想的一个迭代周期为2周,每6次迭代形成一个可发行版本。因此,迭代粒度的大小是RUP和XP本质的区别之一。
  RUP更适合大型的开发项目,因为针对每一个项目,从跨越整个项目的广度上来讲,它制定了九大规程,每个规程对应若干个角色,每个角色需要产生若干个制品;从每一次迭代的深度上来讲,它强调把项目开发分成若干次迭代,每一次迭代都分成初始阶段、细化阶段、编码构建阶段和移交用户阶段,每一个阶段都强调形成若干制品,都对应多种不同的角色。

上一页12下一页

视频学习

我考网版权与免责声明

① 凡本网注明稿件来源为"原创"的所有文字、图片和音视频稿件,版权均属本网所有。任何媒体、网站或个人转载、链接转贴或以其他方式复制发表时必须注明"稿件来源:我考网",违者本网将依法追究责任;

② 本网部分稿件来源于网络,任何单位或个人认为我考网发布的内容可能涉嫌侵犯其合法权益,应该及时向我考网书面反馈,并提供身份证明、权属证明及详细侵权情况证明,我考网在收到上述法律文件后,将会尽快移除被控侵权内容。

最近更新

社区交流

考试问答