软件工程基础简版.ppt

上传人:夺命阿水 文档编号:235705 上传时间:2023-03-10 格式:PPT 页数:121 大小:3.55MB
返回 下载 相关 举报
软件工程基础简版.ppt_第1页
第1页 / 共121页
软件工程基础简版.ppt_第2页
第2页 / 共121页
软件工程基础简版.ppt_第3页
第3页 / 共121页
软件工程基础简版.ppt_第4页
第4页 / 共121页
软件工程基础简版.ppt_第5页
第5页 / 共121页
点击查看更多>>
资源描述

《软件工程基础简版.ppt》由会员分享,可在线阅读,更多相关《软件工程基础简版.ppt(121页珍藏版)》请在课桌文档上搜索。

1、,第3章 软件工程基础,主要内容3.1 软件工程的基本概念3.2 结构化分析方法3.3 结构化设计方法3.4 软件测试3.5 程序的调试,全国等级考试考试大纲要求软件工程基本概念,软件工具与软件开发环境。结构化分析方法,数据流 图,数据字典,软件需求规格说明书。结构化设计方法,总体设计与详细设计。软件测试的方法,白盒测试与黑盒测试,测试用例设计,软件测试的实施,单元测试、集成测试和系统测试。程序的调试,静态调试与动态调试。,知识类型:理论二级所占分值:约6分课时:46学时参考书目:软件工程导论(第4版)张海藩 编著 清华大学出版社,软件(Software)是指包括程序、数据以及相关文档的完整组

2、合。国标定义:与计算机系统的操作有关的计算机程序、规程、规则以及可能有的文件、文档及数据。,3.1 软件工程基本概念,软件工程(Software Engineering)是在20世纪60年代末期提出的。这一概念的提出,其目的是倡导以工程的原理、原则和方法进行软件开发,以期解决当时出现的“软件危机”。,3.1 软件工程基本概念,表现:软件需求的增长得不到满足 软件开发成本和进度无法控制 软件质量难以保证 软件不可维护或维护程度非常低 软件成本不断提高软件开发生产效率的提高赶不上硬件的发展和应用需求的增长(7)软件通常缺少适当的文档资料,总之,可以将软件危机归结为成本、质量和生产率等问题,实际上几

3、乎所有软件都在不同程度上存在软件危机.,软件危机(Software Crisis),下一节,3.1 软件工程基本概念,软件危机软件开发进度难以预测,拖延工期几个月甚至几年的现象并不罕见,这种现象降低了软件开发组织的信誉。以丹佛新国际机场为例 该机场规模是曼哈顿机场的两倍,宽为希思机场的10倍,可以全天侯同时起降三架喷气式客机;投资1.93亿美元建立了一个地下行李传送系统,总长21英里,有4,000台遥控车,可按不同线路在20家不同航空公司柜台、登机门和行李领取处之间发送和传递行李;支持该系统的是5,000个电子眼、400台无线电接受机、56台条形码扫描仪和100台计算机。按原定计划要在1993

4、年万圣节前启用,但一直到1994年6月,该系统还无法正常运行。据研究结果统计:只有15%的项目是按计划完成的。,略过,软件危机软件开发成本难以控制,投资一再追加,令人难于置信。据同样的研究统计结果表明:仅有10%的项目是按费用计划完成的。例如,20世纪80年代初,美国国内税收服务处(IRS)让Sperry公司开发一套联邦税收表格自动处理系统。结果是:系统被证明不适合当前的工作量,花费几乎是预算的两倍,必须立即更换(华盛顿邮报的报道)。到1985年,还需要再追加9千万美元来改进Sperry公司最初价值1.03亿美元的设备。另外,因为出现的问题阻碍了IRS按时返还纳税者的税款,IRS还被迫偿还4.

5、02亿美元的利息以及2.23千万美元的工资给加班职员。,略过,软件危机软件产品质量无法保证,开发人员和用户之间很难沟通、矛盾很难统一。往往是软件开发人员不能真正了解用户的需求,而用户又不了解计算机求解问题的模式和能力,双方无法用共同熟悉的语言进行交流和描述。在双方互不充分了解的情况下,就仓促上阵设计系统、匆忙着手编写程序,这种“闭门造车”的开发方式必然导致最终的产品不符合用户的实际需要。,略过,软件危机用户对产品功能难以满足,系统中的错误难以消除。软件是逻辑产品,质量问题很难以统一的标准度量,因而造成质量控制困难。例如,一次美国在肯尼迪角发射一枚阿脱拉斯火箭,预定将用这种火箭运载飞往金星的宇宙

6、飞船。火箭飞离地面几十英里高空开始翻转,地面控制中心被迫下令自爆炸毁。后经检查发现是飞行计划程序中漏掉一个连字符。就是这样一个连字符的疏漏造成这枚价值1850万美元的火箭实验失败。据统计数字表明:在大型系统中,约3/4的系统有问题。,略过,软件危机软件产品难以维护,软件产品本质上是开发人员的代码化的逻辑思维活动,他人难以替代。除非是开发者本人,否则很难及时检测、排除系统故障。为使系统适应新的硬件环境,或根据用户的需要在原系统中增加一些新的功能,又有可能增加系统中的错误。,略过,软件危机软件缺少适当的文档资料,文档资料是软件必不可少的重要组成部分。实际上,软件的文档资料是开发组织和用户的之间权利

7、和义务的合同书,是系统管理者、总体设计者向开发人员下达的任务书,是系统维护人员的技术指导手册,是用户的操作说明书。缺乏必要的文档资料或者文档资料不合格,将给软件开发和维护带来许多严重的困难和问题。,略过,软件危机软件开发供不应求,软件开发生产率的提高速度,难以满足社会需求的增长率。软件产品“供不应求”的现象致使不能充分利用现代计算机硬件提供的巨大潜力。,伴随着软件危机的存在引入软件工程,3.1 软件工程的基本概念,形成:为了摆脱软件危机,北大西洋软件组织成员国软件工作者于1968-1969年,两次召开会议,认识早期软件开发中所存在的问题和产生问题的原因,提出软件工程的概念.目的:软件工程是指导

8、计算机软件开发和维护的一门学科,它应用计算机科学、数学和管理科学等原理,以及借鉴传统工程的原则和方法,来创建软件,从而达到提高质量、降低成本的目的。,软件工程:是研究和应用如何以系统化的、规范的、可度量的方法去开发、运行和维护软件,即把工程化应用到软件上。,软件工程 一种层次化技术,工具,方法,过程,质量焦点,Software engineering layers,软件工程三个要素:方法、工具、过程,3.1.2 软件生命周期,一.定义:(Software Life Cycle)软件产品从提出、实现、使用维护到停止使用的过程称为软件生命周期。软件生命周期可以划分为软件定义、软件开发和软件运行维护

9、三个时期,每个时期又进一步划分成若干个阶段。,概要设计,可行性研究与计划制定,需求分析,定义阶段,详细设计,实现,测试,使用,开发阶段,维护,运行维护阶段,退役,确定开发目标和总的要求,给出功能、可靠性等可能方案,制定实施计划.,对软件需求进行分析并给出详细定义,编写软件规格说明书及初步的用户手册,提交评审。,给出软件的结构、模块和功能的划分等,确定算法。编写概要设计、详细设计说明书和测试计划初稿。,源程序编码,把软件设计转换成计算机可以接受的程序代码。编写用户手册、操作手册和单元测试计划。,设计测试用例,检验软件各个组成部分。编写测试分析报告。,将已交付的软件投入运行,并在运行使用中不断地维

10、护,根据新提出的需求进行必要而且可能的扩充和删改。,软件开发的各阶段的成本比例,软件工程基本概念补充习题讲解,1.软件开发的结构化生命周期方法将软件生命周期划分成_。A.定义、开发、运行维护 B.设计阶段、编程阶段、测试阶段 C.总体设计、详细设计、编程调试 D.需求分析、功能定义、系统设计2.下面不属于软件工程的3个要素的是_。A.工具 B.过程 C.方法 D.环境3.软件是一种_。A.程序 B.数据 C.逻辑产品 D.物理产品4.下列描述中正确的是_。(等级考试题)A)软件工程只是解决软件项目的管理问题 B)软件工程主要解决软件产品的生产率问题 C)软件工程的主要思想是强调在软件开发过程中

11、 需要应用工程化原则 D)软件工程只是解决软件开发中的技术问题,3.2 结构化分析,3.2.1 需求分析,需求阶段是软件开发的关键阶段。需求分析的任务:准确地定义未来系统的目标,确定为了满足用户的需求系统必须做什么。用 规范的形式准确地表达用户的需求。,3.2 结构化分析,3.2.1 需求分析,与用户沟通获取需求的方法,访谈面向数据流自顶向下求精简易的应用规格说明技术快速建立软件原型,某出版社系统调查表,某出版社系统调查表,3.2 结构化分析,3.2.2 结构化分析方法,需求分析的方法,结构化分析(传统建模方法)面向对象分析,计算机世界,现实世界,影射,(当前系统),(目标系统),计算机世界,

12、现实世界,结构化开发方法,结构化分析,结构化设计,结构化编程,OOA,OOD,OOP,面向对象开发方法,3.2 结构化分析,3.2.2 结构化分析方法,结构化分析方法的定义(Structure Analysis-SA),是面向数据流进行需求分析的方法,采用自顶向下,逐层分解,建立系统的处理流程,以数据流图和数据字典为主要工具,建立系统的逻辑模型。,3.2 结构化分析,3.2.2 结构化分析方法,结构化分析方法使用的常用工具,数据流图(DFDData Flow Diagram)数据字典(DDData Dictionary)实体-联系图(E-R图),实体-关系图(ER图)。详见第4章P208页,3

13、.2 结构化分析,3.2.2 结构化分析方法,结构化分析方法使用的常用工具,1.数据流图(DFDData Flow Diagram)(1)作用:从数据传递和加工的角度,在需求分析阶段以图形的方式描述数据流从输入到输出的移动变换过程,为系统建立逻辑模型。,3.2 结构化分析,3.2.2 结构化分析方法,结构化分析方法使用的常用工具,1.数据流图(DFDData Flow Diagram)(1)作用:,(2)数据流图中的基本图形符号意义,可以是数据库文件或任何形式的数据组织。,数据加工:转换数据流的处理过程,外部实体:表示数据的源点或终点,即系统外部的实体。,数据流:在转换之间有向流动的数据项或数

14、据集合,数据存储文件:,箭头向内则表示写入文件 或查询文件.箭头向外则表示从文件中读取数据或得到查询结果.,储户,检验,付款,登录,存折,帐卡,取款信息,办理取款手续的 DFD 图,检验不合格,现款,付款信息,取款单,存折,注意,数据流图与程序流程图中的箭头表示的内容相同么?,数据流图中的箭头表示的是数据流。程序流程图中的箭头表示的是控制流。,两者有本质不同,不要混淆,数据流图的层次结构,为了表达数据处理过程的数据加工情况,需要采用层次结构的数据流图。按照系统的层次结构进行逐步分解,并以分层的数据流图反映这种结构关系,能清楚地表达和容易理解整个系统。在多层数据流图中,顶层流图仅包含一个加工,它

15、代表被开发系统。它的输入流是该系统的输入数据,输出流是系统所输出数据底层流图是指其加工不需再做分解的数据流图,它处在最底层中间层流图则表示对其上层父图的细化。它的每一加工可能继续细化,形成子图。,分层的数据流图,输入信息,输出信息,输入信息,输出信息,输出信息,考务处理系统功能,(1)对考生送来的报名单进行检查;(2)对合格的报名单编好准考证号后将准考证送给考生,并将汇总后的考生名单送给阅卷站;(3)对阅卷站送来的成绩单进行检查,并根据考试中心制定的合格标准审定合格者;(4)制作考生通知单(含成绩及合格/不合格标志)送给考生;(5)按地区进行成绩分类统计和试题难度分析,产生统计分析表。,考务处

16、理系统的分层DFD,略过,顶层数据流图,不合格报名单,报名单,准考证,考生通知单,成绩清单,合格标准,错误成绩清单,考生名单,统计分析表,略过,报名单,准考证,不合格报名单,考生通知单,统计分析表,1层数据流图,合格标准,考生名单,略过,2层数据流图(a),报名单,准考证,不合格报名单,考生名单,合格报名单,略过,2层数据流图(b),检查成绩清单,2.1,审定合格者,2.2,考生名册,正确成绩清单,制作通知单,2.3,分析统计成绩,2.4,分析试题难度,2.5,试题得分清单,考生通知单,难度分析表,合格标准,分类统计表,成绩清单,错误成绩清单,经审定的成绩清单,略过,3.2 结构化分析,3.2

17、.2 结构化分析方法,结构化分析方法使用的常用工具,2.数据字典(1)定义 是所有与系统相关的数据元素的一个有组织的列表,以及精确、严格的详细定义。(2)作用 对DFD中出现的被命名的图形元素的确切解释,数据词典与数据流图配合,能清楚地表达数据处理的要求。,3.2 结构化分析,3.2.2 结构化分析方法,结构化分析方法使用的常用工具,2.数据字典,(3)数据字典的组成 数据项:是数据的最小单位;数据结构:是若干数据项的有意义的集合;数据流:可以是数据项,也可以是数据结构,表示某一个 处理过程的输入或输出;数据存储:处理过程中存取的数据,常常是手工凭证、手 工文档或计算机文件。处理过程:,(4)

18、数据字典定义符号,=,被定义为,+,与,x=a+b,则表示 x 由 a 和 b 组成,x=a,b,则表示 x 由 a 或由 b 组成,或,重复,x=a,则表示 x 由 0个或多个a 组成,(),可选,表示在两个*之间的内容为词条的注释,m n,重复,x=3a8,则表示x中至少出现3次a,最多出现8次,*,注释符,x=(a),则表示a 在x 中出现,也可不出现,x=1.9(x可取1到9中任意一个值),.,连接符,某程序设计语言规定,用户说明的标识符是长度不超过8个字符的字符串,其中第一个字符必须是字母字符,随后的字符既可以是字母字符也可以是数字字符。,标识符=字母字符+字母数字串字母数字串=0字

19、母或数字7字母或数字=字母字符数字字符,数据字典中定义数据例:,例:若数据流图中有“员工登记单”数据存储文件,则在数据字典中此条目可描述为:员工登记单员工编号姓名职务聘用日期 员工编号“0001”.“9999”姓名1字母8 职务5字母20 聘用日期年+月+日 年“00”.“99”月“01”.“12”日“01”.“31”,存折格式,存折户名所号帐号开户日性质(印密)1存取行50户名2字母24所号“001”.“999”帐号“00000001”.“99999999”开户日年月日性质“1”.“6”注:“1”表示普通户,“5”表示工资户等印密“0”注:印密在存折上不显示存取行日期(摘要)支出存入余额操作

20、复核,3.2 结构化分析,3.2.3 软件需求规格说明书,1.定义:软件需求规格说明书(SRS,Software Requirement Specification)是需求分析阶段的最后成果,软件开发的重要文档之一。它对所开发的软件的功能、性能、用户界面及运行环境等进行详细说明。2.作用:便于用户与开发人员进行理解与交流;反映出问题的结构,可以作为软件开发的基础和依据;作为测试和验收的依据。3.特点:正确而无歧义性,简明易懂,可修改性,可验证性等。,主要包括以下的内容:,SRS,对软件系统所必须解决的问题作出详细说明。,描述为解决用户问题所需要的每一项功能的过程细节。,说明系统应达到的性能(运

21、行时间、内存容量等)。,包括与该软件有关的全部参考文献。,列表数据、算法的详细说明、框图、图表和其他材料。,从系统的角度描述软件的目标和任务。,投诉业务系统SRS,习题讲解,1.在软件生命周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段是()A.概要设计 B.详细设计 C.可行性研究 D.需求分析2.需求分析阶段的任务是确定()A.软件开发方法 B.软件开发工具 C.软件开发费用 D.软件系统功能3.软件需求分析阶段的工作,可以分为四个方面:需求获取、需求分析、编写需求规格说明书以及_。A.阶段性报告 B.需求评审 C.总结 D.都不正确4.在结构化方法中,用数据流程图(DFD)

22、作为描述工具的软件开发阶段是_。A.可行性分析 B.需求分析 C.详细设计 D.程序编码,5.数据流图用于抽象描述一个软件的逻辑模型,数据流图由一 些特定的图符构成。下列图符名标识的图符不属于数据流图 合法图符的是_。A.控制流 B.加工 C.数据存储 D.源和潭6.下列工具中属于需求分析常用工具的是_。A.PAD B.PFD C.N-S D.DFD7.数据字典是对数据定义信息的集合,它所定义的对象都包含在()。A.程序框图 B.数据流图 C.软件结构 D.方框图8 下列不属于结构化分析的常用工具的是_。A.数据流图 B.数据字典C.判定树 D.PAD图9.在数据流图(DFD)中,带有名字的箭

23、头表示_ A.控制程序的执行顺序 B.模块之间的调用关系 C.数据的流向 D.程序的组成成分10.结构化分析方法的一个重要思想是_.A.自顶向下,逐层抽象 B.自底向上,逐层抽象 C.自顶向下,逐层分解 D.自底向上,逐层分解,14.数据字典是各类数据描述的集合,它通常包括5个部分,即:数据项、数据结构、数据流、_和处理过程。,11.下列叙述中,不属于软件需求规格说明书的作用是()。.便于用户与开发人员进行理解与交流;B.反映出问题的结构,可以作为软件开发的基础和依据;C.作为测试和验收的依据。.便于开发人员进行需求分析12.需求分析阶段的最后成果是_,是软件开发的重要文 档之一。13.软件需

24、求规格说明书缩写是_.,3.3 结构化设计,3.3.1 概述,需求分析:解决“做什么”,软件设计:解决“怎么做”,从软件需求规格说明书出发,形成软件的具体设计方案。,3.3 结构化设计,3.3.1 概述,编码,测试,设计,-软件开发阶段的信息流,软件开发阶段:软件设计、软件编码、软件测试,3.3 结构化设计,3.3.1 概述,结构化设计方法是基于模块化、自顶向下细化、结构化(三种基本结构)程序设计等程序设计技术基础发展起来的。,结构化设计方法(SD-Structured Design),基本思想:将软件设计成由相对独立且具有单一功能的模块组成的结构,分为概要设计和详细设计两个阶段.,3.3 结

25、构化设计,3.3.1 概述,软件设计划分,一般过程:是一个迭代过程,先进行高层次结构设计;再进行 低层次过程设计;穿插数据设计和接口设计。,3.3 结构化设计,概要设计也称为结构设计或总体设计,主要任务是把系统的功能需求分配给软件结构,形成软件的模块结构图,如图,3.3.2 总体设计,3.3 结构化设计,3.3.2 总体设计,例,一学生成绩管理系统模块图,结构化设计的目的,使程序的结构尽可能反映要解决的问题的结构,结构化设计的任务,把需求分析得到的数据流图DFD变换为系统结构图(SC)。,3.3 结构化设计,3.3.2 总体设计,3.3 结构化设计,3.3.2 总体设计,概要设计工具-结构图(

26、SC:Structure Chart),结构图基本组成成分:模块、数据和调用,结构图基本图符:,3.3 结构化设计,3.3.2 总体设计,概要设计工具-结构图(SC:Structure Chart),结构图的基本术语,宽度:同一层模块的最大模块数,扇出:一个模块直接调用的其他模块数目,扇入:调用一个给定模块的模块个数。(被调用的次数),深度:模块结构的层次数(控制的层数).,深度,宽度,扇出,扇入,(模块的 层数),(同一层最大模块数),(一个模块 直接调用 的模块数),(调用一个给定模 块的模块个数),3.3 结构化设计,3.3.2 总体设计,概要设计工具-结构图(SC:Structure

27、Chart),好的软件结构应该是顶层扇出比较多,中层扇出较少,底层扇入多.,以下是一个软件系统的分层模块结构图,请回答:(1)该结构图的深度为(2)该结构图的宽度为(3)扇入为2的模块有(4)扇入为3的模块有(5)扇出为1的模块有(6)扇出为2的模块有(7)扇出为3的模块有,3.3 结构化设计,3.3.2 总体设计,目标系统的DFD,目标系统的SC,TIPS:数据流DFD是软件生命周期的定义阶段中的需求分析方法中结构化分析方法的一种,此外还有数据字典(DD)、判定树和判定表,而SC是开发阶段中概要设计使用的方法。,概要设计或结构设计SD,3.3 结构化设计,3.3.2 总体设计,数据流图到结构

28、图的变换:结构化设计方法任务:把需求分析得到的数据流图变换为结构图。典型的数据流类型:变换型和事务型,3.3 结构化设计,3.3.3 详细设计,详细设计阶段的主要任务,详细设计工具,3.3 结构化设计,3.3.3 详细设计,程序流程图(PFD:Program Flow Diagram))特点:直观、清晰、易于掌握,用流程图来表示12345,程序流程图的标准符号,程序流程图缺点,示例,盒图(N-S图)为避免流程图在描述程序逻辑时的随意性与灵活性,1973提出用方框代替传统的程序流程图,通常也把这种图称为N-S图,有5种的控制结构。,盒图(N-S图)为避免流程图在描述程序逻辑时的随意性与灵活性,1

29、973提出用方框代替传统的程序流程图,通常也把这种图称为N-S图,有5种的控制结构。,用N-S图来表示12345,盒图具有以下特点:过程的作用域明确;盒图没有箭头,不能随意转移控制;容易区分全局变量和局部变量;容易表示嵌套关系和层次关系;强烈的结构化特征。,问题分析图(PAD:Problem Analysis Diagram)是继流程图和方框图之后,又一种描述详细设计的工具,有5种结构。,选择:IF C Then P1 Else P2(双分支)多分支选择:Case 型多分支While 循环:当型循环 Until循环:直到型循环,判定表(1)使用条件:当数据流图中的加工要依赖于多个逻辑条件的取值

30、时(该 加工的一组动作是由于某一组条件取值的组合而引发的),使用判定表描述比较适宜.(2)判定表的组成(四部分):基本条件:各种可能的条件 条件项:各种可能的条件组合 基本动作:所有的操作 动作项:对应的条件组合下所选的操作,某学校对教职工拟定奖励策略如下:(1)高级职称且教学评估优秀的奖励1000元,教学效果评估合格的奖励800元;(2)中级职称且教学评估优秀的奖励800元,教学效果评估合格的奖励500元;(3)初级职称且教学评估优秀的奖励500元。要求画出奖励策略的判断表。,举例,以“检查发货单”为例,判定树 使用判定树进行描述时,应分清哪些是判定的条件,哪些是判定的结论,并找出判定条件之

31、间的从属关系、并列关系、选择关系,根据它们构造判定树。优点:更加直观,易于理解和使用,检查发货单,金额$500,金额$500,欠款60天,不发出批准书,欠款60天,发货单,发出批准书、,欠款60天,发出批准书、,发货单及赊欠报告,欠款60天,发出批准书、,发货单,以“检查发货单”为例,用判定树表示计算行李费的算法,过程设计语言(PDL):,过程设计语言(PDL)也称结构化的英语或伪码语言,它是一种混合语言,采用英语的词汇和结构化程序设计语言的语法,它描述处理过程怎么做,类似编程语言。,用PDL表示的基本结构的常用词汇如下:顺序:无条件:IF/THEN/ELSE/ENDIF循环:DOWHILW/

32、ENDDO循环:REPEAT UNTIL/ENDREPEAT分支:CASE OF/WHEN/SELECT/WHEN/SELECT/ENDCASE,PDL:Procedure Design Language,示例:拼词检查程序,PROCEDURE spellcheck IS BEGIN split document into single words lood up words in dictionary display words which are not in dictionary create a new dictionary END spellcheck,3.3 结构化设计,3.3.4

33、 设计原则,1.模块化(modularity)使程序由许多个逻辑上相对独立的模块组成。模块(module)是程序中逻辑上相对独立的单元;模块的大小要适中;高内聚、低耦合。,3.3 结构化设计,3.3.4 设计原则,2.抽象(abstraction)抽取事物最基本的特性和行为,忽略非基本的细节。采用分层次抽象的办法可以控制软件开发过程的复杂性,有利于软件的可理解性和开发过程的管理。,3.3 结构化设计,3.3.4 设计原则,3.逐步求精 求精实际上是细化过程。,学生成绩管理,系统的模块化设计,抽象出的本质特征是录入,抽象出的本质特征是统计,顶层模块主要功能成绩管理,底层模块,完成具体的功能,逐步

34、求精,自顶向下,3.3 结构化设计,3.3.4 设计原则,4.信息隐藏和局部化将模块中的软件设计决策封装起来的技术。按照信息隐藏的原则,系统中的模块应设计成“黑箱”,模块外部只能使用模块接口说明中给出的信息,如操作、数据类型等等。由于对象或操作的实现细节被隐藏,软件开发人员便能够将注意力集中于更高层次的抽象上,3.3 结构化设计,3.3.4 设计原则,5.模块独立(1)耦合:是一个软件结构内不同模块之间互 连程度的度量。(2)内聚:是一个模块内各个元素彼此结合的 紧密程度。,1.在结构化方法中,软件功能分解属于下列软件开发中的阶 段是_。A.详细设计 B.需求分析 C.总体设计 D.编程调试2

35、.从工程管理角度,软件设计一般分为两步完成,它们是_。(06.9月等级)A.概要设计与详细设计 B.数据设计与接口设计 C.软件结构设计与数据设计 D.过程设计与数据设计3.下列选项中不属于软件生命周期开发阶段任务的是().软件测试.概要设计.软件维护.详细设计4.信息隐蔽的概念与下述哪一种概念直接相关_。A.软件结构定义 B.模块独立性 C.模块类型划分 D.模拟耦合度,习题:,5.下面不属于软件设计原则的是_。A.抽象 B.模块化 C.自底向上 D.信息隐蔽6.为了使模块尽可能独立,要求_。(05年 4 月等级考试)A)模块的内聚程度要尽量高,且各模块间的耦合程度要尽量强 B)模块的内聚程

36、度要尽量高,且各模块间的耦合程度要尽量弱 C)模块的内聚程度要尽量低,且各模块间的耦合程度要尽量弱 D)模块的内聚程度要尽量低,且各模块间的耦合程度要尽量强7.下列描述中正确的是_。(05年 4 月等级考试)A)程序就是软件 B)软件开发不受计算机系统的限制 C)软件既是逻辑实体,又是物理实体 D)软件是程序、数据与相关文档的集合8.两个或两个以上模块之间关联的紧密程度称为 A)耦合度 B)内聚度 C)复杂度 D)数据传输特性,9.在软件开发中,下面任务不属于设计阶段的是_。A.数据结构设计 B.给出系统模块结构 C.定义模块算法 D.定义需求并建立系统模型10.程序流程图(PFD)中的箭头代

37、表的是_。A.数据流 B.控制流 C.调用关系 D.组成关系11.软件设计包括软件的结构、数据接口和过程设计,其中软 件的过程设计是指_。A.模块间的关系 B.系统结构部件转换成软件的过程描述 C.软件层次结构 D.软件开发过程12.为了避免流程图在描述程序逻辑时的灵活性,提出了用方 框图来代替传统的程序流程图,通常也把这种图称为_。A.PAD图 B.N-S图 C.结构图 D.数据流图,13.在软件设计中,不属于过程设计工具的是_。(05.4)A)PDL B)PAD图C)N-S图 D)DFD14.在程序结构图中,矩形用来表示_。A)模块 B)模块间的调用关系 C)加工 D)存储15.下面关于P

38、DL不正确的说法是_。A)PDL描述处理过程怎么做 B)PDL只描述加工做什么 C)PDL也称为伪码 D)PDL的外层语法应符合一般程序设计语言常用的语法规则,3.4 软件测试,3.4.1 概述,软件测试是为了发现错误而执行程序的过程。或者说,软件测试是根据软件开发各阶段的规格说明和程序 内部结构而精心设计的一批测试用例(即输入数据及预期的输出结果),并利用这些测试用例去运行程序,以发现程序错误的过程。,为了发现尽可能多的缺陷,不是为了说明软件中没有缺陷,1.软件测试的目的与原则,测试目的:可能地多发现程序中的错误,测试用例的选择原则:选择发现错误可能性大的数据,3.4 软件测试,3.4.1

39、概述,1.软件测试的目的与原则,软件测试准则(六点):,(1)所有测试都应追溯到需求。(2)应该远在测试开始之前就制定出测试计划。(3)充分注意测试中的群集现象(Pareto原理)。80的缺陷聚集在20的模块中(4)应该从“小规模”测试开始,逐步进行“大规模”测试。(5)穷举测试不现实。(6)由独立的第三方从事测试工作。,3.4 软件测试,3.4.1 概述,1.软件测试的目的与原则,3.4 软件测试,3.4.1 概述,2.软件测试方法分类,根据软件是否需要被执行,按照功能划分,静态测试动态测试,黑盒测试白盒测试,研究内容:如何用最少的测试用例集合来测试出程序中更多的潜在错误。,关键技术:如何进

40、行彻底的测试,如何设计测试用例等。,3.4 软件测试,3.4.1 概述,3.软件测试步骤,(1)模块测试(2)子系统测试(3)系统测试(4)验收测试(5)平行运行,(单元测试),(确认测试),3.4 软件测试,3.4.2 单元测试,也称模块测试,对模块(软件设计最小单位)进行正确性检验的测试,以期尽早发现各模块内部可能存在的各种错误。,技术:静态分析和动态测试,说明:单个模块通常不是独立的程序,不能运行。必须在真实或模拟环境下进行。模拟环境中为被测模块设计和搭建驱动模块和桩模块。,驱动模块:相当于被测模块的主程序。它接收测试数据,并传给被测模块,输出实际测试结果。桩模块:用于代替被测模块调用的

41、其他模块,仅做少量的数据操作,不必将子模块的所有功能带入。,3.4 软件测试,3.4.3 集成测试,也称组装测试,把模块在按照设计要求组装起来的同时进行测试,主要目的是发现与接口有关的错误。,采用方式(模块组装成程序):两种,(1)非增量方式(2)增量方式,自顶向下,自低向上,混合增量,增量方式和非增量方式区别是什么?那种更好?,3.4 软件测试,3.4.4 确认测试,也称验收测试。,验证软件的功能和性能及其他特性是否满足了需求规格说明中确定的各种需求,以及软件配置是否完全正确。,实施:先用黑盒测试,验证被测软件是否满足需求规格说明确认的标准。再复审保证软件配置齐全。,3.4 软件测试,3.4

42、.5 白盒测试,1.概述,也叫玻璃盒测试、结构测试或逻辑驱动测试,对软件的过程性细节做细致的检查。这一方法是把测试对象看作一个打开的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,来设计或选择测试用例,对程序所有逻辑路径进行测试。白盒测试是在程序内部进行,主要用于完成软件内部操作的验证。,白盒测试,关键技术:如何进行彻底的测试,如何设计测试 用例等。,3.4 软件测试,3.4.5 白盒测试,1.概述,白盒测试的原则,白盒测试局限性:是穷举路径测试,贯穿程序独立路径数是天文数字,即使每条路径都经过了测试,仍可能有未发现错误。,3.4 软件测试,3.4.5 白盒测试,1.概述,白盒测试技术包

43、括:逻辑覆盖、控制结构测试,3.4 软件测试,3.4.5 白盒测试,2.逻辑覆盖,语句覆盖(Statement coverage):每个语句至少执行一次。,(2)判定覆盖(Branch coverage):在的基础上,每个判定的每个分支至少执行一次。,条件覆盖(Condition coverage):在的基础上,使每个判定表达式的每个条件都取到各种可能的结果。,判定/条件覆盖:同时满足判定覆盖和条件覆盖的要求,条件组合覆盖:每个判定表达式中条件的各种可能组合都至少出现一次。,(6)路径覆盖:程序的每条路径都至少执行一次。,问题:若AND错写为OR,或X1错写为X1,则错误无法由上例测出。,Te

44、st case:A=2,B=0,X=4.,a,b,c,d,e,语句覆盖(Statement coverage):每个语句至少执行一次。,判定覆盖(Branch coverage):在的基础上,每个判定的每个分支至少执行一次。,Test cases:A=3,B=0,X=3A=2,B=1,X=1,问题:若X1错写为X1,仍然无法被测出。,a,c,b,e,d,3.4 软件测试,3.4.6 黑盒测试,1.概述,也叫功能测试或数据驱动测试,被测软件看作一个不透明的黑盒子,在软件接口处进行,完成功能的验证。黑盒测试完全不考虑程序内部的逻辑结构和内部特性。,黑盒测试(Black Box Testing),假

45、设一个程序P有输入量X和Y及输出量Z。在字长为32位的计算机上运行。若X、Y取整数,按黑盒方法进行穷举测试:可能采用的测试数据组:232232264 如果测试一组数据需要1毫秒,一年工作365 24小时,完成所有测试需5亿年。,用黑盒测试发现程序中的错误,必须在所有可能的输入条件和输出条件中确定测试数据,来检查程序是否都能产生正确的输出。但这是不可能的。,3.4 软件测试,3.4.6 黑盒测试,1.概述,方法:,(1)等价类划分法,(2)边界值法,(3)错误推测法,3.5 程序调试,任务:诊断和改正程序中的错误。,通常称Debug,即排错。,3.5.1 概述,功能没有实现或与规格说明不一致的问

46、题是bug;不能工作(死机、没反应)的部分是bug;不兼容的部分是bug;边界条件未做处理是bug;界面、消息、提示、帮助不够准确是bug;屏幕显示、打印结果不正确也是bug;有时把尚未完成的工作也作为一个bug。,什么是Bug?,3.5 程序调试,任务:诊断和改正程序中的错误。,程序调试基本步骤:(见教材P156),3.5.1 概述,错误定位:确定程序出错的位置,找出错误的内在原因对程序进行修改,以排除错误.进行回归测试:重复进行某些有关测试,确认该错误是否被排除,以及是否引进了新的错误。,3.5 程序调试,3.5.1 概述,主要的调试方法可以采用:,1.蛮干法 2.回溯法 3.原因排除法(

47、演绎法、归纳法、二分法),1.检查软件产品是否符合需求定义的过程称为_。A.确认测试 B.集成测试 C.验证测试 D.单元测试2.软件调试的目的是_。A.发现错误 B.改正错误C.改善软件的性能 D.挖掘软件的潜能3.下列对于软件测试的描述中正确的是_。(05.4 月)A)软件测试的目的是证明程序是否正确 B)软件测试的目的是使程序运行结果正确 C)软件测试的目的是尽可能多地发现程序中的错误 D)软件测试的目的是使程序符合结构化原则4.下列叙述中正确的是 _.(05.9月)A)程序设计就是编制程序 B)程序的测试必须由程序员自己去完成 C)程序经调试改错后还应进行再测试 D)程序经调试改错后不

48、必进行再测试,5.下列叙述中正确的是(06.4月)A)软件测试应该由程序开发者来完成 B)程序经调试后一般不需要再测试 C)软件维护只包括对程序代码的维护 D)以上三种说法都不对6.下列叙述中正确的是(05年)A)软件交付使用后还需要进行维护 B)软件一旦交付使用就不需要再进行维护 C)软件交付使用后其生命周期就结束 D)软件维护是指修复程序中被破坏的指令7.下列不属于软件调试技术的是_。A.强行排错法 B.集成测试法 C.回溯法 D.原因排除法8.在软件工程中,白盒测试法可用于测试程序的内部结构。此方法将程序看做是_。A.循环的集合 B.地址的集合 C.路径的集合 D.目标的集合,9.白盒测

49、试方法一般适用于_测试。A.单元 B.集成 C.确认 D.系统10.软件测试方法一般有黑盒测试和白盒测试,其中黑盒测试主要是依据程序的_.A.结构 B.流程 C.功能 D.逻辑11.用黑盒测试法设计测试用例的方法之一为 A.因果图 B.逻辑覆盖 C.循环覆盖 D.基本路径测试12.软件测试是保证软件质量的重要手段,而软件测试的主要和重要的测试方法是通过数据和_的设计来实现。,等级考试填空题(05、06年)1.程序测试分为静态分析和动态测试。其中【】是指不执行程序,而只是对程序文本进行检查,通过阅读和讨论,分析和发现程序中的错误。2.【】的任务是诊断和改正程序中的错误。3.在进行模块测试时,要为

50、每个被测试的模块另外设计两类模块:驱动模块和承接模块(桩模块)。其中【】的作用是将测试数据传送给被测试的模块,并显示被测试模块所产生的结果。4.诊断和改正程序中错误的工作通常称为【】。,1.静态分析 2.调试 3.驱动模块 4.程序调试,1.若按功能划分,软件测试的方法通常分为白盒测试方法和_测试方法。2.软件的调试方法主要有:强行排错法、_和原因排除法。3.与结构化需求分析方法相对应的是_方法。4.数据流的类型有_和事务型。5.测试的目的是暴露错误,评价程序的可靠性;而_的目的是发现错误的位置并改正错误。6.单元测试阶段主要涉及的文档是_.7.等价类型划分法是_测试的常用方法。,1.黑盒 2

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 在线阅读 > 生活休闲


备案号:宁ICP备20000045号-1

经营许可证:宁B2-20210002

宁公网安备 64010402000986号