返回顶部
首页 > 资讯 > 前端开发 > VUE >如何理解软件系统中的热力学第二定律
  • 414
分享到

如何理解软件系统中的热力学第二定律

2024-04-02 19:04:59 414人浏览 泡泡鱼
摘要

本篇内容主要讲解“如何理解软件系统中的热力学第二定律”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何理解软件系统中的热力学第二定律”吧!1.破窗理论设想下有两

本篇内容主要讲解“如何理解软件系统中的热力学第二定律”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何理解软件系统中的热力学第二定律”吧!

1.破窗理论

设想下有两个团队正在同时进展同样的项目。团队A,在项目开发过程中,尽管制定了详细和周全的计划,拥有能力最强的工程师,项目的最终结果也不尽人意,随着项目时间推移,代码变得很差。

而另外一个团队B,在开发项目时,尽管也遇到了很大的困难和接二连三的问题,但是却能保持良好的代码状态,圆满的完成了项目任务。

是什么原因造成了这个差异呢?

在城市中,我们总能发现事物相反面,例如:有整洁漂亮的建筑,而另一些却是破烂不堪的房子。是什么造成了这么强烈的冲击感呢?

这两个现象的原因是一致的,就是“破窗理论”。

以一幢有少许破窗的建筑为例,如果那些窗不被修理好,可能将会有破坏者破坏更多的窗户。最终破坏者甚至会闯入建筑内,如果发现无人居住,甚至就在里面定居或者纵火。在相当短的一段时间内,建筑就会以惊人的速度被破坏掉,而且业主也不愿意去修理这个破烂的房子了。

对应到软件开发领域时,这个”破窗户“,可能是工程师不经意间留下,可能是考虑不周导致,可能是低劣的设计遗留,也可能是错误的需求导致。

之前我们团队内部重构过代码架构,很多业务都进行了重新设计,但是随着时间的推移,破窗开始出现,后面就迅速就变得难以维护,臃肿。当然还有其他原因,但是最重要的原因就是对有问题代码置之不理。

不要留着“破窗户”,见到一个就就修一个。如果没有足够多的时间去修复,最好就加上注释或者是打个bug标记,表示这部分代码需要进行修复,防止窗户破的越来越多。

2.温水煮青蛙

美国康奈尔大学的科学家做过的一个温水煮蛙实验:将一只青蛙放进沸水中,青蛙一碰沸腾的热水会立即奋力一跃从锅中跳出逃生;

又尝试把这只青蛙放进装有冷水的锅里,青蛙如常在水中畅游,然后慢慢将锅里的水加温,直到水烫得无法忍受时,青蛙再想跃出水面逃离危险的环境却已四肢无力,最终死在热水中。

实验说明的是由于对渐变的适应性和习惯性,失去了警惕和反抗力的道理。

在程序系统中也是适用的,程序员们工作时间久了,就会进入一种安逸的状态,称之为“舒适区”。在舒适区中,程序员往往是一种麻痹的状态,对外界的变化感知麻木。

软件代码在时间的长河中,慢慢地、悄无声息的发生着变化,这个变化最终将会失去控制。

大多数的软件系统都会从微不足道的小bug开始,慢性死亡。

软件项目被各种各样的小bug折腾,只能一天天的延期。

软件项目中的每一个需求,就像是衣服上破的洞,被打上一个个的补丁,最后已经无法看清软件架构本身的模样,就像已经无法看清衣服本身的颜色。

最可怕的是,每一个程序员都承认这是正常、可以接受的状态,每天乐此不疲的进行bugfix,他们就像温水里的青蛙,享受着这种状态。丝毫没有感受到整个软件系统正在变成垃圾,变的满目全非。最后迎接他们的是臃肿的、难以维护的代码。

水煮蛙和破窗效应是不同的,他们的不同点在于是否有主观意愿。

破窗问题上,软件系统变得杂乱无章,是程序员们在看到“破窗”时,并没有及时阻止这种事情发生,从而认为没有人会注意到这个问题。

而煮蛙问题上,重点是“慢”,如果放在热水中或者是快速升温,青蛙是会奋力的一跳,逃出生天的。所以程序员真的只是没有察觉,软件系统就在慢慢的走向死亡。

3.自我为中心

下图是一副非常有名的画作,名为『从主教花园望见的索尔兹伯里大教堂』,作者康斯太勃尔,英国的著名油画家。

有一天,康斯太勃尔去他的金主大教堂的主教Fisher先生家里玩。

Fisher主教跟画家先生说:“亲爱的画家,你帮我画一幅画吧。把我和我美丽的妻子以及我这大教堂一起画到画里。我要把画留在教堂,成为镇堂之宝。”于是康斯太勃尔先生很高兴的接下这个项目。

画家开始了辛苦的工作,经过一段时间终于把这幅画完成了。

画家画这幅画时可能心情不好,所以在教堂塔尖上方的天空有一片乌云。Fisher主教看到这幅画后,很不满意。虽然画家把主教大人、主教夫人和教堂都画进去了,但是两口子只在左下角露了个背影,这也就忍了。“下面那几头牛是怎么回事,为什么比我们占的镜头还多?”主教问。画家说:“你没看懂?我是在恭维您呢,是说您和您夫人好牛!”。Fisher先生没什么话说了,然后又找到了新的吐槽点:“为什么天空的云都是乌云?”。

他邀请画家再去他家做客,重新观察,以便于修改画作。画家很不高兴了,就单独把画展出了。展出之后得到很多好评,于是回信给Fisher主教:“你看,大家都说很好看,不用改了。”,Fisher主教收到信后也怒了,回信就说了一句话:“给我改!!!”。

这就是关于需求的故事,我们再看上图,看看教主和教主夫人被画到了哪里?您能找到吗?

大鱼教主想要一幅画,画里有他们夫妻二人和教堂,需求表达完后,并没有再对需求进行更具体的说明。

更深入的思考,为何总是会存在描述不清的情况呢?

读者们肯定也遇到过类似问题,究其更深层次原因,就是“自我中心”。

人的成长过程就是一个“去中心化的”的过程。大约6岁之后,儿童的自我去中心化的能力得到了发展。开始能够认识到别人的感受、观点,但是每个人在社会化过程中,会呈现出不同的去自我中心化的状态。

可以说是每一个成年人都有自我中心,我们的感受,想法,认识不可能做到完全的客观。所以我们需要利用结构化思维,(可以参考我的另一篇文章《程序员必备能力——结构化思维》)和系统化思考(可以参考我的一篇文章《程序员必备能力——深度思考》)。

在软件开发过程中,同样适用这个结论,我认为至少表现如下几点:

  • 程序员在设计、开发时,如果没有做到完全的按照产品经理的需求进行,难免对代码的设计进行反复修改,导致熵增

  • 程序员正在开发时,随意变更、打乱架构框架,导致代码耦合增大,难以维护

4.业务

代码熵增的常见的客观原因是主要是业务压力大,导致没有时间或意愿讲究代码质量。因为向业务压力妥协而生产烂代码之后,开发效率会随之下降,导致业务压力更大,形成一种典型的恶性循环。

到此,相信大家对“如何理解软件系统中的热力学第二定律”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: 如何理解软件系统中的热力学第二定律

本文链接: https://lsjlt.com/news/84388.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何理解软件系统中的热力学第二定律
    本篇内容主要讲解“如何理解软件系统中的热力学第二定律”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何理解软件系统中的热力学第二定律”吧!1.破窗理论设想下有两...
    99+
    2024-04-02
  • 如何理解Ubuntu server系统软件
    如何理解Ubuntu server系统软件,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。在向大家详细介绍server之前,首先让大家了解下Ubuntu server,然后全...
    99+
    2023-06-17
  • 如何理解软件系统的高并发
    目录概述引言高并发的度量指标高并发的设计思路垂直方向:提升单机能力水平方向:分布式集群高并发的关键技术集群化:负载均衡数据库层面:分库分表+读写分离读多写少:缓存缓存也有很多需要谨慎...
    99+
    2024-04-02
  • Java 中的二进制文件处理:解锁文件系统的全部潜力
    ...
    99+
    2024-04-02
  • 【Linux系统】第三篇:Linux中软件包管理器yum的使用
    文章目录 一、yum1、 什么是软件包和软件包管理器2、 什么是yum3、 Linux下软件安装的几种方式4、 使用yum的注意事项5、 yum的使用 二、Linux / Windows下的数据互传1、 lrzsz的安装2、rz...
    99+
    2023-08-20
    linux 服务器 运维
  • 如何理解Linux系统中的虚拟文件系统
    这篇文章主要介绍“如何理解Linux系统中的虚拟文件系统”,在日常操作中,相信很多人在如何理解Linux系统中的虚拟文件系统问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何理解Linux系统中的虚拟文件系统...
    99+
    2023-06-12
  • 如何更新Debian系统中的软件包
    要更新Debian系统中的软件包,可以使用以下命令: 执行以下命令更新软件包列表: sudo apt update 然后执行...
    99+
    2024-03-12
    Debian
  • 如何在CentOS系统中锁定软件版本阻止升级
    这篇文章主要讲解了“如何在CentOS系统中锁定软件版本阻止升级”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何在CentOS系统中锁定软件版本阻止升级”吧!。Yum升级中锁定指定软件版本...
    99+
    2023-06-10
  • 如何解决windows系统中想禁止运行某些指定软件的问题
    如何解决windows系统中想禁止运行某些指定软件的问题,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。域控制器是Active Directory域的指挥机构,出于安全性考虑,可...
    99+
    2023-06-14
  • Linux中如何列出系统中安装的软件包
    在Linux中,可以使用以下命令来列出系统中安装的软件包: 使用dpkg命令列出Debian或Ubuntu系统中安装的软件包: ...
    99+
    2024-03-13
    Linux
  • Java文件学习笔记:如何在Linux系统中管理文件?
    在Linux系统中,文件管理是一个非常重要的任务。无论你是在开发软件还是维护系统,你都需要掌握基本的文件管理技能。在本文中,我们将介绍如何在Linux系统中使用Java来管理文件。 文件路径 在Linux系统中,文件路径是一个重要的概...
    99+
    2023-08-30
    文件 学习笔记 linux
  • 如何解决XP系统无法安装软件并提示系统找不到指定的路径的问题
    这篇文章主要介绍“如何解决XP系统无法安装软件并提示系统找不到指定的路径的问题”,在日常操作中,相信很多人在如何解决XP系统无法安装软件并提示系统找不到指定的路径的问题问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家...
    99+
    2023-06-13
  • Go语言中如何处理并发文件的文件系统文件缓存和热加载问题?
    Go语言中如何处理并发文件的文件系统文件缓存和热加载问题?引言:在Go语言中,处理文件系统文件的并发访问和缓存是一个常见而重要的问题。当系统中有多个Goroutine同时对同一个文件进行操作时,容易出现数据不一致或者竞争条件。另外,为了提高...
    99+
    2023-10-22
    文件系统 (File System) 并发处理 (Concurrent handling) 缓存与热加载 (Cachin
  • 如何在Linux系统中使用PHP来加载和管理软件包?
    在Linux系统中使用PHP来加载和管理软件包是一个非常方便的操作。PHP作为一种流行的服务器端编程语言,可以很容易地与Linux系统进行交互。本文将介绍如何使用PHP来加载和管理软件包,并提供一些演示代码。 一、安装PHP 在开始之前,我...
    99+
    2023-11-04
    load linux linux
  • 如何使用yum命令来更新系统中的软件包
    要使用yum命令来更新系统中的软件包,请按照以下步骤: 打开终端窗口。 输入以下命令以更新yum软件包列表: sudo ...
    99+
    2024-03-12
    CentOS
  • ubuntu系统找不到指定的文件如何解决
    如果在Ubuntu系统中找不到指定的文件,可以尝试以下方法解决:1. 使用`find`命令进行搜索:在终端中使用`find`命令来搜...
    99+
    2023-10-11
    ubuntu
  • windows0x2系统找不到指定的文件如何解决
    这篇文章主要介绍了windows0x2系统找不到指定的文件如何解决的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇windows0x2系统找不到指定的文件如何解决文章都会有所收获,下面我们一起来看看吧。解决方法:...
    99+
    2023-07-01
  • 如何理解Linux 系统中的管理日志
    今天就跟大家聊聊有关如何理解Linux 系统中的管理日志,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。在 Linux 系统上管理日志文件可能非常容易,也可能非常痛苦。这完全取决于你所...
    99+
    2023-06-05
  • 如何理解OA系统中的公文管理?
    如何理解OA系统中的公文管理?公文管理,顾名思义就是对公文的创制、处置和管理,即在公文从形成、运转、办理、传递、存贮到转换为档案或销毁的一个完整周期中,以特定的方法和原则对公文进行创制加工、保管料理,使其完善并获得功效的行为或过程。协同OA...
    99+
    2023-06-05
  • Win 7系统中软件出现乱码了怎么办?如何解决
    首先你要确定系统的区域和语言选择了China(中国),在Win 7安装的时候第一步就是选择区域,当然如果你当时忘了选择,安装好系统之后依然可以通过设置,达到同样的目的。区域的选择对于很多软件不正常显示,会有一定的修复作用...
    99+
    2023-05-31
    Win7系统 软件乱码 乱码 Win 7系统 软件
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作