第1章 绪论
1. 软件和软件危机
1.1 软件的定义
- 软件是能够完成预定功能和性能的可执行的计算机程序,包括正常执行所需要的数据,以及有关描述程序操作和使用的文档
- 软件 = 程序 + 数据 + 文档
1.2 软件的分类
- 按软件的功能进行划分:
- 系统软件
操作系统 数据库管理系统 设备驱动程序 通信处理程序等 - 支撑软件
- 应用软件
- 按软件工作方式划分为:实时处理软件、分时软件、交互式软件、批处理软件
1.3 软件的特征
- 软件是逻辑的,而不是物理的
1.4 软件危机
- 软件危机是计算机软件的开发和维护过程所遇到的一系列严重问题
- 表现:
- 庞大的软件费用
- 软件质量的下降
- 供不应求:软件开发生产率跟不上计算机应用迅速深入的趋势
1.5 原因:
- 软件维护费用急剧上升,直接威胁计算机应用的扩大
- 软件生产技术进步缓慢,是加剧软件危机的重要原因
- 客观:软件本身特点:规模大,逻辑性强
- 主观:缺乏软件工程的指导,没有掌握正确的软件开发方法学
2. 软件工程学的范畴
-
软件工程是开发、运行、维护和修复软件的系统方法
-
软件工程只能解决软件开发种出现的非本质问题
-
软件工程学的范畴:
- 软件开发技术:
- 软件开发方法学
- 软件工具
- 软件工程环境
- 软件工程管理:
- 软件管理学
- 软件经济学
- 软件度量学
2.1 软件开发方法学
- 程序、软件、软件产品:
- 程序规模小,分为系统程序和应用程序
- 系统程序又称为软件
- 开始软件工程后,把软件视为产品
- 软件工程方法为软件开发提供了 “如何做” 的技术
2.2 软件工具
- 软件工具:帮助开发软件的软件
- 目的:为软件工程方法提供自动的或半自动的软件支撑环境
2.3 软件工程环境
- 方法、工具结合配套的软、硬件支持就形成软件工程环境(\(SE^{2}\))
2.4 软件工程管理
- 目的:按进度、预算完成预期的经济社会效益
3. 软件工程的发展
3.1 3种编程范型
- 目前主要的编程范型有:过程式编程范型、面向对象编程范型、基于构件的编程范型
3.1.1 过程式编程范型
- 遵循程序 = 数据结构 + 算法的思路,把程序理解成一组被动的数据和一组能动的过程所构成。典型面向过程式编程语言(POPL,procedure-oriented programming language)包括COBOL、FORTRAN、Pascal和C等。
3.1.2 面向对象编程范型
- 指用封装了数据和对数据操作的对象以及对象之间的消息传递描述计算的编程范型。Java、C#等是典型的面向对象编程范型语言。
- “对象+消息”的机制取代了“数据结构+算法”的思路,因而较好地解决了解空间与问题空间的一致性。
- 优点:
- 采用面向对象编程范型可以有效地降低软件的复杂性,简化软件的开发
- 使因修改程序而引发软件故障的机会大大减少,使得大型软件的维护更加容易和快捷
3.1.3 基于构件技术的编程范型
- 指以构件的创建,构件的管理以及复用已有的构件组装形成应用为基本活动的编程范型。目前主要的构件开发技术有:COM/DOCM、CORBA、EJB、Spring、OSGi等。
- 构件:模块化的、可部署、可替换的软件系统组成部分,它封装了内部的具体实现并对外提供一组接口。
3.1.4 3种编程范型的比较
- 常用编程粒度的大小来比较3种编程范型的差异
- 过程式编程范型:着眼于程序的过程和基本控制结构,粒度最小
- 面向对象编程范型:着眼于程序中的对象,粒度比较大
- 基于构件技术的编程范型:着眼于适合整个领域的类对象,粒度更大
3.2 3代软件工程
3.2.1 传统软件工程或经典软件工程
-
它以结构化程序设计为基础,又可以区分为瀑布模型、原型模型等,其开发过程一般包含:
结构化分析 → 结构化设计 → 面向过程的编码 → 软件测试
3.2.2 面向对象软件工程
-
它以面向对象程序设计为基础,其开发过程一般包含:
OO分析与对象抽取 → 对象详细设计 → 面向对象的编码与测试
3.2.3 基于构件的软件工程
-
它以软件复用为目标、领域工程为基础,其开发过程一般包含:
领域分析和测试计划定制→ 领域设计→ 建立可复用构件库 → 按“构件集成模型”查找与集成构件
-
基于构件的软件工程是以大量的可复用构件和测试工具为后盾的
4. 软件工程的应用
- 小程序:科学计算程序、小型商业应用程序、课程设计中编写的程序
- 中规模程序:汇编程序、编译程序、小型MIS系统、仓库系统以及用于过程控制的应用程序等
- 大型软件:大型编译程序、小型分时系统、数据库软件以及某些图形软件和实时控制系统

浙公网安备 33010602011771号