资源描述
软件工程基础,公共基础知识,软件工程基本概念,软件生命周期概念,软件工具与软件开发环境。 结构化分析方法,数据流图,数据字典,软件需求规格说明书。 结构化设计方法,总体设计与详细设计。 软件测试的方法,白盒测试与黑盒测试,测试用例设计,软件测试的实施,单元测试、集成测试和系统测试。 程序的调试,2,内容提要,3.1 软件工程基本概念,软件的定义和组成 计算机软件(Software)是计算机系统中与硬件相互依赖的另一部分,包括程序、数据、文档。 软件分成三类: 应用软件 系统软件(操作系统、数据库管理系统、编译程序、设备驱动程序等) 支撑软件(介于应用软件与系统软件间,协助用户开发软件的工具性软件,比如需求分析工具软件、编码工具软件、测试/维护工具软件),4,3.1.1 软件定义与软件特点,软件危机 落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护过程中出现一系列严重问题的现象。 严重问题归结为成本、质量和生产率等问题 为了解决软件危机,1968年提出了软件工程这一概念,并逐渐形成了软件工程学。(软件工程源自于软件危机),5,3.1.2 软件危机与软件工程,软件工程 将工程化应用到软件开发过程中(在软件的开发工程中应用工程化原则) 软件工程学工程学的新兴领域 软件工程3个要素: 方法: 完成工程项目的技术手段 工具:支持软件开发、管理、文档生成的工具 过程:对开发的各个环节进行控制和管理,6,3.1.2 软件危机与软件工程,软件工程过程 软件开发过程:把用户的要求转变为软件产品的过程。,7,3.1.3 软件工程过程与软件生命周期,3.1.3 软件工程过程与软件生命周期,软件的生命周期 软件产品从提出、实现、使用维护、停止使用到退役的过程 3个阶段 软件定义 软件开发 软件运行维护 6个阶段工作,8,可行性报告,软件规格说明书,测试分析报告,3.1.3 软件工程过程与软件生命周期,定义阶段 可行性研究与计划指定:能做吗? 需求分析:做什么? 开发阶段: 软件设计:如何做?,分为概要设计和详细设计两个阶段。 软件实现:实现,编码。 软件测试:做的怎么样? 运行维护阶段 使用,不断维护,9,可行性报告,软件规格说明书,测试分析报告,概要设计说明书,详细设计说明书,完成编码及面向用户的手册,软件工程的目标 在给定成本、进度的前提下,开发出具有有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性且满足用户需求的产品 软件工程学的范畴,10,3.1.4 软件工程的目标与原则,软件工程原则 抽象 抽取事物最基本的特性和行为,忽略非本质细节 信息隐蔽 采用封装技术,将程序模块的实现细节隐藏起来 模块化 解决一个复杂问题时自顶向下逐层把软件系统划分成若干模块 局部化 确定性 一致性 完备性 可验证性,11,3.1.4 软件工程的目标与原则,软件开发工具 协助开发人员进行软件开发活动所使用的软件或环境 需求分析工具、设计工具、编码工具、排错工具、测试工具等。 软件开发环境 全面支持软件开发全过程的软件工具的集合 计算机辅助软件工程:CASE,12,3.1.5 软件开发工具与软件开发环境,3.2 结构化分析方法,1需求分析 定义: 任务:导出目标系统的逻辑模型 全面理解用户的各项要求,准确地表达各项要求 主要工作: 需求获取需求分析编写需求规格说明书需求审评(验证需求文档的一致性、可行性、完整性和有效性) 2.需求分析方法: 结构化分析方法 面向数据流的结构化分析方法(SA)、面向数据结构的Jackson方法(JSD)、面向数据结构的结构化数据系统开发方法(DSSD) 面向对象分析方法(OOA) 静态分析方法、动态分析方法,14,3.2.1 需求分析与需求分析方法,需求分析:解决“做什么”问题,1关于结构化分析方法 结构化程序设计理论在需求分析阶段的运用 面向数据流进行需求分析的方法 自顶向下、逐层分解 主要工具:数据流图(DFD)、数据字典(DD)、结构化英语、判定树、判定表,15,3.2.2 结构化分析方法,2结构化分析的常用工具 数据流图(DFD) 数据字典(DD) 结构化分析方法的核心 对数据流图(DFD)中出现的被命名的图形元素的确切解释 判定树、判定表 以图形形式描述数据流图(DFD)的加工逻辑,16,3.2.2 结构化分析方法,数据流图(DFD):,17,3.2.2 结构化分析方法,基本图形元素,软件需求规格说明书 是需求分析阶段的最后成果 特点: 正确性;无歧义性;完整性;可验证性;一致性;可理解性;可修改性;可追踪性。 最重要的是正确性,18,3.2.3 软件需求规格说明书,3.3 结构化设计方法,1软件设计的基础 开发阶段包括了软件设计、实现(编码)和软件测试三部分,软件设计是开发阶段最重要的步骤。 从工程管理角度来看,软件设计分两步完成:概要设计和详细设计,20,3.3.1 软件设计的基本概念,需求分析:解决“做什么”问题 软件设计:解决“怎么做”问题,2软件设计的基本原理 抽象 抽出事物本质的共同特点 模块化 信息隐蔽 每个模块的实现细节对于其它模块来说是隐蔽的 模块独立性 每个模块只涉及软件要求的具体的子功能和软件系统中其它的模块的接口是简单的 衡量指标: 耦合性:模块间互相连接的紧密程序的度量 内聚性:模块内部各个元素之间彼此结合的紧密程度的度量 应做到:高内聚,低耦合,21,3.3.1 软件设计的基本概念,1概要设计的基本任务 系统结构设计数据结构和数据库的设计编写概要设计文档概要设计的评审 常用的软件结构设计工具是结构(SC)图,22,3.3.2 概要设计,3面向数据流的设计方法 数据流图(DFD):需求分析工具 系统结构图(SC):概要设计工作 主要任务:数据流图变换成结构图 数据流的类型:变换流/事务流 实施要点与设计过程 分析、确认数据流图的类型,区分是事务型还是变换型 说明数据流的边界 数据流图映射为程序结构 根据设计准则把数据流转换成程序结构图,23,3.3.2 概要设计(续),详细设计的任务: 确定实现算法和局部数据结构 不同于编码或编程 常用过程设计工具: 图形工具:程序流程图、N-S、PAD(问题分析图)和HIPO 表格工具:判定表; 语言工具:PDL(伪码),24,3.3.3 详细设计,3.3.3 详细设计(续),程序流程图 图形元素: 方框:处理步骤 菱形:逻辑条件 箭头:控制流 5种控制结构 顺序型 选择型 先判断重复型 后判断重复型 多分支选择型。,25,3.4 软件测试,测试是为了发现错误而执行程序的过程,没有改正错误 一个好的测试用例在于能发现至今未发现的错误 一个成功的测试是发现了至今未发现的错误的测试 准则: 所有的测试都应该追溯到需求 程序员应避免检查自己的程序 测试用例(Test Case):为测试设计的数据,包含两部分:输入值集和输出值集。,27,3.4 软件测试,从是否需要执行被检测的软件的角度,分为静态测试与动态测试 静态测试 人工评审软件文档或程序,借以发现其中的错误 主要方法:代码检查、静态结构分析、代码质量度量 动态测试 上机测试 关键:设计高效、合理的测试用例 分两类:白盒测试方法和黑盒测试方法,28,3.4 软件测试,按照功能划分,分为白盒测试和黑盒测试 白盒测试 也称结构测试或逻辑驱动测试 在程序内部进行,主要用于完成软件内部操作的验证。 测试用例是根据程序的内部逻辑来设计 主要用于单元测试 基本原则 保证所测模块中每一个独立路径至少执行一次 保证所测模块所有判断的每一个分支至少执行一次 保证所测模块每一个循环都在边界条件和一般条件至少执行一次 验证所有内部数据结构的有效性 主要方法:逻辑覆盖、基本路径测试,29,3.4 软件测试,按照功能划分,分为白盒测试和黑盒测试 黑盒测试 也称功能测试或数据驱动测试 对软件已经实现的功能是否满足需求进行测试和验证 根据程序的功能说明来设计测试用例 主要用于确认测试 主要方法 等价类划分法 边界值分析法 错误推测法,30,3.4 软件测试,31,软件测试步骤: 单元测试、集成测试、确认测试、系统测试,3.4 软件测试,1单元测试 对象:针对程序模块,进行正确性检验的测试 目的:发现各模块内部可能存在的各种差错 依据:从程序的内部结构出发设计测试用例,其依据是详细的设计说明书和源程序 方法:以白盒测试为主,辅以黑盒测试 在编码阶段进行 驱动模块(相当于被测模块的主程序,将测试数据传递给被测试的模块)桩模块(代替被测模块调用的其他模块),32,3.4 软件测试,1单元测试 驱动模块:相当于被测模块的主程序,将测试数据传递给被测试的模块 桩模块:代替被测模块调用的其他模块,33,3.4 软件测试,2集成测试 任务:把模块在按照设计要求组装起来的同时进行测试 目的:发现与接口有关的错误 依据:集成测试的依据是概要设计说明书 内容:软件单元的接口测试、全局数据结构测试、边界条件和非法输入的测试 方式:非增量方式组装与增量方式组装。,34,3.4 软件测试,3确认测试 又称有效性测试 目的:验证软件的功能和性能及其它特性是否与用户的要求一致 依据:软件需求规格说明书 方法:黑盒测试法 4系统测试 任务:在实际运行(使用)环境下,对计算机系统进行一系列的组装测试和确认测试 目的:在于通过与系统的需求定义作比较,发现软件与系统定义不符合或与之矛盾的地方 依据: 需求分析规格说明来设计 内容:功能测试、性能测试、操作测试、配置测试、外部接口测试、安全性测试,35,3.4 软件测试,3.5 程序的调试,程序调试 任务:诊断和改正程序中的错误 时机:调试主要在开发阶段进行 基本步骤:错误定位、纠正错误、回归测试,37,3.5.1 基本概念,1强行排错法 通过内存全部打印来排错(Memory Dump) 在程序特定部位设置打印语句 自动调试工具 2回溯法 3原因排除法 演绎法 归纳法 二分法,38,3.5.2 软件调试方法,
展开阅读全文