《程序设计与软件开发基础.doc》由会员分享,可在线阅读,更多相关《程序设计与软件开发基础.doc(10页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第32讲 程序设计与软件开发根底六教学目标及根本要求:理解构造化设计方法,能利用该方法提供的常用工具解决实际问题,掌握测试与调试的概念,了解白盒测试与黑盒测试的概念,能进展简单的测试用例设计与实施,了解静态调试与动态调试。教学重点:测试与调试的根本概念,白盒测试与黑盒测试。 教学难点:面向数据流的设计方法,白盒测试与黑盒测试。教学内容:1构造化设计方法2软件测试及调试教学时间:1学时主要内容: 构造化设计方法1软件设计的根本概念1软件设计的根底v 概念软件设计是软件工程的重要阶段,是一个把软件需求转换为软件表示的过程。v 根本目标软件设计的根本目标是用比拟抽象概括的方式确定目标系统如何完成预定
2、的任务,即软件设计是确定系统的物理模型。 v 步骤从工程管理角度来看,软件设计分两步完成:概要设计与详细设计。 概要设计又称构造设计 :将软件需求转化为软件体系构造、确定系统级接口、全局数据构造或数据库模式 。 详细设计:确立每个模块的实现算法与局部数据构造,用适当方法表示算法与数据构造的细节。 2软件设计的根本原那么 抽象:是一种思维工具,就是把事物本质的共同特性提取出来而不考虑其他细节。 模块化:是指把一个待开发的软件分解成假设干小的简单的局部。 信息隐蔽:是指在一个模块内包含的信息,对于不需要这些信息的其他模块来说是不能访问的。 模块独立性:是指每个模块只写成系统要求的独立的子功能,并且
3、与其他模块的联系最少且接口简单。模块的独立程度是评价设计好坏的重要度量标准。衡量软件的模块独立性使用耦合性与内聚性两个定性的度量标准。一个优秀的软件设计应尽量做到高内聚、低耦合。2概要设计1概要设计的任务 设计软件系统构造:在需求分析阶段,已经把系统分解成层次构造,而在概要设计阶段,需要进一步分解,划分为模块以及模块的层次构造。 数据构造及数据库设计:数据设计是实现需求定义与规格说明过程中提出的数据对象的逻辑表示。 编写概要设计文档:需要编写的文档有概要设计说明书、数据库设计说明书、集成测试方案等。 概要设计文档评审。2概要设计的图形工具常用的软件构造设计工具是构造图SC,也称程序构造图,它描
4、述了软件系统的层次与分块构造关系。模块用一个矩形表示,矩形内注明模块的功能与名字;箭头表示模块间的调用关系。用带实心圆的箭头表示传递的是控制信息,用带空心圆的箭头表示传递的是数据。构造图的有关术语如下。 深度:表示控制的层数。 上级模块、下级模块:调用模块中上级模块,被调用模块是下级模块。 宽度:整体控制跨度最大模块数的层的表示。 扇入:调用一个给定模块的模块个数。 扇出:一个模块直接调用的其他模块数。 原子模块:树中位于叶子节点的模块。3面向数据流的设计方法典型的数据流类型有两种:变换型与事务型。 变换型:是指信息沿输入通道进入系统,同时由外部形式变换成内部形成,进入系统的信息通过变换中心,
5、经加工处理以后再沿输出通路变换成外部形式离开软件系统。 事务型:在很多软件应用中,存在某种作业数据流,它可以引发一个或多个处理,这些处理能够完成该作业要求的功能,这种数据流就叫做事务。4设计的准那么 提高模块独立性。 模块规模适中。 深度、宽度、扇出与扇入适当。 使模块的作用域在该模块的控制域内。 应减少模块的接口与界面的复杂性。 设计成单入口、单出口的模块。 设计功能可预测的模块。3详细设计详细设计的任务是为软件构造图中的每个模块确定实现算法与局部数据构造,用某种选定的表达工具表示算法与数据构造的细节。常用的过程图形设计工具如下。1程序流程图程序流程图是一种传统的、应用广泛的软件过程设计表示
6、工具,通常称为程序框图。程序流程图表达直观、清晰,易于学习掌握,且独立于任何一种程序设计语言。构成程序流程图的最根本图符及含义如下所示。或:控制流:加工步骤:逻辑条件2N-S图为了防止程序图在描述程序逻辑时的随意性与灵活性,提出了用方框图来代替传统的程序流程图,通常把这种图称为N-S图。N-S图的根本图符及表示的5种控制构造如图7-20所示。任务1任务2任务3条件elsethen判定条件循环体循环体判定条件条件=1=2=nABCD 图7-20 N-S图图符与构成的5种控制构造3PAD图PAD图是问题分析图Problem Analysis Diagram的英文缩写,它是继程序流程图与方框图之后,
7、提出的又一种主要用于描述软件详细设计的图形表示工具。PAD图的根本图符及表示的控制构造如图7-21所示。条件AB选择型顺序型BAWHILEAWHILE重复型UNTIL重复型UNTILB 图7-21 PAD图图符与构成的5种控制构造除了以上3种工具外,还有判定表、判定树与构造化自然语言PDL等描述工具。 软件测试及调试1软件测试的目的与任务软件测试的目的是确保软件的质量,尽量找出软件错误并加以纠正,而不是证明软件没有错。因此,软件测试的任务可以规定两点。1测试任务:通过采用一定的测试策略,找出软件中的错误。2调试任务:如果测试发现错误,那么定位软件中的错误,并加以纠正。找错的活动称为测试,纠错的
8、活动称为调试。2软件测试的准那么1所有测试都应追溯到需求。2严格执行测试方案,排除测试的随意性。3充分注意测试中的群集现象。4程序员应防止检查自己的程序。5穷举测试不可能。6妥善保存测试方案、测试用例、出错统计与最终分析报告,为维护提供方便。3软件测试技术与方法软件测试的方法与技术是多种多样的,对于软件测试方法与技术,可以从不同的角度加以分类。假设从是否需要执行被测软件的角度,可以分为静态测试与动态测试方法。假设按照功能划分可以分为白盒测试与黑盒测试。1静态测试与动态测试静态测试包括代码检查、静态构造分析、代码质量度量等,可以由人工完成,也可以借助软件工具。动态测试是基于计算机的测试,是为了发
9、现错误而执行程序的过程。合理的测试用例是测试的关键,测试用例是为测试设计的数据。2白盒测试方法与测试用例白盒测试方法也称构造测试或逻辑驱动测试,它是根据软件产品的内部工作过程,检查内部成分,以确认每种内部操作符合设计规格要求。白盒测试把测试对象看成是一个翻开的盒子。白盒测试是在程序内部进展,主要用于完成软件内部操作的验证。白盒测试的主要方法有逻辑覆盖、根本路径测试等。逻辑覆盖测试是指一系列以程序的内部逻辑构造为根底的测试用例设计技术。 语句覆盖:执行足够的测试用例,使得程序中每个语句至少都能被执行一次。 路径覆盖:执行足够的测试用例,使程序中所有可能的路径都至少经历一次。 判定覆盖:使设计的测
10、试用例保证程序中每个取值分支至少经历一次。 条件覆盖:设计的测试用例保证程序中每个判断的每个条件的可能取值至少执行一次。 判断-条件覆盖:设计足够的测试用例,保证程序中判断中每个条件的所有可能取值至少执行一次,同时每个判断的所有可能取值分支至少执行一次。根本路径测试是根据软件过程性描述中的控制流程确定程序的环路复杂性度量,用此度量定义根本路径集合,并由此导出一组测试用例对每一条独立执行路径进展测试。3黑盒测试方法与测试用例黑盒测试方法也称为功能测试或数据驱动测试,它是对软件已经实现的功能是否满足需求进展测试与验证。黑盒测试完全不考虑程序内部的逻辑构造与内部特性,只依据程序的需求与功能规格说明,
11、检查程序的功能是否符合它的功能说明。黑盒测试是在软件接口进展,完成功能验证。黑盒测试方法主要有等价类划分法、边界值分析法、错误推测法、因果图法等。其中,等价类划分法是将程序的所有可能的输入数据划分成假设干局部,然后从每个等价类中选取数据作为测试用例。4软件测试实施软件测试过程一般按4个步骤进展,即单元测试、集成测试、验收测试确认测试与系统测试。1单元测试单元测试集中对软件设计的最小单位模块进展测试,主要是为了发现模块内部可能存在的各种错误与缺乏。进展单元测试时,根据程序的内部构造设计测试用例,主要使用白盒测试法。由于各模块相对独立,因而对多个模块的测试可以同时进展,以提高测试效率。单元测试主要
12、针对5个根本特性进展测试:模块接口、局部数据构造、重要的执行路径、出错处理与边界条件。2集成测试集成测试是测试与组装软件的过程。主要目的是发现与接口有关的错误,集成测试的依据是概要设计说明书,测试的内容主要是:软件单元的接口测试、全局数据构造测试、边界条件与非法输入的测试等。集成测试时将模块组装成程序通常采用两种方式:非增量方式组装与增量方式组装。3确认测试确认测试的任务是验证软件的功能与性能及其他特性是否满足了需求规格说明中确定的各种需求,以及软件配置是否完全、正确。确认测试的实施首先运用黑盒测试方法。4系统测试系统测试是把通过确认测试的软件作为基于计算机系统的一个元素,与整个系统的其他元素
13、结合起来,在实际运行环境下,对计算机系统进展一系列的集成测试与确认测试。5软件调试实施在对程序进展了成功的测试之后将进入程序调试,程序调试的任务是诊断与改正程序中的错误。软件测试贯穿整个软件生命周期,调试主要在开发阶段。程序调试活动由两局部组成:其一是错误的定位,其二是修改错误。常用的程序调试方法有:强行排错法、回溯法与原因排错法。小 结软件设计是软件工程的重要阶段,是一个把软件需求转换为软件表示的过程。 每个阶段都已形成一套较完整的理论与方法。找错的活动称为测试,纠错的活动称为调试。软件测试与调试都已经形成一套完整的理论与方法,这些理论与方法对软件开发者如何进展测试与调试具有十分重要的意义。作 业软件测试方法与技术按照功能划分为哪两类?各是测试软件产品哪些方面?第 10 页