没有银弹-软件工程中的根本和次要问题(
No Silver Bullet – Essence and Accident in Software Engineering
)
没有任何技术或管理上的进展,能够独立地许诺十年内使生产率、可靠性或简洁性获得数量级上的进步。
There is no single development, in either technology or management technique, which by itself promises even one order-of-magnitude improvement within a decade in productivity, in reliability, in simplicity.
摘要 1
所有软件活动包括根本任务 —— 打造由抽象软件实体构成的复杂概念结构,次要任务 —— 使 用编程语言表达这些抽象实体,在空间和时间限制内将它们映射成机器语言。软件生产率在近年内取得的巨大进步来自对后天障碍的突破,例如硬件的限制、笨拙的 编程语言、机器时间的缺乏等等。这些障碍使次要任务实施起来异常艰难,相对必要任务而言,软件工程师在次要任务上花费了多少时间和精力?除非它占了所有工 作的 9/10 ,否则即使全部次要任务的时间缩减到零,也不会给生产率带来数量级上的提高。
因此,现在是关注软件任务中的必要活动的时候了,也就是那些和构造异常复杂的抽象概念结构有关的部分。我建议: