软件工程经过40余年的发展,形成了软件工程领域的基础理论、工程方法与技术体系,完善了软件工程教育体系,具备了学科的完整性和教育学特色,具有广泛的研究领域和研究方向,作为独立学科为软件产业发展提供了理论、技术与人才支撑。
1968年在德国举行的NATO软件工程会议上,为应对“软件危机”的挑战,“软件工程”术语被首次提出。在这个时期,具有代表性的软件工程定义是“为了经济地获得在真实机器上可靠工作的软件而制定和使用的合理工程原则和方法”。
1975年,IEEE计算机协会第一次出版了 “软件工程学报”。此后,软件工程这个术语被广泛用于工业、政府和学术界,众多的出版物、团体和组织、专业会议在它们的名称中开始使用软件工程这个术语,很多大学的计算机科学系先后开设了软件工程课程。
20世纪80年代末到20世纪90年代初,基于瀑布模型的软件开发过程和结构化过程语言编程范型占主导地位,软件工程研究在软件需求分析、软件设计、软件测试、软件质量保证、软件过程改进等多个子领域得到深化和扩展,形成了软件工程学科的雏形。
同期,软件工程教育得到卡内基•梅隆大学软件工程研究所(SEI)的培育和支持。该研究所调查软件工程教育的现状,出版软件工程推荐教程,在卡内基•梅隆大学建立软件工程硕士教育计划,并组织和推动软件工程教育者研讨会。
1991年,ACM和IEEE-CS的计算学科教程CC1991专题组将软件工程列为计算学科的九个知识领域之一。1993年,IEEE-CS和ACM为了将软件工程建设成为一个专业,建立了IEEE-CS/ACM联合指导委员会。随后,该指导委员会被软件工程协调委员会(SWECC
)替代。SWECC提出了“软件工程职业道德规范”、“本科软件工程教育计划评价标准”,以及
“软件工程知识体系(SWEBOK)”。其中,SWEBOK全面描述了软件工程实践所需的知识,为开发本科软件工程教育计划打下了基础。
2004年8月,全世界500多位来自大学、科研机构和企业界的专家、学者制定了软件工程知识体系(SWEBOK)和软件工程教育知识体系(SEEK),标志着软件工程学科在世界范围正式确立,并在本科教育层次上迅速发展。
进入21世纪,以互联网为核心的网络与应用得到快速发展,信息技术的应用模式发生了巨大变化。在开放、动态、复杂的网络环境下,灵活、可信、协同的计算资源、数据资源、软件资源、服务资源等各种信息资源的共享和利用,无处不在的普适计算,主动可信的服务计算等,均对软件工程提出了巨大挑战。围绕服务计算、云计算、社会计算、可信计算、移动互联网、物联网、信息物理融合系统等新型计算和应用模式,展开应用导向的软件工程研究成为主流趋势。另一方面,软件工程经过数十年的研究与实践,积累了海量的软件及相关数据,整理和分析这些数据,发现和总结软件制品、人员、工具、活动的特点及其所反映的软件工程实践效果,成为近几年软件工程的研究热点,这不仅能够提炼与完善软件工程的理论、方法和技术,还能支撑软件工程在新型计算和应用模式中的进一步发展。