1960年代中期开始出现“软件作坊”,专门为有需求的用户编写软件,软件也逐渐转化为产品了。但是由于软件系统复杂度逐步提高、规模越来越大且没有正确理论指导,加之用户需求可能还不明确,最终软件开发进度非常难以控制、开发成本逐渐增长、维护困难,导致软件质量差。因此为了提高软件的开发效率,软件生产方式急切需要改变,“软件危机”因此爆发。
为了解决软件危机,1968年北大西洋公约组织在联邦德国的国际学术会议上提出了“软件工程”一词,标志着软件工程作为独立学科的诞生。软件危机可以概括为两个方面问题:(1)如何开发软件,来满足日趋复杂、不断增长的需求;(2)如何维护数量暴增的软件产品。为了解决这个问题,提出了软件工程的概念。既要正确的方法和高效的工具,也要有相应的组织管理方法。软件工程就是从技术与管理两方面研究如何更好地开发、维护软件的一门学科。
软件工程是一门研究用工程化方法构建与维护高质量的实用、有效软件的学科。它涉及系统平台、开发工具、数据库、程序设计语言、设计模式、标准等多个方面。
经过近半个世纪的发展,软件工程得到了很大的发展。中国科学院杨芙清院士在报告中指出,1970年代程序设计方法学成为热点,1980年代软件设计方法成为研究热点,1990年代软件构件和软件复用技术成为研究热点,2000年代软件构件库的建立得到极大关注,2010年代智能化开发技术、高可信软件技术、网构软件技术得到广泛关注。