《软件过程与管理》案例讨论 无清晰策略的快速开发
张辉准备领导他在公司的第2个项目。他的前一个项目进行得并不如人意。原计划要求他的项目小组12个月内交付CRM 2.0版,但实际花上了18个月。项目组在项目开始时就已经认识到项目计划进度的紧迫性,因而项目一开始就处于"死亡进程"(Death March)之中。经过整整18个月每天12小时,每周6~7天的艰苦挣扎,到项目结束时,6个小组成员中有2个退出,小组中最具实力的开发人员文志从上海骑自行车出走,目的不明。他从北京 的长城脚下发给张辉一张他骑着自行车的照片,文志说他不是退出,但没人知道他什么时候能回来。
CRM 3.0版要在CRM 2.0 版上市的12个月后发布,项目收尾、总结、休假已经2个月了。张辉准备开始新的尝试。离交付CRM 3.0版还有10个月的时间。他约了上司陈键与他讨论项目计划,陈键可以帮助他为开发人员提供尽可能的工作条件。用户文档负责人和测试负责人也一同参加了讨论。
陈键说:"3.0版必须超过竞争对手,所以我们在这个项目上需要投入更大的力量。我想你们可能还没意识到。从上个版本开始我们公司就已经落后了,这次公司准备全力以赴支持这个项目。我已经批准为项目组每个成员提供私人办公室,最新型的计算机以及免费的咖啡。你觉得怎样?"
张辉回答:"听起来很有吸引力,不过 除此之外,由于所有开发人员都是有经验的,我想主要应该多一些激励和支持措施,并使之从中获益。我不想事无巨细地管理他们,我想让每个开发人员都对系统的某一部分负责。上次,我们已经碰到许多接口问题,所以,这次我想花一些时间设计不同模块之间的接口,然后放手让他们自己去干。"
用户文档负责人说:"如果这是一个10个月的项目,我们需要在第8个月的时候锁定软件,及时准备用户文档。上次,直到项目结束,开发人员还在进行修改,令人尴尬的readme文件有20页长。用户手册在审查的时候总是被枪毙,如果你能做到可视化锁定,你的开发方法听起来就有道理了。"
测试负责人补充说:"我们也需要在可视化锁定的同时写出自动测试脚本。"
张辉赞同可视化锁定方法。陈键随即批准了张辉的总体步骤,并告诉他要保持大家步调一致。
当项目开始时,开发人员对他们的私人办公室,新的计算机及咖啡很满意,他们干劲十足地开始了工作,并主动工作到深夜。
时间一个月一个月地过去,项目进展平稳,他们已经完成了早期的软件原型,继续进行编码设计。管理层也一直在监视项目的进展,每件事情似乎都在顺利进行。
项目进行到了第4个月的时候,文志结束了他的自行车旅行,重新回到了项目组,并带回了一些骑车旅行时产生的新想法。张辉担心文志能否在允许的时间内完成那么多任务,但文志承诺,无论有多大的工作量,一定按时完成任务。
项目组成员各自独立做着自己的工作,而随着可视化锁定日期的来临,他们开始进行代码集成。他们在可视化锁定最终截止日期前一天的下午2点开始工作,但很快发现程序不能链接(link),更不用说运行了。代码在链接时有十个语法错误,而且每处理一个错误就会产生10个以上的新错误。他们直到午夜也没结果,只好决定第2天再说。
第二天早晨,陈键约见项目组成员:"程序移交给文档和测试人员了吗?"
张辉说:"还不行,我们还有些集成问题,可能今天下午就可以移交了。"项目组又工作了整个下午和晚上,但还是没能解决已经发现的所有问题,最后,他们只得承认无法预知集成需要多长时间。
他们整整化了2周时间处理这些语法错误,才得以使系统能够运行,当项目组比计划推迟了2周将阶段定版的系统移交时,测试和文档人员迅速做出反应,拒绝接收这样的版本。文档负责人说:"系统太不稳定,没隔几分钟就会崩溃,同时,有太多的系统漏洞,不能编写文档。"
测试负责人也赞同道:"系统太不稳定,你每次选择一次菜单,系统就会瘫掉,测试人员根本无法完成测试报告。"
张辉同意他们的说法,并表示他的项目成员会全力解决这些问题。陈键提醒他们注意10个月的最后截止日期,并说这个产品不能再像上个产品那样延期了。
他们又花了一个月的时间解决产品稳定性的问题,以使文档和测试工作能够进行,那时,距离10个月的最后截止日期只有2周时间了,他们只能更加拼命地工作。
但测试发现问题的速度远比开发人员解决问题的速度快,处理系统这部分的错误经常会导致系统其他部分的问题。已经无法按预计的10个月交付产品了。陈键召开了一个紧急会议,他说:"我看各位工作都很辛苦,但结果不够好,我已经为你们提供了各种尽可能的支持,但我并没有看到最终的软件,如果你们不能迅速完成产品,公司将会倒闭。"
伴随着巨大的压力,士气渐落。数月过去了,产品开始稳定了,但陈键仍对项目组施加压力,有些工作的效率极其低下。
尽管文志也在不停地工作,但他还是比项目中的其他人交付软件的时间晚。他的代码没有错误,但他对用户界面的控件做了些修改,导致测试脚本和用户文档与之不匹配。
张辉约见了测试和文档负责人:"你们可能不高兴,但我们只能有两种选择,要么保持文志的代码不变,重新进行测试并重新编写用户文档,要么仍掉文志的代码,将其彻底重写。文志不愿意重写他的代码,这个项目组也没人能做这件事了。这样看来只能请你们修改用户文档和测试用例了。"经过一翻争执,测试和文档负责人勉强同意了张辉的要求。
到项目结束时,开发这个软件整整花了15个月的时间,由于以上的变化,用户文档的印刷错过了计划安排的最佳时间点,公司在开发人员完成刻盘工作后,不得不又为印刷用户文档等候了2周,才将产品运出公司,投向市场。产品发布后,用户对CRM 3.0版反映冷淡,几个月时间,其市场分额就从第2位降到了第4位。张辉意识到他的第2个项目像第1个项目一样,又失败了。
讨论:错在哪里?
|