软件工程之美8讲——怎样平衡软件质量与时间成本范围的关系?
什么是软件项目管理金三角?
软件项目中,也有一个类似的平衡关系,就是
软件质量(产品的质量,客户的满意度)与
范围(需要实现多少功能)、
时间(多久可以完成)、
成本(花多少钱)四个要素之间的平衡。
瀑布模型和敏捷开发如何平衡时间成本范围的关系?
除了可以将“金三角”的知识应用在软件项目中,还可以应用它来理解和应用软件工程中的开发模式,尤其是瀑布模型和敏捷开发这两种典型的开发模式。瀑布模型有严格的阶段划分,有需求分析、系统设计、开发和测试等阶段,通常在开发过程中不接受需求变更,也就是说,我们可以认为瀑布模型的范围是固定的,其他两条边时间和成本是变量。
所以使用瀑布模型开发,如果中间发现不能如期完成进度,通常选择的方案就是延期(加班),或者往项目中加人。我们再来看敏捷开发,敏捷开发中,是采用固定时间周期的开发模式,例如每两周一个 Sprint,团队人数也比较少。
所以,在敏捷开发中,时间和成本两条边是固定,就只有范围这条边是变量。这就是为什么在敏捷开发中,每个 Sprint 开始前都要开 Sprint 计划会,大家一起选择下个 Sprint 能做完的任务,甚至于在 Sprint 结束时,没能完成的任务会放到下个 Sprint 再做。这时候再想想文章开头我们提到的问题:听说迭代模型很好,你也尝试使用迭代模型,但是每次迭代时间到了还是完不成,只能把迭代时间延长,最后又做回传统的瀑布模型了。你现在是不是就明白了:如果不能固定“时间”这条边,就会导致时间也成了变量,迭代自然无法正常推进。
如何平衡好软件质量与时间成本范围的关系?
那么怎么样才能平衡好软件质量与时间成本范围的关系呢?前面我们说日常生活中“多、快、好、省”最多只能选两样,其实如何平衡好软件质量与时间成本范围的关系也是一样的道理,我们只能最多选择两样,然后在另一边或者另两条边去寻找平衡。所以第一件事就是:从时间、成本和范围这三条边中找出来固定的一条或者两条边,再去调整另一条边。