Lawrence.


没有银弹


软件工程的一般规律。


维基: https://zh.wikipedia.org/wiki/没有银弹

文献:Brooks, F. P.,"No silver bullet—essence and accidents of software engineering, " in Information Processing 86, H. J. Kugler, ed. Amsterdam: Elsevier Science (North Holland), 1986, pp. 1069-1076.

结论:不会有任何单一的软件工程上的突破(银弹),能够让程序设计的生产力得到一个数量级的提升。

人月神话

维基:https://zh.wikipedia.org/wiki/人月神话

豆瓣:https://book.douban.com/subject/1102259/

结论:人力和时间并不呈现线性关系。以大量人员和较短的时间,并不能缩短软件的开发进度。

公式:

沟通管道数量(n 为一个项目团队中的人数,显然,人数越多,沟通成本越大):

p = n(n-1)/2

Brooks 法则:

Adding manpower to a late software project makes it later.

组织:

提倡类似外科手术团队的组织。在接受相同的训练、同样都是两年资历的情况下,优秀专业程序员的生产力要比差劲的程序员好上十倍。

系统设计的民主与专制:

整体性:需要专制,设计必须出自于一个人的想法,或是极少数人的一致决定。

评价标准:功能概念复杂度比。功能多不见得是好事。

避免第二系统过度设计。