来源:熵减黑客
在软件工程中,由于是涉及到复杂系统的设计、开发和演进的领域,所以,行业内先行的大师们,根据自身的经验和知识的洞见,总结和沉淀出来不少的定律和原则,被用来指导我们日常的软件开发中的决策和行为。
这些定律和原则,都是经过经过长期实践和研究得出的,所以也就具有广泛的适用性和指导意义。
在过去的一段时间内,我们分享了9个常见基本定律,今天做一个总体性的概览。具体内容如下:
1康威定律
康威定律是由梅尔文·康威于1968年提出的。
其指出:一个组织的设计结构会自然而然地反映在他们所设计的产品之中。
这意味着,如果一个组织的设计结构是分散的,那么它所设计的产品也可能是分散的,而如果一个组织的设计结构是集中的,那么它所设计的产品也可能是集中的。
因此,软件开发团队应该考虑到他们的组织结构,以便更好地设计软件产品。
关于康威定律,具体见:软件开发中的康威定律
2布鲁克定律
布鲁克定律是由弗雷德里克·布鲁克斯于1975年提出的。
其指出:添加更多的人员到一个已经推迟的项目中,只会使项目进度更加延迟。
这是因为新成员需要时间来适应项目,并且需要进行培训,这会消耗原来团队成员的时间和精力。
关于布鲁克定律,具体见:软件开发中的布鲁克定律(Brook’s Law)
3霍夫施塔特定律
霍夫施塔特定律是由道格拉斯·霍夫施塔特于1979年提出的。
其指出:一个计划需要的时间总是比预计的时间长,即使你考虑到霍夫斯塔特定律。
这是因为我们倾向于低估任务的难度和所需的时间,而高估我们自己的能力。
关于霍夫施塔特定律,具体见:软件工程:霍夫施塔特定律
4海勒姆定律
海勒姆定律是Google 工程师 Hyrum Wright提出的。
其指出:当你依赖于一个 API 的时候,你实际上也依赖于这个 API 的实现细节。
海勒姆定律强调了开发者应该更加注意 API 的实现细节,因为这些细节可能会影响到你的代码在未来的可维护性和稳定性。
关于海勒姆定律,具体见:软件工程:海勒姆定律(Hyrum’s Law)
5帕金森定律
帕金森定律是由西西里·诺斯利普·帕金森于1955年提出的。
其指出:工作会扩张以填满可用的时间。这意味着,如果给定一个任务的时间越长,完成该任务所需的时间就会越长。
因此,软件开发团队应该设定明确的截止日期和时间表,以确保任务按时完成。
关于帕金森定律,具体见:软件工程:帕金森定律,项目工期的那点事儿
6墨菲定律
墨菲定律是由爱德华·墨菲提出的。
其指出:如果一件事情可能会出错,那么它就会出错。
在软件开发中,这意味着必须预估到可能的错误和故障,并采取措施来防止它们的发生。这也强调了软件测试和质量控制的重要性。
关于墨菲定律,具体见:软件工程:墨菲定律,潜在问题管理的艺术
7波斯特尔定律
波斯特尔定律是由乔恩·波斯特尔提出的。
其指出:发送方应该发送尽可能简单的信息,而接收方则应该尽可能容忍和理解各种类型的输入。
在软件开发中,这意味着应该尽可能简化和标准化输入和输出格式,以提高软件的互操作性和可移植性。
关于波斯特尔定律,具体见:软件工程:波斯特尔定律,输入输出的平衡之道
8奥卡姆剃刀定律
奥卡姆剃刀定律是一种科学和哲学原则,也适用于软件工程。
其指出:在解释某个现象或问题时,应当选择最简单的解释或假设,而不是复杂的解释或假设。
在软件开发中,这意味着应该尽可能使用简单的设计和算法,以避免复杂性和潜在的错误。
关于奥卡姆剃刀定律,具体见:软件工程:奥卡姆剃刀原则,简单的意义
9阿姆达尔定律
阿姆达尔定律是由吉恩·阿姆达尔于1967年提出的。
其指出:在计算机系统中,一个任务的速度受到其串行部分的限制。
这意味着并行计算只能在一定程度上提高性能,因为一些任务必须顺序执行。
在软件开发中,这意味着必须注意系统的串行部分,以避免性能瓶颈和资源浪费。
关于阿姆达尔定律,具体见:软件工程:阿姆达尔定律,性能设计和优化的指导原则
Part1最后
以上9个定律,是软件工程中比较常见的定律和决策原则。
作为软件工程师,了解和掌握这些基本的定律和原则,可以帮助我们更好的解决软件开发中的哪些复杂的问题,做出高质量的设计和决策,能够采取适当的措施,以交付优秀的产品。
同时,这些基础的定律和原则,可以作为软件团队开展工作的指导性原则,以帮助团队找到适合自身实际情况的最佳实践和策略。