2.1 软件工程的起源
(1)早期计算机程序
在1946年计算机刚诞生时,人们采用机器码编制程序,根本没有独立的软件的概念。
机器码指令只是为了驱动计算机硬件工作,就像人们调节电视机、录像机、洗衣机等家用电器的按钮一样。
1947年,冯诺依曼首先提出用流程图描述计算机的运行过程,才使人们认识到程序设计是完全不同于硬件研制的另一项工作。从此以后,软件的开发和研究才开始独立地进行。
(2)现在人们认为
在信息产业中,微电子是基础,计算机和网络是载体,软件是核心。
2.2 软件开发的三个阶段
(1)个人程序时期(1947年-1950年代末)
- 这一时期特点是硬件价格非常昂贵,软件完全作为硬件的附属
- 硬件致力于执行功能单一的程序
- 应用大多集中在科学计算方面
- 软件是为了某个具体的应用和特定的硬件而定制
- 程序设计完全凭程序员的经验和技艺以个人或小组方式进行
在这个时期,程序员使用的开发语言主要是机器语言和汇编语言,负责从程序的开卡、运行和维护的全过程,这是一种私人化的软件环境。
(2)软件作坊时期(1960年代初-1960年代末)
随着以计算机为基础的系统应用范围的不断扩大,以及系统数量的不断增长,个体生产方式已经不能适应社会发展的需求,而是需要多人分工合作,共同完成一个程序的编制,需要对项目开发进行管理,即所谓“作坊式生产方式”。
出现了若干高级程序语言
(3)软件工程时期(1970年代初至今)
计算机应用领域的进一步扩大,软件的规模和复杂性也不断增加
在软件开发领域出现了“软件危机”:
软件质量差,可靠性难以保证
成本难以控制,很少有在预算内完成的
开发进步难以把握,周期长
可维护性较差,维护人员和费用增加
2.3 软件工程的定义
软件工程概念的提出:
1968年,NATO在联邦德国举行的关于软件开发的会议上,首次提出了软件工程的术语,标志着软件工程作为一门学科的正式出现,至今已有40年的历史。
其目的是倡导以工程的原理、原则和方法进行软件开发,以解决软件危机。
计算机百科全书上的软件工程定义:
应用计算机科学、数学及管理科学等原理,以工程化方法制作软件的工程。它借鉴传统工程的原则、方法,创建软件以达到提高质量,降低成本的目的。
其中,计算机科学、数学用于构造模型与算法,工程科学用于指定规范、设计范型、评估成本 及确定权衡,管理科学用于计划、资源、质量、成本等管理。
软件工程是一门指导计算机软件开发和维护的工程学科。软件工程师一门交叉性学科。
首次NATO会议上的软件工程定义:
软件工程是用来建立和使用合理的工程原则,以经济地获取可靠的、且在真实机器上可高效工作的软件。
IEEE中软件工程定义:
(1)将系统化的、规范的、可量化的方法应用到软件的开发、运行及维护中,即将工程化方法应用于软件;
(2)在(1)中所述方法的研究。