灌水 [资料] 软件开发所涉及的几个定律

小明同学 for 测试媛 · 2019年04月09日 · 1478 次阅读

参考:
https://www.timsommer.be/famous-laws-of-software-development/
https://blog.csdn.net/zl1zl2zl3/article/details/88414943

  • 墨菲定律(Murphy's Law)
    • 防御性编程(Secure)——可以/应该被大规模使用(很多非空、长度检查)
    • 版本控制(回退版本)
    • TDD(测试驱动开发)
    • MDD(模型驱动开发)

凡是可能出错的事就一定会出错。

衍生出 说脏话是唯一一门程序员都很流畅的语言

推论:计算机会按照你写出来的方式去运行,而不是你脑海中的去运行

  • 布鲁克斯法则(Brook's Law)(通常不包含 Exception)——《人月神话》磨合成本
    • 提高编程效率
    • 审查软件开发方法
    • 技术架构是否合理

向一个延期的项目增加人手只会让它延期得更加厉害。

  • 霍夫斯塔特定律(Hofstadter's Law)
    • 递归性(即使付出最大的努力,也知道任务是复杂的,去精确地估算它依然是非常难的,所以要给估算留一个缓冲区出来)

事情总是要花费比你预想更长的时间,即使你把霍夫斯塔特定律也考虑在内。

  • 康威定律(Conway's Law)

软件的任何一部分都反应了创建它的组织结构。

  • 伯斯塔尔定律(Postel's Law)/健壮性法则(Robustness principle)

发送时要保守,接收时要大方。(HTML)

  • 帕累托法则(Pareto Principle)/ 80/20 法则(The 80-20 rule)

代码中 80% 的错误都是由代码中的 20% 引起的。公司 80% 的工作是由 20% 的员工完成的。问题是你并不总是清楚谁是那 20%。

  • 彼得原则(The Peter Principle)

在等级制度中,每个员工都倾向于提升到他无法胜任的等级。

一旦组织中的相当部分人员被推到了其不称职的级别,就会造成组织的人浮于事,效率低下,导致平庸者出人头地,发展停滞。

  • 柯克霍夫原则(Kerchkhoff's Principle)——非对称加密主要原则

在密码学中,即使一个系统中的所有东西都是公开的(密钥除外),该系统也应当是安全的。

  • 林纳斯定律(Linus's Law)

众目睽睽之下,一切 bug 都无所遁形

被公开审查、测试的代码越多,各种形式的错误就能更快地被发现。(chrome 攻击)

暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册