《《软件工程基础》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《软件工程基础》PPT课件.ppt(33页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、软件工程基础软件工程基础1.1 1.1 软件的概念软件的概念 软件是计算机系统中与硬件相互依存的另软件是计算机系统中与硬件相互依存的另一部分,它包括程序、相关数据及其说明文档。一部分,它包括程序、相关数据及其说明文档。其中,程序是按照事先设计的功能和性能要求其中,程序是按照事先设计的功能和性能要求执行的指令序列;数据是使程序能正常操纵信执行的指令序列;数据是使程序能正常操纵信息的数据结构;文档是与程序开发维护和使用息的数据结构;文档是与程序开发维护和使用相关的各种图文资料。相关的各种图文资料。1 1 软件的基本概念软件的基本概念软件的特点软件的特点:1 1)软件是一种逻辑实体,具有抽象性;)软
2、件是一种逻辑实体,具有抽象性;2 2)软件没有明显的制造过程;)软件没有明显的制造过程;3 3)软件在使用过程中,没有磨损、老化的问题;)软件在使用过程中,没有磨损、老化的问题;4 4)软件对硬件和环境有着不同程度的依赖性;)软件对硬件和环境有着不同程度的依赖性;5 5)软件是复杂的,而且以后会更复杂;)软件是复杂的,而且以后会更复杂;6 6)软件的成本相当昂贵;)软件的成本相当昂贵;7 7)软件工作牵涉到很多社会因素。)软件工作牵涉到很多社会因素。1.2 1.2 软件危机软件危机 软件危机是指在计算机软件的开发和维护软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。包含两方面
3、过程中所遇到的一系列严重问题。包含两方面的问题:的问题:一是如何开发软件,以满足不断增长,日一是如何开发软件,以满足不断增长,日趋复杂的需求;二是如何维护数量不断膨胀的趋复杂的需求;二是如何维护数量不断膨胀的软件产品。软件产品。软件危机的主要表现:软件危机的主要表现:1 1)对软件开发成本和进度的估计不准确;)对软件开发成本和进度的估计不准确;2 2)用户对)用户对“已完成已完成”系统不满意的现象经常系统不满意的现象经常发生;发生;3 3)软件产品的质量往往不可靠;)软件产品的质量往往不可靠;4 4)软件的可维护程度非常低;)软件的可维护程度非常低;5 5)软件的成本不断提高;)软件的成本不断
4、提高;6 6)软件开发生产率的提高赶不上硬件的发展)软件开发生产率的提高赶不上硬件的发展和人们需求的增长。和人们需求的增长。1.3 1.3 软件工程软件工程 软件工程包括软件工程包括软件开发技术软件开发技术和和软件工程管软件工程管理理。软件开发技术包括软件开发方法学、开发。软件开发技术包括软件开发方法学、开发过程、软件工具和软件工程环境。软件工程管过程、软件工具和软件工程环境。软件工程管理包括软件管理学、软件工程经济学、软件心理包括软件管理学、软件工程经济学、软件心理学等。软件工程的目标是:在给定成本、进理学等。软件工程的目标是:在给定成本、进度的前提下,开发出具有有效性、可靠性、可度的前提下
5、,开发出具有有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性且满足用户需移植性、可追踪性和可互操作性且满足用户需求的产品。求的产品。1.4 1.4 软件生命周期软件生命周期 通常,将软件产品从提出、实现、使用维通常,将软件产品从提出、实现、使用维护到停止使用的过程称为软件生命周期。一般护到停止使用的过程称为软件生命周期。一般包括可行性研究与需求分析、设计、实现、测包括可行性研究与需求分析、设计、实现、测试、交付使用以及维护等几个阶段。试、交付使用以及维护等几个阶段。1.5 1.5 软件开发工具与软件环境软件开发工具与
6、软件环境 软件开发工具对过程和方法提供了自动的软件开发工具对过程和方法提供了自动的或半自动的支持。当这些工具被集成起来使一或半自动的支持。当这些工具被集成起来使一个工具产生的信息可以被另一个工具使用时,个工具产生的信息可以被另一个工具使用时,一个支持软件开发的系统就建立起来了,称为一个支持软件开发的系统就建立起来了,称为计算机辅助软件工程(计算机辅助软件工程(CASECASE)。)。CASECASE集成了软集成了软件、硬件和一个软件工程数据库,从而创建了件、硬件和一个软件工程数据库,从而创建了一个软件工程开发环境。一个软件工程开发环境。2.1 2.1 结构化分析方法结构化分析方法 结构化分析方
7、法(结构化分析方法(SASA)是面向数据流进行)是面向数据流进行需求分析的方法。采用需求分析的方法。采用“抽象抽象”和和“分解分解”两两个基本手段,用抽象模型的概念,按照软件内个基本手段,用抽象模型的概念,按照软件内部数据传递、变换的关系,由顶向下逐层分解,部数据传递、变换的关系,由顶向下逐层分解,直到找到满足功能需要的所有可实现的软件元直到找到满足功能需要的所有可实现的软件元素为止。素为止。2 2 结构化分析方法结构化分析方法2.2 2.2 数据流图数据流图(DFD)(DFD)数据流图是从数据传递和加工的角度,来描数据流图是从数据传递和加工的角度,来描述数据流从输入到输出的移动变换过程的图形
8、化述数据流从输入到输出的移动变换过程的图形化技术,是一种图形化的系统模型,表示信息系统技术,是一种图形化的系统模型,表示信息系统的主要需求,即输入、输出、过程和数据存储。的主要需求,即输入、输出、过程和数据存储。典型的数据流图有两种:典型的数据流图有两种:变换型和事务型变换型和事务型。数据。数据流图中的基本元素有:外部实体(方框)、数据流图中的基本元素有:外部实体(方框)、数据流(单项箭头)、加工(椭圆)和数据存储(双流(单项箭头)、加工(椭圆)和数据存储(双横线)。横线)。百货商店业务管理系统数据流程图百货商店业务管理系统数据流程图顾客顾客商店业务处理商店业务处理供货厂供货厂税务局税务局贷款
9、收据贷款收据贷款贷款订单订单发货票发货票订货单订货单税款税款供货单供货单税单税单2.3 2.3 数据字典数据字典(DD)(DD)数据字典是对数据的信息的集合,是结构数据字典是对数据的信息的集合,是结构化分析的核心。他对数据流图中的各个元素做化分析的核心。他对数据流图中的各个元素做完整的定义和说明,是数据流图的补充工具,完整的定义和说明,是数据流图的补充工具,它通常包括几个方面的信息:名称、别名、何它通常包括几个方面的信息:名称、别名、何处使用处使用/如何使用、内容描述和补充信息数据如何使用、内容描述和补充信息数据流图和数据字典共同构成系统的逻辑模型。流图和数据字典共同构成系统的逻辑模型。2.4
10、 2.4 软件需求规格说明书软件需求规格说明书 软件需求规格说明书是需求分析阶段的最后结软件需求规格说明书是需求分析阶段的最后结果。软件需求包括:功能需求、性能需求、环境需果。软件需求包括:功能需求、性能需求、环境需求、可靠性需求、安全保密需求、用户界面需求、求、可靠性需求、安全保密需求、用户界面需求、资源使用需求、成本消耗需求和开发进度需求。软资源使用需求、成本消耗需求和开发进度需求。软件需求规格说明书包含内容如下:件需求规格说明书包含内容如下:概述(任务概述)概述(任务概述)数据描述数据描述 功能要求功能要求 性能需求性能需求 参考文献目录参考文献目录 附录附录举例举例l计算机中的软件包括
11、计算机中的软件包括_。程序、数据和文档程序、数据和文档l软件工程的方法得以实施的主要保证是软件工程的方法得以实施的主要保证是_。A.A.软件用户的参与软件用户的参与 B.B.开发人员的素质开发人员的素质C.C.硬件环境硬件环境 D.D.软件开发工具和环境软件开发工具和环境l软件工程研究的主要内容是软件开发技术和软件工程研究的主要内容是软件开发技术和_两个方两个方面。面。软件工程管理软件工程管理l结构化分析的基本思想是采用结构化分析的基本思想是采用_的方法,能有效的控制的方法,能有效的控制系统开发的复杂性。系统开发的复杂性。自顶向下逐层分解自顶向下逐层分解l数据字典是软件需求分析阶段的重要工具之
12、一,其基本功数据字典是软件需求分析阶段的重要工具之一,其基本功能是能是_。A.A.数据通信数据通信 B.B.数据库设计数据库设计 C.C.数据维护数据维护 D.D.数据定义数据定义l在下列文档中,属于结构化分析阶段的文档有在下列文档中,属于结构化分析阶段的文档有_。A.A.软件设计说明书软件设计说明书 B.B.可行性分析报告可行性分析报告 C.C.项目计划项目计划 D.D.需求规格说明需求规格说明3.1 3.1 结构化设计方法结构化设计方法 结构化设计方法(结构化设计方法(SDSD)就是采用最佳)就是采用最佳的可能方法设计系统的各个组成部分以及的可能方法设计系统的各个组成部分以及各成分内部联系
13、的技术。软件设计分两步各成分内部联系的技术。软件设计分两步完成:总体设计和详细设计。结构化设计完成:总体设计和详细设计。结构化设计是一种面向数据流的设计方法,可以与是一种面向数据流的设计方法,可以与SASA方法衔接。方法衔接。总体设计总体设计 详细设计详细设计3 3 结构化设计方法结构化设计方法3.2 3.2 总体设计总体设计总体设计的基本任务:总体设计的基本任务:基于功能层次结构建立系统;基于功能层次结构建立系统;采用某种设计方法,将系统按功能划分成模采用某种设计方法,将系统按功能划分成模块的层次结构;块的层次结构;确定每个模块的功能;确定每个模块的功能;建立与已确定的软件需求的对应关系;建
14、立与已确定的软件需求的对应关系;确定模块间的调用关系;确定模块间的调用关系;确定模块间的接口,即模块之间传递的信息;确定模块间的接口,即模块之间传递的信息;评估模块划分的质量。评估模块划分的质量。软件设计的基本原理软件设计的基本原理1 1)模块化)模块化2 2)抽象)抽象3 3)信息隐蔽)信息隐蔽4 4)模块独立性)模块独立性软件的结构软件的结构 软件的结构是一种层次化的表示,它指出了各软件的结构是一种层次化的表示,它指出了各个模块之间的关系。个模块之间的关系。深度深度:表示从根模块到最低层模块的层数。表示从根模块到最低层模块的层数。宽度:宽度:表示控制的总分布。表示控制的总分布。扇出数:扇出
15、数:由一个模块直接控制的其它模块数。由一个模块直接控制的其它模块数。扇入数:扇入数:有多少模块直接控制一个给定的模块。有多少模块直接控制一个给定的模块。上级模块:上级模块:控制其它模块的模块。控制其它模块的模块。从属模块:从属模块:被另一模块控制的模块。被另一模块控制的模块。总体设计的优化准则:总体设计的优化准则:1 1)改进软件结构,提高模块独立性;)改进软件结构,提高模块独立性;2 2)模块的规模要适中;)模块的规模要适中;3 3)模块的作用范围应该保持在模块的控制范围)模块的作用范围应该保持在模块的控制范围内;内;4 4)软件结构的深度、宽度、扇入、扇出要适当;)软件结构的深度、宽度、扇
16、入、扇出要适当;5 5)降低模块接口的复杂度;)降低模块接口的复杂度;6 6)设计单入口单出口的模块;)设计单入口单出口的模块;7 7)模块的功能可预测。)模块的功能可预测。3.3 3.3 详细设计详细设计l从软件开发的工程化观点来看,在使用程序从软件开发的工程化观点来看,在使用程序设计语言编制程序以前,需要对所采用算法设计语言编制程序以前,需要对所采用算法的逻辑关系进行分析,设计出全部必要的过的逻辑关系进行分析,设计出全部必要的过程细节,并给予清晰的表达。在过程设计阶程细节,并给予清晰的表达。在过程设计阶段,要决定各个模块的实现算法并精确地表段,要决定各个模块的实现算法并精确地表达这些算法。
17、达这些算法。详细设计的任务详细设计的任务1 1)为每个模块确定采用的算法,选择某种适当的工)为每个模块确定采用的算法,选择某种适当的工具表达算法的过程,写出模块详细过程性描述;具表达算法的过程,写出模块详细过程性描述;2 2)对模块内的数据结构进行设计;)对模块内的数据结构进行设计;3 3)确定模块的接口细节。)确定模块的接口细节。详细设计的工具详细设计的工具 表表达过程规格说明的工具叫做详细设计工具,常达过程规格说明的工具叫做详细设计工具,常用的有:程序流程图(用的有:程序流程图(PFDPFD)、)、N-SN-S流程图、问题分流程图、问题分析图(析图(PADPAD图)和语言工具(图)和语言工
18、具(PDLPDL)。)。4.1 4.1 软件测试的目的和准则软件测试的目的和准则1 1)测试是为了发现程序中的错误而去执行)测试是为了发现程序中的错误而去执行的过程;的过程;2 2)一个好的测试用例()一个好的测试用例(test casetest case)在于能)在于能发现至今未发现的错误;发现至今未发现的错误;3 3)一次成功的测试是发现了至今未发现错)一次成功的测试是发现了至今未发现错误的测试。误的测试。测试绝不能证明程序是正确的,测试用测试绝不能证明程序是正确的,测试用于查找程序中的错误,但不能证明程序中没于查找程序中的错误,但不能证明程序中没有错误。有错误。4 4 软件的测试软件的测
19、试4.2 4.2 软件测试方法软件测试方法 软件测试方法和技术可从不同角度分软件测试方法和技术可从不同角度分类。类。按照是否需要执行被测试软件的角度,按照是否需要执行被测试软件的角度,可分为静态测试和动态测试可分为静态测试和动态测试.静态测试静态测试一般是指人工评审软件文档一般是指人工评审软件文档或程序,借以发现其中的错误,由于被评或程序,借以发现其中的错误,由于被评审的文档或程序不必运行,所以称为静态审的文档或程序不必运行,所以称为静态测试。包括代码检查、静态结构分析、代测试。包括代码检查、静态结构分析、代码质量度量等。码质量度量等。动态测试动态测试就是通过运行软件来检验软就是通过运行软件来
20、检验软件中的动态行为和运行结果的正确性,也件中的动态行为和运行结果的正确性,也就是通常所说的上机测试。就是通常所说的上机测试。按照功能,测试可分为白盒测试和黑盒测试。按照功能,测试可分为白盒测试和黑盒测试。白盒测试:白盒测试:也称结构测试也称结构测试或逻辑驱动测试或逻辑驱动测试,它与程序,它与程序内部结构有关,要利用程序结构的实现细节设计测试内部结构有关,要利用程序结构的实现细节设计测试用例。用例。此方法把测试对象看作一个透明的盒子,它允此方法把测试对象看作一个透明的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所
21、有逻辑路径进行测试。计或选择测试用例,对程序所有逻辑路径进行测试。白盒测试的主要方法有逻辑覆盖、基本路径测试等。白盒测试的主要方法有逻辑覆盖、基本路径测试等。逻辑覆盖泛指一系列以程序内部的逻辑结构为基础的逻辑覆盖泛指一系列以程序内部的逻辑结构为基础的测试用例设计技术。基本路径测试是指根据软件过程测试用例设计技术。基本路径测试是指根据软件过程性描述中的控制流程确定程序的环路复杂性度量,用性描述中的控制流程确定程序的环路复杂性度量,用此度量定义基本路径集合,并由此导出一组测试用例此度量定义基本路径集合,并由此导出一组测试用例对每一条独立路径进行测试。对每一条独立路径进行测试。黑盒测试:黑盒测试:也
22、称功能测试也称功能测试或数据驱动测试或数据驱动测试,测试时不,测试时不考虑程序内部结构和实现方式,仅检验程序结果与说考虑程序内部结构和实现方式,仅检验程序结果与说明书的一致性。黑盒测试不关心程序内部的逻辑,明书的一致性。黑盒测试不关心程序内部的逻辑,而而只是根据程序的功能来说明测试用例。只是根据程序的功能来说明测试用例。黑盒测试的主要方法有等价类划分法、边界值分析法黑盒测试的主要方法有等价类划分法、边界值分析法和错误推测法。和错误推测法。逻辑覆盖泛指一系列以程序内部的逻辑结构为基础的逻辑覆盖泛指一系列以程序内部的逻辑结构为基础的测试用例设计技术。基本路径测试是指根据软件过程测试用例设计技术。基
23、本路径测试是指根据软件过程性描述中的控制流程确定程序的环路复杂性度量,用性描述中的控制流程确定程序的环路复杂性度量,用此度量定义基本路径集合,并由此导出一组测试用例此度量定义基本路径集合,并由此导出一组测试用例对每一条独立路径进行测试。对每一条独立路径进行测试。4.3 4.3 软件测试的实施软件测试的实施测试过程按测试过程按4 4个步骤进行,即单元测试、集成个步骤进行,即单元测试、集成测试、确认测试和系统测试。测试、确认测试和系统测试。单元测试:单元测试:集中对用源代码实现的每个程集中对用源代码实现的每个程序单元进行测试,检查各个程序模块是否正确序单元进行测试,检查各个程序模块是否正确地实现了
24、规定的功能。地实现了规定的功能。集成测试:集成测试:把已测试过的模块组装起来,把已测试过的模块组装起来,主要对与设计相关的软件体系结构的构造进行主要对与设计相关的软件体系结构的构造进行测试。增量测试(自底向上,自顶向下,两者测试。增量测试(自底向上,自顶向下,两者结合),非增量测试结合),非增量测试 确认测试:确认测试:是要检查已实现的软件是否满是要检查已实现的软件是否满足了需求规格说明中确定了的各处需求,以及足了需求规格说明中确定了的各处需求,以及软件配置是否完全、正确。软件配置是否完全、正确。系统测试:系统测试:是把通过确认测试的软件作为是把通过确认测试的软件作为整个基于计算机系统的一个元
25、素,与计算机硬整个基于计算机系统的一个元素,与计算机硬件、外设、某此支持软件、数据和人员等其他件、外设、某此支持软件、数据和人员等其他系统元素结合在一起,在实际运行环境下,对系统元素结合在一起,在实际运行环境下,对计算机系统进行一系列的集成测试和确认测试。计算机系统进行一系列的集成测试和确认测试。举例举例l软件设计遵循软件工程的基本目标,即模块化、模块独立软件设计遵循软件工程的基本目标,即模块化、模块独立性、信息隐蔽和性、信息隐蔽和_。抽象抽象l面向数据流的设计方法中,一般将信息流分为面向数据流的设计方法中,一般将信息流分为_。A.A.数据流和控制流数据流和控制流 B.B.交换流和控制流交换流
26、和控制流C.C.交换流和事物流交换流和事物流 D.D.数据流和事物流数据流和事物流l软件测试可分为单元测试、集成测试、确认测试和软件测试可分为单元测试、集成测试、确认测试和_。系统测试系统测试l对软件是否达到用户所期望的要求测试是对软件是否达到用户所期望的要求测试是_。A.A.集成测试集成测试 B.B.系统测试系统测试 C.C.验收测试验收测试 D.D.有效性测视有效性测视l模块划分的指导思想是信息隐蔽和模块划分的指导思想是信息隐蔽和_。模块独立性模块独立性l软件测试的目的是软件测试的目的是_。A.A.证明软件的正确性证明软件的正确性 B.B.发现软件中的所有错误发现软件中的所有错误C.C.尽
27、可能多的发现软件系统中的错误尽可能多的发现软件系统中的错误 D.D.证明软件中存在证明软件中存在错误错误5.1 5.1 调试的概念调试的概念 在对程序进行成功测试之后将进行程序调在对程序进行成功测试之后将进行程序调试(通常称为试(通常称为DebugDebug,即排错)。,即排错)。程序调试的程序调试的任务是诊断和改正程序中的错误。任务是诊断和改正程序中的错误。程序调试与程序调试与软件测试不同,软件测试是尽可能多的发现软软件测试不同,软件测试是尽可能多的发现软件中的错误,发现错误后,程序调试借助于一件中的错误,发现错误后,程序调试借助于一定的调试工具去找出软件错误的具体位置,并定的调试工具去找出
28、软件错误的具体位置,并改正错误。改正错误。5 5 程序的调试程序的调试程序调试的基本步骤程序调试的基本步骤1 1)错误定位;)错误定位;2 2)修改设计和代码,以排除错误;)修改设计和代码,以排除错误;3 3)进行回归测试,防止引入新的错误。)进行回归测试,防止引入新的错误。调试原则调试原则1 1)确定错误的性质和位置的原则;)确定错误的性质和位置的原则;2 2)修改错误的原则;)修改错误的原则;5.2 5.2 软件调试的方法软件调试的方法1 1)强行排错法;)强行排错法;2 2)回溯法排错;)回溯法排错;3 3)归纳法排错;)归纳法排错;4 4)演绎法排错。)演绎法排错。举例举例l软件调试在
29、软件生命周期的软件调试在软件生命周期的_阶段进行。阶段进行。开发开发l软件调试的目的在于软件调试的目的在于_。A.A.发现错误发现错误 B.B.更改错误更改错误C.C.提高软件的性能提高软件的性能 D.D.测试软件的功能测试软件的功能l软件调试的方法有强行排除法、回溯法、演绎法和软件调试的方法有强行排除法、回溯法、演绎法和_。归纳法归纳法l软件调试应该由软件调试应该由_来完成。来完成。A.A.与源程序无关的程序员与源程序无关的程序员 B.B.不了解软件计划的机构不了解软件计划的机构C.C.源程序的编制人员源程序的编制人员 C.C.设计该软件的机构设计该软件的机构l集成测试分为两个具体方法,它们是集成测试分为两个具体方法,它们是_。A.A.非增量方式与增量方式非增量方式与增量方式 B.B.白盒法和黑盒法白盒法和黑盒法 C.C.确认测试和系统测试确认测试和系统测试 D.D.归纳法和演绎法归纳法和演绎法