热门搜索:

  • /?9
  • 下载费用:1 金币 ?

软件工程基础.doc

关?键?词:
软件工程 基础
资源描述:

1 ?软件 的概念 :是 一系 列按 照特定 顺序 组织 的计 算机 数据 、 与程 序相 关的 文档 和指令 的集 合 。 ?计算机 软件 系统的组 成 或 分类 :由 系 统软 件、 应用 软件和 介于 这两 者之 间的 中间件 组成 。 ?各软件的功能: ?系统软件 为 计算 机使 用提 供最基 本的 功能 , 但是 并 不针对 某一 特定 应用 领域 。 它 是负 责管 理计 算机 系 统中 各种独 立的 硬件 , 使 得它 们可以 协调 工作 。 系 统软 件使得 计算 机使 用者 和其 他软件 将计 算机 当作 一个 整体 而不需 要顾 及到 底层 每个 硬件是 如何 工作 的。 ?系统软件 包 括操 作系 统和 一系列 基本 的工 具( 比如 编译器 ,数 据库 管理 ,存 储器格 式化 ,文 件系 统管 理, 用户身 份验 证, 驱 动 管理 ,网络 连接 等方 面的 工具 ) 。 ?应用软件 为 不同 的应 用软 件根据 用户 和所 服务 的领 域提供 不同 的功 能 。 ? 应用软件 是 为了 某种 特定 的用途 而被 开发 的软 件。 它可以 是一 个特 定的 程序 , 比如一 个图 像浏 览器。 也可 以是一 组功 能联 系紧 密 , 可以互 相协 作的 程序 的集 合, 比如 微软 的 Office 软 件。 也可 以是 一个 由众 多 独立 程序组 成的 庞大 的软 件系 统,比 如数 据库 管理 系统 。 ? 较常见 的有 :文 字处 理软 件 : 如 WPS 、Word 等。 信息管 理软 件 : 如 Assces 数据 库 。 辅助 设计 软件 :如 AutoCAD 、Photoshop 。实 时控制 软件 , 教 育与 娱乐 软件等。 ?源 程序 (source program ) 是一种 计算 机 的 代码 。 它 会符合 一定 的语法 , 经过 编译器 编译 或解 释后 生成 具 有 一定功 能的 可执 行文 件 或 组件, 也可 以是 某种 接口 。是用 程序 设计 语言 编写 的 程序 。 ?目标程序 由 编译 程序 将源 程序 编 译成 与之 等价 的由 机器码 构成 的 , 计 算机 能 直接运 行的 程序 , 该程 序 叫目 标程序 ?可执行程序 是 指可 以直 接 运行的 程序 ?机 器 语 言 的 定义 : ?机器语言是直接用 二 进 制 代 码 指 令 表 达 的 计 算 机 语 言 , 指 令 是 用 0 和 1 组成的一串代码, 它们有一 定的位数,并分成若干段,各段的编码表示不同的含义,例如某台计算机字长为 16 位,即有 16 个二进制数组成一条指令或其它信息。16 个 0 和 1 可组成各种排列组合,通过线路变成电信号, 让计算机执行各种不同的操作。 ?机器语言的 特点: ?机器语 言或 称为 二进 制代 码语言 , 计算 机可 以直 接 识别 , 不 需要 进行 任何 翻 译。 每台 机器 的指 令 , 其 格式 和代码 所代 表的 含义 都是 硬性规 定的 , 故称之 为面 向机器 的语 言 , 也称 为机 器语言 。 它是 第一代 的计 算 机 语言。 机器 语言 对不 同型 号的计 算机 来说 一般 是不 同的。 ?汇编语言 是 介于 机器 语言 和高级 语言 之间 的一 种语 言 。 ?汇编语言归纳起来大 概有 以下几个主要特性 ?1 、和 机器 相关 性 ?汇编语 言指 令是 机器 指令 种符号 表示 而区 别类 型 CPU 有 区别 机器 指令 系统 也 就有区 别汇 编语 言所 以汇 编 语言和 机器 有着 密切 关系 ,由于 汇编 语言 和机 器相 关性所 以除 了同 系列 、区 别型 号 CPU 的 间汇 编语 言 有 一 定程 度可 移植 性的 外其 它区别 类型( 如: 小型 机和 微 机等)CPU 的间 汇编 语言 是 无法移 植也 就是 说汇 编语 言通用 性和 可移 植性 要比 高级语 言低 ?2 、执 行高 效率 ?正汇编 语言 有 “ 和机 器相 关性” 特性 员用 汇编 语言 编写时 可充 分发 挥自 己聪 明才智 对机 器内 部各 种资 源进 行合 理 安排 让它 们始 终处 于最佳 使用 状态 这样 做最 终效果 就是: 执行 代码 短执 行速度 快 , 现 在高 级语 言 编 译 在进行 寄存 器分 配和 目标 代码生 成时 也都 有定 程度 优化( 在 后续 课程 编译 原理 有关章 节会 有详 细介 绍)但由 于所使 用 “优 化策略 ” 要 适应各 种区 别情 况所 以这 些优化 策略 只能 在宏 观上 不可能 在微 观上 、 细 节上 进行 优化而 用汇 编语 言编 写几 乎是员 直接 在写 执行 代码 员可以 在 每 个具 体细 节上 进行优 化这 也是 汇编 语言 执 行高效 率 的 原因 。 ?3 、编 写复 杂性 ?2 ?汇编语 言是 种面 向机 器语 言其汇 编指 令和 机器 指令 基本上 对应 所以 汇编 指令 也同机 器指 令样 具有 功能 单 、 具体特 点要 想完 成某 件工 作( 如计 算:A+B+C 等) 就 必 须安排 CPU 每 步工 作( 如: 先计算 A+B 再把 C 加到 前 者 结果上) 另外 在编 写汇 编语 言时还 要考 虑机 器资 源限 制、 汇编 指令 细节 和限 制 等等 , 由 于汇 编语 言要 安 排运 算每个 细节 这就 使得 编写 汇编语 言比 较繁 琐 、 复 杂 个简单 计算 公式 或计 算思 路方法 也要 用系 列汇 编指 令步 步来实 现 ?4 、调 试复 杂性 ?在通常 情况 下调 试汇 编语 言要比 调试 高级 语言 困难 其主要 原因 有 ? 1 ,. 汇 编语言 指令 涉及 到 机器资 源细 节在 调试 过程 中要清 楚每 个资 源变 化情 况; ?2 ,程 序 员 在编 写汇 编语 言 时为了 提高 资源 利用 率可 以使用 各种 实现 窍门 技巧 而这些 窍门 技巧 完全 有可 能 破坏可 读性 这样 在调 试过 程中除 了要 知道 每条 指令 执行功 能还 要清 楚它 在整 个解题 过程 中作 用; ?3 , 高 级语 言几 乎不 显式 地 使用“ 转移 语句 ”但 汇编 语言要 用到 大量 、各 类转 移指令 这些 跳转 指令 大大 地 增加了 调试 难度 如果 在汇 编语言 中也 强调 不使 用 “ 转移指 令” 那么 汇编 语言 就会变 成功 能单 调顺 序这 显然 是不现 实; ?4 , 调 试工 具落 后高 级语 言 可以在 源级 进 行 符号 跟踪 而汇编 语言 只能 跟踪 机器 指令不 过现 在这 方面 也有 所 改善 ?高级语言 一是比机 器代码或汇编语 言更接近于自然语言或数 学语言的一种语言 。由于 汇编语言 依赖于 硬 件 体系 , 且助 记符 量大 难 记, 于是 人们 又发 明了 更 加易用 的所 谓高 级语 言 。 在这种 语言 下 , 其 语法 和 结构 更类似 普通 英文 ,且 由于 远离对 硬件 的直 接操 作, 使得一 般人 经过 学习 之后 都可以 编程 。 ?高级语言的分类 : 1. 命 令 式 语 言 。 这 种 语 言 的 语 义 基 础 是 模 拟 “ 数据存储/ 数据操作” 的 图 灵 机 可 计 算 模 型 , 十 分 符 合现代计算机体系结构的自然实现方式。其中产生操作的主要途径是依赖 语 句 或 命 令 产 生 的 副 作 用。现代流行的大多数语言都是这一类型,比如 Fortran 、Pascal 、Cobol 、C 、C++ 、Basic 、Ad a 、Java 、C# 等,各种脚本语言 也 被 看 作 是 此 种 类 型 。 2. 函 数 式 语 言 。 这 种 语 言 的 语 义 基 础 是 基 于 数 学 函 数 概 念 的 值 映 射 的 λ 算子可计算模型。 这种 语言非常适合于进行人工智能等工作的计算。典型的函数式语言如 Lisp 、Haskell 、ML 、Scheme等。 3. 逻 辑 式 语 言 。 这 种 语 言 的 语 义 基 础 是 基 于 一 组 已 知 规 则 的 形 式 逻 辑 系 统 。 这 种 语 言 主 要 用 在 专家系统的实现中。最着名的逻辑式语言是 Prolog 。 ?4. 面 向 对 象 语 言 。 现 代 语 言 中 的 大 多 数 都 提 供 面 向 对 象 的 支 持 , 但 有 些 语 言 是 直 接 建 立 在 面 向 对 象 基 本 模 型 上 的 , 语 言 的 语 法 形 式 的 语 义 就 是 基 本 对 象 操 作 。 主 要 的 纯 面 向 对 象 语 言 是 ?Smalltalk 。 ?高 级 语 言 的 特 点 : 1. 高 级 语 言 接 近 算 法 语 言 , 易 学 、 易 掌 握 , 一 般 工 程 技 术 人 员 只 要 几 周 时 间 的 培 训 就 可 以 胜 任 程 序员的工作; ?2. 高 级 语 言 为 程 序 员 提 供 了 结 构 化 程 序 设 计 的 环 境 和 工 具 , 使 得 设 计 出 来 的 程 序 可 读 性 好 , 可 维护性强,可靠性高; ?3. 高 级 语 言 远 离 机 器 语 言 , 与 具 体 的 计 算 机 硬 件 关 系 不 大 , 因 而 所 写 出 来 的 程 序 可 移 植 性 好 , 重用率高; ?4. 由 于 把 繁 杂 琐 碎 的 事 务 交 给 了 编 译 程 序 去 做 ,所 以 自 动 化 程 度 高 , 开 发 周 期 短 ,且 程 序 员 得 到解脱,可以集中时间和精力去从事对于他们来说更为重要的创造性劳动,以提高程序的质量。 ?操作系 统是 控制 其他 程序 运行, 管理 系统 资源 并为 用户提 供操 作界 面的 系统 软件的 集合 。 3 ?操作系 统 ( 英语 ;Operating System , 简称 OS ) 是 一管理 电脑 硬件 与软 件资 源的程 序 , 同 时也 是计 算 机 系统的 内核 与基 石。 操作 系统身 负诸 如管 理与 配置 内存 、 决 定系 统资源 供需 的优先 次序 、 控制输 入与 输 出 设备、 操作 网络 与管 理文 件系统 等基 本事 务。 操作 系统是 管理 计算 机系 统的 全部硬 件资 源包 括软 件资 源及 数据资 源; 控制程 序运行; 改 善人机 界面; 为其 它应用 软 件提供 支持等 ,使计 算机 系统所 有资源 最大限 度地 发 挥作用 , 为 用户 提供 方便 的、 有 效的 、 友 善的 服务 界面。 操作 系统 是一 个庞 大的管 理控 制程 序, 大致 包括 5 个方 面的 管理 功能: 进 程 与处理 机管 理 、 作 业管 理 、 存 储管 理 、 设 备管 理、 文件管 理 。 目 前微 机上 常 见的 操作系 统有 DOS 、OS/2 、UNIX 、XENIX 、LINUX 、Windows 、Netware 等 。 但所有 的操 作系 统具 有并 发 性、共 享性 、虚 拟性 和不 确定性 四个 基本 特征 。 ?汇编程 序 是把 汇编 语言 书写的 程序 翻译 成与 之等 价的机 器语 言程 序的 翻译 程序 。 汇 编程 序输 入的 是 用 汇 编语言 书写 的源 程序 ﹐输 出的是 用机 器语 言表 示的 目标程 序 。 汇 编语 言是 为 特定计 算机 或计 算机 系列 设计 的一种 面向 机器 的语 言﹐ 由汇编 执行 指令 和汇 编伪 指令组 成 。 汇 编执 行指 令 是机器 指令 的符 号化 表示 ﹐其 操作码 用记 忆符 表示 ﹐地 址码直 接用 标号 ﹑ 变 量名 字﹑常 数等 表示 。 汇编 执 行指令 经汇 编程 序翻 译为 机器 指令﹐ 二者 之间 基本 上保 持一一 对应 的关 系 。 汇 编 伪指令 又称 作汇 编指 示﹐ 用于向 汇编 程序 提供 用户 自定 义 的 符 号 ﹑ 数 据 的 类 型 ﹑ 数 据 空 间 的 长 度 ﹐ 以 及 目 标 程 序 的 格 式 ﹑ 存 放 位 置 等 提 示 性 信 息 ﹐ 其 作 用 是 指 示汇编 程序 如何 进行 汇编 。 采 用汇 编语 言编 写程 序 虽不如 高级 程序 设计 语言 简便﹑ 直观 ﹐但 是汇 编出 的目 标程序 占用 内存 较少 ﹑运 行效率 较高 ﹐且 能直 接引 用计算 机的 各种 设备 资源 。 它 通常 用於 编写 系统 的 核心 部分程 序﹐ 或编 写需 要耗 费大量 运行 时间 和实 时性 要求较 高的 程序 段。 ?汇编程 序 分类 汇编 程序 分为简单 汇编程序 ﹑模块 汇编程序 ﹑条件汇 编程序 ﹑宏汇编 程序和高 级汇编 程序等 。 ?简 单汇 编程 序 又称“ 装入并 执行 ” 式 汇编 程序。 由於简 便而 得到 广泛 使用 。 这种 汇编 程序的 特点 是 汇编 後的机 器语 言程 序直 接放 在内存 之中 准备 执行 。 目 标程序 所占 据的 存储 位置 是在汇 编时 固定 的﹐ 并且 以後 不 能 改 变 ﹐ 所 以 这 种 工 作 方 式 不 能 将 多 个 独 立 汇 编 的 子 程 序 合 并 为 一 个 完 整 的 程 序 ﹐ 而 且 只 能 调 用 位 置 与目标 程序 不冲 突的 程序 库中的 子程 序。 ?模块汇 编程序 为适 应模 块程序设 计方法而 研制的 。它除了 克服简单 汇编程 序的缺点 之外﹐还 提供并 行设计 ﹑编 码和 调试 不同 程 序模 块的 能力 ﹐而 且更 改程序 时只 更改 有关 的模 块即可 。 每个 汇编 後的 程 序模 块称为 目标 模块 ﹐多 个目 标模块 经连 接装 配程 序组 合成一 个完 整的 可执 行的 程序。 ?条件汇 编程序 主要 特点 是具有选 择汇编某 些程序 段的能力 。它适用 於编写 选择性较 大的程序 或程序 包﹐以 便根 据用 户的 需要 和设备 的配 置情 况剪 裁﹑ 编制适 当的 软件 。这 种汇 编语言 通常 要引 入 “ 条 件转 移 ” ﹑ “ 转移 ” 等 汇 编 指 示 ﹐ 以 便 根 据 用 户 指 定 的 汇 编 条 件 有 选 择 地 汇 编 某 些 程 序 段 或 控 制 汇 编 程 序 的 加 工 路 径。 ?宏汇编 程序 主要特 点是 在汇编程 序中增加 宏加工 功能。它 允许用户 方便地 定义和使 用宏 指令 ﹐适用 于程序 中多 处出 现﹑ 具有 一定格 式﹑ 可以 通过 少数 参数调 节改 变的 程序 段落 的场合 。 采用 这种 方法 不 仅减 少 程 序 的 长 度 ﹐ 增 加 可 读 性 ﹐ 而 且 程 序 段 落 的 格 式 需 要 改 变 时 ﹐ 只 须 改 动 定 义 处 ﹐ 而 不 必 改 动 每 一 使 用 处。 ?高级汇 编程序 采用 高级 程序设计 语言的控 制语句 结构的汇 编程序。 它不仅 保持汇编 语言表达 能力强 ﹑程序 运行 效率 高的 优点 ﹐而且 能充 分吸 收高 级语 言书写 简单 和易 读的 长处 。 这 是由 於高 级汇 编程 序 允许 用户使用高级程序设计语 言的控制语句( 如条件语句﹑循环语句﹑函数和过程) 编写程序中的控制部分﹐ 而 且还允 许用 户直 接利 用汇 编语言 直接 控 制 存储 分配 ﹑存取 寄存 器硬 件﹐ 描述 高级语 言难 於表 达的 算法 。 第 一个高 级汇 编程 序 是 N. 沃 思为 IBM360 系 统研 制的 PL/360 语言 汇编 程序 ﹐其 特点是 程序 的控 制部 分 采 用 高 级 语言 的 控制 语句 编写﹐ 而 数据 加 工部 分采 用 IBM360 汇 编 指令 编写 。 自此 以 後﹐ 又 相继 出现 了类似 ALGOL 的汇编 程序 ﹐类 似 FORTRAN 的 汇编 程序 FAT 。 ?结 构 与 实现 由于 汇编语言 的指令与 机器语言 的指令 大体上保 持一一对 应的关 系﹐汇编 算法采用的基 本策略 是简 单的 。 通 常采 用两遍 扫描 源程 序的 算法 。 第一 遍扫 描源 程序 根据 符号的 定义 和使 用﹐ 收集 符号 的 有 关 信 息 到 符 号 表 中 ﹔ 第 二 遍 利 用 第 一 遍 收 集 的 符 号 信 息 ﹐ 将 源 程 序 中 的 符 号 化 指 令 逐 条 翻 译 为 相 应 4 ?的机器 指令 。 具体 的翻 译 工作可 归纳 为如 下几 项﹕ 用机器 操作 码代 替符 号操 作﹔用 数值 地址 代替 符号 地址 ﹔将常 数翻 译为 机器 的内 部表示 ﹔分 配指 令和 数据 所需的 存储 单元 。 除了 上 述的翻 译工 作外 ﹐汇 编程 序还 要考虑 ﹕处 理伪 指令 ﹐收 集程序 中提 供的 汇编 指示 信息﹐ 并执 行相 应的 功能 。 为 用户 提供 信息 和源 程 序清 单。 汇编 的善 後处 理工 作 ﹐随目 标语 言的 类型 不同 而有所 不同 。 有的 直接 启 动执行 ﹐有 的先 进行 连接 装配。 如果具 有条 件汇 编﹑ 宏汇 编或高 级汇 编功 能时 ﹐也 应进行 相应 的翻 译处 理 。 ?假 定 汇 编 语 言 中 规 定 符 号 的 应 用 一 定 出 现 在 定 义 之 後 ﹐ 则 两 遍 算 法 可 容 易 地 合 并 成 一 遍 算 法 加 以 实 现。 ? 汇编程序的工作过程 是 ﹕ 输入汇 编语 言源 程序 。 检 查语法 的正 确性 ﹐如 果正 确﹐则 将源 程序 翻译 成等 价的 二 进 制 或 浮 动 二 进 制 的 机 器 语 言 程 序 ﹐ 并 根 据 用 户 的 需 要 输 出 源 程 序 和 目 标 程 序 的 对 照 清 单 ﹔ 如 果 语 法 有错﹐ 则输 出错 误信 息﹐ 指明错 误的 部位 ﹑类 型和 编号。 最後 ﹐对 已汇 编出 的目标 程序 进行 善後 处理 。 ?编译程 序 (compiler) ?将用 高级 程序 设计 语言 书写的 源程 序, 翻译 成等 价的用 计算 机汇 编语 言、 机器语 言或 某种 中间 语言 表示 的目标 程 序 的翻 译程 序。 用户利 用编 译程 序实 现数 据处理 任务 时, 先要 经历 编译阶 段, 再经 历运 行阶 段 。 编译阶 段以 源程 序作 为输 入, 以目 标程 序作为 输出 , 其 主要 任务 是将源 程序 翻译成 目标 程序 。 运 行阶 段 的 任务是 运行 所编 译出 的目 标程序 ,实 现源 程序 中指 定的数 据处 理任 务, 其工 作通常 包括 :输 入初 始数 据 , 对数据 或文 件进 行数 据加 工, 输出 必要 信息和 加工 结果等 。 编译 程序的 实现 算法较 为复 杂 。 这是 因为 它 所 翻译的 语句 与目 标语 言的 指令不 是一 一对 应关 系, 而是一 多对 应关 系; 同时 因为它 要在 编译 阶段 处理 递归 调 用、动态 存储分配 、多种 数据类型 实现 、 代码生 成与代码 优化等繁 杂技术 问题;还 要在运行 阶段提 供良好 、 有效 的运 行环 境 。 由 于高 级程 序设 计语 言 书写的 程序 具有 易读 、 易 移植和 表达 能力 强等 特点 , 所 以编译 程序 广泛 地用 于翻 译规模 较大 、复 杂性 较高 、且需 要高 效运 行的 高级 语言书 写的 源程 序。 ?功能 编译程序 的基本功 能是把源 程序翻译 成目标 程序。此 外,还要 具备语 法检查、 调试措施 、修改 手段 、 覆 盖处 理 、 目 标程 序优化 、 不同 语言 合用 以 及人机 联系 等具 有实 际应 用价值 的重 要功 能 。 ① 语 法检 查 。检查源 程序是否 合乎语 法 。 ②调试措 施。检 查源 程序是否 合乎用户 的设计 意图。 ③ 修改手段 。为用 户提供 简便 的修 改源 程序 的手段 。 ④ 覆盖 处理。 主要 为处理 程序 较长 、 数 据量 较大的 大型 问题 程序 而设 置。 基本思 想是 让一 些程 序段 和数据 公用 某些 存储 区, 其中只 存放 当前 要用 的程 序段或 数据 , 其 余暂 时不 用的 程序段 和数 据均 存放 在磁 盘等辅 助存 储器 中, 待需 要时动 态地 调入 存储 区中 运行 。 ⑤ 目标 程序优 化 。 提高 目 标程序的 质量,即 使编译 出的目标 程序运行 时间短 、占用存 储少。 ⑥ 不同语 言合用 。便于 用户利 用多 种程序 设计 语言 编写 应用 程序或 套用 已有 的不 同语 言书写 的程 序模 块 。 最 为 常见的 是高 级语 言和 汇编 语言 的合用 。 ⑦ 人 机联 系 。 便 于用户 在编 译和 运行 阶段 及时了 解系 统 内 部工 作情 况, 有效 地监 督 、 控 制系 统的 运行。 ?早期编 译程序的 实现方 案,是把 上述各项 功能完 全收纳在 编译程序 之中 。 后来的习 惯方法是 在操作 系统的 支持 下 , 配 置编 辑 程序 、 调 试程 序 、 连 接装 配程序 等实 用程 序或 工具 软件 , 目 的是 创造 一个 良 好的 开发环 境和 运行 环境, 便 于应用 软件 的编 程、 修 改 、 调试、 集成 以及报 表生 成、 界 面设计 等工 作。 但 编译 程序设 计者 设计 编译 方案 时, 仍 需精 心考 虑上 述各 项功能 , 较 好地 解决 目标 程序与 这些 实用 程序 或软 件工 具之间 的配 合与 衔接 等问 题。 ?工作过程 编译程序 必须分 析源程序 ,然后综 合成目 标程序。 为达到这 个 目的 ,编译程 序要在分析阶 段建立 一些 表格 ,改 造源 程序为 中间 语言 形式 ,以 便在分 析和 综合 时易 于引 用和加 工。 ?数据结构 分析和综 合时所 用的主要 数据结构 ,包括 符号表、 常数表和 中间语 言程序。 符号表由源程 序 中所用的 标识符连 同它们 的属性组 成,其中 属性包 括种类( 如变量、 数组、 结构、函 数、过程 等) 、类 型 (如整型 、实型、 字符串 、复型、 标号等 ) ,以 及目 标程序所 需的其他 信息。 常数表由 源程序中 用的常 数组成 , 其 中包 括常 数的 机内表 示以 及分 配给 它们 的目标 程序 地址 。 中 间语 言程序 是将 源程 序翻 译成 目标 程序前 引入 的一 种中 间形 式的程 序, 其表 示形 式的 选择取 决于 编译 程序 以后 如何使 用它 和如 何加 工它 。 常 用的中 间语 言形 式有 波兰 表示、 三元 组、 四元 组以 及间接 三元 组等 。 ?分析部 分 源 程序的 分析 是经过词 法分析、 语法分 析和语义 分析三个 步骤实 现的。词 法分析由 词法分 析程序 ( 又称 为扫 描程 序 ) 完 成, 其任 务是 识别 单 词 ( 即标 识符 、 常 数 、 保 留字 , 以 及各 种运 算符 、 标 5 ?点 符号等 ) 、造符 号表和 常数 表,以及 将源程序 换码为 编译程序 易于分析 和加工 的内部形 式。语法 分析程 序是编 译程 序的 核心 部分 , 其主 要任 务是 根据 语言 的语法 规则 , 检 查源 程序 是否合 乎语 法, 并分 解源 程序。 如 果不合乎 语法,则 输出语 法出错信 息;如果 合乎语 法,则分 解源程 序的语法 结构, 构造中 间语 言形 式的内 部程 序 。 语法 分析 的目的 是掌 握单 词是 怎样 组成语 句的 , 以及语 句又 是如何 组成 程序 的。 语义 分 析 程序进 一步 检查 合法 程序 结构的 语义 正确 性, 其目 的是保 证标 识符 和常 数的 正确使 用, 把必 要的 信息 收集 和保存 到符 号表 或中 间语 言程序 中, 并进 行相 应的 语义处 理。 ?综合部 分 综 合阶段 根据 符号表和 中间语言 程序产 生出目标 程序,其 主要工 作包括代 码优化、 存储分 配和代 码生 成 。 代码 优化 是通过 重排 和改 变程 序中 的某些 操作 , 以产生 更加 有效的 目标 程序 。 存 储分 配 是 为 程序和数 据分配 运 行时的 存储单元 。 代 码生成是产 生与 中间语 言程序 等价 的目标程 序,亦即 ,顺序 加工中 间语 言程 序, 利用 符号表 和常 数表 中的 信息 生成一 系列 的汇 编语 言或 机器语 言指 令。 结构 编 译过 程分 为 分析和 综合 两个 部分 , 并 进一步 划分 为词 法分 析 、 语法分 析 、 语义 分析 、 代码 优化、 存储 分配 和代 码生 成等六 个相 继的 逻辑 步骤 。这六 个步 骤只 表示 编译 程序各 部分 之间 的逻 辑联 系 , 而不是 时间 关系 。 编 译过 程既可 以按 照这 六个 逻辑 步骤顺 序地 执行 , 也 可以 按照平 行互 锁方 式去 执行 。 在 确定编 译程 序的 具体 结构 时, 常常 分若 干遍实 现 。 对于源 程序 或中 间语 言程 序, 从头 到尾 扫视一 次并 实现 所规定 的工 作称 作一 遍。 每一遍 可以 完成 一个 或相 连几个 逻辑 步骤 的工 作。 例如 , 可 以把 词法分 析作 为 第 一遍; 语法 分析 和语 义分 析作为 第二 遍; 代码 优化 和存储 分配 作为 第三 遍; 代码生 成作 为第 四遍 。反 之 , 为了适 应较 小的 存储 空间 或提高 目标 程序 质量 , 也 可以把 一个 逻辑 步骤 的工 作分为 几遍 去执 行。 例如 , 代 码优化 可划 分为 代码 优化 准备工 作和 实际 代码 优化 两遍进 行。 ?解释程 序 所 谓解 释程 序是 高级 语言翻 译程 序的 一种 ,它 将源语 言( 如 BASIC) 书 写 的源程 序作 为输 入, 解释 一句 后就提 交计 算机 执行 一句 ,并不 形成 目标 程序 。就 像外语 翻译 中的“ 口译 ” 一 样,说 一句 翻一 句, 不产 生全 文的翻 译文 本。 这种 工作 方式非 常适 合于 人通 过终 端设备 与计 算机 会话 ,如 在终端 上打 一条 命令 或语 句 , 解释程 序就 立即 将此 语句 解释成 一条 或几 条指 令并 提交硬 件立 即执 行且 将执 行结果 反映 到终 端 , 从 终 端把 命令打 入后 , 就能 立即 得 到计算 结果 。 这的 确是 很 方便的 , 很适 合于 一些 小 型机的 计算 问题 。 但解 释 程序 执行速 度很 慢 , 例如 源程 序中出 现循 环 , 则解 释程 序也重 复地 解释 并提 交执 行这一 组语 句 , 这就 造成 很 大 浪费。 ? 软件开发 是 根据 用户 要求 建造出 软件 系统 或者 系统 中的软 件部 分的 过程 , 是一 项包括 需求 捕捉 , 需求 分析 , 设计, 实现 和测 试的 系统 工程。 ?软件许可 : 软 件的 使用 者 必须在 同意 所使 用软 件的 许可证 的情 况下 能合 法的 使用软 件。 从另 一方 面来 讲, 某 种 特 定 软 件 的 许 可 条 款 也 不 能 够 与 法 律 相 抵 触 。 未 经 软 件 版 权 所 有 者 许 可 的 软 件 拷 贝 将 会 引 发 法 律 问 题,一 般来 讲, 购买 和使 用这些 盗版 软件 也是 违法 的。 ?软件危机 : ?软件危 机(Software Crisis) 是计算 机软 件在 它的 开发 和维护 过程 中所 遇到 的一 系列严 重问 题 。 概 括地 说 , 主 要包含 两方 面的 问题 : 如 何开发 软件 , 怎样满 足对 软件日 益增 长的 需求 ; 如 何维护 数量 不断 膨胀 的已 有 软 件。 ? 软件危机的主要表现 : ? 1. 对 软件 开发 成本 和进 度 的估计 常常 很不 准确 。 ? 2. 用 户对 “已 完成 的” 软 件系统 不满 意的 现象 经常 发生。 ?3. 软 件产 品的 质量 常常 靠 不住。 ? 4. 软 件常 常是 不可 维护 的 。 ?5. 软 件通 常没 有适 当的 文 档资料 。 ?6. 软 件成 本在 计算 机系 统 总成本 中所 占比 例逐 年上 升。 ?软件的特点 : ?1, ?软件工程 是 用现 代工 程的 原理、 技术 何方 法进 行软 件的开 发、 管理 、维 护 和 更新。 ? 6 ?软件工程包括三个要 素 : 方法、 工具 和过 程 。 ? 1. 软 件 工程 方法 为软件开发提 供了“如 何做”的技术。 它包括了 多方面的任务, 如项目计 划与估算、软 件系统 需求 分析 、数 据结 构、系 统总 体结 构的 设计 、算法 过程 的设 计、 编码 、测试 以及 维护 等。 ? 2. 软件开发 工具 为软件工程方 法提供了 自动的或半自动 的软件支 撑环境。 为软件 开发服务 的各种软件和 硬件。 ?软件开发工具根据在 不同 软件开发生命周期中 起到 的作用可以分为: ?软件建 模工 具, 用于 描述 系统的 需求 ,辅 助设 计。 ? 软件实 施工 具 , 用 于程 序 设计 , 编 码和 编译 , 包括 程序语 言开 发环 境和 集成 开发环 境 。 前 者主 要提 供 程序 语言的 预编 译, 编译, 链 接的工 具, 后者 包括 代码 编辑器 在内 的编 辑器 , 代 码生成 器, 运行 环境 和调 试器。 ? 模拟运 行平 台, 用于 模拟 系统的 实际 运行 环境 。 ? 软件测 试工 具, 用于 对系 统,子 系统 ,模 块或 单元 进行测 试的 工具 。 ? 软件开 发支 撑工 具, 主要 是软件 配置 管理 工具 。 ?3 . 软件工程的过程 是 指从 软件的 计划 、 需 求分 析、 软件设 计、 程序 编码 、 软 件测试 、 运 行和 维护 的过 程 。 ?软件生存周期 : 一 个 软件 从开始 计划 起, 到废 弃不 用止, 称为 软件 生存 周期 。 它包 括计 划、 开发 、 运 行三 个时期 ,每 一时 期又 可分 为若干 更小 的阶 段。 ?1、 计划时期 的 主要 任务 是 分析用 户要 求, 分析 新系 统的主 要目 标以 及开 发该 系统的 可行 性。 ?2、 开 发 时期 要完成设 计和实现 两大任务 。具体分 为需求 分析、概 要设计、 详细设 计、编码 、测试 。其中 编码和 测试 是软 件开 发期 的最后 两个 阶段 。 ?3、 运行时期 是 软件 生存 周 期的最 后一 个时 期, 软件 人员在 这一 时期 的工 作, 主要是 做好 软件 维护 。 ?软件开发环境 是 指在 计算 机的基 本软 件的 基础 上 , 为 支持软 件的 开发 而提 供的 一组工 具软 件系 统 。 它 包 括 : ?(1) 软件开 发环 境是 一组 相 关工具 的集 合。 ? (2) 这些相 关工 具按 一定 的 开发方 法或 一定 开发 处理 模型组 织起 来的 。 ? (3) 这些相 关工 具支 持整 个 软件生 存期 的各 阶段 或部 分阶段 。 ? 结构化分析方法 给 出 一组 帮助系 统分 析人 员产 生功 能规约 的原 理与 技术 。它 一般利 用图 形表 达用 户需 求, 使用的 手段 主要 有 数 据流 图、数 据字 典、 结构 化语 言、判 定表 以及 判定 树等 。 ?结构化分析的步骤 如 下 : ①分析 当前 的情 况 , 做 出 反映当 前物 理模 型 的 DFD ; ② 推导 出等 价的 逻辑 模 型的 DFD ; ③ 设计 新的 逻辑 系 统, 生成 数据 字典 和基 元 描述 ; ④ 建立 人机 接口 , 提出可 供选 择的 目标 系统 物理 模型 的 DFD ; ⑤ 确定 各种 方案的 成本 和风 险等 级, 据此对 各种 方案 进行 分析 ; ⑥选 择一 种方 案; ⑦ 建 立完 整的需 求规 约。 ?结构化设计的步骤 如 下 : ①评审 和细 化数 据流 图; ②确定 数据 流图 的类 型; ③把数 据流 图映 射到 软件 模块 结构 , 设 计出 模块 结构 的 上层 ; ④ 基于 数据 流图 逐 步分解 高层 模块 , 设计 中 下 层模 块 ; ⑤ 对模 块结 构 进行 优化, 得到 更为 合理 的软 件结构 ;⑥ 描述 模块 接口 。 ?结构化设计方法的设 计原 则 ? 1、 使 每个 模块 执行 一个 功 能( 坚持 功能 性内 聚) ?2、 每 个模 块用 过程 语句( 或函数 方式 等) 调 用其 他模 块 ?3、 模 块间 传送 的参 数作 数 据用 ?4、 模 块间 共用 的信 息( 如 参数等) 尽量 少 ?软件测试概述 ? 软件测 试是 软件 开发 过程 的重要 组成 部分 , 是用 来 确认一 个程 序的 品质 或性 能是否 符合 开发 之前 所提 出的 一些要 求。 ?软件测试的目的 , ?第一 是确 认软 件的 质量 , 其一方 面是 确认 软件 做了 你所期 望的 事情 (Do the right thing ) ,另 一方 面是 确 认 软件以 正确 的方 式来 做了 这个事 件(Do it right)。 ?第二 是提 供信 息, 比如 提 供给开 发人 员或 程序 经理 的反馈 信息 ,为 风险 评估 所准备 的信 息 。 ?第三 软件 测试 不仅 是在 测 试软件 产品 的本 身, 而且 还包括 软件 开发 的过 程。 如果一 个软 件产 品开 发完 成之 后发现 了很 多问 题, 这说 明此软 件开 发过 程很 可能 是有缺 陷的 。 ?7 ?因此软 件测 试的 第三 个目 的是保 证整 个软 件开 发过 程是高 质量 的。 ? 软件质量 是 由几 个方 面来 衡量的 : ?1、在 正确 的时 间用 正确 的 的方法 把一 个工 作做 正确 (Doing the right things right at the right time.)。 ?2 、符合 一些应用 标准的 要求 ,比如不 同国家的 用户不 同的操作 习惯和要 求,项 目工程中 的可维护 性、可 测试性 等要 求。 ?3 、 质 量 本 身 就 是 软 件 达 到 了 最 开 始 所 设 定 的 要 求 , 而 代 码 的 优 美 或 精 巧 的 技 巧 并 不 代 表 软 件 的 高 质 量 (Quality is defined as conformance to requirements, not as “goodness ” or “elegance ”.)。 ?4、质 量也 代表 着它 符合 客 户的需 要(Quality also means “meet customer needs ”.) 。 作为 软件 测试 这个 行 业, 最重 要的 一件 事就 是 从客户 的需 求出 发 , 从 客 户的角 度去 看产 品 , 客 户 会怎么 去使 用这 个产 品 , 使用 过程中 会遇 到什 么样 的问 题。只 有这 些问 题都 解决 了,软 件产 品的 质量 才可 以说是 上去 了。 ? 测试人员在软件开发 过程 中的任务: ? 1、寻 找 Bug ; ? 2、避 免软 件开 发过 程中 的 缺陷; ? 3、衡 量软 件的 品质 ; ? 4、关 注用 户的 需求 。 ? 常用的软件测试方法 ? 1. 黑盒测试 ? 黑盒测 试顾 名思 义就 是将 被测系 统看 成一 个黑 盒, 从外界 取得 输入 , 然 后再 输出。 整个 测试 基于 需求 文档, 看是否 能满 足需 求文 档中 的所有 要求 。 黑 盒 测试 要 求测试 者在 测试 时不 能使 用与被 测系 统内 部结 构相 关的 知识或 经验 ,它 适用 于对 系统的 功能 进行 测试 。 ?

? 汽车智库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
0条评论

还可以输入200字符

暂无评论,赶快抢占沙发吧。

关于本文
本文标题:软件工程基础.doc
链接地址:http://www.autoekb.com/p-1528.html
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服客服 - 联系我们

copyright@ 2008-2018 mywenku网站版权所有
经营许可证编号:京ICP备12026657号-3?

收起
展开