软件工程考试大纲.pdf_第1页
软件工程考试大纲.pdf_第2页
软件工程考试大纲.pdf_第3页
软件工程考试大纲.pdf_第4页
软件工程考试大纲.pdf_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第一章第一章 软件工程概述软件工程概述 一 要求掌握的主要概念一 要求掌握的主要概念 1 软件 软件是计算机系统中与硬件相互依存的另一部分 它包括程序 数据 相关文档的完整集合以及完善的售后服务 软件 程序 数据 文档 服务 2 软件的特点 1 软件是一种逻辑实体 而不是具体的物理实体 2 软件的生产于硬件不同 3 在软件的运行和使用期间 没有硬件那样的机械磨损 老化问题 4 软件的开发和运行常常受到计算机系统的限制 对计算机系统有着不同程度的依赖 5 软件的开发至今尚未完全摆脱手工业的开发方法 6 软件是复杂的 人类能够创造的最复杂的产物是计算机软件 7 软件 成本相当昂贵 8 相当多的软件工作涉及到社会因素 3 软件的分类 1 按软件的功能划分 系统软件 2 支撑软件 3 应用软件 2 按软件规模分 微型 小型 中型 大 型 甚大型 极大型 3 按软件工作方式划分 实时处理软件 交互式软件 分时软件 批处理软件 4 按软件服务对象的 范围划分 项目软件 产品软件 5 按软件使用的频度划分 仅供一次使用的软件 频繁使用的软件 6 按软件的失效 高可靠性软件 一般可靠性软件 4 软件危机 软件危机是计算机软件在它的开发和维护过程中所遇到的一系列严重问题 5 软件生存周期 是指软件产品从考虑其概念开始到该软件产品不再能使用为止的整个时期 6 软件工程 采用工程的概念 原理 技术和方法来计划 开发与维护软件 把经过时间考验而证明正确的管理技术和当前 能够得到的最好的技术方法结合起来 以较经济的手段获得能在实际机器上运行的可靠软件的一系列方法 工程方法 管理 技术 技术方法 二 应理解和掌握的主要内容二 应理解和掌握的主要内容 1 软件具有特点 同上 2 软件工程过程的基本活动 软件规格说明 规定软件的功能及其运行的限制 软件开发 产生满足规格说明的软 件 软件确认 确认软件能够完成客户提出的要求 软件改进 为满足客户的变更要求 软件须在使用的过程中改进 3 软件生存周期 阶段阶段关键问题关键问题结束标准结束标准 系统定义系统定义问题是什么 问题是什么 关于规模和目标的报告书关于规模和目标的报告书 可行性研究可行性研究有可行的解吗 有可行的解吗 系统的高级逻辑模型 数据流图系统的高级逻辑模型 数据流图 成本 效益分析成本 效益分析 需求分析需求分析系统必须做什么 系统必须做什么 系统的逻辑模型 数据流图 数据字典 算法描述系统的逻辑模型 数据流图 数据字典 算法描述 总体设计总体设计概括地说 应该如何解决这个问题 概括地说 应该如何解决这个问题 可能的解法 系统流程图 成本 效益分析 推荐的系统结构 层次图或结构图可能的解法 系统流程图 成本 效益分析 推荐的系统结构 层次图或结构图 详细设计详细设计怎样具体地实现这个系统 怎样具体地实现这个系统 编码规格说明 编码规格说明 HIPOHIPO 图或图或 PDLPDL 编码和单元测试编码和单元测试正确的程序模块正确的程序模块源程序清单 单元测试方案和结果源程序清单 单元测试方案和结果 综合测试综合测试符号要求的软件符号要求的软件综合测试方案和结果 完整一致的软件配置综合测试方案和结果 完整一致的软件配置 维护维护持久地满足用户需求的软件持久地满足用户需求的软件完整准确的维护记录完整准确的维护记录 4 软件生存周期模型 5 软件工程项目要达到的基本目标 付出较低的成本 达到要求的软件功能 取得较好的软件性能 开发的 软件易于移植 需要较低的维护费用 能按时完成开发工作 及时交付使用 第二章第二章 系统分析系统分析 一 要求掌握的主要概念一 要求掌握的主要概念 系统 计算机系统工程 是一个问题的求解活动 目的是揭示 分析所期望的功能 并把它们分配到各个系统元素中去 是一个问题的求解活动 目的是揭示 分析所期望的功能 并把它们分配到各个系统元素中去 系统需求 可行性分析 是进行一次大大压缩简化了的系统分析和设计过程 是在较高层次上以较抽象方式进行的系统分析和设计过程 成本 效益分析 二 应理解和掌握的主要内容二 应理解和掌握的主要内容 1 计算机系统的系统元素 将软件 硬件 人 数据库 过程和文档等称之为生成元素 2 计算机系统工程 同上 3 可行性分析研究的四个组成部分 技术可行性技术可行性 对待开发的系统进行功能 性能和限制条件的分析 确定在现有的资 源条件下 技术风险有多大 系统能否实现 经济可行性 经济可行性 对于大多数系统 一般均需衡量经济上是否合算 应考虑一 个 底线 因此 需对系统的开发成本的进行估算及可能取得效益的评估 确定待开发系统是否值得投资开发 法律可法律可 行性行性 确认待开发的系统可能会涉及的任何侵犯 妨碍 责任 合同及其它一些技术人员常常不了解的陷阱等问题 操操 作可行性作可行性系统的操作方式在这个用户组织内行得通吗 对系统开发的不同方案进行比较评估 成本和时间的限制 会给方案 的选择带来局限性 对于一些合理的方案都应加以考虑 4 可行性分析研究报告的形式 1 1 1 1 项目背景 项目背景 问题描述 实现环境 限制条件 2 2 管理概要与劝告 管理概要与劝告 重要的研究结果 说 明 劝告 影响 3 3 候选方案候选方案 候选系统的配置 选择最终方案的准则 4 4 系统描述系统描述 简略的范围描述 分配元素的可行性 5 5 5 5 经济可行性 成本经济可行性 成本 效益分析效益分析 经费概算 预期的经济效益 经费概算 预期的经济效益 6 6 技术可行性 技术风险评价技术可行性 技术风险评价 技术实力 已有工作 基础 设备条件 7 7 法律可行性法律可行性 系统开发可能导致的侵权系统开发可能导致的侵权 违法违法 责任责任 8 8 用户使用可行性用户使用可行性 用用户单位的行政管理 工作 制度 使用人员的素质 9 9 其它与项目有关的问题 其它与项目有关的问题 其它方案的介绍 未来可能的变化 10 10 结论意见 结论意见 可行 不可行 5 成本 效益估算模型 货币的时间价值货币的时间价值 投资回收期投资回收期 纯收入纯收入 投资回收率投资回收率 6 系统分析的评审 系统定义评审系统定义评审 是评价是评价 系统规格说明系统规格说明 中所做的规定的正确性中所做的规定的正确性 保证 正确地定义了项目范围 适 当地定义了功能 性能和接口 环境的分析和开发风险证明了系统的可行性 开发人员与用户对系统的目标达成共识 系统定义评审分为两步 1 从管理角度审查2 从技术角度审查 第三章第三章 软件需求分析软件需求分析 一 要求掌握的主要概念一 要求掌握的主要概念 当前系统 目标系统 物理模型 逻辑模型 功能性需求 包括包括 1 1 功能需求功能需求 2 2 性能需求性能需求 3 3 环境需求环境需求 4 4 可靠性需求可靠性需求5 5 5 5 安全保密要求安全保密要求 6 6 用户界面需求用户界面需求 7 7 资源资源 使用需求使用需求 8 8 软件成本消耗与开发进度需求 软件成本消耗与开发进度需求 9 9 预先估计系统可能达到的目标 预先估计系统可能达到的目标 非功能性需求 非功能性需求即为软件的非功能性需求即为软件的 约束约束 信息流 问题的分解 数据域 软件复用 对建立软件目标系统而言 复用就是利用早先开发的对建立新系统有用的信息来生产新系统 它是一项活动 而 不是一个对象 分为合成技术合成技术和生成技术生成技术两类 合成技术 在合成技术中 构件在合成技术中 构件 Building Building Blocks Blocks 是复用的基石 是复用的基石 生成技术 利用可复用的模式利用可复用的模式 Patterns Patterns 通过生成程序产生一个新的程序或程序段通过生成程序产生一个新的程序或程序段 产生的程序可以看成是模式的实例产生的程序可以看成是模式的实例 数据流 特定数据的流动方向 特定数据的流动方向 数据字典 是关于数据的信息的集合 也就是对数据流图中包含的所有元素的定义的集合 是关于数据的信息的集合 也就是对数据流图中包含的所有元素的定义的集合 原子加工 随着自顶向下逐步细化 功能越来越具体 加工逻辑也越来越精细 到最底一层 加工逻辑详细到可以实现的随着自顶向下逐步细化 功能越来越具体 加工逻辑也越来越精细 到最底一层 加工逻辑详细到可以实现的 程度 因此称为程度 因此称为 原子加工原子加工 或或 基本加工基本加工 E R 方法 数据规范化 二 应理解和掌握的主要内容二 应理解和掌握的主要内容 1 需求分析应完成的任务 正确地确定对系统综合要求正确地确定对系统综合要求 充分理解和表达用户的需求充分理解和表达用户的需求 通过结构分析的方法对系统进行通过结构分析的方法对系统进行 分解 以确定软件系统的主要成分或软件系统的构成 分解 以确定软件系统的主要成分或软件系统的构成 对以上已进行的两项工作进行描述 以形成需求文档 也就是编对以上已进行的两项工作进行描述 以形成需求文档 也就是编 制制 需求规格说明书需求规格说明书 编写用户手册概要 迫使分析员从用户的角度看待软件 及早考虑用户界面工作 此时编写的编写用户手册概要 迫使分析员从用户的角度看待软件 及早考虑用户界面工作 此时编写的 重点在系统输入和输出重点在系统输入和输出 编写验收计划编写验收计划 作为今后验收测试的依据作为今后验收测试的依据 修正可行性研究阶段所制订的软件项目开发计划修正可行性研究阶段所制订的软件项目开发计划 2 需求分析的过程 1 1 1 1 问题识别问题识别首先系统分析人员要确定对目标系统的综合要求 即软件的需求 2 2 2 2 分析与综合分析与综合问题分 析和方案的综合是需求分析的第二方面的工作 剔除其不合理的部分 增加其需要部分 3 3 3 3 编制需求分析阶段的文档编制需求分析阶段的文档已经 确定下来的需求应当得到清晰准确的描述 通常我们把描述需求的文档叫做软件需求说明书 4 4 4 4 需求分析评审需求分析评审作为需求分 析阶段工作的复查手段 应该对功能的正确性 文档的一致性 完备性 准确性和清晰性 以及其它需求给予评价 3 需求分析的通信途径 4 编制需求分析的文档 概述概述 从系统的角度描述软件的目标和任务 数据描述数据描述 数据流图 数据字典 系统接 口说明 内部接口说明 功能描述功能描述 功能 处理 设计的限制 性能描述性能描述 性能指标 测试种类 预期的软件响 应性能 其它 参考文献目录参考文献目录 附录附录 5 需求分析的评审 确保对用户需求达到共同的理解与认识 并在整个开发小组接受说明之前将问题都弄清楚 6 需求分析工作的流程图 7 需求分析的方法 8 原型化方法及快速原型开发模型 原型是软件一个早期可运行的版本 它反映最终系统的部分重要特性 系统原型是软 件系统的初始版本 它可用来展示一些概念 给出设计选择 发现问题和可能的解决方案 其目的就是为了有效的控制开发 成本 使开发人员可以较早地在原型系统上验证自己的设计 快速原型技术强调的是交付的速度 而非系统的性能 可维护 性和可靠性 目前 有三种较实用的快速原型技术 1 动态高级语言开发 2 数据库编程 3 组件和应用集成 9 软件复用的范围及采用的技术 范围 1 复用数据 指程序不做任何修改 就可以从一个环境移到另一个环境中使用 2 复 用模块 不需要逐行编码就可以连接到一个程序中去 3 复用结构 有效的复用应有一个结构上的考虑 4 复用设计 对于 同一个设计 可以采用不同的实现方法 则这样的设计就是可复用的 5 复用规格说明 在基本需求不改变 或某一新问 题与过去的某一软件在某个抽象层次上属于同一类的情况下 原规格说明仍可使用或参照使用 合成技术合成技术和生成技术生成技术两类 10 结构化的分析方法 结构化分析结构化分析是面向数据流进行分析的方法 适用与数据处理类型软件的需求分析 利用抽象模型的 概念 按照软件内部数据传递 变换的关系 自顶向下 逐步分解 直到找到满足功能要求的所有可实现的软件为止 使用 建 立 原 型 目 标开 发 原 型定 义 原 型 功 能评 估 原 型 原 型 规 划框 架 定 义可 执 行 原 型评 估 报 告 以下几个工具 数据流图 数据字典 结构化语言 判定树和判定表等 11 加工逻辑说明的方法 在写基本加工逻辑的说明时 应满足如下要求 对数据流图的每一个基本加工 必须有一个 加工逻辑说明 加工逻辑说明必须描述基本加工如何把输入数据流变换为输出数据流的加工规则 加工逻辑说明必须 描述实现加工的策略而不是实现加工的细节 目前用于写加工逻辑说明的工具有结构化语言 判定表和判定树 12 如何进行数据分析 13 建立实体联系图以分析数据 14 构造符合规范的数据模型 第四章第四章软件设计软件设计 一 要求掌握的主要概念一 要求掌握的主要概念 总体设计 即概要设计 将需求转换为数据结构和软件的体系结构 将需求转换为数据结构和软件的体系结构 详细设计 主要工作 确定软件各个组成部分内的算法及各部分的内部数据组织 确定软件各个组成部分内的算法及各部分的内部数据组织 选定某种过程的表达形式来描述各选定某种过程的表达形式来描述各 种算法 种算法 进行详细设计评审 进行详细设计评审 自顶向下 自顶向下设计是一种分解问题的技术 与所要用的控制结构无关 即它既可用结构化的方法 也可用非结构化自顶向下设计是一种分解问题的技术 与所要用的控制结构无关 即它既可用结构化的方法 也可用非结构化 的方法予以实现 的方法予以实现 逐步求精 逐步细化是用于结构化程序的连续分解 它使程序的较低层的结构为顺序 分支 重复结构逐步细化是用于结构化程序的连续分解 它使程序的较低层的结构为顺序 分支 重复结构 的组合 的组合 SC 图 系统结构图 SC HIPO 图 模块化 按照一定原则把程序划分成若干个模块 使每个模块完成一个子功能按照一定原则把程序划分成若干个模块 使每个模块完成一个子功能 抽象化 对事物共同的本质特性进行抽取和概括 忽略次要因素 对事物共同的本质特性进行抽取和概括 忽略次要因素 信息隐藏 在设计和确定模块时在设计和确定模块时 使得一个模块内包含的信息使得一个模块内包含的信息 过程或数据过程或数据 对于不需要这些信息的模块来说是不能访问对于不需要这些信息的模块来说是不能访问 模块 通常把用一个名字就可以调用的一段程序称为通常把用一个名字就可以调用的一段程序称为 模块模块 模块的独立性 模块的独立性是指软件系统中的每个模块只涉及软件要求的具体子功能 而与软件中其它模块的接口是简模块的独立性是指软件系统中的每个模块只涉及软件要求的具体子功能 而与软件中其它模块的接口是简 单的 若一个模块只有单一的功能 且与其它的模块没有太多的联系 则称此模块为独立的 单的 若一个模块只有单一的功能 且与其它的模块没有太多的联系 则称此模块为独立的 耦合 指一个模块与其它模块之间的联系 又称为块间联系 是模块之间相对独立性的度量 指一个模块与其它模块之间的联系 又称为块间联系 是模块之间相对独立性的度量 内聚 指模块内部各个成分之间的关系 又称为块内联系 是模块功能相对强度的度量 指模块内部各个成分之间的关系 又称为块内联系 是模块功能相对强度的度量 SD 结构化设计方法 StructuredStructuredStructuredStructured Design Design Design Design SDSDSDSD 结构化设计方法是基于模块化 自顶向下细化 结构化程序设计等程序设 计技术基础上发展起来的 系统结构图 SC 图 4 种模块 变换分析 变换分析是一系列设计步骤的总称 经过这些步骤把具有变换流特点的数据流图按预先确定的模式映射成软件变换分析是一系列设计步骤的总称 经过这些步骤把具有变换流特点的数据流图按预先确定的模式映射成软件 结构 结构 事务分析 由事务型数据流图映射为软件结构的设计由事务型数据流图映射为软件结构的设计 首先应设计一个顶层模块或叫总控模块首先应设计一个顶层模块或叫总控模块 它的功能是接收事务数据它的功能是接收事务数据 另一个是根据事务类型调度相应的处理模块 以实现处理该事务的动作序列 另一个是根据事务类型调度相应的处理模块 以实现处理该事务的动作序列 由事务型数据流图映射的软件结构包括一个由事务型数据流图映射的软件结构包括一个 接收分支和一个发送分支 接收分支和一个发送分支 程序设计的基本结构 物理输入 出物理输入 出 直接来自 指向 外部数据源 终点 的输入 输出 数据流 直接来自 指向 外部数据源 终点 的输入 输出 数据流 逻辑输入 出逻辑输入 出 距离物理输入 出 端 同一条路径上的 最远 且仍被看作是输入 出 的那个数据流 距离物理输入 出 端 同一条路径上的 最远 且仍被看作是输入 出 的那个数据流 程序流程图 N S 图 Nassi 和 Shneiderman 提出了一种符合结构化程序设计原则的图形描述工具 叫做盒图 也叫做 N S 图 PAD 图 PAD 是 ProblemAnalysis Diagram 的缩写 它是日本日立公司提出 由程序流程图演化来的 用结构化程序设计思 想表现程序逻辑结构的图形工具 PDL PDL 是一种用于描述功能模块的算法设计和加工细节的语言 称为设计程序用语言 它是一种伪码 判定树 判定表 书上有 以上几种图的画法要看书 二 应理解和掌握的主要内容二 应理解和掌握的主要内容 1 软件设计的任务和目标 软件设计的任务就是把分析阶段产生的软件需求转换成用适当手段表示的软件设计文档软件设计的任务就是把分析阶段产生的软件需求转换成用适当手段表示的软件设计文档 即把即把 软件的需求翻译成软件的描述性过程 软件的需求翻译成软件的描述性过程 2 概要设计需完成的工作内容 制定规范制定规范 软件系统结构的总体设计软件系统结构的总体设计 处理方式设计处理方式设计 数据结构设计数据结构设计 可靠性可靠性 设计设计 编写概要设计文档编写概要设计文档 概要设计评审概要设计评审 3 程序结构图的画法 4 模块化的方法 5 模 块 独 立 性 的 度 量 6 典型的系统结构图及相应的分析方法 7 数据设计和文件设计的方法和原则 书 Page109 8 详细设计的工具 程序流程图 盒图 程序流程图 盒图 N SN S 图图 PADPAD 图 过程设计语言 图 过程设计语言 PDLPDL 第五章第五章JacksonJackson 系统开发方法 系统开发方法 JSDJSD 看书看书 一 要求掌握的主要概念一 要求掌握的主要概念 Jackson 数据结构图 Jackson 程序结构图 Jackson 伪代码 二 应理解和掌握的主要内容二 应理解和掌握的主要内容 1 面向数据结构的分析方法 2 画出 Jackson 数据结构图 3 画出 Jackson 程序结构图 4 根据 Jackson 程序结构图写出 Jackson 伪代码 第六章第六章程序编码程序编码 一 要求掌握的主要概念一 要求掌握的主要概念 结构化程序设计 将程序功能合理分块 使每个模块或一组密切相关模块的程序体积大小与每页的容量想匹配 可减少页将程序功能合理分块 使每个模块或一组密切相关模块的程序体积大小与每页的容量想匹配 可减少页 面调度 减少内外存交换 提高存储效率 面调度 减少内外存交换 提高存储效率 序言性注释 通常放在每个程序模块的开头部分 它应当给出程序的整体说明 对于理解程序具有引导作用 它通常需描通常放在每个程序模块的开头部分 它应当给出程序的整体说明 对于理解程序具有引导作用 它通常需描 述 述 程序标题程序标题 接口说明接口说明 有关数据描述有关数据描述 模块位置模块位置 开发简历开发简历 功能性注释 嵌在源程序体中 用以描述其后的语句或程序段是在做什么工作 也就是说解释下面要做什么 执行下面语嵌在源程序体中 用以描述其后的语句或程序段是在做什么工作 也就是说解释下面要做什么 执行下面语 句会怎么样句会怎么样 用于描述一段程序用于描述一段程序 而不是每一个语句而不是每一个语句 用缩进或空行或其它颜色用缩进或空行或其它颜色 使程序与注释容易区别使程序与注释容易区别 注释要正确注释要正确 源程序文档化 选择编码的目的是产生程序选择编码的目的是产生程序 其余的阶段则产生文档其余的阶段则产生文档 但为了提高程序的可维护性但为了提高程序的可维护性 源代码也需要实源代码也需要实 现现 文档化文档化 源程序文档化包括选择标识符 变量和标号 的名字 安排注释以及程序的视觉组织等 源程序文档化包括选择标识符 变量和标号 的名字 安排注释以及程序的视觉组织等 时空效率 环域数 二 应理解和掌握的主要内容二 应理解和掌握的主要内容 1 结构化程序设计原则 1 1 使用语言中的顺序使用语言中的顺序 选择选择 重复等有限的基本控制结构表示程序逻辑重复等有限的基本控制结构表示程序逻辑 2 2 选用的控制结构只准选用的控制结构只准 许有一个出口和一个入口 许有一个出口和一个入口 3 3 程序语言组成容易识别的块 每块只有一个入口和一个出口 程序语言组成容易识别的块 每块只有一个入口和一个出口 4 4 复杂结构应该用基本控制结复杂结构应该用基本控制结 A C 图8 4 改 进 的Jackson图 a 顺 序 结 构 B C D中任何一个都不能是选择出现或重复出现的数据 元 素 即 不能是右上角有小圆圈或星号标记的元素 b 选 择 结 构 右 面括号中的数字i是分支条件的编号 c 可 选 结 构 或 者 是 元 素 或 者 不 出 现 可选结构是选择结构的一种常见的特殊形式 d 重 复 结 构 循 环 结束条件的编号为i D A C B D B a b S i A B c S i A B d I i 构进行组合嵌套来实现 构进行组合嵌套来实现 5 5 语言中没有的控制结构 可用一段等价的程序段模拟 但要求该程序段载整个系统中应该前后语言中没有的控制结构 可用一段等价的程序段模拟 但要求该程序段载整个系统中应该前后 一致 一致 6 6 严格控制严格控制 GOTOGOTO 语句 语句 2 自顶向下 逐步求精的程序设计方法 3 数据说明的原则 1 1 数据说明的次序应当规范化数据说明的次序应当规范化 使数据属性容易查找使数据属性容易查找 也有利于测试也有利于测试 排错和维护排错和维护 2 2 2 2 当多个变量当多个变量 名用一个语句说明时 应当对这些变量按字母的顺序排列 名用一个语句说明时 应当对这些变量按字母的顺序排列 3 3 如果设计了一个复杂数据结构 应使用注释说明在程序实现如果设计了一个复杂数据结构 应使用注释说明在程序实现 时这个数据结构的特点 时这个数据结构的特点 4 程序设计应具有的风格 所谓程序设计风格是指书写源程序的习惯所谓程序设计风格是指书写源程序的习惯 程序代码的逻辑结构与习惯的编程技术程序代码的逻辑结构与习惯的编程技术 从软件工从软件工 程要求出发 程序设计风格应包括以下要素 程要求出发 程序设计风格应包括以下要素 源程序文档化源程序文档化 数据说明数据说明 语句构造语句构造 输入输出输入输出 5 项目实施中程序设计语言的选择方法 当衡量某一语言是否可选作编码语言时当衡量某一语言是否可选作编码语言时 通常要考虑的因素有通常要考虑的因素有 1 1 项目的应用范项目的应用范 围围 2 2 算法和计算复杂性算法和计算复杂性 3 3 3 3 软件执行的环境软件执行的环境 4 4 性能上考虑与实现的条件性能上考虑与实现的条件 5 5 数据结构的复杂性数据结构的复杂性 6 6 软件开发人员的知识水平和软件开发人员的知识水平和 心理因素心理因素 6 程序复杂性的度量 7 McCabe 环路复杂度的度量 8 Halstead 的软件科学书 page196 202 9 软件复杂性的综合度量 第七章第七章软件测试软件测试 一 要求掌握的主要概念一 要求掌握的主要概念 测试 就是根据软件开发各阶段的规格说明和程序的内部结构而精心设计的一批测试用例就是根据软件开发各阶段的规格说明和程序的内部结构而精心设计的一批测试用例 即输入数据及预期的输出结果即输入数据及预期的输出结果 并利用这些测试用例去运行程序 以发现程序错误的过程 测试是程序的执行过程 目的在于发现错误 并利用这些测试用例去运行程序 以发现程序错误的过程 测试是程序的执行过程 目的在于发现错误 验证 VerificationVerification 试图证明在软件生存各个阶段及阶段间的逻辑协调性 完备性和正确性 试图证明在软件生存各个阶段及阶段间的逻辑协调性 完备性和正确性 确认 ValidationValidation 是一系列的活动和过程 其目的是想证实在一个给定的外部环境中软件逻辑的正确性 是一系列的活动和过程 其目的是想证实在一个给定的外部环境中软件逻辑的正确性 软件配置 是指测试对象 它包括软件需求规格说明 软件设计说明 和被测试的源程序清单 是指测试对象 它包括软件需求规格说明 软件设计说明 和被测试的源程序清单 测试配置 包括测试计划 测试用例 测试驱动程序 实际上 在整个软件工程中 测试配置只是软件配置的一个子集 包括测试计划 测试用例 测试驱动程序 实际上 在整个软件工程中 测试配置只是软件配置的一个子集 可靠性 黑盒测试 已知产品的功能设计规则 可进行测试证明每个实现了的功能是否符合要求 已知产品的功能设计规则 可进行测试证明每个实现了的功能是否符合要求 白盒测试 已知产品的内部工作过程 可以通过测试证明每个内部的操作是否符合设计规格说明要求 所有内部成分是否已知产品的内部工作过程 可以通过测试证明每个内部的操作是否符合设计规格说明要求 所有内部成分是否 已经检查 已经检查 逻辑覆盖 是对一系列测试过程的总称 这组测试过程逐渐进行越来越完整的通路测试 是对一系列测试过程的总称 这组测试过程逐渐进行越来越完整的通路测试 路径覆盖 在程序控制流图的基础上 通过分析控制构造的环境复杂性 导出基本可执行路径集合 从而设计测试用例的在程序控制流图的基础上 通过分析控制构造的环境复杂性 导出基本可执行路径集合 从而设计测试用例的 方法 方法 设计出的测试用例要保证在测试中程序的每一个可执行语句至少执行一次 设计出的测试用例要保证在测试中程序的每一个可执行语句至少执行一次 测试用例 即输入数据及预期的输出结果即输入数据及预期的输出结果 等价类 把所有可能输入的数据划成若干等价部分把所有可能输入的数据划成若干等价部分 每类中的一个典型值在测试中的作用与这类中所有其他值的作用相同每类中的一个典型值在测试中的作用与这类中所有其他值的作用相同 边界值 选取正好等于 刚刚大于 或刚刚小于边界的值作为测试数据选取正好等于 刚刚大于 或刚刚小于边界的值作为测试数据 单元测试 单元测试集中检验软件设计最小单元单元测试集中检验软件设计最小单元 模块模块 单元测试可以使用白盒测试法单元测试可以使用白盒测试法 对多个模块的测试可并行地进行对多个模块的测试可并行地进行 驱动模块 也就是一个也就是一个 主程序主程序 它接收测试数据 把这些数据传送给被测试的模块 并且印出有关的结果 它接收测试数据 把这些数据传送给被测试的模块 并且印出有关的结果 庄模块 也可以称为也可以称为 虚拟子程序虚拟子程序 它使用被它代替的模块的接口 可能做最少量的数据操作 印出对入口的检验或操 它使用被它代替的模块的接口 可能做最少量的数据操作 印出对入口的检验或操 作结果 并且把控制归还给调用它的模块 作结果 并且把控制归还给调用它的模块 集成测试 又叫组装测试 又叫组装测试 在单元测试的基础上 我们通常需要对由经过单元测试的模块组装起来形成的一个子系统进行在单元测试的基础上 我们通常需要对由经过单元测试的模块组装起来形成的一个子系统进行 的测试 这样的测试被称为子系统测试 子系统测试时重点测试模块的接口 而对由经过测试的子系统测试组装成的系统的测试 这样的测试被称为子系统测试 子系统测试时重点测试模块的接口 而对由经过测试的子系统测试组装成的系统 进行的测试则称为系统测试 在系统测试中发现的往往是软件设计中的错误 也可能发现需求说明中的错误 我们不难看进行的测试则称为系统测试 在系统测试中发现的往往是软件设计中的错误 也可能发现需求说明中的错误 我们不难看 出 不论是子系统测试还是系统测试都兼有检测和组装的含义 这样的测试通常就称为集成测试 出 不论是子系统测试还是系统测试都兼有检测和组装的含义 这样的测试通常就称为集成测试 确认测试 测试 测试是由一个用户在开发环境下 进行的测试 也可以是开发机构内部的用户在模拟实际操作环境下进行的测测试是由一个用户在开发环境下 进行的测试 也可以是开发机构内部的用户在模拟实际操作环境下进行的测 试 试 测试的目的是评价软件产品的测试的目的是评价软件产品的 FLURPSFLURPS 即功能 局域化 可使用性 性能和支持 即功能 局域化 可使用性 性能和支持 尤其注重产品的界面和特色 尤其注重产品的界面和特色 测试 测试是由软件的多个用户在一个或多个用户的实际使用环境下进行的测试 这些用户是与公司签定了支持产品预测试是由软件的多个用户在一个或多个用户的实际使用环境下进行的测试 这些用户是与公司签定了支持产品预 发行合同的外部用户 他们要求使用该产品 并愿意返回有关错位错误信息给开发者 发行合同的外部用户 他们要求使用该产品 并愿意返回有关错位错误信息给开发者 回归测试 指在软件修改后再次运行以前为查找错误曾用过的测试用例 指在软件修改后再次运行以前为查找错误曾用过的测试用例 桌前检查 走查 调试 调试过程由两个步骤组成 它从表示程序中存在错误的某些迹象开始 首先确定错误的准确位置 也就是找出是哪调试过程由两个步骤组成 它从表示程序中存在错误的某些迹象开始 首先确定错误的准确位置 也就是找出是哪 个模块或哪些接口引起的错误 然后 仔细研究这段代码以确定问题的原因 并设法改正错误 个模块或哪些接口引起的错误 然后 仔细研究这段代码以确定问题的原因 并设法改正错误 二 应理解和掌握的主要内容二 应理解和掌握的主要内容 1 测试的目的和原则 从用户的角度出发从用户的角度出发 普遍希望通过软件测试暴露软件中隐藏的错误和缺陷普遍希望通过软件测试暴露软件中隐藏的错误和缺陷 以考虑是否可以接受该以考虑是否可以接受该 产品 而从软件开发者的角度出发 则希望测试成为表明软件产品中不存在错误的过程 验证软件已正确地实现了用户的产品 而从软件开发者的角度出发 则希望测试成为表明软件产品中不存在错误的过程 验证软件已正确地实现了用户的 要求 确定人们对软件质量的信心 原则 要求 确定人们对软件质量的信心 原则 应当尽早地和不断地进行软件测试 应当尽早地和不断地进行软件测试 测试用例应当由测试输入数据和与测试用例应当由测试输入数据和与 之对应的预期输出结果两部分组成 之对应的预期输出结果两部分组成 开发人员和测试队伍要分别建立 开发人员和测试队伍要分别建立 设计测试用例时 应包括合理的输入条件设计测试用例时 应包括合理的输入条件 和不合理的输入条件和不合理的输入条件 充分注意测试中的群集现象充分注意测试中的群集现象 严格执行测试计划严格执行测试计划 排除测试的随意性排除测试的随意性 应当对每一个应当对每一个 测试的结果做全面的检查 测试的结果做全面的检查 在对程序进行修改后 要进行回归测试 在对程序进行修改后 要进行回归测试 妥善保存测试计划 测试用例 出错统计和最妥善保存测试计划 测试用例 出错统计和最 终分析报告 为维护提供方便 终分析报告 为维护提供方便 2 软件测试的对象 书书 page205page205page205page205 3 测试与开发各阶段的关系 4 黑盒测试可测试的几类错误 是否有不正确和遗漏了的功能 是否有不正确和遗漏了的功能 在接口上在接口上 输入是否正确地接受输入是否正确地接受 是否输出正确的是否输出正确的 结果 结果 是否有数据结构错误或外部信息访问错误 是否有数据结构错误或外部信息访问错误 性能上是否满足要求 性能上是否满足要求 是否初始化或终止性错误 是否初始化或终止性错误 5 白盒测试可测试的几类错误 书 page209 6 黑盒测试的技术 7 白盒测试的技术 见书 209 页 具体看懂 8 单元测试需要检查的五个方面 在单元测试期间主要评价模块的下述五个特性 在单元测试期间主要评价模块的下述五个特性 模块接口 模块接口 局部数据结构局部数据结构 重要的执行通路 重要的执行通路 出错处理通路 出错处理通路 影响上述各方面特性的边界条件 影响上述各方面特性的边界条件 9 组装测试中所采用的几种组装方法 书 page236 10 确认测试的步骤 书 page240 11 程序的静态分析方法 书 page246 12 调试技术与方法 调试技术 输出存储器内容输出存储器内容 打印语句打印语句 自动工具自动工具 需 求 分 析 说 明 书 概 要 设 计 说 明 书 详 细 设 计 说 明 书 源 程 序 代 码 单 元 测 试 集 成 测 试 确 认 测 试 第八章第八章面向对象技术面向对象技术 一 要求掌握的主要概念一 要求掌握的主要概念 对象 属性 操作 连接 结构 类 继承 多态性 状态 对象的状态是对象属性的一种抽象对象的状态是对象属性的一种抽象 状态转换 二 应理解和掌握的主要内容二 应理解和掌握的主要内容 1 掌握分析设计过程有三项基本活动 2 掌握三种基本模型 面向对象建模技术所建立的三种模型面向对象建模技术所建立的三种模型 对象模型对象模型 动态模型和功能模型动态模型和功能模型 分别从三个不同侧面描分别从三个不同侧面描 述了所要开发的系统述了所要开发的系统 对象模型定义了对象模型定义了 做什么做什么 的实体的实体 功能模型指明了系统应该功能模型指明了系统应该 做什么做什么 动态模型明确规定在何种动态模型明确规定在何种 状态下状态下 接受什么事件的触发而接受什么事件的触发而 做什么做什么 对象模型是一个类对象模型是一个类 属性和行为属性和行为 对象对象 类的实例类的实例 类和类和 或或 对象之间对象之间 关系的定义集关系的定义集 对象模型表示静态的对象模型表示静态的 结构化系统的结构化系统的 数据数据 性质性质 为建立动态模型和功能模型提供了实质性的框架为建立动态模型和功能模型提供了实质性的框架 对象对象 模型把面向对象的概念与常用的信息建模概念结合起来模型把面向对象的概念与常用的信息建模概念结合起来 增强了模型的可理解性和表达能力增强了模型的可理解性和表达能力 对象模型还表示对象模型还表示了类了类 对象之对象之 间的结构关系 类间的结构关系 类 对象之间的关系一般可概括为关联 归纳 泛化对象之间的关系一般可概括为关联 归纳 泛化 组合 聚集 三类 组合 聚集 三类 动态模型表示瞬间的 行为化动态模型表示瞬间的 行为化 的系统的系统 控制控制 性质 它规定了对象模型中对象的合法变化序列 对象有自己的运行周期 由多个阶段组成 每个特定阶段性质 它规定了对象模型中对象的合法变化序列 对象有自己的运行周期 由多个阶段组成 每个特定阶段 都有规范该对象的行为的一组运行规则 都有规范该对象的行为的一组运行规则 对象的对象的状态是对象属性的一种抽象 事件是某个特定时刻发生的一个系统行为 状态是对象属性的一种抽象 事件是某个特定时刻发生的一个系统行为 是引起对象状态转换的控制信息 对象对事件的响应 取决于当时的状态 响应包括改变自己的状态 或者是形成一个新是引起对象状态转换的控制信息 对象对事件的响应 取决于当时的状态 响应包括改变自己的状态 或者是形成一个新 的触发行为 事件的触发行为 事件 动态模型描绘对象的状态 触发状态转换的事件 以及对象行为 对事件的响应 动态模型描绘对象的状态 触发状态转换的事件 以及对象行为 对事件的响应 即基于事件共享 即基于事件共享 而互相关联的一组状态集合构成了系统的动态模型 而互相关联的一组状态集合构成了系统的动态模型 功能模型表示变化的系统的功能模型表示变化的系统的 功能功能 性质 指明了系统应该性质 指明了系统应该 做什么做什么 它更直接地反映了用户对目标系统的需求 有助于软件开发人员更深入地理解问题域 改进和完善自己的分析和设计 它更直接地反映了用户对目标系统的需求 有助于软件开发人员更深入地理解问题域 改进和完善自己的分析和设计 功功 能模型由一组能模型由一组数据流图组成 顶层数据流图中的处理 对应于复杂对象提供的服务 低层数据流图中的处理 对应于基本数据流图组成 顶层数据流图中的处理 对应于复杂对象提供的服务 低层数据流图中的处理 对应于基本 对象 复杂对象的组成部分 的服务 一个处理可能对应多个服务 或者是一个服务可能对应多个处理 对象 复杂对象的组成部分 的服务 一个处理可能对应多个服务 或者是一个服务可能对应多个处理 功能模型功能模型的数据的数据 流图远不如在结构化方法中那样重要 但不能忽视功能模型的作用 流图远不如在结构化方法中那样重要 但不能忽视功能模型的作用 3 了解流行的面向对象方法 4 了解 UML 的基本构造及基本模型 5 理解面向对象方法与结构化分析方法之间的不同 面向对象方法是一种基于对象面向对象方法是一种基于对象 数据数据 属性属性 操作构成统一体操作构成统一体 方法方法 6 掌握软件开发方法的基本构成 在面向对象的软件开发过程中在面向对象的软件开发过程中 分析与设计活动二者之间的界限是模糊的分析与设计活动二者之间的界限是模糊的 它们分析和它们分析和 设计系统的对象和对象类 通过构造类模型 对象模型 动态模型和功能模型等 进而映射成系统的设计和实现 这是一设计系统的对象和对象类 通过构造类模型 对象模型 动态模型和功能模型等 进而映射成系统的设计和实现 这是一 个多次反复 逐次迭代 逐步精化的过程 个多次反复 逐次迭代 逐步精化的过程 7 掌握对象建模的方法 第九章第九章软件维护软件维护 一 要求掌握的主要概念一 要求掌握的主要概念 维护 在软件已经交付使用之后 为了改正错误或满足新的需要而修改软件的过程 在软件已经交付使用之后 为了改正错误或满足新的需要而修改软件的过程 维护的副作用 是指因修改软件而造成的错误或其它不希望发生的情况 副作用有三种 修改代码的副作用 修改数据的是指因修改软件而造成的错误或其它不希望发生的情况 副作用有三种 修改代码的副作用 修改数据的 副作用 文档的副作用 副作用 文档的副作用 可理解性 表现为外来读者理解软件的结构 接口 功能和内部过程的难易程度 表现为外来读者理解软件的结构 接口 功能和内部过程的难易程度 可靠性 表明一个程序按照用户的要求和设计目标表明一个程序按照用户的要求和设计目标 在给定的一段时间内正确执行的概率 在给定的一段时间内正确执行的概率 可测试性 诊断和测试的难易程度主要取决于软件容易理解的程度 诊断和测试的难易程度主要取决于软件容易理解的程度 可修改性 二 应理解和掌握的主要内容二 应理解和掌握的主要内容 1 软件维护的主要内容 当一个软件系统顺利地运行时当一个软件系统顺利地运行时 常常出现第三项维护活动常常出现第三项维护活动 在使用软件的过程中用户往往提出增在使用软件的过程中用户往往提出增 加新功能或修改已有功能的建议 还可能提出一般性的改进意见 为了满足这类要求 需要进行完善性维护 这项维护活加新功能或修改已有功能的建议 还可能提出一般性的改进意见 为了满足这类要求 需要进行完善性维护 这项维护活 动通常占软件维护工作的大部分 动通常占软件维护工作的大部分 2 软件维护的策略 3 软件维护成本 MMMM P P P P 十十 K exp c d K exp c d K exp c d K exp c d 其中其中 MMMM 是维护用的总工作量是维护用的总工作量 P P P P 是生产性工作量是生产性工作量 K K K K 是经验常数是经验常数 c c c c 是复杂程度是复杂程度 非非 结构化设计和缺少文档都会增加软件的复杂程度结构化设计和缺少文档都会增加软件的复杂程度 d d d d 是维护人员对软件的熟悉程度 上面的模型表明 如果软件的开发途是维护人员对软件的熟悉程度 上面的模型表明 如果软件的开发途 径不好 没有使用软件工程方法论径不好 没有使用软件工程方法论 而且原来的开发人员不能参加维护工作 那么维护工作量 和费用 将指数地增加 而且原来的开发人员不能参加维护工作 那么维护工作量 和费用 将指数地增加 4 软件维护的工作流程流程 5 软件可维护性的度量可以从下述七个方面度量维护工作 可以从下述七个方面度量维护工作 每次程序运行平均失效的次数 每次程序运行平均失效的次数 用于每一类维护活动的总人时数 用于每一类维护活动的总人时数 平均每个程序 每种语言 每种维护类型所做的程序变动数 平均每个程序 每种语言 每种维护类型所做的程序变动数 维护过程中增加或删除一个源语句平均花费的人时数 维护过程中增加或删除一个源语句平均花费的人时数 维护每种语言平均花费的人时数 维护

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论