人月神话阅读笔记06 17-19

没有银弹:

软件工程中的推断:

所有软件活动包括根本任务——打造由抽象软件实体构成的复杂概念结构,次要任务——使用编程语言表达这些抽象实体,在空间和时间限制内将它们映射成机器语言。

软件工程领域的根本难题在于复杂度,一致性,可变性和不可见性。值得注意的是,文章末尾提出了一些可能的银弹,比如面向对象编程,只能解决软件工程中的非本质困难,而对于软件工程根本的问题于事无补。就是说,我们某种程度上能够解决使用编程语言表达抽象的实体,或者将其变得结构化,构建起完整的概念结构,但是仍然没有解决软件工程的根本难题——复杂度、一致性、可变性和不可见性。


再论《没有银弹》

软件重用的另一个问题是学习的成本。越复杂的功能,学习成本越高。高级语言比机器语言功能强大,但是也更加复杂。而重用一个模块,则需要学习相应该模块的成本。这种成本今天已经在各类专门开发职业中体现出来,如后台程序员,Web前段或者手机客户端,不同类别的程序员差别就在于其对某一重用模块的专门知识的掌握。

20年后的人月神话:

我更喜欢一个叫法是未来的软件工程会是什么样子。

原文地址:https://www.cnblogs.com/z245894546/p/8150130.html