第六章详细设计习题一、名词解释详细设计:确定每个模块的具体执行过程,也称过程设计。详细设计的结果基本决定了最终的程序代码的质量。结构化程序设计:是按照一组能提高程序的可读性和易维护性的规则而进行的程序设计方法,目的是为了使程序具有一种合理的结构,以使程序易理解和维护,便于保证和验证程序的正确性。PDA:问题分析图,是一种算法描述工具。它是一种从左向右展开的二维树形结构,其控制流程为自上而下,从左到右地执行。二、填空1、详细设计阶段的主要任务是确定每个模块的具体执行过程。。2、软件的详细设计可以用图形、表格、过程设计语言三种形式的描述工具表示模块的处理过程。3、处理过程设计中最典型的方法是结构化程序设计方法,其基本要点是自顶向下、逐步求精。4、任何程序都可由顺序、选择和循环3种基本控制结构构造,这3中基本结构的基本点是单入口、单出口。5、PAD图是一种从左到右展开的二维树形结构,PAD图的控制流程是自上而下、从左到右地执行。6、详细设计是软件设计的第二个阶段,主要确定每个模块的具体执行过程,故也成为过程设计。7、详细设计的目标不仅是逻辑上正确地实现每个模块的功能,还应使设计出的处理过程清晰易懂。结构化程序设计是实现该目标的关键技术之一,它指导人们用良好的思想方法开发易于阅读、易于理解的程序。三、单项选择1、在详细设计阶段,经常采用的工具包括(C)A.SAB.SDC.PADD.DFD2、详细设计阶段的任务是(A)。A.算法设计B.功能设计C.调用达观系设计D.输入/输出设计3、结构化程序设计的一种基本方法是(D)。A.筛选法B.递归法C.迭代法D.逐步求精法4、下面说法不正确的是(C)。A.流程图不易表示数据结构B.流程图容易造成非结构化的程序结构C.流程图支持逐步求精D.流程图描述的是程序的逻辑结构5、下面说法不正确的是(B)。A.PAD图支持逐步求精B.PAD图容易造成非结构化的程序结构C.PAD图描述的是算法D.PAD图容易表达程序的层次结构四、简答题1、什么是详细设计,?该阶段的基本任务是什么?详细设计是软件设计的第二个阶段,确定每个模块的具体执行过程,也称过程设计。根本任务:(1)为软件结构中的每个模块选择算法,并用选定的某种表达工具给出清晰的描述。(2)块内数据结构设计(3)数据库物理设计详细设计的目标不仅仅是逻辑上正确地实现每个模块的功能,更重要的是设计出的处理过程应该尽可能简明易懂。2、什么是结构化程序设计?,简述结构化程序设计的基本要点。结构化程序设计是按照一组能提高程序的可读性和易维护性的规则而进行的程序设计方法,目的是为了使程序具有一种合理的结构,以使程序易理解和维护,便于保证和验证程序的正确性。基本要点:自顶向下、逐步求精的设计方法使用顺序、选择、循环三种基本控制结构在三种基本控制结构中保持单入口、单出口第七章实现作业一、名词解释编码:编程就为是用编程(程序)语言把软件表达翻译为计算机可以理解的形式—用某种程序设计语言书写的程序。软件测试:是软件投入运行之前,对软件需求分析、设计规格说明和编码的最终复查,是软件质量保证的关键步骤。黑盒测试:不考虑程序内部结构和处理过程,只依据软件的需求规格说明书,检查程序的功能是否符合它的功能说明。因此,黑盒测试又称功能测试或数据驱动测试。白盒测试:按照程序内部逻辑测试程序。检查程序中的每条通路是否都能按照预定要求正常工作。这种测试完全了解程序的结构和处理过程。因此,白盒测试又称为结构测试或逻辑驱动测试。单元测试:是检查程序模块是否正确实现了规定的功能,目的是保证每个模块作为一个单元能正确运行,所以模块测试通常又称为单元测试。集成测试:把模块按设计要求组装成子系统或系统的过程中的测试。确认测试:以需求规格说明为基准,验证软件的有效性的测试。渐增式测试:在集成测试中,的模块一个一个地加入进行测试。当一个模块加入测试完以后再把下一个应该测试的模块结合进来测试。这种每次增加一个模块的方法称为渐增式测试。非渐增式测试:是先分别测试每个模块,再把所有模块按设计要求放在一起结合成所要的程序。这种方法称为非渐增式测试方法。回归测试:指重新执行已经做过的测试。每当改正软件错误的时候,可能导致软件配置的某些成分的改变,这些改变可能引进新的错误。回归测试就是保证由于调试或其它原因引起的变化,不会导致非预期的软件行为或额外错误的测试活动。调试:根据测试所暴露的错误,诊断和改正其错误的过程。二、填空1、为了使程序代码易于阅读和理解,通常需要加注释,注释分为序言性注释和功能性注释两种类型2、软件测试的目的是尽可能多地发现软件中存在的错误。3、软件测试方法一般分为两大类:白盒测试方法和黑盒测试方法。4、集成测试可以采用的具体方法是渐增式测试和非渐增式测试。5、测试用例由测试输入数据和预期的的结果两部分组成。三、单项选择题1、为了使程序能在不同的机器上运行,程序应具有较好的【A】。A.可移植性B.可重用性C.可维护性D.可实用性2、下列属于功能性注释的是【C】A.说明模块的用处和功能的注释B.说明数据的名称和用处的注释C.说明程序段的注释D.说明程序开发背景的注释3、序言性注释主要内容不包括【D】A.模块的接口B.数据的描述C.模块的功能D.数据的状态4、功能性注释主要内容不包括【C】A.程序段的功能B.语句的功能C.模块的功能D.数据的状态5、符合数据说明顺序规范是【D】A.全程量说明、局部量说明、类型说明、常量说明B.全程量说明、局部两说明、常量说明、类型说明C.类型说明、常量说明、全程两说明、局部量说明D.常量说明、类型说明、全程量说明、局部量说明6、下面说法正确的是【C】A.经过测试没有发现错误说明程序正确B.测试的目标是为了证明程序没有错误C.成功的测试是发现了迄今尚未发现的错误的测试D.成功的测试是没有发现错误的测试7、覆盖准则最强的【C】A.语句覆盖B.判定覆盖C.条件覆盖D.路径覆盖8、发现错误能力最弱的是【A】A.语句覆盖B.判定覆盖C.条件覆盖D.路径覆盖9、与确认测试有关的文档是【A】A.需求规格说明书B.概要设计说明书C.详细设计说明书D.源程序10、超出软件工程范围的测试是【D】A.单元测试B.集成测试C.确认测试D.平行测试11、【B】方法需要考察模块间的接口和各模块之间的联系A.单元测试B.集成测试C.确认测试D.验收测试12、调试应该由【B】完成。A.与源程序无关的程序员B.编制该源程序的程序员C.不了解软件设计的机构D.设计该软件的机构四、简答题1、选择高级程序设计语言的标准是什么?选择的标准是:理想的模块化机制良好的编译程序良好的独立编译机制2、为了使程序具有良好的设计风格,应注意那些方面的问题?代码文档化数据说明顺序应该规范语句构造简单直接,不能为追求效率而是使代码复杂化输入输出格式简单一致,具有合法性验证、与结束标志追求效率应建立在不损害程序可读性和可靠性基础上3、为什么说软件测试是软件开发中不可缺少的重要一环,但不是软件质量保证的安全阀?●软件测试是软件开发中不可缺少的重要一环,原因:软件最终要由人工编程来实现,出现错误是不可避免的。测试的工作量占整个项目开发工作量40%左右。如果是关系到人的生命安全的软件,测试的工作量还要成倍增加。软件测试代表了需求分析、设计、编码的最终复审。●软件测试不是软件质量保证的安全阀:软件测试只能发现错误,不能保证没有错误。4、软件测试应当遵循什么原则?为什么要遵循这些原则?●所有测试应以用户需求为基准,测试的根本目标是保证软件能满足最终用户对软件的需求。●制定系统的测试计划,并严格执行测试计划,排除测试的随意性。●充分注意关键模块的测试和测试中的群集现象。实践表明,测试发现的错误中80%可能集中在20%的模块中,对这些模块应重点测试。●测试过程中必须随时注意测试所覆盖的程序逻辑的程度,确保程序设计中使用的所有条件都能被测试到。●避免自己测试自己的程序,应由第三方独立进行测试。●测试用例应包括合理的输入和不合理的输入。不合理的输入往往更能发现程序中错误。●测试用例应由测试输入数据和对应的预期输出结果组成。缺少预期输出结果实际是缺少检验正误的基础。5、单元测试、集成测试和确认测试各自主要目标是什么?它们之间有什么不同?相互有什么关系?模块测试是检查程序模块是否正确实现了规定的功能,发现模块在编码或算法中的错误,目的是保证每个模块作为一个单元能正确运行。集成测试的主要目标是检查与设计相关的模块间与接口有关的问题确认测试的主要目标是验证软件的有效性,确保软件有效实现了软件需求规格说明书的要求,需求规格说明书是确认测试的依据。它们之间的不同有:测试内容不同测试方法不同:单元测试用白盒法,集成测试使用渐增式或非渐增式测试;确认测试使用黑盒法。发现的错误不同:单元测试发现的错误是编码阶段产生的错误;集成测试发现的是设计阶段引入的错误;确认测试发现的错误主要上需求分析阶段产生的错误。涉及的文档不同:单元测试涉及详细设计和编码文档;集成测试涉及概要设计和详细设计文档;确认测试涉及需求分析阶段产生的文档。相互间的关系:单元测试、集成测试、确认测试是顺序进行的。6、什么是黑盒测试和白盒测试?它们都适应哪些测试?黑盒测试:不考虑程序内部结构和处理过程,只依据软件的需求规格说明书,检查程序的功能是否符合它的功能说明。白盒测试:按照程序内部逻辑测试程序。检查程序中的每条通路是否都能按照预定要求正常工作。这种测试完全了解程序的结构和处理过程白盒测试适应单元测试,包括逻辑测试和基本路径测试。测试数据对程序的逻辑覆盖的程度决定了测试完全性的程度。黑盒测试适合确认测试。测试的方法包括等价类划分、边界值分析、错误推断等。7、简述软件测试和软件调试有什么区别?目的不同:测试是为了发现错误,调试是定位和改正测试发现的错误。因而各自使用的技术也不同。进行的方式不同:测试是有计划的,而调试不受时间约束的。