1、第 3 章 软 件 工 程,3.1 软件工程的基本概念 3.2 结构化分析方法 3.3 软件设计 3.4 软件测试 3.5 程序的调试,3.1 软件工程的基本概念,软件:与计算机系统的操作有关的计算机程序、规程、文件、文档、数据。软件工程的定义:软件工程是应用于计算机软件的定义、开发和维护的一套方法、工具、文档实践标准和工序。软件工程是指导计算机软件开发和维护的一门学科,它应用计算机科学、数学和管理科学等原理,以及借鉴传统工程的原则和方法,来创建软件,从而达到提高质量、降低成本的目的。,软件工程的三要素:方法、工具、过程软件工程的过程:指把输入转化为输出的一组彼此相关的资源和活动。 软件生命周
2、期:指将软件产品从提出、实现、使用维护到停止使用的过程,软件工程的目标软件工程的原则软件开发工具及环境,3.2 结构化分析方法,3.2.1 结构化分析方法概述传统软件工程中的需求分析方法主要包括原型化分析方法和结构化分析方法等。结构化分析方法是结构化程序设计理论在软件需求分析阶段的运用。结构化分析方法的实质是基于数据流,自顶向下,逐层分解,建立系统的处理流程。,3.2.2 结构化分析的常用工具,(1) 数据流图 数据流图的基本符号,图3-2 工资计算系统的顶层数据流图,数据流与加工中常见关系的符号表示,(2)数据字典 数据字典中的基本符号及其含义,(3)判定树(4)判定表,3.2.3 软件需求
3、规格说明书需求规格说明书应包括如下主要内容:1)概述 2)数据描述 3)功能描述 4)性能描述 5)参考文献 6)附录,3.3 结构化设计方法,软件设计可以采用多种方法,如结构化设计方法、面向数据结构的设计方法、面向对象的设计方法等。结构化软件设计可以分为总体设计和详细设计两个阶段。,3.3.1总体设计,1总体设计阶段的主要任务及其内容总体设计阶段的主要任务是把系统的功能需求分配给软件结构,形成软件的模块结构图,如图所示。,2总体设计的表示形式及其内容(结构图),产生最佳解的一般结构,3面向数据流的设计方法 (1)变换型数据流图,(2)事物型数据流图,事物型数据流图,3.3.2 详细设计详细设
4、计以总体设计阶段的工作为基础,但又不同于总体设计阶段,主要表现为以下两个方面。 (1)在总体设计阶段,数据项和数据结构以比较抽象的方式描述。 (2)详细的设计模块包含实现对应的总体设计模块所需要的处理逻辑,主要有:详细的算法,数据表示和数据结构,实施的功能和使用的数据之间的关系。 常用的过程设计工具如下:,3种基本的控制结构,1程序流程图(PFD),N-S图的基本符号,2N-S图,PAD图的基本符号,3PAD图,3.4 软 件 测 试,3.4.1 软件测试方法 1白盒测试白盒测试又称为结构测试或逻辑驱动测试,此方法是将测试对象比作一个打开的盒子,它允许测试人员利用程序内部的逻辑结构和相关信息来
5、设计或选择测试用例,对穿过软件的逻辑路径进行测试,可以在不同点检查程序的状态,以确定实际状态与预期状态是否一致。,2黑盒测试黑盒测试方式是在已知产品应该具有的功能的情况下,通过测试来检验是否每个功能都能正常使用的测试方法。,3.4.2 测试用例的设计 1白盒测试的测试用例设计 (1)语句覆盖 选择足够的测试用例使得程序中每个语句至少都能被执行一次。,语句覆盖,(2)判定覆盖判定覆盖就是设计若干个测试用例,运行所测程序,使得程序中每个判断的取真分支和取假分支至少经历一次。(3)条件覆盖条件覆盖就是设计若干个测试用例,运行所测程序,使得程序中每个判断的每个条件的可能取值至少执行一次。,(4)判定/
6、条件覆盖判定/条件覆盖就是设计足够的测试用例,使得判断中每个条件的所有可能取值至少执行一次,同时每个判断的所有可能判断结果至少执行一次。即要求各个判断的所有可能的条件取值组合至少执行一次。 (5)路径覆盖执行足够的测试用例,使程序中所有可能的路径都至少经历一次。,2黑盒测试的测试用例设计 (1)等价分类法等价分类法是一种黑盒测试技术。它的基本思想是把输入数据划分成若干个等价类,在每个等价类中选取一组作为该等价类的测试用例。 (2)边界值分析法对各种输入、输出范围的边界情况设计测试用例的方法。 (3)错误猜测法推测程序中可能存在的各种错误,从而有针对的编写检查错误的例子。,3测试方案的建立与实施
7、 软件测试过程的一般步骤:(1)单元测试(2)集成测试(3)验收测试(4)系统测试 功能测试 性能测试 操作测试 配置测试 外部接口测试 安全测试,3.5 程序的调试,3.5.1 静态调试3.5.2 动态调试,典型考题分析,(1)下面不属于软件工程的3个要素的是_。 A. 工具 B. 过程 C. 方法 D. 环境,答案 : D,(2)在结构化方法中,用数据流程图(DFD)作为描述工具的软件开发阶段是_。 A. 可行性分析 B. 需求分析 C. 详细设计 D. 程序编码,答案 : B,(3)程序流程图(PFD)中的箭头代表的是_。 A. 数据流 B. 控制流 C. 调用关系 D. 组成关系,答案
8、 : B,(4)在软件开发中,下面任务不属于设计阶段的是_。 A. 数据结构设计 B. 给出系统模块结构 C. 定义模块算法 D. 定义需求并建立系统模型,答案 :D,(5)面向对象的设计方法与传统的的面向过程的方法有本质不同,它的基本原理是_。 A. 模拟现实世界中不同事物之间的联系 B. 强调模拟现实世界中的算法而不强调概念 C. 使用现实世界的概念抽象地思考问题从而自然地解决问题 D. 鼓励开发者在软件开发的绝大部分中都用实际领域的概念去思考,答案 :C,(6)在结构化方法中,软件功能分解属于下列软件开发中的阶段是_。 A. 详细设计 B. 需求分析 C. 总体设计 D. 编程调试,答案
9、 :C,(7)软件调试的目的是_。 A. 发现错误 B. 改正错误 C. 改善软件的性能 D. 挖掘软件的潜能,答案 :B,(8)下列不属于软件调试技术的是_。 A. 强行排错法 B. 集成测试法 C. 回溯法 D. 原因排除法,答案 :B,(9)下列叙述中,不属于软件需求规格说明书的作用的是_。 A. 便于用户、开发人员进行理解和交流 B. 反映出用户问题的结构,可以作为软件开发工作的基础和依据 C. 作为确认测试和验收的依据 D. 便于开发人员进行需求分析,答案 :D,(10)需求分析阶段的任务是确定_。 A. 软件开发方法 B. 软件开发工具 C. 软件开发费用 D. 软件系统功能,答案
10、 :D,(11)下列不属于结构化分析的常用工具的是_。 A. 数据流图 B. 数据字典 C. 判定树 D. PAD图,答案 :D,(12)在软件工程中,白箱测试法可用于测试程序的内部结构。此方法将程序看做是_。 A. 循环的集合 B. 地址的集合 C. 路径的集合 D. 目标的集合,答案 :C,(13)下面不属于软件设计原则的是_。 A. 抽象 B. 模块化 C. 自底向上 D. 信息隐蔽,答案 :C,(14)数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构成。下列图符名标识的图符不属于数据流图合法图符的是_。 A. 控制流 B. 加工 C. 数据存储 D. 源和潭,答案 :A,(15)软件工程研究的内容主要包括:_技术和软件工程管理。,答案 :软件开发,