16

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

 3 years ago
source link: https://www.infoq.cn/article/xWVNlz18uPcaJvb40eoR
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

我们经常听到这样的问题:为什么开发软件这么贵?为什么我的团队交付软件的速度这么慢?为什么我的软件发布赶不上计划?为什么开发一个软件要花这么长时间?

我们之所以一遍又一遍地听到这类问题,背后是有原因的。为了保持竞争力,企业每天都需要新的软件功能,但随着时间的流逝,我们交付软件的速度似乎停滞不前,或者更糟,变得更慢了。

我想解释为什么会这样。不过,为了探讨这个话题,需要先了解一个我最关心的话题:本质复杂性和偶发复杂性。

不同类型的复杂性

任何时候,当你在解决一个问题,不仅仅是软件问题,都有两种类型的复杂性:

  1. 本质复杂性——这是包含在问题中的复杂性。如果不解决这种复杂性,就无法解决问题。它也被称为内在复杂性。

  2. 偶发复杂性——这是用来解决问题的方法和工具所带来的复杂性。这种复杂性不是你要解决的问题的一部分,而是在解决方案中引入的复杂性。它也被称为偶然复杂性。

IBM 360系统之父Fred Brooks在经典论文“没有银弹:软件工程的本质性与附属性工作”中提出了这个概念。可以这么想,如果你要解决一个数学问题,本质复杂性就是指对数学的了解,因为只有懂数学才能解题。如果你想解决这个问题,要么学习所需的数学知识,要么找个懂数学的人帮忙。如果你想解决这个问题,就无法逃过学习数学这一关。

qeuyya7.png!mobile

偶发复杂性


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK