对开发人员有用的定律理论原则和模式

盖尔定律(GallsLaw)

一个切实可行的复杂系统势必是从一个切实可行的简单系统发展而来的。从头开始设计的复杂系统根本不切实可行,无法修修补补让它切实可行。你必须由一个切实可行的简单系统重新开始。

约翰·盖尔(JohnGall)

系统不是「设计」出来的,而是「优化」出来的。

在系统论中,有一条很经典的原则,叫做加尔定律,讲的是同样的道理:

一个运转正常的复杂系统,总是从一个运转正常的简单系统演化而来,反之也是一样的:一个从零开始设计的复杂系统永远不会起作用,也不可能让它起作用。你必须重新开始,从一个简单的系统开始。

GallsLaw,byJohnGall

盖尔定律说明了设计高度复杂的系统很可能会失败。它们很难一蹴而就,更多是从简单的系统逐渐演变而来。

最典型的例子便是互联网。如今的互联网是一个高度复杂的系统,而它最早只是被定义为一种在学术机构之间共享内容的方式。互联网成功实现了最初的目标,并且随着时间不断演化,最终成就了如今的复杂繁荣。

KISS原则(TheKISSPrinciple)

保持简单和直白。

KISS原则指明了如果大多数的系统能够保持简单而非复杂化,那么他们便能够工作在最佳状态。因此,简单性应该是设计时的关键指标,同时也要避免不必要的复杂度。这个短语最初出自年的美国海军飞机工程师凯利·约翰逊(KellyJohnson)。

这一原则的最好例证便是约翰逊给设计工程师一些实用工具的故事。那时的他们正面临着一个挑战,即他们参与设计的喷气式飞机必须能够让普通的机械师在战场上仅仅用这些工具进行维修,因此,“直白”这个词应指的是损坏的事物本身和修复用工具的复杂度两者之间的关系,而非工程师们自身的能力水平。

阿姆达尔定律(AmdahlsLaw)

阿姆达尔定律是一个显示计算任务潜在加速能力的公式。这种能力可以通过增加系统资源来实现,通常用于并行计算中。它可以预测增加处理器数量的实际好处,然而增加处理器数量会受到程序并行性的限制。

举例说明:如果程序由两部分组成,部分A必须由单个处理器执行,部分B可以并行运行。那么向执行程序的系统添加多个处理器只能获得有限的好处。它可以极大地提升部分B的运行速度,但部分A的运行速度将保持不变。

下图展示了一些运行速度的提升潜能的例子:

(图片来源:ByDaniels0atEnglishWikipedia,CreativeCommonsAttribution-ShareAlike3.0Unported,


转载请注明:http://www.jiaju1314.com/bcxx/bcxx/17374.html

  • 上一篇文章:
  •   
  • 下一篇文章: 没有了