




已阅读5页,还剩37页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第三章软件工程基础 主要内容 3 1软件工程基本概念3 2结构化分析方法3 3结构化设计方法3 4软件测试3 5程序的调试 3 1软件工程基本概念 3 1 1软件定义与特点 区分两组容易混淆名词 程序 软件的组成部分 软件 包括程序 数据和相关文档的完整组合 程序设计 只是软件开发过程中的必要环节 软件开发 还包括需求分析 概要和详细设计 软件测试 运行和维护等多个环节 定义 是指包括程序 数据以及相关文档的完整组合 国标定义 与计算机系统的操作有关的计算机程序 规程 规则以及可能有的文件 文档及数据 组成 分类 系统软件 应用软件和支撑软件 或工具软件 1 机器可执行的程序和数据 2 机器不可执行的 与软件开发 运行 维护和使用等有关的文档 特点 具有抽象性 不是物理实体 没有明显制作过程 在运行 使用期不存在磨损和老化问题 软件开发 运行对计算机系统具有依赖性 软件复杂性高 成本昂贵 软件开发涉及诸多社会因素 软件危机 3 1 2软件危机与软件工程 定义 泛指在计算机软件的开发和维护过程中所遇到的一系列严重问题 作用 为了消除软件危机 逐步形成了软件工程概念 开辟了工程学新兴领域 软件工程学 软件工程 国标定义 软件工程是应用于计算机软件的定义 开发和维护的一整套方法 工具 文档 实践标准和工序 三要素 1 方法 完成软件工程项目的技术手段 2 工具 支持软件的开发 管理和文档生成 3 过程 支持软件开发的各个环节的控制 管理 定义 软件产品从提出 实现 使用维护到停止使用的过程称为软件生命周期 3 1 3软件生命周期 三个阶段 1 可行性研究与计划制定 确定开发目标和总的要求 给出功能 可靠性等可能方案 制定实施计划 2 需求分析 对软件需求进行分析并给出详细定义 编写软件规格说明书及初步的用户手册 提交评审 3 软件设计 概要设计和详细设计 给出软件的结构 模块和功能的划分等 编写概要设计 详细设计说明书和测试计划初稿 4 软件实现 源程序编码 把软件设计转换成计算机可以接受的程序代码 编写用户手册 操作手册和单元测试计划 5 软件测试 设计测试用例 检验软件各个组成部分 编写测试分析报告 软件运行 6 软件投入运行 维护 进行扩充和删改 和维护 3 1 4软件工程的目标与原则 基本目标 较低开发成本达到要求软件功能 取得较好性能 软件易于移植 维护费用低 按时完成开发 及时交付使用 原则 抽象 信息隐蔽 模块化 局部化 确定性 一致性 完备性和可验证性 见后 3 1 5软件开发工具与软件开发环境 软件开发工具 是用于帮助软件开发人员开发和维护软件的一类特殊软件 它可以大大提高软件开发的效率 软件开发环境 是全面支持软件开发全过程的软件工具集合 这些软件工具按照一定的方法或模式组合起来 支持软件生命周期内的各个阶段和各项任务的完成 CASE 计算机辅助软件工程 3 2结构化分析方法 3 2 1需求分析与需求分析方法 1 需求分析 软件需求 指用户对目标软件系统在功能 行为 性能 设计约束等方面的期望 需求分析定义 开发人员准确理解用户的要求 调查分析 将用户非正形的需求陈述转化为完整的需求定义 再转换到相应的需求格式说明的过程 任务 发现需求 用户需要软件做什么 求精 建模和定义需求的过程 需求分析阶段的工作 四方面 2 需求分析方法 结构化分析方法和面向对象的分析方法 1 需求获取 目的是确定系统各方面需求 与用户交流 沟通全面地提炼出系统的功能性与非功能性需求 2 需求分析 对获取的需求分析和综合 给出系统解决方案和逻辑模型 3 编写需求规格说明书 为用户 设计人员的交流提供方便 还可作为控制软件开发进程的依据 4 需求评审 复审需求分析阶段的工作 验证需求文档的一致性 可行性等 3 2 2结构化分析方法 定义 结构化分析是使用数据流图 DFD 数据字典 DD 结构化英语 判定表和判定树等工具 建立一种新的 称为结构化规格说明的目标文档 实质 面向数据流 以数据流图和数据字典为主要工具 建立系统的逻辑模型 主要步骤 四步 1 获取当前系统的具体模型 2 抽象出当前系统的逻辑模型 3 建立目标系统的逻辑模型 4 编写目标系统的软件需求规格说明 常用工具 数据字典 判定表和判定树 1 数据流图 DFD DataFlowDiagram 作用 以图形的方式描述数据在系统中流动和处理的过程 使用DFD为系统建立逻辑模型 基本符号 四种 步骤 三步 1 由外向里 先画系统输入 输出 再画系统的内部 2 自顶向下 顺序完成顶层 中间层 底层数据流图 3 逐层分解 先建立顶层数据流图 包含 相关外部实体及它们与软件中间的数据流作用 描述软件作用范围 总体功能 输入 输出等 举例 2 数据字典 DD DataDictionary 定义 是所有与系统相关的数据元素的一个有组织的列表 以及精确 严格的详细定义 作用 对DFD中出现的被命名的图形元素的确切解释 数据字典与DFD共同构成了系统的逻辑模型 定义数据的基本符号 举例 见教材P 3 判定树 描述方法 分清哪些是判定的条件 哪些是判定的结论 并找出判定条件之间的从属关系 并列关系 选择关系 根据它们构造判定树 优点 更加直观 易于理解和使用 举例 检查取款单 的判定树 见教材图3 3 4 判定表 使用条件 当数据流图中的加工要依赖于多个逻辑条件的取值时 该加工的一组动作是由于某一组条件取值的组合而引发的 使用判定表描述比较适宜 组成 四部分 1 基本条件 各种可能的条件 2 条件项 各种可能的条件组 3 基本动作 所有的操作 4 动作项 对应的条件组合下所选的操作 举例 检查取款单 的判定表 3 2 3软件需求规格说明书 定义 是需求分析阶段的最后成果 软件开发的重要文档之一 它对所开发的软件的功能 性能 用户界面及运行环境等进行详细说明 作用 便于用户与开发人员交流 作为软件开发的依据 作为测试和验收的依据 内容 制定出完整的信息描述 详细的功能说明 恰当的检验标准以及其他有关数据 具体内容见教材P17 特点 正确而无歧义性 简明易懂 可修改性 可验证性等 3 3结构化设计方法 3 3 1软件设计过程及原则 1 软件设计基础知识 定义 软件设计是把软件需求转换为软件的具体设计方案 即模块结构的过程 确定系统的物理模型 内容 从技术观点 包括软件结构设计 数据设计 接口设计 过程设计 从工程管理角度 概要设计 确定软件系统结构 模块划分 详细设计 确立每个模块的实现算法和局部数据结构 一般过程 是一个迭代过程 先进行高层次结构设计 再进行低层次过程设计 穿插数据设计和接口设计 2 软件设计基本原则 1 抽象 抽出事物的本质特性而不考虑其他细节 考虑模块划分解决方案时 可定多个抽象级别 2 模块化 指解决一个复杂问题时自顶向下逐层把软件系统划分成若干模块的过程 3 信息隐蔽 模块内包含的信息 不允许其他不需要这些信息的模块访问 即每个模块的实现细节对其他模块来说是隐蔽的 4 模块独立性 每个模块只完成系统要求的独立的子功能 并且与其他模块的联系最少且接口简单 度量标准 耦合性 模块间互相连接的紧密程度 内聚性 一个模块内部各个元素间彼此结合的紧密程度 高内聚低耦合 3 3 2结构化设计方法 基本思想 将软件设计成由相对独立且具有单一功能的模块组成的结构 1 概要设计及结构图 基本任务 四点 1 设计软件系统结构 需求分析阶段 已将系统分解成层次结构 概要设计阶段 进一步划分为模块以及模块的层次结构 2 数据结构及数据库设计 实现需求定义和规格说明过程中提出的数据对象的逻辑表示 3 编写概要设计文档 包括概要设计说明书 数据库设计说明书 集成测试计划等 4 概要设计文档评审 结构图 作用 软件结构设计工具 反映系统的功能实现以及模块与模块之间的联系与通信 即反映了系统的总体结构 基本成分 模块 数据和调用 基本图符 基本形式 基本术语 深度 在多层次的结构图中 其模块结构的层次数 控制的层数 宽度 同一层模块的最大模块数 控制跨度 扇出 一个模块直接调用的其他模块数目扇入 调用一个给定模块的模块个数 上级模块 从属模块 上下两层模块a和b a调用b a是上级模块 b是从属模块 2 数据流图到结构图的变换 结构化设计方法的任务就是把需求分析得到的数据流图变换为结构图 1 数据流图到结构图的变换 交换型 信息沿输入通路进入系统 同时由外部形式变换成内部形式 进入系统的信息通过变换中心 经加工处理以后再沿输出通路变换成外部形式离开软件系统 变换型数据处理的工作过程分三步 取得数据 变换数据 输出数据 变换型系统结构图分三部分 输入 中心变换 输出 事务型 数据流的特点是接受一项事务 根据事务处理的特点和性质 选择分派一个适当的处理单元 事务处理中心 然后给出结果 例图 例图 2 面向数据流设计方法的实施要点与设计过程 分析确认数据流图的类型 区分是事务型还是变换型 说明数据流的边界 将数据流图映射为程序结构图 事务流 区分事务中心和数据接收通路 映射成事务结构变换流 区分输出和输入分支 映射成变换结构 对产生的结构细化和求精 3 详细设计及工具 详细设计任务 为软件结构图中的每一个模块确定其实现算法和局部数据结构 并用某种选定的表达工具表示算法和数据结构的细节 设计工具 图形工具 程序流程图 N S图 问题分析图 PAD图 表格工具 判定表语言工具 PDL 伪码语言 1 程序流程图 由一些描述不同种类操作的带有文字说明的图框和流程线构成 优点 直观清晰 易于掌握缺点 随意转移控制 且不易表示结构 2 N S图 去掉流程线 全部算法写在一个矩形框内 3 PAD图 用结构化程序设计思想表现程序逻辑结构 描述软件详细设计 结构清晰 结构化程度高 易于阅读 最左端纵线是程序主干线 每增加一层向右扩展一条纵线 纵线数等于程序层次数 程序执行 从最左端主干线上端点起 自上而下 从左向右执行 终止于最左端主干线 4 PDL图 过程设计语言 也称结构化英语或伪码 采用英语词汇和结构化程序设计语言的语法 3 4软件测试 3 4 1软件测试的目的与准则 1 目的 是为了发现错误而执行程序的过程 2 准则 六点 1 所有测试都应追溯到需求 最严重的错误为程序无法满足用户需求 2 严格执行测试计划 排除测试的随意性 3 注意测试中的群集现象 程序中存在错误的概率与该程序中已发现的错误数成正比 应集中对付那些错误群集的程序 4 程序员应避免检查自己的程序 5 穷举测试不现实 穷举测试是指把程序所有可能的执行路径都进行检查的测试 6 妥善保存测试计划 测试用例 和最终分析报告等 3 4 2软件测试方法 研究内容 如何用最少的测试用例集合来测试出程序中更多的潜在错误 关键技术 如何进行彻底的测试 如何设计测试用例等 分类 1 静态测试与动态测试 是否需要执行被测软件 1 静态测试 包括代码检查 静态结构分析 代码质量度量等 可以由人工进行或软件工具自动进行 2 动态测试 设计一批测试用例 利用它们去运行程序 以发现程序错误的过程 测试用例 为测试设计的数据 由测试输入数据和与之对应的预期输出结果组成 格式 输入值集 输出值集 2 白盒测试与黑盒测试 按照功能划分 1 白盒测试 也叫结构测试或逻辑驱动测试 在程序内部进行 完成软件内部操作的验证 被测软件看作一个透明的盒子 测试人员对程序内部的逻辑结构及处理过程完全了解 2 黑盒测试 也叫功能测试或数据驱动测试 在软件接口处进行 完成功能验证 被测软件看作一个不透明的黑盒子 完全不考虑程序内部的逻辑结构和内部特性 3 白盒测试原则及测试用例 基本原则 保证所测模块中每一独立路径至少执行一次 保证所测模块所有判断的每一分支至少执行一次 保证所测模块每一循环都在边界条件和一般条件下至少各执行一次 验证所有内部数据结构的有效性 局限性 是穷举路径测试 贯穿程序独立路径数是天文数字 即使每条路径都经过了测试 仍可能有未发现错误 主要方法 1 逻辑覆盖测试 逻辑覆盖 指以程序内部的逻辑结构为基础的测试用例设计技术 逻辑表示 判断 分支 条件等几种表示方式 语句覆盖 选择足够多测试数据 使程序中每个语句至少执行一次 路径覆盖 选择足够多测试用例 使程序中所有可能的路径都至少执行 次 判定覆盖 保证程序中每个判断的每个取值分支 真 或 假 至少执行一次 判定覆盖比语句覆盖强 但逻辑覆盖程度仍不高 例如 x10 只要一个条件为真 无论另一个条件是否错误 判断结果都为真 无法保证查出判断条件中的错误 条件覆盖 每个判断的每个条件的可能取值至少执行 次 判断 条件覆盖 每个条件的所有可能取值至少执行一次 同时每个判断的所有可能取值分支至少执行一次 2 基本路径测试 思想和步骤 根据软件过程性描述中的控制流程确定程序的环路复杂性度量 用此度量定义基本路径集合 环路复杂度 程序流程图中的判断框个数 1 举例 程序复杂度为3 x 10 y 10覆盖路径 ABF x 10 y 10覆盖路径 ACDF x 10 y 10覆盖路径 ACEF 4 黑盒测试原则及测试用例 内容 检查程序功能是否能按照规格说明书的规定正常使用 程序是否能适当地接收输入数据产生正确的输出信息 并保持外部信息完整性 方法 四种 1 等价类划分法 基本思想 将程序所有可能的输入数据划分成若干等价类 然后从每个等价类中选取数据作为测试用例 对每个等价类 各输入数据对发现程序中错误的几率都是等效的 只需从每个等价类中选取一些有代表性的测试用例进行测试 实施步骤 划分等价类根据等价类选取测试用例 等价类分类 有效等价类 合理 有意义的输入数据构成的集合 无效等价类 不合理 无意义的输入数据构成的集合 2 边界值法 基本思想 对各种输入 输出范围的边界情况设计测试用例的方法 针对各种边界情况设计测试用例 可以查出更多的错误 3 错误推测法 基本思想 列举出程序中所有可能有的错误和容易发生错误的特殊情况 根据它们选择测试用例 需要丰富的经验 4 因果图法 基本思想 从功能说明书中找出因 输入 和果 输出 将功能说明书转换成判定表 再为每种输出条件的组合设计测试用例 3 4 3软件测试的实施 四个步骤 单元测试 集成测试 确认测试和系统测试 1 单元测试 定义 对模块 软件设计最小单位 进行正确性检验的测试 目的 发现各模块内部可能存在的各种错误 技术 静态分析和动态测试 依据 详细设计说明书和源程序 说明 单个模块通常不是独立的程序 不能运行 必须在真实或模拟环境下进行 模拟环境中为被测模块设计和搭建驱动模块和桩模块 驱动模块 相当于被测模块的主程序 它接收测试数据 并传给被测模块 输出实际测试结果 桩模块 用于代替被测模块调用的其他模块 仅做少量的数据操作 不必将子模块的所有功能带入 2 集成测试 定义 把模块在按照设计要求组装起来的同时进行测试 目的 发现与接口有关的错误 依据 概要设计说明书 采用方式 模块组装成程序 两种 1 非增量方式 也称为一次性组装方式 将测试好的每一个软件单元一次组装在一起再进行整体测试 2 增量方式 测试好的模块逐步组装成较大系统 边连接边测试 以发现连接过程中产生的问题 自顶向下 从主控模块开始 沿控制层次自顶向下逐个连接模块 自低向上 从最低层 最基本的软件单元开始测试 不需要桩模块 但需要驱动模块 混合增量 两头向中间逼近 三明治 方法 3 确认测试 任务 验证软件的功能和性能及其他特性是否满足了需求规格说明中确定的各种需求 以及软件配置是否完全正确 实施 先用黑盒测试 验证被测软件是否满足需求规格说明确
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《物流管理定量分析方法》形考任务答案1
- 公司员工安全教育培训题及答案
- (2025)企业合同法律风险防范培训试题及参考答案
- 智慧政务面试题目及答案
- 教师工作计划个人初中(5篇)
- AIoT技术市场前景展望
- 2025年钻探招聘考试题目及答案
- 食物等级考试题及答案
- 2025年考研数学二真题及答案
- 2025年山西省政府采购评审专家考试题库附含答案
- 二级豆粕创新创业项目商业计划书
- (统编2025版)道德与法治一年级上册教学计划(新教材)
- 2025云南昆明巫家坝建设发展有限责任公司招聘23人笔试备考题库及答案解析
- 2025年电气工程师高级专业考试题库
- 2024年山东省节能与双碳促进中心招聘真题
- 2025-2026学年统编版小学语文四年级上册教学计划及进度表
- 高二奋发+勇攀高峰+课件-2025-2026学年高二上学期开学第一课主题班会
- KTV突发事件安全应急预案
- DB15T 3543-2024 大蒜主要病虫害绿色防控技术规程
- 《液压与气动》课件(共十三章)
- 住建部《建筑业10项新技术(2017版)》解读培训课件
评论
0/150
提交评论