1.1 软件和软件的危机
一、软件的概念
软件:软件是能够完成预定功能和性能的可执行的计算机程序,包括使程序正常执行所需要的数据,以及有关描述程序操作和使用的文档。
程序:程序是为了解决某个特定问题而用程序设计语言描述的适合计算机处理的语句序列。
文档:文档是软件开发活动的记录,主要供人们阅读,既可用于专业人员和用户之间的通信和交流,也可以用于软件开发过程的管理和运行阶段的维护。
二、软件的特征
(1)软件开发不同于硬件设计。
(2)软件生产不同于硬件制造。
(3)软件维护不同于硬件维护。
三、软件危机
(1)软件危机:落后的软件生产方式无法满足迅速增长的计算机软件要求,从而导致软件开发与维护过程中出现一系列严重问题的现象。
(2)软件危机的原因
- 软件维护费用急剧上升,直接威胁计算机应用的扩大。
- 软件生产技术进步缓慢,是加剧软件危机的重要原因。
1.2 软件工程学的范畴
1.3 软件工程学的发展
一、3种编程范型
(1)过程式编程范型——程序=数据结构+算法
(2)面向对象编程范型——对象+消息
(3)基于构件技术的编程范型——标准化的对象类
二、3种编程范型的比较
(1)过程式编程范型:着眼于程序的过程和基本控制结构,粒度最小;
(2)面向对象编程范型:着眼于程序中的对象,粒度比较大;
(3)基于构件技术的编程范型:着眼于适合整个领域的类对象,粒度比较大。
三、软件工程的分代
(1)传统软件工程
结构化分析 结构化设计 面向过程的编码 软件测试
(2)面向对象软件工程
OO分析与对象抽取 对象详细设计 面向对象的编码与测试
(3)基于构件的软件工程
领域分析和测试计划定制 领域设计 建立可复用构件库
按“构件集成模型”查找与集成构件
1.4 软件工程的教学
一、3代软件工程的相互关系
3代软件工程并非相互排斥,而是“你中有我,我中有你”。
二、软件工程技术与软件工程管理的关系
技术与管理是软件生产中缺一不可的两个方面,管理离不开度量。
三、形式化方法与非形式化方法的关系
形式化方法:是一种基于数学的开发技术,主要采用数学的方法来描述系统的性质,如程序变换和程序验证等。它的实现难度很大,进展十分缓慢。
非形式化方法:主要运用文本、图、表与符号来描述系统的模型,如结构化设计、面向对象设计和UML语言等。
四、小程序设计与大程序设计的关系
小程序设计是大程序设计的基础,两者都需要软件工程的指导。