概括地说,软件工程是指导计算机软件开发和
维护的工程学科。采用工程的概念、原理、技术和
方法来开发与维护软件,把经过时间考验而证明正
确的管理技术和当前能够得到的最好的技术方法结
合起来,以经济地开发出高质量的软件并有效地维
护它,这就是软件工程。
其他的定义1
• 1968年在第一届NATO会议上曾经给出了软件工程
的一个早期定义:
– 软件工程就是为了经济地获得可靠的且能在实际机器上有
效地运行的软件,而建立和使用完善的工程原理。
30
其他的定义2
• 1993年IEEE进一步给出了一个更全面更具体的定义
:
– 软件工程是:
• ①把系统的、规范的、可度量的途径应用于软件开发、运行和维
护过程,也就是把工程应用于软件;
• ②研究①中提到的途径。
40年来,软件工程已经历了四个重要发展
阶段:
1.第一代软件工程 -- 传统的软件工程
2.第二代软件工程 -- 对象工程
3.第三代软件工程 -- 过程工程
4.第四代软件工程 -- 构件工程
• 用分阶段的生命周期计划严格管理
• 坚持进行阶段评审
• 实行严格的产品控制
• 采用现代程序设计技术
• 结果应能清楚地审查
• 开发小组的人员应该少而精
• 承认不断改进软件工程实践的必要性
• 通常把在软件生命周期全过程中使用的一整套技术
的集合,称为软件工程方法学。
• 软件工程方法学包括三个要素:
– 方法
– 工具
– 过程
• 软件工程方法
– 是完成软件开发的各项任务的技术方法,为软件开发提供
了“如何做”的技术。
• 软件工具
– 为软件工程方法提供了自动的或半自动的软件支撑环境。
• 软件工程的过程
– 是将软件工程的方法和工具综合起来以合理、及时地进行
计算机软件开发。
• 传统方法学
• 面向对象方法学
• 也称为生命周期方法学或结构化范型
– 它采用结构化技术(结构化分析、结构化设计和结构化实现
)来完成软件开发的各项任务,并使用适当的软件工具或软
件工程环境来支持结构化技术的运用。
– 这种方法学把软件生命周期的全过程依次划分为若干个阶
段,然后顺序地完成每个阶段的任务。
– 是尽量模拟人类习惯的思维方式,使开发软件的方法与过程尽可能接
近人类认识世界解决问题的方法与过程,从而使描述问题的问题空间
(也称为问题域)与实现解法的解空间(也称为求解域)在结构上尽
可能一致。
– 降低了软件产品的复杂性,提高了软件产品的可理解性,
简化了软件的开发和维护工作。
– 促进了软件重用。
• 把对象(object)作为融合了数据及在数据上的操作行为的统
一的软件构件。
• 把所有对象都划分成类(class)。每个类都定义了一组数据和
一组操作。
• 按照父类(或称为基类)与子类(或称为派生类)的关系,把若
干个相关类组成一个层次结构的系统(也称为类等级)。
• 对象彼此间仅能通过发送消息互相联系。(封装性)