技术开发 频道

软件项目管理问题面面谈

    7. 你喜欢任务分解还是滚动式计划?

    根据项目特点来定,一般会选用任务分解的计划,责任清楚,可控性更强。滚动式计划的灵活性比较强,适应性比较好,但容易引起大家对计划不够重视,计划能力降低,或者可控性会差些。有时会将这两种方法结合起来使用。

    8. 你需要哪些东西帮助你判断项目是否符合时间要求,在预算范围内运作?

    前提是这个项目的进度计划和成本计划是符合项目实际情况并不断随着项目的时间发展而滚动更新的。

    确保收集的进度和花费的成本就真实可靠的。

    在此时项目的范围没有影响到时间和成本的规划。

    那么就可以根据项目时间与计划的内容进行对比来判断项目符合时间要求,在预算范围内运作。常用的方法有基线对比法和挣值法。

    9. DSDM、Prince2、Scrum,这三者之间有哪些区别?

    动态系统开发方法(Dynamic System Development method,DSDM)是众多敏捷开发方法中的一种,它倡导以业务为核心,快速而有效地进行系统开发。该方法的详细内容,可以参考:DSDM业务中心框架开发方法(第二版)。这种方法主要是在英国应用比较广泛。一般来说,敏捷方法适合于规模比较小、变化比较快(需求不够稳定)的项目,而对大规模软件,特别是在关键性、可靠性、安全性方面有很高要求的开发项目,则不适合。当然,可以在某些项目小组内实施;也是可以的。敏捷开发的方法很多,包括下面所说的Scrum、自适应软件开发(Adaptive Software Development,ASD)、Crystal方法和特性驱动开发(Feature-Driven Development,FDD),可以参考《敏捷软件开发生态系统》。

    PRINCE2(PRojects IN Controlled Environments 2)为项目管理提供了一种结构化的方法,这种方法最早是在1989年由英国政府计算机和电信中心(CCTA)开发的,作为英国政府IT项目管理的标准。PRINCE2如今日益流行,是英国项目管理的标准,它为管理项目提供清晰界定工作框架,介绍如何协调项目中的人和活动、如何设计和监督项目以及在项目发生变更的情况下如何调整的流程。每一个流程都详细标出关键的输入、输出和具体目标及要执行的活动,这为计划偏差提供了自发的控制。这种方法把项目划分为多个管理阶段,保证让所有资源得到有效的控制。依靠严格的监控,项目在控制和组织的方式下得到执行。详细参考:http://zh.wikipedia.org/wiki/PRINCE2

    Scrum是一种迭代式增量软件开发过程,通常用于敏捷软件开发。Scrum在英语的意思是橄榄球里的争球。Scrum是一个包括了一系列实践和预定义角色的过程骨架,其主要角色包括同项目经理类似的Scrum主管角色——负责维护过程和任务,产品负责人代表利益所有者,开发团队包括了所有开发人员。在每一次冲刺(一般为15到30天周期 ),开发团队创建可用的、可随时推出的软件一个增量(小版本)。每一个冲刺所要实现的特性来自产品订单(product backlog), 产品订单是按照优先级排列的工作需求。在冲刺的过程中,没有人能够变更冲刺订单(sprint backlog),这意味着在一个冲刺中需求是被冻结的。

    管理Scrum过程有很多实施方法,从白板上的即时贴到软件包。Scrum最大的好处是它非常容易学习,而且应用Scrum不需要太多的投入。详见:http://zh.wikipedia.org/w/index.php?title=Scrum&variant=zh-cn 方法的应用,同样由项目规模、业务特点(需求是否稳定)等决定,而且还受企业文化、流程和领导意识等决定。如果需求稳定、项目规模比较大或周期比较长,一般会选用PRINCE2,相反,可能会选择DSDM或Scrum,后两者没有本质区别,只是具有不同的非常好的实践。

    正如有人评论,国内对Scrum还比较熟悉,对DSDM、PRINCE2等不够熟悉,应用不多。而业界最熟悉的还是CMMI、RUP(IBM Rational Unify Process 统一过程)、XP(敏捷方法的极限编程 eXtreme Programming)和MSF(Microsoft Solution Framework,微软公司软件开发解决方案框架),可参考: 软件开发过程(CMMI/RUP/XP/MSF)是与非

    10.如果客户想要的东西太多,你在范围和时间上怎样跟他达成一致呢?

    首先要向客户说明,如果在某个时间内去做不可能完成的工作,其结果必然是质量得不到保证,或者所化的成本过大。应该没有客户想做赔本的生意,每个客户都会重视质量,而不愿意损害自己的利益。

    然后,和客户一起,按需求重要性、紧急性等对需求进行分类,分为不同的等级,然后从优先级高的需求开始,来估算不同优先级类别的需求实现的工作量。设定几个不同的开发周期或交付时间,从而由用户作出选择,例如:

    (1) 只做优先级最高的那类需求,开发周期需要3个月;

    (2) 做优先级最高和优先级高的那两类需求,开发周期需要7个月;

    (3) 做优先级最高、高和中等的共3类需求,开发周期需要12个月;

    (4) 所有需求都实现,开发周期需要18个月

    用户可能选(2), 先完成两类需求,签订合同。等这合同履行很好之后,再继续下一步的开发。

0
相关文章