第04章 计算机软件系统 - 信息技术导论
课程:北京大学苏清元《信息技术导论》第4章 格式:PowerPoint 97-2003 二进制 PPT,LibreOffice 转 PDF 后 pdftotext 全文提取 全文约 2.9 万字符,118 页幻灯片
本章概览
本章系统介绍计算机软件系统的全貌,从软件的本质定义出发,逐层深入操作系统、应用软件、程序设计语言和软件工程四大领域。全章分为五大节:
- 软件的性质及发展史 — 软件的本质、独特性质、技术进化史、分层结构
- 操作系统 — OS 的任务功能、引导过程、进程/线程、存储管理、设备/文件管理、分类
- 应用软件 — 五大类应用
- 程序设计语言与语言处理程序 — 语言演进、编译解释、可视化编程、.NET、OP→OO
- 软件工程及其标准 — 软件工程框架、四大原则、标准体系、CASE 技术
4.1 软件的性质及发展史
4.1.1 软件的定义
计算机软件 = 程序 + 数据 + 文档
- 程序:按照事先设计的功能和性能要求执行的指令序列
- 数据:程序能正常操纵信息的数据结构
- 文档:与程序开发维护和使用有关的各种图文资料
- 文档是软件的”质”的部分
- 程序是文档代码化的表现形式
不装任何软件的计算机称为硬件计算机或”裸机”。
4.1.2 软件的四大独特性质
| 性质 | 硬件 | 软件 |
|---|---|---|
| 表现形式 | 有形产品,可触摸 | 抽象性,记录在介质上但无法看到本身形态,只能通过运行判断 |
| 生产方式 | 工业化流水线制造 | 依赖手工作坊式开发,可复制,但开发是高强度脑力劳动,成本高 |
| 维护方式 | 容易磨损和老化 | 需要随需求变化修改,但修改可能导入更多错误,甚至退化,最终被抛弃 |
| 复杂性与规模 | 复杂度可控 | 是复杂度最高的工业产品之一,代码膨胀(如 Windows 4000 多万行),涉及各行各业知识 |
核心洞见:硬件技术发展速度远远高于软件技术的发展——原因是人们很长时间内没有找到有效构建软件的方法。
4.1.3 软件技术进化史(四阶段)
第一阶段:初期(20世纪50年代—70年代)
- 软件=程序,无文档,个人化开发
- 20世纪60年代出现软件危机
- Denis Ritchie & Ken Thompson 设计 C 语言 + UNIX 操作系统(1971年),获1983年图灵奖
- 结构化软件技术出现:软件工程方法,软件生命周期概念
- 软件=程序+分析+设计+实现+维护+文档,编程仅占工作量 20-30%
第二阶段:中期(20世纪80年代)
- 面向对象技术兴起
- Bill Gates 与微软崛起(1975年创建),“微软离破产永远只有18个月”
- 个人计算机软件革命
第三阶段:网络计算时代(20世纪90年代至今)
- UML 统一建模语言(1997年 OMG 发布)
- 三大创始人:James Rumbaugh(OMT方法)+ Ivar Jacobson(OOSE/用例驱动)+ Grady Booch(Booch方法)
- 语言与方法学分离,UML是”语言”不是”方法学”
- 目标:为开发团队提供标准通用的设计语言
- 软件构件技术(随需应变)
- 凝练共性并复用,降低复杂度,提高效率和质量
- 从手工作坊式 → 软件工业化生产
- 用户无需掌握复杂编程语言,只需高层建模,自动生成代码
第四阶段:21世纪软件技术
- 广义的冯·诺依曼计算机:在整个网络上实现将程序视为数据
- 浏览器不区分本地和远程数据
- 语义操作系统:不区分本地和远程的程序
4.1.4 软件系统的分层结构
┌─────────────────────────────────────┐
│ 应用系统/应用软件 │
├─────────────────────────────────────┤
│ 软件框架 / 设计模式 │ ← 弥补应用与开发平台的距离
├─────────────────────────────────────┤
│ 支持软件 / 中间件(J2EE/EJB │ ← 屏蔽OS和编程语言异构
│ Web Services、.NET/COM 等) │
├─────────────────────────────────────┤
│ 操作系统(Windows/UNIX/Linux) │ ← 屏蔽硬件异构
├─────────────────────────────────────┤
│ 计算机硬件 │
└─────────────────────────────────────┘
实质上:解决概念和处理逻辑之间的映射问题
软件体系结构 vs 软件框架 vs 设计模式:
| 概念 | 定义 | 示例 |
|---|---|---|
| 软件体系结构 | 系统的结构,包括软件组件、组件的外部可见属性、组件之间的关系 | C/S架构、B/S架构、三层架构 |
| 软件框架 | 抽象出的通用功能,可选择性覆盖或特化 | .NET框架、EJB |
| 设计模式 | 常见设计问题的通用可复用解决方案(模板,非成品) | 面向对象设计模式、构件设计模式 |
4.2 操作系统
4.2.1 操作系统的任务及功能
操作系统:管理软硬件资源、控制程序执行、改善人机界面、合理组织计算机工作流程、为用户提供良好运行环境的系统软件。
两大任务:
- 管理资源:管理全部软硬件资源,提高利用率
- 用户接口:用户通过命令或菜单方便地使用计算机
五大功能(资源管理视角):
- 处理机管理(CPU)
- 存储管理(内存+外存)
- I/O 设备管理
- 文件系统
- 用户接口
OS 引导过程(5 步)
| 步骤 | 名称 | 内容 |
|---|---|---|
| STEP 1 | 上电 | CPU 生产商决定初始状态。x86 CPU 上电后指令寄存器设为 0ffff:0000,从此处取第一条指令,通常是跳转至 BIOS 入口 |
| STEP 2 | 自检(POST) | BIOS 自检计算机是否正常;第二项功能:加载引导扇区 |
| STEP 3 | 加载引导扇区(Boot Loader) | 软盘/硬盘第一个逻辑扇区(0头0道1扇)。硬盘有多个分区,主引导扇区先加载分区引导扇区,再由分区引导扇区加载 OS |
| STEP 4 | 加载操作系统(OS Loader) | 引导程序通过绝对位置(扇区号)把 OS 从磁盘拷贝到内存(此时尚无文件系统) |
| STEP 5 | 运行操作系统 | 跳转到 OS 第一条指令,OS 开始运行 |
4.2.2 处理机(CPU)管理
中断处理
- 中断:CPU 暂停正在执行的程序,保留现场,转去执行处理程序,处理完返回断点继续执行
- 中断源:引起中断的事件
- 中断请求:中断源向 CPU 提出的处理请求
- 断点:被中断的暂停点
处理器调度
- 单用户单任务:简单
- 多道程序/多用户:需要解决处理器的调度、分配和回收
- 调度以进程为单位,后引入线程概念
进程的三种基本状态
| 状态 | 英文 | 含义 |
|---|---|---|
| 运行态 | Running | 占有 CPU,正在 CPU 上运行 |
| 就绪态 | Ready | 已具备运行条件,但无 CPU 暂时不能运行;调度到 CPU 时立即运行 |
| 等待态 | Blocked | 因等待某事件而暂时不能运行;即使 CPU 空闲也不可运行(又称阻塞/挂起/睡眠) |
四种状态转换:
- 就绪 → 运行:进程被调度程序选中
- 运行 → 就绪:时间片用完
- 运行 → 等待:等待某事件发生
- 等待 → 就绪:等待的事件已发生
进程控制块(PCB)
Process Control Block — 系统感知进程存在的唯一标志
- 记录进程的外部特征,描述进程的运动变化过程
- 进程与 PCB 一一对应
- 进程 = 程序 + 数据 + PCB
- 程序:描述要实现的功能
- 数据:程序操作的对象
- PCB:进程的”灵魂”,保存所有进程的地址信息
4.2.3 存储管理
四大功能:
- 存储分配:根据用户程序需要分配存储器资源
- 存储共享:多个用户程序共享存储资源,提高利用率
- 存储保护:用户程序相互隔离,不允许访问操作系统程序和数据
- 存储扩充:逻辑上扩充内存(虚拟存储器)
高速缓存 Cache:解决 CPU 速度与内存速度不匹配的矛盾
虚拟存储器(Virtual Memory):
- 不是物理上扩大内存,而是逻辑上扩充容量
- 内存和外存结合使用,硬件支持下软硬件协作
- 示例:Pentium 处理器物理内存最大 4GB,虚拟存储量可达 64TB
4.2.4 设备管理(略)
4.2.5 文件管理
- 文件:逻辑上具有完整意义并赋有名称的信息集合体
- 文件系统:负责操纵和管理文件的一整套设施
- 实现文件的建立、读写、修改、共享和保护
- 按名存取和存取控制
4.2.6 操作系统的三大主要特性
- 并发性(Concurrence):两个或多个运行程序在同一时间间隔段内同时执行
- 共享性:资源(硬件+信息)可被多个并发进程使用
- 异步性:多道程序下进程”走走停停”,执行顺序和速度不可预测
4.2.7 操作系统分类(9 类)
- 单用户操作系统
- 批处理操作系统
- 分时操作系统
- 实时操作系统
- 网络操作系统
- 分布式操作系统
- 个人计算机操作系统
- 嵌入式操作系统
- 并行操作系统
扩展:Web OS
- Web-based Operating System,基于浏览器的虚拟操作系统
- 用户通过浏览器访问基于 Web 的在线应用
- 技术:Ajax / Flash,B/S 结构,数据存 Server 端
- 代表:ICUBE、eXo Enterprise WebOS、Zimdesk、YouOS、千脑等
4.3 应用软件
五大类:
- 科学和工程计算软件 — MATLAB 等
- 字表处理软件 — Word、Excel 等
- 图形图像处理软件 — Photoshop 等
- 网络应用软件 — Internet Explorer 等
- 应用数据库软件 — Oracle、MySQL 等
4.4 程序设计语言与语言处理程序
4.4.1 程序设计语言三阶段
低级语言:
- 机器语言:二进制代码组成,面向机器的指令序列
- 汇编语言:符号化了的机器语言(如
ADD AL, 2)
高级程序设计语言(接近自然语言、面向问题):
- FORTRAN(1956年):第一个被广泛使用的高级语言
- BASIC(1964年):较早出现且至今仍有较大影响
- COBOL(1960年):面向行业的管理软件开发
- Pascal(1970年):第一个系统地体现结构化程序设计思想的语言
- C 语言(1972年):UNIX 系统语言工具,至今广泛使用
4.4.2 语言处理程序
将用程序设计语言编写的源程序转换成机器语言形式
三类:
- 汇编程序(汇编 → 机器)
- 编译程序(高级语言 → 机器,整体翻译后执行)
- 解释程序(高级语言 → 机器,逐条解释执行)
4.4.3 可视化编程语言
- Visual Basic:易学,开发效率高,不跨平台
- Visual C++:基于 MFC 类库,功能强大但难学
- Delphi:面向对象,适合数据库、网络应用
- C++Builder:继承 Delphi 特点 + C++ 语言优点
- PowerBuilder:适合管理系统和跨平台数据库,真正的 4GL 语言
- Java:“一次编码,多次运行”,面向对象全面,跨平台好
4.4.4 .NET
- 微软推出的用于快速创建和集成 XML Web 服务和应用程序的综合工具
- 核心技术:Web Services
- Web 是用户与应用交互的途径,XML 是程序间通讯的途径,Web Services 是计算机间通用的数据传输格式
4.4.5 从面向过程(OP)到面向对象(OO)
软件开发 = 将现实世界(问题域)映射到计算机世界的过程
- 面向过程(PO):采用面向过程语言编程,实现软件设计流程图描述的信息处理过程
- 面向对象(OO):基于面向对象模型,采用 OO 语言编程实现
4.5 软件工程及其标准
4.5.1 “软件之道”——软件工程之路
软件工程:将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护的过程——即将工程化应用于软件中。
软件工程的交叉学科属性:
- 计算机科学、数学 → 构造模型与算法
- 工程科学 → 制定规范、设计范型、评估成本、确定权衡
- 管理科学 → 计划、资源、质量、成本管理
软件工程框架
┌─────────────────────────────────────────────────┐
│ 工程目标:正确 / 可用 / 合算 │
├─────────────────────────────────────────────────┤
│ 软件开发活动(需求→设计→实现→验证→维护) │
├─────────────────────────────────────────────────┤
│ 工程原则: │
│ ① 选取适宜的开发范型 │
│ ② 采用好的设计方法 │
│ ③ 提供高质量的工程支持(配置管理、质量保证等) │
│ ④ 有效的软件工程管理 │
└─────────────────────────────────────────────────┘
软件工程三目标:
- 正确性:软件产品达到预期功能的程度
- 可用性:基本结构、实现及文档为用户可用的程度
- 开销合宜:开发、运行的整个开销满足用户要求的程度
五大基本开发活动:
| 活动 | 内容 | 产出 |
|---|---|---|
| 需求分析 | 在抽象层上建立系统模型 | 需求规约(开发人员和客户间契约的基础) |
| 设计 | 定义实现需求所需的结构(体系结构+算法) | 设计规约(软件解决方案) |
| 实现 | 由设计规约到代码的转换 | 可执行代码 |
| 验证/确认 | 动态(执行程序与预期比较)或静态(评审/走查/形式化验证) | 质量评估 |
| 维护 | 软件发布后的开发或修改(纠错+适应环境变化) | 更新版本 |
软件工程四大原则
第一原则:选取适宜的开发范型
- 权衡软件需求、硬件需求及其他因素的相互制约
- 适应需求的易变性,保证可持续性
第二原则:采用好的设计方法
- 考虑模块化、信息隐蔽、局部化、一致性、适应性
- 采用合适的设计方法支持这些问题的解决
第三原则:提供高质量的工程支持
- 配置管理、质量保证等
- 按期交付高质量产品
第四原则:有效的软件工程管理
- 影响资源有效利用和软件组织生产能力
- 仅当软件过程实施有效管理时,才能实现有效的软件工程
4.5.2 软件工程标准
- 我国在 ISO/IEC JTC1/SC7 框架基础上,结合国情建立软件工程标准体系框架
- 面向管理人员、软件开发人员、软件质量保证人员
4.5.3 CASE 技术
CASE = Computer-Aided Software Engineering,计算机辅助软件工程
- 借助计算机及软件工具,开发、维护、管理软件产品
- 最终目标:软件自动化
- 两大突出特点:
- 使开发支持工具与开发方法学统一结合
- 通过实现分析、设计、程序开发与维护的自动化,提高整个软件工程的效率
- 代表工具:Rational Rose 2000、Power Designer
关键洞见与关联
- 软件的本质是抽象:与硬件形成鲜明对比,这是软件危机的根源,也是软件工程存在的理由
- 分层抽象是计算机科学的核心思想:从硬件→OS→中间件→框架→应用,每一层都屏蔽下层复杂性,提供更高级的抽象
- 从 OP 到 OO 是范式跃迁:不仅是语法变化,更是思考问题方式的根本转变
- 软件工程的四大原则具有普适性:选取适宜范型、好的设计方法、工程支持、有效管理——适用于任何工程项目
- 软件危机从未真正解决:从结构化→面向对象→构件→AI辅助开发,每一次技术革命都在缓解但未根除软件复杂性问题
关联笔记: