第十三章软件工程基础_第1页
第十三章软件工程基础_第2页
第十三章软件工程基础_第3页
第十三章软件工程基础_第4页
第十三章软件工程基础_第5页
已阅读5页,还剩118页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2003.11.全国计算机等级考试

二级公共基础知识

韩相军2008年5月12日星期一14时28分04秒本章结构软件工程概述结构化分析方法结构化设计方法测试与调试软件工程基础本章内容软件工程基本概念,软件生命周期概念,软件工具与软件开发环境。结构化分析方法,数据流图,数据字典,软件需求规格说明书。结构化设计方法,总体设计与详细设计。软件测试的方法,白盒测试与黑盒测试,测试用例设计,软件测试的实施,单元测试、集成测试和系统测试。程序的调试,静态调试与动态调试。3.1

软件工程概述软件:

与计算机系统的操作有关的计算机程序、规程、规则,以及可能有的文件、文档及数据软件工程:是指采用工程的概念、原理、技术和方法指导软件的开发与维护软件工程学研究软件开发和维护的普遍原理与技术的一门工程学科研究对象包括软件开发与维护的技术、方法、工具和管理等方面软件生命周期定义:从某一软件被提出并着手开始实现,直到软件完成其使命为止的全过程3个时期,8个阶段可行性研究需求分析详细设计编码运行维护测试软件定义期软件开发期软件维护期问题定义系统设计只考虑编写程序

涉及整个软件生命周期扩展到软件工作的范围软件定义期

开始问题定义可性行研究

可行否?项目实施计划终止项目的建议结束YN1问题定义主要目的:确定问题的性质、工程目标及规模参加人员:软件开发人员、用户及使用部门负责人提交:文档(编写系统目标与规范说明书)2可行性分析主要目的:进一步研究所定义的问题是否可解角度:技术可行性经济可行性社会可行性使用方法:逻辑模型---数据流图和数据字典物理模型---系统流程图提交:文档3需求分析主要目的:根据可行性研究阶段提交的文档,特别是从数据流图出发,对目标系统提出清晰、准确和具体的要求(做什么)具体任务:综合要求--->数据分析--->详细模型系统提交:文档(系统的功能说明、数据要求和用户系统描述)软件开发期

Who为谁设计,用户是谁?What要解决哪些问题?Why为什么要解决这些问题

3W编码测试设计信息描述功能描述行为描述其他需求总体结构设计数据设计过程设计程序模块集成并确认的软件1系统设计主要任务:划分出构成系统的各物理元素(如程序、文件、数据库、人工过程与文档等)设计出软件的结构(如确定模块之间的关系)阶段最后要进行严格的技术审查和管理审查提出可选择方案选择合理方案推荐最佳方案功能分解设计软件结构制定测试计划提交文档设计过程2详细设计主要任务:对系统做出精确的描述,以方便编码阶段使用目标:保证程序的可靠性、易读、易理解、易测试、易修改和易维护提交:详细的编码规格说明工具:层次图与输入-处理-输出图的结合(HIPO)过程描述语言(PDL)3编码主要任务:将系统设计与详细设计阶段中的结果翻译成用某种程序设计语言书写的程序影响程序设计的几个方面选择适当的程序设计语言良好的编程风格充分利用已有的软件工具协助编码提交源程序编码面向用户的文档:用户手册,操作手册单元测试计划4测试主要任务:尽量发现程序中的错误测试与调试的区别测试是要尽量发现程序中的错误,但绝不能证明程序的正确性调试是要推断错误的原因,从而进一步改正错误提交:测试分析报告软件维护期维护是软件生命周期的最后阶段,也是持续时间最长、付出代价最大的阶段程序代码及文档的维护分类改正性维护:纠正使用中出现的错误适应性维护:适应环境的变化完善性维护:改进原有软件预防性维护:为将来的可维护性和可靠性做的工作软件工具与软件开发环境软件支援环境含义:是指在宿主硬件和宿主软件的基础上,用于辅助、支援其他软件的研制和维护的一组软件作用:能改进软件质量、提高软件生产率功能:能够支援软件生命的全周期能够支援大型软件工程项目能够支援软件配置管理组成:环境数据库包含软件必要的信息和软件研制工具的有关信息接口软件包括系统与用户的接口、系统与环境数据库和工具之间的接口工具组包括软件研制工具、软件维护工具和控制配置工具等软件详细设计的表达工程上常用的表达工具图形工具用图形的方式来描述实现一个算法的过程表格工具用表格的方式列出实现算法过程的每一步操作语言工具用某种语言描述算法程序流程图中常用的图形符号1程序流程图(流程框图)起止框判断框处理框输入与输出框注释框流程线流程线连接点ABPABP=1P=2P=1A1A2An…TTTFFF顺序结构选择结构多情况选择结构PSTFSPT当型循环结构直到型循环结构流程图的5种基本控制结构优点:独立,直观,易学缺点:不是逐步求精的好工具,过早考虑程序的控制流程,忽略全局结构不易表示层次结构不易表示数据结构和模块调用关系转移控制不受约束2NS图(又称盒图)去掉了流程图中的流程线,全部算法写在一个框内,每一种基本结构也是一个框不允许破坏结构化原则S1S2S3条件满足不满足S1S2条件情况1情况2…情况nS1S2…Sn顺序结构两路分支选择结构流程图多路分支选择结构流程图WHILE条件S当型循环结构流程图SUNTIL条件直到型循环结构流程图基本特点功能域比较明确不能任意转移控制,符合结构化原则容易确定局部和全程数据的作用域容易表示嵌套关系和层次关系ABCABTF条件3.问题分析图(PAD)优点:结构清晰,结构化程度高顺序结构选择结构A1值1值2值n

A2An......条件多路分支选择结构流程图WHILE

PSUNTIL

PS当型循环结构直到型循环结构4判定表描述多条件、多目标动作的形式化工具当算法包含多重嵌套的条件选择时,利用判断表能清晰表示复杂的条件组合与各功能之间的对应关系判定表举例(计算机票折扣率)旅游时间订票量折扣量7-9,12月≤20≤20>20>20

15%

5%

20%

30%条件类别四种条件组合操作条件组合下操作的执行1-6,10,11月判定树

条件1

条件2

结果计7-9,

订票量>20:

15%算12月

订票量≤20:5%折扣1-6,

订票量>20:30%量10,11月

订票量≤20:5%5过程设计语言PDL(又称伪码或结构化语言)/*计算运费*/

count();{输入x;输入y;if(0<x<=15)条件1{公式1计算;callsub;}elseif(x>15){公式2计算;callsub;}}sub();{for(i=1,3,i++)do{记账;输出;}}特点:关键字的固定用法提供了结构化的特点用自然语言的自由语法来描述处理部分具有数据说明的手段具有模块定义和调用的机制优点:可以作为注释直接插在源程序中可以使用普通的正文编辑程序或文字处理系统可以利用自动处理程序生成代码缺点:不够直观,不易描述复杂关系应用软件开发的原则和方法原则自顶向下的系统结构开发原则基本思想优点模块化结构开发原则基本思想优点方法软件开发方法的主要内容明确的工作步骤具体的文档格式确定的评价标准科学规范的图表工具开发方法的分类非自动形式的开发方法半自动形式的开发方法自动形式的系统开发方法非自动形式的开发方法系统流程图采用:自顶向下功能分割,逐层分解用途:事务系统的系统分析和系统设计结构化分析方法(SA方法)用于:系统分析采用:自顶向下数据流分割技术优点:有效控制分析工作的复杂性,直观易懂结构化设计方法(SD方法)用于:系统设计采用:模块化设计方法数据结构法(Jackson法)用于:系统设计采用:自顶向下逐步细化,模块化与SD的区别:SD:基于数据流图建立程序结构Jackson:基于数据结构建立程序结构层次输入-处理-输出方法用于:系统分析/系统设计特点:用分层图描述功能及其输入-处理-输出的关系,并用HIPO图描述设计结果半自动形式的开发方法软件需求工程法(SREM方法)用于:系统分析特点:用描述语言处理器和模拟工具进行系统分析工具:RSL描述语言和REVS支持工具系统问题说明语言/分析器法(PSL/PSA方法)用于:系统分析自动形式的系统开发方法代表方法:HOS法用于:系统分析系统设计特点:自动进行分析设计及编码3.2结构化分析方法结构化分析方法的特点结构化分析方法(SA法)主要用于系统分析阶段,特别适用于大型数据的处理特点:分解和抽象:采用自顶向下逐层分解与抽象S2132.22.12.33.13.2顶层(不编号)0层1层文档的规范化:一套分层的数据流图(描述系统逻辑关系)一本数据字典(描述系统中全部数据和文件)一组小说明(描述加工处理应完成的工作)其他补充材料面向用户系统的逻辑设计和物理设计分开进行确定系统边界自顶向下,画出各层数据流图定义数据字典结构化分析实施步骤数据流图与数据字典数据流图(DFD)用于系统分析阶段SA方法的步骤概括:2条数据流图从数据加工的角度,以图形方式描述信息处理系统的逻辑结构,能比较直观地描述信息处理中的业务情况。是SA方法最主要的一种图形工具。数据流名数据流处理名数据处理(加工)文件名数据存储(文件)外部实体名字外部实体数据流图的组成符号研究生业务活动数据流图录取名单注册研招办分专业定导师选课选题报名数据登记成绩答辩毕业考试成绩论文组成符号数据流:用标有名字的箭头表示数据处理(加工):用标有名字(处理名)的圆圈表示,其中处理名就是对数据进行操作的名称输入数据:指向加工的数据流输出数据:离开加工的数据流数据存储(文件):用两根平行线表示,文件名在两平行线之间外部实体(源、潭):用标有名字的方框表示画法自顶向下逐层分解由外向里逐渐深化数据流图与程序流程图的区别

数据流图是从数据的角度描述系统的,其箭头是数据流,表示的是数据的流动方向,它用于描述的是什么问题。程序流程图是从对数据进行加工的角度描述系统的,其箭头是控制流,表示的是对数据进行加工的次序,它用于描述怎样解决问题。数据字典作用主要是给数据流图中的每一个数据流名、文件名以及处理名建立一个条目,给出各名字的定义。条目的类型基本数据项条目数据流条目文件条目数据处理条目(即加工条目)3.3结构化设计方法结构化设计方法(SD)用于系统设计阶段将结构化分析阶段形成的系统逻辑模型转换成一个具体的物理方案,主要解决“如何做”的问题主要任务:保证逻辑模型的前提下,尽可能提高系统的可靠性、工作质量、效率和可变更性采用方法:“分解”成独立模块提出评价模块结构图质量的标准耦合度:模块之间的联系内聚度:模块内各成分之间的联系追求目标:

耦合度尽可能低,内聚度尽可能高分为:总体设计:决定系统的模块结构详细设计:具体考虑每一个模块内部采用的算法、模块的输入输出和模块的功能

结构图是SD方法的主要生成文档之一。SD方法的主要生成文档是结构图以及相应的模块功能说明

基本思想将一个系统分解为若干个模块,每个模块可以看成一个“黑盒”,在图中表示它的层次、构成和相互之间的关系组成部分模块:用矩形框表示,矩形框中标明模块的名称,反映该模块的功能调用:用带有箭头的连线表示模块间信息传递用带有圆圈的小箭头表示;带有空心圆圈的小箭头表示数据的传递带有实心圆圈的小箭头表示控制信息的传递辅助符号计算工资的结构图计算所有职工工资单得到职工工资记录计算临时工实得工资计算固定工实得工资打印工资单由数据流图导出结构图关键:找出中心加工根据加工中心的存在形态,数据流图可分为变换型:加工中心在逻辑输入与逻辑输出之间事务型:在事务中心输入流输出流变换流内部表示外部表示变换型事务型事务中心动作路径模块独立性评价标准耦合:表明模块间的独立程度内聚:表明模块内部关系是否紧密系统设计的质量要求模块间的耦合尽可能弱,即模块尽可能独立模块的内聚程度尽量高耦合和内聚是一个问题的两个方面,耦合程度弱的模块,其内聚程度一定高1模块间的耦合影响因素模块间的连接形式模块接口的复杂性分类级别数据耦合同构耦合控制耦合公用耦合内容耦合弱强数据耦合:模块间用数据项参数进行通信的耦合同构耦合(特征耦合):两模块具有相同数据结构的耦合控制耦合:通过传递信息控制另一模块内部逻辑的耦合公用耦合:涉及相同的数据区的耦合内容耦合:直接访问另一模块内容的耦合存在多种耦合时,以耦合最紧的类型为准内聚分类功能内聚序列内聚通信内聚过程内聚时间内聚逻辑内聚偶然内聚高低功能内聚(函数内聚)模块完成一个(仅一个)与问题有关的任务序列内聚模块的各组成部分中,前一个处理输出的数据是下一个动作的输入数据通信内聚所有处理功能通过使用公用数据发生关系过程内聚模块内各部分受同一控制流的支配以决定执行顺序时间内聚(瞬间内聚)内部各动作都与时间相关逻辑内聚各部分的处理动作逻辑相关,但功能不相关偶然内聚模块内部各动作互不相关3.4测试与调试软件测试

软件测试是为了发现错误而执行程序的过程。或者说,软件测试是根据软件开发各阶段的规格说明和程序内部结构而精心设计的一批测试用例(即输入数据及预期的输出结果),并利用这些测试用例去运行程序,以发现程序错误的过程。什么是软件测试目标:在精心控制的环境下执行程序,以发现程序中的错误,给出程序可靠性的鉴定特征:测试的挑剔性完全测试的不可能性测试的经济性挑剔性测试是程序执行的过程,目的在于发现错误一个好的测试在于能发现至今未发现的错误一个成功的测试是发现了至今未发现的错误完全测试的不可能性通过有限次测试不可能发现程序中的所有错误测试的经济性无语法错误运行有结果典型数据得到正确结果对无效数据有防范对一切能出现的数据不出错5个层次,一层比一层工作量大测试过程静态分析是指不执行程序,而只由人工对程序文本进行检查,通过阅读和讨论,分析和发现程序中的错误通常采用讨论和走查两种方式动态分析是使用测试用例在计算机上运行程序,使程序在运行过程中暴露错误自动测试是指人们编制的用于测试的软件,并用它来代替人工测试分为:静态分析工具:静态确认工具、符号执行工具、程序验证工具动态分析工具:测试数据生成器、覆盖监视器、模块驱动工具、符号查错工具等综合测试工具:把静态分析、功能分析、测试评估等结合在一起测试的层次模块测试(单元测试)对象:组成程序的各个模块目标:发现局部模块的逻辑与功能上的错误和缺陷方面:模块接口,局部数据结构,重要路径,错误处理能力,I/O错误注意:进行模块测试时,要为每个测试的模块另外设计两类模块驱动模块:将测试数据传送给被测模块,并显示被测模块产生的结果承接模块:模拟被测模块的下层模块。通常有多个整体测试目标:尽量暴露模块测试时不能暴露的结构错误分类:渐增式:对模块逐步装配的过程中同步进行的自顶向下自底向上非渐增式:将经过单独测试的所有模块连接到一起进行测试高级测试功能测试(有效性测试)主要用黑箱法测试软件功能是否符合用户要求系统测试软硬件元素结合在一起测试验收测试用户检查软件是否满足要求安装测试检查软件在安装时产生的问题测试的方法设计和使用测试用例的基本原则设计测试用例同时确定预期结果合理及不合理的输入数据都要选用既检查程序是否作了应做的事,还要检查是否作了不应做的事不要幻想程序正确保留有用的测试用例测试用例要系统地进行白箱法

也叫逻辑覆盖测试

对软件的过程性细节做细致的检查。这一方法是把测试对象看作一个打开的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,来设计或选择测试用例,对程序所有逻辑

路径进行测试。白箱测试(WhiteBoxTesting)白箱法:也称逻辑覆盖测试,根据对程序内部逻辑结构的分析来选取测试用例。测试用例的设计准则语句覆盖分支覆盖条件覆盖组合条件覆盖白箱测试用例的设计准则发现错误的能力标准含义1(弱)语句覆盖每条语句至少执行一次2分支覆盖(判定覆盖)每一判定的每个分支至少执行一次3条件覆盖每一判定中的每个条件,分别按“真”、“假”至少各执行一次4(强)条件组合覆盖求出判定中所有条件的各种可能组合值,每一可能的条件组合至少执行一次。同时满足判定覆盖和条件覆盖的要求黑箱法

已知产品的功能设计规格,可以进行测试证明每个实现了的功能是否符合要求。

黑箱测试(BlackBoxTesting)黑箱法:完全不考虑程序的内部结构和内部特征,而只是根据程序功能导出测试用例常用的黑箱测试等价分类法边值分析法因果图法错误推测法综合策略等价分类法把所有可能的输入数据划分成若干等价类,使每一类中的一个典型数据在测试中的作用与这一类中所有其它数据的作用相同边值分析法必须在边界值附近选取测试数据因果图法将输入条件视为“因”,输出条件视为“果”,黑箱视为从“因”到“果”的逻辑网络图。通过因果图得到判定表,再得到测试用例错误推测法凭经验或直觉推测程序中可能存在的各种错误,从而编写测试用例调试不同点测试调试目的发现错误改正错误承担人非设计人员设计人员自己要求机械强制严格随机应变过程发现错误后立即调试改正回归测试测试用例可一致也可不一致调试与测试的关系常用的调试技术输出存储器内容在程序中插入调试语句利用调试用例,迫使程序逐个路径执行利用测试时得到的与程序错误有关的信息借助调试工具调试策略试探法回溯法对分查找法归纳法演绎法为了提高测试的效率,应该

A)随机选取测试数据B)取一切可能的输入数据作为测试数据

C)在完成编码以后制定软件的测试计划D)集中对付那些错误群集的程序软件生命周期中所花费用最多的阶段是

A)详细设计 B)软件编码C)软件测试D)软件维护下列叙述中,不属于软件需求规格说明书的作用的是

A)便于用户、开发人员进行理解和交流

B)反映出用户问题的结构,可以作为软件开发工作的基础和依据

C)作为确认测试和验收的依据

D)便于开发人员进行需求分析下列不属于软件工程的3个要素的是A)工具 B)过程C)方法 D)环境例题讲解软件设计包括软件的结构、数据接口和过程设计,其中软件的过程设计是指

A)模块间的关系 B)系统结构部件转换成软件的过程描述

C)软件层次结构 D)软件开发过程检查软件产品是否符合需求定义的过程称为A)确认测试B)集成测试C)验证测试D)验收测试数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构成。下列图符名标识的图符不属于数据流图合法图符的是A)控制流 B)加工C)数据存储 D)源和流开发软件所需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称作

A)软件投机 B)软件危机C)软件工程D)软件产生下面不属于软件设计原则的是A)抽象 B)模块化C)自底向上D)信息隐蔽开发大型软件时,产生困难的根本原因是

A)大系统的复杂性 B)人员知识不足

C)客观世界千变万化 D)时间紧、任务重软件工程的出现是由于

A)程序设计方法学的影响 B)软件产业化的需要

C)软件危机的出现 D)计算机的发展软件开发离不开系统环境资源的支持,其中必要的测试数据属于

A)硬件资源 B)通信资源C)支持软件D)辅助资源在数据流图(DFD)中,带有名字的箭头表示

A)模块之间的调用关系 B)程序的组成成分

C)控制程序的执行顺序 D)数据的流向下列不属于结构化分析的常用工具的是

A)数据流图 B)数据字典C)判定树 D)PAD图在软件生产过程中,需求信息的给出是

A)程序员B)项目管理者

C)软件分析设计人员 D)软件用户下列工具不是需求分析常用工具的是A)PAD B)PFDC)N-S D)DFD模块独立性是软件模块化所提出的要求,衡量模块独立性的度量标准则是模块的

A)抽象和信息隐蔽 B)局部化和封装化

C)内聚性和耦合性 D)激活机制和控制方法软件开发的结构化生命周期方法将软件生命周期划分成

A)定义、开发、运行维护B)设计阶段、编程阶段、测试阶段

C)总体设计、详细设计、编程调试D)需求分析、功能定义、系统设计在软件工程中,白箱测试法可用于测试程序的内部结构。此方法将程序看做是

A)

路径的集合B)循环的集合C)目标的集合D)地址的集合完全不考虑程序的内部结构和内部特征,而只是根据程序功能导出测试用例的测试方法是

A)黑箱测试法B)白箱测试法C)错误推测法D)安装测试法在结构化设计方法中,生成的结构图(SC)中,带有箭头的连线表示

A)模块之间的调用关系 B)程序的组成成分

C)控制程序的执行顺序 D)数据的流向下列选项中,不属于模块间耦合的是

A)数据耦合B)同构耦合C)异构耦合D)公用耦合下列叙述中,不属于测试的特征的是

A)测试的挑剔性 B)完全测试的不可能性

C)测试的可靠性 D)测试的经济性需求分析中开发人员要从用户那里了解

A)软件做什么 B)用户使用界面

C)输入的信息 D)软件的规模下列不属于软件调试技术的是

A)强行排错法 B)集成测试法

C)回溯法 D)原因排除法为了避免流程图在描述程序逻辑时的灵活性,提出了用方框图来代替传统的程序流程图,通常也把这种图称为

A)PAD图 B)N-S图C)结构图 D)数据流图软件复杂性度量的参数包括

A)效率 B)规模C)完整性 D)容错性下列叙述中,正确的是

A)软件就是程序清单B)软件就是存放在计算机中的文件

C)软件应包括程序清单及运行结果D)软件包括程序和文档软件设计中,有利于提高模块独立性的一个准则是

A)低内聚低耦合 B)低内聚高耦合

C)高内聚低耦合 D)高内聚高耦合软件生命周期中花费时间最多的阶段是

A)详细设计 B)软件编码C)软件测试D)软件维护下列叙述中,不属于结构化分析方法的是

A)面向数据流的结构化分析方法

B)面向数据结构的Jackson方法

C)面向数据结构的结构化数据系统开发方法

D)面向对象的分析方法详细设计的结果基本决定了最终程序的

A)代码的规模 B)运行速度

C)质量 D)可维护性下列不属于静态测试方法的是

A)代码检查 B)白盒法

C)静态结构分析 D)代码质量度量在软件生命周期中,能准确地确定软件系统必须做什么和必须局别哪些功能的阶段是A)概要设计B)详细设计C)可行性分析D)需求分析检查软件产品是否符合需求定义的过程称为A)确认测试B)集成测试C)验证测试D)验收测试数据流图用于抽象描述一个

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论