《第3章 软件工程基础》由会员分享,可在线阅读,更多相关《第3章 软件工程基础(44页珍藏版)》请在金锄头文库上搜索。
1、第三章 软件工程基础,第一节 软件工程基本概念 第二节 结构化分析方法 第三节 软件测试 第四节 程序的调试,第一节 软件工程基本概念,一、软件定义与软件特点 软件是包括程序、数据及相关文档的完整集合。 包括: (1)机器可执行的程序与数据。 (2)机器不可执行的,与软件开发、运行、维护、使用 等相关的文档。,第一节 软件工程基本概念,一、软件定义与软件特点 特点: (1)软件是一种逻辑实体,不是物理实体,具有抽象性。 (2)软件的生产与硬件不同,没有明显的制作过程。一 旦开发成功,可以大量拷贝。 (3)软件在运行、使用期间不存在磨损与老化问题 (4)软件的开发、运行对计算机系统有依赖性 (5
2、)软件复杂性高,成本昂贵,第一节 软件工程基本概念,二、软件危机与软件工程 软件危机是泛指在计算机软件的开发和维护过程中所遇 到的一系列严重问题。 软件工程的核心思想是把软件产品看作一个工程产品来 处理。以期达到工程项目的三个基本要素:进度、经费 和质量目标。,第一节 软件工程基本概念,三、软件生命周期 将软件产品从提出、实现、使用维护到停止使用退役的 过程称为软件生命周期。,第一节 软件工程基本概念,三、软件生命周期 (1)可行性研究与计划制定 (2)需求分析 (3)软件设计 (4)软件实现 (5)软件测试 (6)运行与维护,第一节 软件工程基本概念,三、软件工程的目标 在给定成本、进度的前
3、提下,开发出具有有效性、可靠 性、可理解性、可维护性、可适应性、可移植性和可互 操作性且满足用户需求的产品。,第二节 结构化分析方法,一、需求分析与需求分析方法 1、需求分析:指用户对目标软件系统在功能、行为、 性能、设计约束等方面的期望。 需求分析的任务是发现需求、求精、建模和定义需求的 过程。,第二节 结构化分析方法,一、需求分析与需求分析方法 需求分析阶段的工作: (1)需求获取:确定对目标系统的各方面的需求 (2)需求分析:对获取的需求进行分析与综合,最终给出系统的解决方案和目标系统的逻辑模型。 (3)编写需求规格说明书 (4)需求评审,第二节 结构化分析方法,一、需求分析与需求分析方
4、法 2、需求分析方法 (1)结构化分析方法 (2)面向对象的分析方法,第二节 结构化分析方法,二、结构化分析方法 1、结构化分析方法的定义 结构化分析方法是结构化程序设计理论在软件需求分析 阶段的运用。步骤如下: (1)通过对用户的调查,获得当前系统的具体模型 (2)根据具体模型,抽象出当前系统的逻辑模型 (3)根据计算机的特点,建立目标系统的逻辑模型 (4)写出目标系统的软件需求规格说明书 (5)评审直到确认完全符合用户对软件的需求,第二节 结构化分析方法,二、结构化分析方法 2、结构化分析的常用工具 (1)数据流程图(DFDData Flow Diagram) 数据流程图是描述数据处理过程
5、的工具,是需求理解的 逻辑模型的图形表示。数据流程图中的主要图形元素与说明如下:,第二节 结构化分析方法,加工(转换):输入数据经加工变换 产生输出,数据流,存储文件(数据源),源,潭:表示系统和环境的接口,属 系统之外的实体,第二节 结构化分析方法,二、结构化分析方法 2、结构化分析的常用工具 (1)数据流程图(DFDData Flow Diagram) 建立数据流程图的步骤 (1)由外向里 (2)自顶向下 (3)逐层分解,银行取款业务的数据流程图,帐卡,存折,检验,登录,付款,日历,储户,检验出的问题,取款,年月日,付款信息,现金,存折,取款单,第二节 结构化分析方法,二、结构化分析方法
6、2、结构化分析的常用工具 (1)数据流程图(DFDData Flow Diagram) 建立数据流程图的步骤 (1)由外向里 (2)自顶向下 (3)逐层分解,第二节 结构化分析方法,区别:数据流图和程序设计中的程序流程图(Flow Chat)是不同的,数据流图关心的是企业业务系统中的数据处理加工的客观过程,并不关心未来电子化处理的加工过程;数据流图中流动的只是数据,并没有控制过程,但在程序流程图当中,必须有控制逻辑 。,第二节 结构化分析方法,三、软件需求规格说明书 1、作用: (1)便于用户、开发人员进行理解和交流 (2)反映出用户问题的结构,可以作为软件开发工作的基础和依据 (3)作为确认
7、测试和验收的依据,第二节 结构化分析方法,三、软件需求规格说明书 2、内容 (1)概述 (2)数据描述:数据流程图,数据字典,系统接口说明,内部接口 (3)功能描述:功能,处理说明,设计的限制 (4)性能描述:性能参数,测试种类,预期的软件响应,应考虑的特殊问题,第三节 结构化设计方法,一、软件设计的概念 1、从技术观点来看,软件设计包括:软件结构设计,数据设计,接口设计,过程设计。从工程管理角度来看,软件设计分两步:概要设计和详细设计。,第三节 结构化设计方法,一、软件设计的概念 2、软件设计的基本原理 (1)抽象 (2)模块化 (3)信息隐蔽 (4)模块独立性,第三节 结构化设计方法,一、
8、软件设计的概念 2、软件设计的基本原理 (4)模块独立性 内聚性:一个模块内各个元素间彼此紧密程度的度量 耦合性:模块间互相连接的紧密程度的度量 一般较优秀的软件设计,应尽量做到:高内聚,低耦合,第三节 结构化设计方法,二、概要设计 任务: (1)设计软件系统结构:在需求分析阶段,已经把系统分解成层次结构,在概要设计阶段,需要进一步分解,划分为模块以及模块的层次结构。 (2)数据结构及数据库设计 (3)编写概要设计文档 (4)概要设计文档评审,第三节 结构化设计方法,三、详细设计 任务:为软件结构图中的每一个模块确定实现算法的 局部数据结构,用某种选定的表达工具表示算法和数据 结构的细节。,第
9、四节 软件测试,一、软件测试的目的 使用人工或自动手段来运行或测定某个系统的过程,其 目的在于检验它是否满足规定的需求或是弄清预期结果 与实际结果之间的差别。测试要以查找错误为中心,而不是为了演示软件的正确功能。,第四节 软件测试,二、软件测试的准则 (1)所有测试都应追溯到需求 (2)严格执行测试计划,排除测试的随意性 (3)程序员应避免检查自己的程序 (4)妥善保管测试计划、测试用例、出错统计和最终分析报告,为维护提供方便,第四节 软件测试,三、软件测试技术与方法 从是否需要执行被测软件的角度分为: 静态测试和动态测试 按照功能划分:白盒测试与黑盒测试,第四节 软件测试,三、软件测试技术与
10、方法 1、静态测试与动态测试 (1)静态测试包括:代码检查,静态结构分析,代码质量度量等。静态测试不实际运行软件,由人工进行。 (2)动态测试:是基于计算机的测试,是为了发现错误而执行程序的过程。设计高效、合理的测试用例是动态测试的关键。,第四节 软件测试,三、软件测试技术与方法 2、白盒测试方法与测试用例设计 白盒测试也称结构测试或逻辑驱动测试。它是根据软件 产品的内部工作过程,检查内部成分,以确认每种内部 操作符合设计规格要求。 白盒测试把测试对象看成一个打开的盒子,允许测试人 员利用程序内部的逻辑结构及有关信息来设计或选择测 试用例,对程序所有的逻辑路径进行测试。,第四节 软件测试,三、
11、软件测试技术与方法 2、白盒测试方法与测试用例设计 原则: (1)保证所测模块中每一独立路径至少执行一次 (2)保证所测模块所有判断的每一分支至执行一次 (3)保证所测模块每一循环都在边界条件和一般条件下至少各执行一次 (4)验证所有内部数据结构的有效性,第四节 软件测试,三、软件测试技术与方法 2、白盒测试方法与测试用例设计 白盒测试是“穷举”路径测试。主要方法有逻辑覆盖、 基本路径测试等。 逻辑覆盖包括:语句覆盖,路径覆盖,判定覆盖, 条件覆盖和判断条件覆盖,第四节 软件测试,三、软件测试技术与方法 3、黑盒测试方法与测试用例设计 黑盒测试也称功能测试或数据驱动测试。 黑盒测试是对软件已经
12、实现的功能是否满足需求进行测 试和验证。黑盒测试完全不考虑程序内部的逻辑结构和 内部特征,只依据程序的需求和功能规格说明,检查程 序的功能是否符合它的功能说明。,第四节 软件测试,三、软件测试技术与方法 3、黑盒测试方法与测试用例设计 黑盒测试只要诊断功能不对或遗漏、界面错误、数据结 构或外部数据访问错误、性能错误、初始化或终止条件 错误。 主要方法有:等价类划分法、边界值分析法、错误推测 法、因果图等,主要用于软件确认测试。,第四节 软件测试,四、软件测试的实施 软件测试是保证软件质量的重要手段,分四个步骤: (1)单元测试 (2)集成测试 (3)验收测试(确认测试) (4)系统测试,第四节
13、 软件测试,四、软件测试的实施 1、单元测试 是针对软件设计的最小单位模块进行正确性检验的 测试。 单元测试的目的是发现各模块内部存在的各种错误。 单元测试可以采用静态分析和动态测试,动态测试以白 盒测试为主,辅之以黑盒测试。,第四节 软件测试,四、软件测试的实施 2、集成测试 集成测试是测试和组装软件的过程。它是把模块在按照 设计要求组装起来的同时进行测试,主要目的是发现与 接口有关的错误。 集成测试时将模块组装成程序通常采用两种方式: 非增量方式组装与增量方式组装。,第四节 软件测试,四、软件测试的实施 2、集成测试 非增量方式组装也称为一次性组装方式 增量方式组装是将已经测试好的模块逐步
14、组装成较大 系统,第四节 软件测试,四、软件测试的实施 3、验收测试(确认测试) 确认测试的任务是验证软件的功能和性能及其他特征是 否满足了需求规格说明书中确定的各种需求,以及软件 配置是否完全、正确。,第四节 软件测试,四、软件测试的实施 4、系统测试 系统测试是将通过确认测试的软件,作为基于整个计算 机系统的一个元素,与计算机硬件、外设、支持软件、 数据和人员等其他系统元素组合在一起,在实际运行 (使用)环境下对计算机系统进行一系列的集成测试 和确认测试。,第五节 程序的调试,程序调试的任务是诊断和改正程序中的错误。 软件测试是尽可能多地发现软件中的错误。 先要发现软件中的错误,然后借助于一系列的调试工具 去执行找出软件错误的具体位置。 软件测试贯穿于软件生命期,调试主要在开发阶段。,第五节 程序的调试,程序调试由两部分构成: (1)根据错误的迹象确定程序中错误的确切性质、原因和位置。 (2)对程序进行修改,排除这个错误。,第五节 程序的调试,1、程序调试的基本步骤 (1)错误定位 (2)修改设计和代码,以排除错误 (3)进行回归调试,防止引进新错误,第五节 程序的调试,2、程序调试方法 (1)强行排错法 (2)回溯法 (3)原因排除法,