分层粒度

一个需求的复杂性是客观存在的,分层和抽象只能将复杂性分隔在各层中,却无法减少复杂性。
因此过度分层和抽象无意义。

引用

没有银弹

在未来的10年以内,不存在任何单一的方法和技术,能够10倍以上的提高软件开发的生产力。
软件开发的困难有两类,一类是本质(Essential)困难,一类是附属性(Accidental)困难
本质困难是和软件的本质紧密联系在一起的,所以这类困难无法通过工具或者语言等加以解决。例如,软件解决的问题是现实世界的问题,如果现实世界的问题本来就是复杂的,那么无论任何工具,都不可能消除这种复杂性。
附属性困难是和我们采取的工具或者方法相关的。例如,软件需要被通过某种语言实现,软件需要被编译、被部署,软件可能被实现为缺陷,这些都和具体的实现方法相关。这一类困难,可以通过工具、方法和技术的提升得以改善。
本质困难包括软件的复杂性,不可见性、可变更性和符合性(指软件开发还需要遵从诸如法律法规、外部系统等不受主观意志决定的因素)

人月神话

软件解决的是现实世界的问题,现实世界的复杂性一定会传导到软件中。
问题的本质并不总是显而易见。
深入探索,发现问题本质,会简化问题的解决方案。