《第三章软件工程基础课件》由会员分享,可在线阅读,更多相关《第三章软件工程基础课件(32页珍藏版)》请在金锄头文库上搜索。
1、全国计算机等级考试公共基础知识,第3章 软件工程基础,3.1 软件工程基本概念 1、软件的相关概念 计算机软件是包括程序、数据及相关文档的完整集合。 软件的特点包括: 软件是一种逻辑实体; 软件的生产与硬件不同,它没有明显的制作过程; 软件在运行、使用期间不存在磨损、老化问题;,软件的开发、运行对计算机系统具有依赖性,受计算机系统的限制,这导致了软件移植的问题; 软件复杂性高,成本昂贵; 软件开发涉及诸多的社会因素。 软件分类: 软件按功能分为应用软件、系统软件、支撑软件(或工具软件)。,2、软件危机与软件工程,所谓软件危机是泛指在计算机软件的开发和维护过程中所遇到的一系列严重问题。软件危机可
2、以归结为成本、质量、生产率等问题。 软件工程源自软件危机。 软件工程是应用于计算机软件的定义、开发和维护的一整套方法、工具、文档、实践标准和工序。,软件工程的主要思想是将工程化原则运用到软件开发过程,它包括3个要素:方法、工具和过程。 软件工程过程包含4种基本活动:(1)P(Plan)软件规格说明。规定软件的功能及其运行时的限制。 (2)D(Do)软件开发。产生满足规格说明的软件。 (3)C(Check)软件确认。确认软件能够满足用户提出的要求。(4)A(Action)软件演进。为满足客户的变更要求,软件必须在使用的过程中演进。,软件生命周期:软件产品从提出、实现、使用维护到停止使用退役的过程
3、。 软件生命周期三个阶段: 软件定义 软件开发 运行维护,3、软件生命周期,软件生命周期的主要活动阶段如下图:,可行性研究,初步项目计划,需求分析,概要设计,详细设计,实现,测试,维护,使用,退役,定义,阶段,开发,阶段,维护,阶段,4、软件工程的目标和与原则 (1)软件工程目标:在给定成本、进度的前提下,开发出具有有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性且满足用户需求的产品。 (2)软件工程需要达到的基本目标应是:付出较低的开发成本;达到要求的软件功能;取得较好的软件性能;开发的软件易于移植;需要较低的维护费用;能按时完成开发,及时交付使用。 (
4、3)软件工程原则:抽象、信息隐蔽、模块化、局部化、确定性、一致性、完备性和可验证性。,5、软件开发工具与软件开发环境 (1)软件开发工具 软件开发工具的完善和发展将促使软件开发方法的进步和完善,促进软件开发的高速度和高质量。软件开发工具的发展是从单项工具的开发逐步向集成工具发展的,软件开发工具为软件工程方法提供了自动的或半自动的软件支撑环境。 (2)软件开发环境 软件开发环境(或称软件工程环境)是全面支持软件开发全过程的软件工具的集合。 计算机辅助软件工程(CASE,Computer Aided Software Engineering)将各种软件工具、开发机器和一个存放开发过程信息的中心数据
5、库组合起来,形成软件工程环境。它将极大降低软件开发的技术难度并保证软件开发的质量。,3.2 结构化分析方法 结构化方法的核心和基础是结构化程序设计理论。 1、需求分析 需求分析方法有: (1)结构化需求分析方法; (2)面向对象的分析方法。 需求分析的任务就是导出目标系统的逻辑模型,解决“做什么”的问题。 需求分析一般分为需求获取、需求分析、编写需求规格说明书和需求评审四个步骤进行。,2 结构化分析方法 结构化分析方法是结构化程序设计理论在软件需求分析阶段的应用。 结构化分析方法的实质:着眼于数据流,自顶向下,逐层分解,建立系统的处理流程,以数据流图和数据字典为主要工具,建立系统的逻辑模型。
6、结构化分析的常用工具: (1)数据流图; (2)数据字典; (3)判定树; (4)判定表。,2 结构化分析方法 数据流图:描述数据处理过程的工具,是需求理解的逻辑模型的图形表示,它直接支持系统功能建模。 下图是数据流图的基本图形元素:,数据流图 下图是一个数据流图的示例:,数据字典: 对所有与系统相关的数据元素的一个有组织的列表,以及精确的、严格的定义,使得用户和系统分析员对于输入、输出、存储成分和中间计算结果有共同的理解。 数据字典的作用是对数据流图中出现的被命名的图形元素的确切解释。 数据字典是结构化分析方法的核心。,判定树:从问题定义的文字描述中分清哪些是判定的条件,哪些是判定的结论,根
7、据描述材料中的连接词找出判定条件之间的从属关系、并列关系、选择关系,根据它们构造判定树。 判定表:与判定树相似,当数据流图中的加工要依赖于多个逻辑条件的取值,即完成该加工的一组动作是由于某一组条件取值的组合而引发的,使用判定表描述比较适宜。,3、软件需求规格说明书,软件需求规格说明书是需求分析阶段的最后成果,是软件开发中的重要文档之一。 软件需求规格说明书的特点: (1)正确性; (2)无歧义性; (3)完整性; (4)可验证性; (5)一致性; (6)可理解性; (7)可追踪性。,3.3 结构化设计方法,1、软件设计的基础 需求分析主要解决“做什么”的问题,而软件设计主要解决“怎么做”的问题
8、。 软件设计主要内容包括: 软件结构设计、数据设计、接口设计、过程设计。(按技术观点划分) 软件设计分两步完成,即概要设计和详细设计。(按工程管理角度划分),3.3 结构化设计方法,1、软件设计的基础 软件设计的基本原理包括:抽象、模块化、信息隐蔽和模块独立化。 模块的耦合性和内聚性是衡量软件的模块独立性的两个定性指标。 内聚性:是一个模块内部各个元素间彼此结合的紧密程度的度量。 耦合性:是模块间互相连接的紧密程度的度量。 一个设计良好的软件系统应具有高内聚、低耦合的特征。,2、总体设计(概要设计)和详细设计,(1)总体设计(概要设计) 软件概要设计的基本任务是: 1)设计软件系统结构; 2)
9、数据结构及数据库设计; 3)编写概要设计文档; 4)概要设计文档评审。 常用的软件结构设计工具是结构图,也称程序结构图。 经常使用的结构图有四种模块类型:传入模块、传出模块、变换模块和协调模块。,(1)总体设计(概要设计),程序结构图的基本图符: 模块用一个矩形表示,箭头表示模块间的调用关系。在结构图中还可以用带注释的箭头表示模块调用过程中来回传递的信息。还可用带实心圆的箭头表示传递的是控制信息,空心圆箭心表示传递的是数据信息。,程序结构图的有关术语,深度:表示控制的层数。 上级模块、从属模块:上、下两层模块a和b,且有a调用b,则a是上级模块,b是从属模块。 宽度:整体控制跨度(最大模块数的
10、层)的表示。 扇入:调用一个给定模块的模块个数。 扇出:一个模块直接调用的其他模块数。 原子模块:树中位于叶子结点的模块。,结构图的基本形式:基本形式、顺序形式、重复形式、选择形式。 面向数据流的设计方法: 面向数据流的设计就是将数据流图变换成结构图。 典型的数据流类型有两种:变换型和事务型。变换型系统结构图由输入、中心变换、输出三部分组成。事务型数据流的特点是:接受一项事务,根据事务处理的特点和性质,选择分派一个适当的处理单元,然后给出结果。,(2)详细设计,详细设计是为软件结构图中的每一个模块确定实现算法和局部数据结构,用某种选定的表达工具表示算法和数据结构的细节。 详细设计的任务是确定实
11、现算法和局部数据结构,不同于编码或编程。常用的过程设计(即详细设计)工具有以下几种: 图形工具:程序流程图、N-S(方盒图)、PAD(问题分析图)和HIPO(层次图+输入/处理/输出图)。 表格工具:判定表。 语言工具:PDL(伪码):过程设计语言,它是用正文形式表示数据和处理过程的设计工具。,3.4 软件测试,1、软件测试定义:使用人工或自动手段来运行或测定某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。软件测试的目的:尽可能地多发现程序中的错误,不能也不可能证明程序没有错误。 2、软件测试方法:静态测试和动态测试。静态测试包括代码检查、静态结构分析、
12、代码质量度量。不实际运行软件,主要通过人工进行。动态测试:是基于计算机的测试,主要包括白盒测试方法和黑盒测试方法。,(1)白盒测试,白盒测试方法也称为结构测试或逻辑驱动测试。它是根据软件产品的内部工作过程,检查内部成分,以确认每种内部操作符合设计规格要求。 白盒测试的基本原则:保证所测模块中每一独立路径至少执行一次;保证所测模块所有判断的每一分支至少执行一次;保证所测模块每一循环都在边界条件和一般条件下至少各执行一次;验证所有内部数据结构的有效性。 白盒测试法的测试用例是根据程序的内部逻辑来设计的,主要用软件的单元测试,主要方法有逻辑覆盖、基本路径测试等。,(2)黑盒测试,黑盒测试方法也称为功
13、能测试或数据驱动测试。黑盒测试是对软件已经实现的功能是否满足需求进行测试和验证。 黑盒测试主要诊断功能不对或遗漏、接口错误、数据结构或外部数据库访问错误、性能错误、初始化和终止条件错误。主要方法有等价类划分法、边界值分析法、错误推测法等。 黑盒测试是程序功能的测试,主要用软件的确认测试。,3、软件测试过程,软件测试过程一般按4个步骤进行: 单元测试 集成测试 验收测试(确认测试) 系统测试 (1)单元测试 单元测试是对软件设计的最小单位模块(程序单元)进行正确性检测的测试。 单元测试的目的是发现各模块内部可能存在的各种错误。,(1)单元测试,单元测试的依据是详细设计说明书和源程序。单元测试的技
14、术可以采用静态分析和动态测试。对动态测试通常以白盒测试为主,辅之以黑盒测试。 在进行单元测试时,要用一些辅助模块去模拟与被测模块相联系的其他模块,即为被测模块设计和搭建驱动模块和桩模块。 驱动模块相当于被测模块的主程序,它接收测试数据,并传给被测模块,输出实际测试结果; 桩模块是模拟其他被调用模块,不必将子模块的所有功能带入。,(2)集成测试,集成测试是测试和组装软件的过程。它是把模块在按照设计要求组装起来的同时进行测试,主要目的是发现与接口有关的错误。 集成测试的依据是总体设计说明书。 集成测试所涉及的内容包括: 软件单元的接口测试 全局数据结构测试 边界条件和非法输入的测试等,(3)确认测
15、试,确认测试的任务是验证软件的功能和性能及其他特性是否满足需求规格说明中确定的各种需求,以及软件配置是否完全、正确。 (4)系统测试 系统测试是将通过确认测试的软件,作为整个基于计算机系统的一个元素,与计算机硬件、外设、支持软件、数据和人员等其他系统元素组合在一起,在实际运行(使用)环境下对计算机系统进行一系列的集成测试和确认测试。,3.5 程序的调试,程序调试的任务是诊断和改正程序中的错误,主要在开发阶段进行。(注意与软件测试区分) 程序调试的基本步骤:(1)错误定位;(2)修改设计和代码,以排除错误;(3)进行回归测试,防止引进新的错误。 软件调试可分为静态调试和动态调试。静态调试主要是指通过人的思维来分析源程序代码和排错,是主要的调试手段,而动态调试是辅助静态调试。 对软件主要的调试方法可以采用:(1)强行排错法;(2)回溯法;(3)原因排除法。,