软件工程导论/历史
当第一台现代数字计算机出现在 20 世纪 40 年代初时,[1] 使其运行的指令被连接到机器中。当时,与计算机打交道的人是工程师,主要是电气工程师。这种以硬件为中心的設計不灵活,很快就被“存储程序体系结构”或冯·诺依曼体系结构所取代。因此,第一个“硬件”和“软件”之间的划分始于使用抽象来处理计算的复杂性。
编程语言开始出现在 20 世纪 50 年代,这也是抽象的另一个重要步骤。Fortran、ALGOL 和 COBOL 等主要语言在 20 世纪 50 年代后期被发布出来,分别用于处理科学、算法和商业问题。E.W. Dijkstra 在 1968 年撰写了他的开创性论文“Go To Statement Considered Harmful”,[2] 以及 David Parnas 在 1972 年引入模块化和信息隐藏的关键概念[3] 来帮助程序员处理不断增长的软件系统复杂性。一个用于管理硬件的软件系统,称为操作系统,也被引入,最显著的是 Unix 在 1969 年。1967 年,Simula 语言引入了面向对象的编程范式。
这些软件方面的进步伴随着计算机硬件的更多进步。在 20 世纪 70 年代中期,微型计算机被引入,使得爱好者以经济的价格获得计算机并为其编写软件成为可能。这反过来又导致了现在著名的个人电脑(PC)和微软 Windows。软件开发生命周期(SDLC)也开始出现,成为 20 世纪 80 年代中期集中式软件构建的共识。20 世纪 70 年代后期和 80 年代初期,出现了几个新的受 Simula 启发的面向对象编程语言,包括 Smalltalk、Objective-C 和 C++。
开源软件开始出现在 90 年代初期,以 Linux 和其他引入“集市”或分散式软件构建风格的软件形式出现。[4] 然后,万维网和互联网的普及在 90 年代中期来临,再次改变了软件工程。分布式系统作为一种设计系统的方式获得了优势,Java 编程语言也随之推出,其虚拟机成为抽象的另一个步骤。程序员合作并撰写了敏捷宣言,该宣言更倾向于使用更轻量级的流程来创建更便宜、更及时的软件。
如今,软件工程的定义仍在实践者中争论不休,因为他们都在努力找到一种方法来生产“更便宜、更好、更快”的软件。自 20 世纪 90 年代以来,降低成本一直是 IT 行业的首要关注点。总拥有成本代表的不仅仅是获取成本。它还包括诸如生产力障碍、维护工作以及支持基础设施所需的资源等方面。
- ↑ Leondes (2002). 智能系统:技术与应用. CRC 出版社. ISBN 9780849311215.
- ↑ Dijkstra, E. W. (1968). "Go To Statement Considered Harmful" (PDF). 维基百科:ACM 通訊. 11 (3): 147–148. doi:10.1145/362929.362947. 检索于 2009-08-10.
{{cite journal}}
: 未知参数|month=
被忽略 (帮助) - ↑ Parnas, David (1972). "关于将系统分解成模块时应使用的标准". 维基百科:ACM 通訊. 15 (12): 1053–1058. doi:10.1145/361598.361623. 检索于 2008-12-26.
{{cite journal}}
: 未知参数|month=
被忽略 (帮助) - ↑ Raymond, Eric S. 大教堂与集市. ed 3.0. 2000.