加入收藏 | 设为首页 | 会员中心 | 我要投稿 南昌站长网 (https://www.0791zz.cn/)- 终端安全、安全管理、数据治理、图像分析、大数据!
当前位置: 首页 > 站长资讯 > 动态 > 正文

开发一款软件的时间越来越长?

发布时间:2020-11-11 15:02:32 所属栏目:动态 来源:互联网
导读:于为什么开发软件需要的时间越来越长,原因还有很多,比如业务需要更快的迭代速度、企业架构标准或对安全性的重视程度,等等。但关键是,我们在 2020 年开发的软件与在 2010 年开发的软件几乎没有什么相似之处,更不用说在 2000 年了。在很大程度上,这是一

于为什么开发软件需要的时间越来越长,原因还有很多,比如业务需要更快的迭代速度、企业架构标准或对安全性的重视程度,等等。但关键是,我们在 2020 年开发的软件与在 2010 年开发的软件几乎没有什么相似之处,更不用说在 2000 年了。在很大程度上,这是一件好事。

但也有不好的地方。我们似乎又回到了 2000 年到 2007 年,那时每个应用程序都是用同样的工具开发的,而其中有很多工具变得越来越复杂。现在,很多流行的工具和框架都来自于大型企业,但它们解决的很多问题是其他企业不会遇到的。

为了跟上快速变化的技术格局,公司开始采用更开放的技术。这带来了巨大的优势,因为你可以用这些工具完成以前只能在梦中想一想的壮举。但切换工具通常是有代价的,最终会在流程中引入很多偶发复杂性。

虽然使用前沿的技术可能会在某些方面获得好处,但技术越新,维护的难度就越大。而且,越早采用一项技术,当它演化成为一项对广大用户都有用的技术时,你所经历的痛苦就越多。如何平衡一项新技术所带来的收益以及使用它所带来的痛苦是技术专家们长期以来一直在努力解决的问题。

我们现在发现,挑选有用的工具、框架和技术是一项非常有价值的技能。如果不小心使用了未经验证的新工具或框架可能会产生有害的影响。它们可能会导致大量的偶发复杂性,更糟糕的是,如果框架在跨越鸿沟之前死亡,就会把你带入死胡同。

开发形式会导致复杂性的增加。但是,从单个应用程序的角度来看,企业拥有更多的软件会增加开发单个应用程序的复杂性吗?

答案很简单:不会,除非你想让这个软件与其他软件发生交互。一家公司使用的软件越多,系统之间的重叠就越多,不同的系统需要访问相同的数据才能正常运行,这就需要为更多的系统保存共享数据,并将所有系统集成起来。

举个例子,假设在 2000 年,你是一家办公椅生产商,那个时候你还没有网络系统。你需要为公司建立一个库存系统,所以需要开发软件来完成这件事。库存系统的用户是仓库工作人员,你可以通过生成夜间报告来获得库存信息,这些报告也可以被发送给整个公司的人。这个系统相对独立,报告功能对于每一个人来说都没有什么问题。

时间快进到 2020 年,你的库存系统已经不是一个独立的应用程序。你的合作伙伴可以直接将订单推送到你的系统中,Web 页面可以获得实时的库存更新,并在下单时更新库存。你的库存系统与物流系统直接集成,这样就可以自动生成物流标签和取货时间表。你直接在亚马逊上销售你的产品,所以你的库存系统直接与第三方软件集成。仓库的工作人员使用移动设备定位、扫描、登记和挑选商品,所以你还有一个用来完成这些事情的移动解决方案。

随着系统的激增,并覆盖了业务的各个方面,开始出现越来越多的重叠,一直到如果不与其他系统集成就无法满足需求的地步。虽然这带来了前所未有的生产力和自动化程度,但也给数据移动和集成引入了大量的偶发复杂性。

但我们的世界并没有停滞不前,消费者和企业对软件的期望一直在迅速增长。我们期望软件能比 20 年前做得更多。当我们开发出这些更大型、功能更丰富的应用程序时,为了保持它们的可靠性、功能性和可理解性,不得不改变软件的开发方式。

以下是我们在过去 20 年里看到的几个行业变化:

源码控制——源码控制一直都存在,但并不像现在这么普遍。不认为这增加了偶发复杂性?那就去问问第一次使用 Git 的初级工程师,他们是怎么想的。

自动化测试——我们引入了很多测试类型和测试工具。我们需要进行验收测试、集成测试、单元测试等等……这给项目带来了大量的偶发复杂性,但有助于确保交付的软件是高质量的,且功能是符合预期的。

拆分系统——随着系统复杂性的增加,组件之间连接和交互的量会呈二次级数增长。也就是说,在某种程度上,如果软件设计得不好,交互量将会继续增长,直到因为自身的复杂性而垮掉。拆分系统,特别是进行分布式拆分,会带来大量的意外复杂性。

我们假设,这是一个颇具挑战性的数学问题,完全用人脑来解决是徒劳的,所以需要使用计算器。这就是偶发复杂性。还记得第一次使用图形计算器的情形吗?在这个时候,偶发复杂性就是学习如何在计算器上输入所有复杂的数学信息来帮你解决问题。你不一定要使用计算器,但你知道它对你有用,而且不会太难学。

现在,我们假设你对 Mathematica 很熟悉。Mathematica 是一个非常强大和复杂的软件,不过既然你已经知道它了,就决定用它来解决问题。你在学习 Mathematica 上投入了很多,所以不需要很多额外的努力,只是增加了解决方案的偶发复杂性。

几周后,你的一位同事遇到类似情况,他记得你曾经解决过一个类似问题。他们来找你,看你是如何解决问题的,然后你把 Mathematica 发给他们。你认为这个时候会发生什么?你认为他们会去学习数学吗?不,他们会想出另一种解决问题的方法,或者试图让你替他们解决问题。

正如你所看到的,这两种复杂性来自不同的地方,但它们之间有着紧密的联系。如果不引入一些偶发复杂性,就无法解决问题。即使是一支铅笔和一张纸也会带来一些微不足道的偶发复杂性。
我想解释为什么会这样。不过,为了探讨这个话题,需要先了解一个我最关心的话题:本质复杂性和偶发复杂性。

(编辑:南昌站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读