软件工程的重点既在软件,也在工程。一个工程师应该能够在一定时间和预算内,通过使用和集成构件,来构造高质量软件产品。工程师通常面临的问题是问题定义不清和解决方案不全,不得不依靠实验方法来评估解决方案。在飞机设计和桥梁建设等应用领域工作的工程师们已成功地迎接了类似的挑战,而软件工程师们却没那么幸运和成功。 在指定时间内构造和交付复杂软件系统的问题,一直以来都得到了人们积极的探讨和研究。一切的一切,包括从客户(“我问你,我为什么不能花50美元得到月亮”)到软件中的“软”的成分(“要是我能加上最后那个特性……”),都被归咎于该学科太年轻。问题究竟是什么?