首页 网站首页 软件开发 软件开发 查看内容

你必须要知道的软件开发法则、原则和定律

网站运营 2024-1-12 07:32 9467人围观 软件开发

软件开辟带来了相当多的典范、形式和原则。 其中很多以软件开辟法例的形式出现。

一些软件开辟法例只触及了编码理论。 而别的一些则供给了针对对产物设想和开辟的更普遍方面的看法。 更有些法例超越了这些鸿沟,一样是适用于我们所晓得的生活的形式。

在这里我将先容一些很是重要的软件开辟原则和定律。

1、布鲁克斯法例(Brooks’ law)

Adding manpower to a late project makes it later.

为一个延期的项目增加人力会只会使这个项目更晚。

布鲁克斯法例来自弗雷德~布鲁克斯1975年出书的《人月神话》一书。这触及到一个假定,即团队成员和所需月份是可以交换的。

但究竟并非如此,出格是在软件开辟中(或任何产物开辟中,都是如此)。为什么?由于需要花时候让增加的人力领会并跟上项目标进度。



你必必要晓得的软件开辟法例、原则和定律

布鲁克斯法例


2、康威定律(Conway’s law)

Any organization that designs a system (defined broadly) will produce a design whose structure is a copy of the organization's communication structure.

任何构造在设想一个系统(广义的界说)时,城市发生一个设想,其结构是该构造的相同结构的复制。

Melvin Conway在1967年论述了这一软件开辟的纪律。康威定律与产物设想有关,他观察到构造相同结构对软件输出的影响。

是以,一个合作慎密的团队会建立具有相互交织的功用和代码的软件。 同时,一个更轻松、更分离的团队会建立更多模块化的软件。


你必必要晓得的软件开辟法例、原则和定律

康威定律

3、墨菲定律(Murphy’s law)

Anything that can go wrong will go wrong.

凡是能够出错的事一定会出错。

这是本清单中最著名的、最普遍适用的定律。墨菲定律在项目治理、软件开辟和一般生活的各个范畴都能看到。

在软件开辟中,墨菲定律夸大了一个关键点:计较机只能做你告诉(tell)它们做的工作,而不能做你想要(want)他们做的工作。


你必必要晓得的软件开辟法例、原则和定律

墨菲定律

4、侯世达定律(Hofstadter’s law)

It always takes longer than you expect, even when you take into account Hofstadter's Law.

它总是比你预期的时候要长,即使你斟酌到了侯世达定律。

“这个工具要花多长时候完成?”是软件开辟中最可怕的题目之一。侯世达定律供给了缘由。它还与另一个定律有关:帕金森定律,该定律以为,在工作可以完成的时限内,工作量会一向增加,直到一切可用时候都被填满为止

侯世达定律和帕金森定律都说明,几近不成能对工作完成的时候做出切确的估量。


你必必要晓得的软件开辟法例、原则和定律

侯世达定律

5、林纳斯定律(Linus’ law)

Given enough eyeballs, all bugs are shallow.

充足多的眼睛,便可让一切题目显现。

只要有充足的测试职员及开辟职员,一切题目城市在很短时候内被发现,而且可以很轻易被处理。

Linus提醒了开辟中的团队合作的重要代价。凡是,在处理题目时,两小我的脑壳比一小我的好。


你必必要晓得的软件开辟法例、原则和定律

林纳斯定律

6、古德哈特定律(Goodhart’s law)

When a measure becomes a target, it ceases to be a good measure.

当一个目标成为方针时,它就不再是一个好的目标。

古德哈特定律在软件开辟中的一个例子就是代码行数。代码行数供给了一种权衡软件产物范围的目标。可是,假如被看成方针时,代码质量就会下降。

本应需要精炼或删除的代码行,却被加了进去,构成紊乱的意大利面条式代码。

别的的例子诸如:功用完成数目、bug数目等等。


你必必要晓得的软件开辟法例、原则和定律

三聚氰胺进步卵白质浓度,能否是古德哈特定律的活泼例子?

7、盖尔定律(Gall’s law)

A complex system that works has evolved from a simple system that worked. A complex system built from scratch won’t work.

一个能工作的复杂系统是从一个能工作的简单系统演变而来的。一个重新起头建立的复杂系统是不会工作。

我们在很多复杂系统的生命周期中看到了这一点,例如,生命自己从简单的单细胞生物体起头。软件开辟也不破例。

盖尔定律,是一个很好的来由,让我们以最小可行产物(MVP)来停止新的软件产物的开辟。当我们建立一个新的软件产物时,我们应当从一些简单的、有用的工具起头,然后会渐渐演酿成一个更复杂的处理计划


你必必要晓得的软件开辟法例、原则和定律

盖尔定律

8、扎温斯基定律(Zawinski’s Law)

Every program attempts to expand until it can read mail. Those programs which cannot expand are replaced by ones that can.

每个法式都试图扩大,直到它可以读取邮件。那些不能扩大的法式会被能扩大的法式所取代。

说到复杂性,扎温斯基定律表白,产物一旦建成,就会继续扩大。它们会增加更多的功用地区,直到它们没法再扩大。扎温斯基定律,凡是用来对臃肿软件的批评。

功用蠕变(feature creep)的例子说了然软件开辟中的扎温斯基定律。臃肿的法式很快就会被放弃,转而挑选更精简的计划。


你必必要晓得的软件开辟法例、原则和定律

扎温斯基定律

9、伊格尔森定律(Eagleson’s law)

Any code of your own that you haven’t looked at for six or more months might as well have been written by someone else.

你自己的任何代码,假如你有6个月或更长时候没有看,就似乎是他人写的一样。

很多人以为Eagleson是个悲观主义者,以为6个月是一个悲观的时候,能够要不了6个月。不管怎样说,Eagleson定律夸大了清楚、有用的正文和明白的编码标准的需要性。究竟,即使是最初的法式员也没法在今后的工作中了解自己刚起头编写的紊乱代码。


你必必要晓得的软件开辟法例、原则和定律

伊格尔森定律

10、卢巴斯基法例(Lubarsky’s law)

There’s always one more bug.

总会有一个更多的bug。

就算你应用了一切的最好编程理论、更新以及保护,但总是会有一个更多的毛病需要修复。大概还有一件事需要调剂,或增加,或进修。究竟,法式员的工作是永久不会完成的。

是以,请记着,当触及到软件开辟时,完成总比完善好。


你必必要晓得的软件开辟法例、原则和定律

卢巴斯基法例

11、克努特优化原则(Knuth’s Optimization Principle)

Premature optimization is the root of all evil.

过早优化是万恶之源。

过早优化让你在你并不真正需要的工具上花费大量的时候。实在的题目是法式员在毛病的时候和毛病的地方花了太多时候来担忧效力效力题目。

假如我们试图优化太早太多,我们就会花大量时候去实现这些优化,从而挤压我们需要实现的方针的时候。我们能够会花太多的时候来实现我们今朝的工具,而未来能够会更糟糕,由于我们挑选的代码不是最轻易保护的。


你必必要晓得的软件开辟法例、原则和定律

克努特优化原则

12、伯斯塔尔法例(Postel’s Law)

Be conservative in what you do, be liberal in what you accept from others.

对于自己输出要严酷; 对于他人的输入要灵活。

在开辟一个库、一个HTTP API、一个类、一个模块或一个函数时,我们应当供给向后的兼容性,并对接收的参数变得加倍灵活。这条法则在现实生活中也一样适用--我们应当对自己守旧,但对他人自在/宽大。


你必必要晓得的软件开辟法例、原则和定律

伯斯塔尔法例

13、复杂度守恒定律(Tesler’s Law of Conservation as Complexity)

Every APPlication has an inherent amount of complexity that cannot be removed or hidden. Instead, it must be dealt with, either in product development or in user interaction.

每个利用法式都有其固有的复杂性,这些复杂性是不能被消除或隐藏的。相反,它必须被处置,不管是在产物开辟中还是在用户互动中。


你必必要晓得的软件开辟法例、原则和定律

复杂度守恒定律

14、奥卡姆剃刀道理(Occam’s Razor)

The simplest solution is most likely the right one.

最简单的处理计划极能够是正确的。

更多请参考:《奥卡姆剃刀道理、简单性原则与软件开辟》


你必必要晓得的软件开辟法例、原则和定律

奥卡姆剃刀道理

15、软件工作量预算5法例(The 5 laws of software estimates)

  1. 预算是浪费时候
  2. 预算是不成让渡的
  3. 预算是毛病的
  4. 预算是临时的
  5. 预算是需要的

这是看似冲突法例,但第一条法例说花在预算上的时候不会带来任何新的功用,所以我们不能花太多时候在这上面。但是,第五条法则说它们只是需要的,所以我们应当预算一切的使命,但不要在估量上花太多的时候。


你必必要晓得的软件开辟法例、原则和定律

软件工作量预算5法例

高端人脉微信群

高端人脉微信群

人脉=钱脉,我们相信天下没有聚不拢的人脉,扫码进群找到你所需的人脉,对接你所需的资源。

商业合作微信

软件开发合作

本站创始人微信,13年互联网营销经验,擅长引流裂变、商业模式、私域流量,高端人脉资源丰富。

精彩点评

查看全部评论>>

相关推荐

开源仿真软件的开发和利用

开源仿真软件的开发和利用

1 开源软件协议 常见的开源软件协议如下:具有传染性的GPL协议: 基于GPL协议软

2022年8月程序员笔记本电脑推荐

2022年8月程序员笔记本电脑推荐

全文字数4000+,包含了一些主观意识,不想看个人废话的,可以直接拉到第三部分,直接

Windows开发者套件2023详细测评

Windows开发者套件2023详细测评

本文使用Windows Dev Kit 2023编写购买为什么买这玩意刚公布的时候就看上了,低廉的价

一文弄清传统软件开发与互联网软件开发的异同

一文弄清传统软件开发与互联网软件开发的异同

在传统软件开发领域8年,从一线开发,到项目技术经理,再到产品研发技术负责人,一路

软件开发“基本功”,搞懂7个设计原则,菜鸟晋升大神

软件开发“基本功”,搞懂7个设计原则,菜鸟晋升大神

设计模式的艺术第1部分 基础知识软件开发是一门技术,更是一门艺术!本部分主要介绍

40 岁从零开始学习软件开发,四年后我成了首席研发

40 岁从零开始学习软件开发,四年后我成了首席研发

有人曾对我说:“如果你 35 岁时还是个程序员,那就应该开始为你的下半生寻找其他出路

一张图了解互联网软件项目敏捷迭代开发流程
2022年软件开发趋势的22个预测

2022年软件开发趋势的22个预测

云,容器,编程,数据库,人工智能,机器学习,DevOps,软件架构,软件开发,网络,应

北京的软件开发外包公司报价单,软件定制开发收费标准和费用明细

北京的软件开发外包公司报价单,软件定制开发收费标准和费用明细

某公司找我们做的软件定制开发,其中软件一共包括两部分,分别是公司内部使用的业务系

各国软件开发者薪资水平统计:中国排第 19,PHP/JavaScript 最低

各国软件开发者薪资水平统计:中国排第 19,PHP/JavaScript 最低

IT之家 7 月 17 日消息,智能招聘平台 CodeSubmit 统计分析了 20 多个国家的软件开发

拯救大龄码农:35-40 岁之后,软件开发工程师走进死胡同了?

拯救大龄码农:35-40 岁之后,软件开发工程师走进死胡同了?

来源:reddit 编辑:Emil、小匀【新智元导读】当程序员来到被称为瓶颈年龄的35岁,他

最受欢迎的软件开发模式

最受欢迎的软件开发模式

软件开发中使用的一个过程或一组方法称为软件开发方法。每种方法都有自己的一套优点和

软件系统开发费用明细,包括人员结构和项目工期明细

软件系统开发费用明细,包括人员结构和项目工期明细

这是某公司做软件定制开发的费用明细,费用大概62万,工期4个月,前后有9个人参与到该

低代码将干掉65%软件开发工作:留给码农的时间不多了

低代码将干掉65%软件开发工作:留给码农的时间不多了

转自:技术领导力根据IDC预测:“2024年将有65%的应用软件通过低代码开发。” Gartner

软件开发改变我的命运!不后悔做程序员

软件开发改变我的命运!不后悔做程序员

大家好,我叫springmeng,网友也叫我小孟,因为前面搞spring较多,就取了这个网名。小

软件开发太累了,干不动了。。。我转了软件测试。。。

软件开发太累了,干不动了。。。我转了软件测试。。。

目前哥们我已经成为一名光荣的测试工程师!!!而半年前我还是每天加班加点忙着写业务

软件开发“教父”的20年,重构开发模式,重塑开发者思维

软件开发“教父”的20年,重构开发模式,重塑开发者思维

Martin Fowler,世界级软件开发大师,敏捷开发的开拓者和创始人全球知名的面向对象分

20 个 2020 年软件开发趋势预测

20 个 2020 年软件开发趋势预测

企业上云已成不可逆的趋势,全面云计算时代宣告来临,微服务已成软件架构主流,Kubern

软件开发的那些真理,上大学时我怎么就没记住

软件开发的那些真理,上大学时我怎么就没记住

作者丨Ryland很多开发者在编程多年以后,总是在实际工作的惨痛教训中学会了一些本该在

软件开发报价明细

软件开发报价明细

软件开发报价清单明细一般包含系统开发费用、服务器费用、项目维护费用等等费用,但是

商业洽谈 文章投递 寻求报道
电话咨询: 15924191378
关注微信