当前位置:网站首页>为什么现在开发一款软件的时间越来越长?

为什么现在开发一款软件的时间越来越长?

2020-11-09 14:53:40 InfoQ

{"type":"doc","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"我们经常听到这样的问题:为什么开发软件这么贵?为什么我的团队交付软件的速度这么慢?为什么我的软件发布赶不上计划?为什么开发一个软件要花这么长时间?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"我们之所以一遍又一遍地听到这类问题,背后是有原因的。为了保持竞争力,企业每天都需要新的软件功能,但随着时间的流逝,我们交付软件的速度似乎停滞不前,或者更糟,变得更慢了。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"我想解释为什么会这样。不过,为了探讨这个话题,需要先了解一个我最关心的话题:本质复杂性和偶发复杂性。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"不同类型的复杂性"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"任何时候,当你在解决一个问题,不仅仅是软件问题,都有两种类型的复杂性:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"numberedlist","attrs":{"start":"","normalizeStart":1},"content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":1,"align":null,"origin":null},"content":[{"type":"text","text":"本质复杂性——这是包含在问题中的复杂性。如果不解决这种复杂性,就无法解决问题。它也被称为内在复杂性。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":2,"align":null,"origin":null},"content":[{"type":"text","text":"偶发复杂性——这是用来解决问题的方法和工具所带来的复杂性。这种复杂性不是你要解决的问题的一部分,而是在解决方案中引入的复杂性。它也被称为偶然复杂性。"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"IBM 360系统之父Fred Brooks在经典论文“没有银弹:软件工程的本质性与附属性工作”中提出了这个概念。可以这么想,如果你要解决一个数学问题,本质复杂性就是指对数学的了解,因为只有懂数学才能解题。如果你想解决这个问题,要么学习所需的数学知识,要么找个懂数学的人帮忙。如果你想解决这个问题,就无法逃过学习数学这一关。"}]},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/resource\/image\/18\/bf\/18ac8b463e896285357ea3b729aaebbf.png","alt":null,"title":"","style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":"","fromPaste":false,"pastePass":false}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"偶发复杂性"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}}]}

版权声明
本文为[InfoQ]所创,转载请带上原文链接,感谢
https://www.infoq.cn/article/xWVNlz18uPcaJvb40eoR?utm_source=rss&utm_medium=article