购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.3 软件复杂度困局

针对传统事务,复杂问题一般都是肉眼可见的,可以及时找到处理和应对的方法,也能分清相关的责任。但是,软件研发是知识手工业者的大规模协作,随着需求的演进和设计的迭代,各种由复杂度产生的风险只是从眼前分摊出去,再在看不见的地方集聚起来。在这个过程中,每一个具体环节都在做看似正确的事,每一个具体的人都在推动项目的完善。但是整体的结果是,不仅累积了巨大的复杂度风险,而且再也找不到具体的人、具体的环节来对整个软件系统负责。因此,结果是不仅风险大,而且治理起来也特别困难。

软件的复杂度包含两个层面:软件系统层面的复杂度和软件研发流程层面的复杂度。

在软件系统层面上,针对大型软件,“when things work,nobody knows why”俨然已经是一种常态。随着时间的推移,现在已经没有人清楚系统到底是如何工作的,将来也不会有人清楚。

在软件研发流程层面上,一个简单的改动,哪怕只改动一行代码也需要经历一次完整的流程,涉及多个团队和多个工具体系的相互协作。

可以说,对于大型软件来讲,复杂才是常态,不复杂才不正常。

那么,为什么要将大型软件做得这么复杂?复杂度又从何而来? z21Yt4py4yB3VHv5aXxIDTk4zW7wgTlM1y9zunz0EZZpUkKakumAhzjIuJVRh6yZ

点击中间区域
呼出菜单
上一章
目录
下一章
×