软件工程之美
宝玉
Groupon 资深工程师,微软最有价值专家
44272 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 55 讲
软件工程之美
15
15
1.0x
00:00/00:00
登录|注册

08 | 怎样平衡软件质量与时间成本范围的关系?

MVP模式是怎么诞生的?
极限编程是怎么做到“极限”的?
淘宝网站第一个版本是怎么做到一个月上线的?
敏捷开发
瀑布模型
产品经理要临时加需求怎么办?
老板要压缩项目时间怎么办?
质量
范围
成本
时间
课后思考
平衡软件质量与时间成本范围的关系
瀑布模型和敏捷开发的平衡
应用金三角做决策
金三角概念
总结
软件项目管理金三角
怎样平衡软件质量与时间成本范围的关系?

该思维导图由 AI 生成,仅供参考

你好,我是宝玉,我今天与你分享的主题是:怎样平衡软件质量与时间、成本、范围的关系。
《从软件工程的角度解读任正非的新年公开信》这篇文章中,我已经提到了“软件项目管理金三角”的概念。由于这个内容对于软件工程来说,非常之重要,所以我今天特别展开再讲一下。
你会发现,在实际的软件项目中不乏这样的例子:
一个项目,正常估算,要三个月才能完成,但是老板或客户要压缩到一个月完成,而你不知道如何说服他们;
项目开发一半,产品经理告诉你,有一个非常紧急的功能,要增加到这个版本中,你不知道该不该拒绝,或者如何拒绝;
听说迭代模型很好,你也尝试使用迭代模型,但是每次迭代时间到了还是完不成,只能把迭代时间延长,最后又做回传统的瀑布模型了;
你们组用瀑布模型开发,一到项目后期总免不了加班加点赶进度,为什么他们用敏捷开发的加班要少一些?
其实,这些日常项目中涉及时间、成本和范围的问题,都离不开“软件项目管理金三角”的概念。
掌握好这个知识点,学会平衡软件质量与时间成本范围的关系,可以帮助你更好的驾驭项目中的各种问题,也可以帮助你更好地理解软件工程中各个模型,尤其是瀑布模型和敏捷开发。

什么是软件项目管理金三角?

在现实生活中,我们都知道,做产品想“多、快、好、省”都占着,是不可能的,最多只能选两样。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文深入探讨了如何在软件项目管理中平衡软件质量与时间、成本、范围的关系。作者首先介绍了软件项目管理金三角的概念,强调了质量作为核心因素的重要性。通过实际案例和理论知识,阐述了如何应用金三角理论进行决策,并灵活运用金三角理论进行权衡取舍。文章还探讨了瀑布模型和敏捷开发在平衡时间、成本、范围关系上的不同特点,以及迭代模型的应用问题。通过深入浅出的阐述,为软件项目管理人员提供了一定的指导意义。文章还提供了多个案例,如淘宝网站的快速上线、极限编程的应用以及MVP模式的诞生,展示了如何在实际项目中平衡好软件质量与时间成本范围的关系。通过这些案例,读者可以更好地理解如何根据“金三角”的三条边,找出固定的一条或两条边,然后去调整剩下的边,达到平衡。整体而言,本文为读者提供了实用的软件项目管理知识,并鼓励读者在留言区分享讨论,以促进更好的实践和应用。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《软件工程之美》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(38)

  • 最新
  • 精选
  • javaadu
    1. 如果希望软件做得又快、有低成本,得到的软件应该是质量差、功能可能不全的软件 2. 如果希望软件免费,又得快速交付,那么得到的软件应该是质量没有保障,功能大概率不全的软件 3. 快速、便宜、质量好的软件是不存在的 4. 之前的工作中,好像没有一个项目可以达到质量和时间、成本之间良好的平衡,最后的结果都是为了保障质量和时间,然后增加人力成本(加班),如果加班也搞不定就对时间做出妥协(延期),范围这个指标倒是比较容易调整的一个指标。 5. 读完这篇文章的收获:(1)软件项目管理本质上就是在成本、范围、时间三个要素中做出合适的妥协的过程,质量是软件项目的目标,不能妥协;(2)管理金三角有助于在软件管理中进行良好有效的沟通,将精力花在事情上,而不是花在PK上,PK不是目标;(3)对于个人成长,也有同样的指导意义,我们的目标是取得个人的成功(名或利),影响这个目标的要素有时间、成本、范围,个人管理的过程也是在这三个要素中做妥协和平衡,例如,我现在积极参加这些知识付费的课程,就是希望用成本来提高自己的学习效率,这样可以在时间和范围上获得一些机会;我如果现在去健身,也会花钱请私教,同样是用成本来提高自己的健身效率,做出这样的选择的原因是我自己感觉相对于这些课程的价格来说,我的时间更加宝贵;但是有些时候,如果价格超出了我的承受能力,那我就不得不做出选择——自己花时间去搞定事情;有时候,成本我也不在乎,但是我的时间还是有限的,那我就只能做减法(少做一些事情)

    作者回复: 赞,你这个感悟很深刻,不只是项目中,都已经应用到日常生活中了👍

    2019-03-16
    2
    56
  • koradji
    对金三角有了进一步的认识和理解,以前只认为它是个三角形而已,还不会用,谢谢老师

    作者回复: 是呀,这个真的非常实用的,软件项目中很多现象都可以从它身上找到解释,很多问题都可以通过它找到合适的方案。

    2019-03-12
    14
  • alva_xu
    老师,其实,我想表达的是,传统的大企业(不是指BAT这类大企业),比如我们企业,IT项目牵涉到三个部门,一个是业务需求部门,一个是IT部门,一个是财务预算审批部门,采取的形式一般都是采用外包方式,而且往往是固定合同,也就是合同价格是确定的,需求范围也是确定的,这样的话,金三角的两条边就定下来了,剩下来的就是时间和质量的关系问题了。 按照金三角的理论,我们就可以知道前面所述的场景下项目组该重点抓什么了:作为甲方项目经理,重点抓的就是质量和时间了。如何通过提高效率,使单位时间的产出比原来的多(相当于增加了时间),来提高项目的交付质量,是我们甲方IT项目经理最关心的事。所以这时候,我们的方法是建立统一软件框架、提供公共服务组件、制定代码和测试规范、培训乙方团队、搭建CICD平台和自动化测试平台、sonarqube自动代码检测平台等,使原来几周一次测试变成一周几次测试,使原来低质量的代码快速变成高质量的代码... 反正是采用各种方法,提高工作效率,用于抵消业务部门不时提出的变更导致的项目进度的风险。当然在开发模式上,也会衡量敏捷的开发模式(特别是scrum的管理模式)和传统瀑布及衍生模式哪种模式更高效。 当然,理解了金三角,对于前期申请项目预算也是有帮助的,比如,可以和预算部门谈判,如果要砍预算,在时间一定的情况下,就只能减少项目范围,这是我们业务需求部门所不能接受的。这样,就可以使IT项目经理名正言顺地把预算部门和IT部门的矛盾转嫁到预算部门和业务需求部门去。 当然,最合理的做法应该是向BAT公司看齐,IT部门转变为利润中心,自己管预算、自己有开发团队,那么金三角的三条边就都可以进行调优了。

    作者回复: 谢谢补充👍 非常有价值的分享!

    2019-03-13
    12
  • helloworld
    我认为文中关于三要素的说法是错的。专栏里,提到这个三角的时候又总是同时提到质量,时间成本范围又同时影响着质量,对质量的要求又影响了时间成本范围,那么质量应该是要素之一。 有些文章说三要素是时间成本质量,这也是错的,范围没有了。 PMP提到了,三要素是成本质量范围,时间属成本。 花费了成本,换了别的东西,成本沉没了,再也回不来了。时间也是,花了时间和其它成本,换了别的东西,时间沉没了,再也回不来了。

    作者回复: 时间可以算作成本,但是三要素不代表就必须要将成本和时间合并。 对于一个软件项目来说,时间和成本都是很重要的纬度,有无限的钱和最牛的人,不代表就可以用很短的时间做出来产品。 对于项目各种因素的约束,本身就存在各种不同的解读,我不认为一定就只有一种正确答案,你选择自己认为正确的就好。

    2019-06-28
    10
  • 小先生
    从这篇文章,我至少学会了不要怼产品。而是要从成本,时间,范围,三原则中寻找妥协。

    作者回复: 💯 对,重点不是怼,而是协商

    2019-03-15
    10
  • 草裡菌
    金三角的确很有说服性,理论级的支撑。 1 用户体验很差的软件。性能低,学习成本高,缺陷多。 2 开发成本很高。但是投入产出比会有一个边界,无限的砸钱也不可能等比提高效率与质量。 3 开发周期长。开发周期长,比较容易出现需求变动,错失良机等问题。 4 不存在。 5 没什么能稳定使用的功能,会牺牲用户体验(比如加广告),性能低,安全容易出纰漏。 6 需求面很窄,小而美的那类软件,个人情怀很到位,开发时间很长。 7 也不存在。

    作者回复: 💯 我也认同4,7不存在

    2019-03-12
    7
  • AICC
    备注:理论上快,好,便宜是不存在的,但实际能否存在呢,可以只能加进一个新的维度“少” 所以围绕多,快,好,省(对应少,慢,差,贵)来确定1-7会是什么样的软件 1.快 + 便宜 = 质量很差并且多数伴随功能少 2.快 + 好 = 费用成本高多半是早期软件,功能少只实现核心功能但体验不错 3.好 + 便宜 = 开发周期长,但开发时间长费用成本不见得少,所以多半也伴随功能少 4. 快 + 便宜 + 好 = 如备注所说,这会是一个体验不错但功能少的软件,比如微信早期版本只能语音 5.免费 + 快 = 这样的软件也很多,质量基本没谱了可能还有安全风险 6.免费 + 好 = 这样的软件也很多,比如某零杀毒软件,当年就是以免费出道,但成本就很高开发周期一般也比较长 7.免费 + 好 + 快 = 单点功能的软件,比如微信里像抽奖助手的小程序,一个功能好用简单,还有像一些优秀的开源软件插件啥的 但通常免费多数是赚的流量费,广告插入到处是

    作者回复: 7的话可能还是有点争议,整体总结的非常好👍

    2019-03-12
    6
  • alva_xu
    留言中讲的买工具,提供培训,提供公共组件服务,以及搭建CICD平台和自动化测试平台,也可以理解为增加成本。但对于我们企业来说,这笔成本就不算在具体的某个开发项目里了,所以我把它归结为提高效率,实际上也可以理解为TTM (Time To Marketing)指标。

    作者回复: 谢谢补充🤝

    2019-03-13
    4
  • 少盐
    金三角,时间、成本、范围,在这三个因素的约束下,取得最好的结果 我想学到更多的知识,只能在时间和成本上都下功夫,如果没有足够的时间保证,成本再高也是浪费

    作者回复: 学知识和做项目还是有所不同,学知识,不仅仅是时间和成本,还需要通过应用知识,把知识变成技能,最终才能掌握这些知识。 就像软件工程,无论你花了多少时间成本去学习,如果没有做过真正的软件项目,没有把软件项目中的事例和知识点进行关联,没有在项目中应用这些知识,还是无法掌握的。

    2020-03-11
    2
    3
  • dancer
    很多的游戏公司这三个角都想要,就导致抄袭很严重!

    作者回复: 抄袭我觉得就相当于节约了需求分析的时间和成本

    2019-03-18
    2
    3
收起评论
显示
设置
留言
38
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部