1软件工程期末复习题选择题1.软件设计中划分模块的一个准则是(C)。A低内聚低耦合B低内聚高耦合C高内聚低耦合D.高内聚高耦合2.(A)是用户和设计交换最频繁的方法。A、原型化方法B、瀑布模型法C、螺旋模型方法D、构件组装模型3.试判断下列叙述中,哪个些是正确的(C)。a、软件系统中所有的信息流都可以认为是事务流b、软件系统中所有的信息流都可以认为是变换流c、事务分析和变换分析的设计步骤是基本相似的A、aB、bC、cD、b和c4.软件工程方法学的目的是:使软件生产规范化和工程化,而软件工程方法得以实施的主要保证是(C)A、硬件环境B、软件开发的环境C、软件开发工具和软件开发的环境D、开发人员的素质5.20世纪50年代以来,出现了许多不同的程序设计语言,下列语言中哪个语言是低级语言(D)A、PASCALB、VISUALBASICC、C++2D、汇编语言6.软件测试的目的是?(D)A.软件的正确性B.找出软件系统中存在的所有错误C.证明软件系统中存在错误D.尽可能多的发现软件系统中的错误7.使用白盒测试方法时,确定测试数据应根据(A)和指定的覆盖标准。A、程序的内部逻辑B、程序的复杂程度C、该软件的编辑人员D、程序的功能8.软件维护工作的最主要部分是(C)。A、纠正性维护B、适应性维护C、完善性维护D、预防性维护9.PDL是(B)语言。A.高级程序设计语言B、伪码式C、中级程序设计语言D、低级程序设计语言10.软件的结构化设计(SD)方法中,一般分为概要设计和详细设计两阶段,其中详细设计主要是要建立(C)。A、软件结构B、软件过程C、软件模型D、软件模块11.在数据流图中,○(椭圆)代表(B)A、数据流B、转换C、数据源D、外部实体312.总体设计目的是确定整个系统的(D)。A、规模B、测试方案C、费用D、功能及模块结构13.检查软件产品是否符合需求定义的过程称为(A)。A、确认测试B、集成测试C、验收测试D、验证测试14、在七种偶合中,最低偶合是(C)。A、内容偶合B、公共偶合C、数据偶合D、非直接偶合15.以下不属于白盒测试技术的是(D)A.逻辑覆盖B.基本路径测试C、循环覆盖测试D、等价类划分16.软件的发展经历了(D)个发展阶段A.1B.2C.3D.417.需求分析的任务不包括(B)A.问题分析B.系统设计C.需求描述D.需求评审。18.从事物的组成部件及每个部件的属性、功能来认识事物。这种方法被称为(A)的方法。A、面向对象B、面向数据C、面向过程D、面向属性19.将软件组装成系统的一种测试技术叫(A)A.集成测试B.单元测试C.集合测试D.系统测试20.技术可行性是可行性研究的关键,其主要内容一般不包括(C)A.风险分析B.资源分析C.人员分析D.技术分析421.一个模块的(B)是指能直接控制该模块的模块数。A.扇出数B.扇入数C.宽度D.深度22.下列模型属于成本估算方法的是(A)A、COCOMO模型B、McCall模型C、McCabe度量法D、时间估算法23.在衡量软件质量时,最重要的标准是(B)。A、成本低B、可维护性好C、符合要求D、界面友好24.瀑布模型的关键不足在于(B)A、过于简单B、不能适应需求的动态变更C、过于灵活D、各个阶段需要进行评审25.软件生命周期中所花费用最多的阶段是(D)A、详细设计B、软件编码C、软件测试D、软件维护26.软件开发时,一个错误发现得越晚,为改正它所付出的代价(A)A、越大B、越小C、越不可捉摸D、越接近平均水平27.程序的三种基本控制结构是(B)A、过程、子程序和分程序B、顺序、选择和循环C、递归、堆栈和队列D、调用、返回和转移28.结构化程序设计主要强调的是(D)A程序的规模B程序的效率C程序设计语言的先进性D易读性29.为了进一步改善软件系统的可维护性和可靠性,并为以后的改进奠定基础的软件维护称为(D)A.纠错性维护B、适应性维护C、改善性维护D、预防性维护530.模块的内聚性最高的是(D)A、逻辑内聚B、时间内聚C、偶然内聚D、功能内聚问答题1.什么是软件?计算机软件是与计算机系统操作有关的程序、规程、规则及任何与之有关的文档及数据;2.什么是软件工程?软件工程是一门指导软件开发的工程学科,以计算机理论及其他相关学科的理论为指导,采用工程化的概念、原理、技术和方法进行软件的开发和维护,把经实践证明的科学的管理措施与最先进的技术方法结合起来。3.快速原型技术的基本思想是什么?花费少量代价建立一个可运行的系统,使用户及早获得学习的机会,最终提高软件质量。4.快速开发原型的途径有哪些?废弃型:快速建立需求规格原型;追加型:快速建立渐进原型法采用循环渐进;步骤:快速分析、构造原型、运行和评价原型、修改与改进5.什么是软件危机?软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。主要是两个问题:(1)如何开发软件,怎样满足对软件的日益增长的需求;(2)如何维护数量不断膨胀的已有软件;6.什么是软件生存周期?软件生存周期是软件的产生直到报废的整个生命周期7.什么是软件的可靠性?指在给定时间内,在规定的环境条件下系统完成所指定功能的概率8.如何识别用例?明确以下4个问题即可:1、与系统实现有关的主要问题是什么;2、系统需要哪些输入/输出,这些输入/输出从何而来,到哪里;3、执行者需要系统提供哪些功能;4、执行者是否需要对系统中的信息进行读、创建、修改、删除或存储9.如何识别角色?1、谁使用系统的主要功能?2、谁需要系统的支持以完成日常工作任务?3、谁负责维护,管理并保持系统正常运行?64、系统需要应付(或处理)哪些硬设备?5、系统需要和哪些外部系统交互?6、谁(或什么)对系统运行产生的结果(值)感兴趣?10.如何识别类?常用的方法有:1.名词识别法;2.系统实体识别法;3.从用例中识别类;4.利用分解与抽象技术;关键是要定义类的“属性”及“操作”11.耦合性和内聚性有几种类型?其耦合度、内聚强度的顺序如何?(1)非直接耦合;(2)数据耦合;(3)标记耦合;(4)控制耦合;(5)外部耦合;(6)公共耦合;(7)内容耦合;(1)偶然内聚;(2)逻辑内聚;(3)时间内聚;(4)过程内聚;(5)通信内聚;(6)顺序内聚;(7)功能内聚;12.什么是黑盒测试法?也称功能测试或数据驱动测试,测试时把程序看作一个不能打开的黑盆子,在完全不考虑程序内部结构和内部特性的情况下,只根据需求规格说明书,测试程序的功能或程序的外部特性。13.等价类划分方法中,划分好等价类后设计测试用例的步骤是什么?1)为每个等价类编号;2)使一个测试用例尽可能覆盖多个有效等价类;3)特别要注意:一个测试用例只能覆盖一个无效等价类;15.什么是白盒测试?分析程序的内部逻辑结构,注意选择适当的覆盖标准,设计测试用例,对主要路径进行尽可能多的测试;16.什么叫综合测试?一般都应该先进行静态测试,再考虑动态测试,最后进行验收测试;选择最少量的高效测试用例,从而尽可能多地发现软件中的问题。17.什么叫改善性维护?扩充原有系统的功能,提高原有系统的性能,满足用户的实际需要18什么叫预防性维护?为了进一步改善软件的可靠性和易维护性,或者为将来的维护奠定更好的基础而对软件进行修改。19什么叫适应性维护?要使运行的软件能适应运行环境的变动而修改软件的过程。20.什么是内聚度?模块内部各成分彼此结合的紧密程度721.什么是耦合度?软件结构中模块间关联程度的一种度量22.面向对象软件测试基本步骤是什么?1、测试用例模型2、测试某些用例中的典型场景3、类及对象模型4、某些类测试其状态模型23.什么是软件体系结构?为软件系统提供一个结构、行为和属性的高级抽象,确定了系统的组织结构和拓扑结构,显示了系统需求和构成系统的元素之间的对应关系,提供了一些设计决策的基本原理。24典型软件体系结构有哪些,其优缺点是什么?仓库模型、分布式模型、客户机/服务器模型、抽象机模型、控制摸型;仓库模型,优点:1.共享大数据量的有效方法。2.子系统不必关心其它的子系统如何使用它所产生的数据。3.易于将新子系统集成,若新子系统也采用相同。缺陷:1.为了共享数据,各子系统必须有一致的数据视图,不可避免地会影响了整个系统的性能;2.子系统的改变,使产生的数据结构也可能发生改变;3.统一的数据库结构(备份、安全、访问控制和恢复的策),将影响子系统的效率。分布式模型,优点:资源共享;开放性高;可伸缩性好;容错能力强;透明性高;缺点:复杂性;安全性;可管理性;不可预知性;抽象机模型又称为分层模型:优点:支持增量式开发。缺点:系统构成,性能保证较困难。25.黑盒测试的典型方法有哪些?等价类划分、边界值分析、错误推测、因果图和综合策略26.白合测试的典型方法有哪些?1、逻辑覆盖①语句覆盖:选择足够的测试用例,使得程序中每个语句至少都能被执行一次;②判定覆盖:执行足够的测试用例,使得程序中每个判定至少都获得一次“真”值和“假”值;③条件覆盖:执行足够的测试用例,使得判定中的每个条件获得各种可能的结果;8④判定/条件覆盖:执行足够的测试用例,使得判定中每个条件取到各种可能的值,并使每个判定取到各种可能的结果;⑤条件组合覆盖:执行足够的例子,使得每个判定中条件的各种可能组合都至少出现一次;2、循环覆盖3、基本路径测试4、代码检查法5、静态结构分析6、静态质量度量法27.静态分析中的数据流分析图基本思想是什么?数据流分析则侧重于对变量在控制结构下的定值,使用以及传播情况的分析检查分析变量的定义和引用情况。列出源代码中的变量并且报告任何异常的使用。28.软件设计阶段的任务与目标是什么?任务:将分析阶段获得的需求说明转换为计算机中可实现的系统;即:软件体系结构的设计、用户界面的设计、数据结构的设计、算法的设计目标:构造一个高内聚低耦合的软件模型。29.软件设计的准则是什么?1、软件结构的准则:顶部宽度小,中部宽度最大,底部宽度次之;在结构顶部有较高的扇出数,在底部有较高的扇入数2、模块化准则:将系统划分成若干模块,每个模块完成一个子功能,把这些模块集中起来组成一个整体,以满足所要求的整个系统的功能。3、软件独立性准则:开发具有功能专一,模块之间无过多相互作用的模块。30.需求获取的方法有哪些?1.面谈法重要而直接,简单的需求获取技术。2.问卷法调查法是对面谈法的补充。3.需求专题讨论会最有力的需求获取技术。有利于培养高效团队。4.观察用户的工作流程适用于用户无法准确表达需求的情况。5.原型化方法6.基于用例的方法应用题:一、已知一个软件项目的记录,开发人员M=3人,其代码行数L=12.1KLOC,工作量E=24PM,成本S=168000美元,错误数N=29,文档页数Pd=365页。试计算开发该软件项目的生产率P、平均成本C、代码出错率EQR和文档率D。解:1.软件开发的生产率P为:P=L/E=12.1×103LOC/24PM=504LOC/PM2.开发每行代码的平均成本C为:C=S/L=168000美元/12100LOC=13.9美元/LOC3.代码出错率EQR为:EQR=N/L=29个/12.1KLOC=2.4个/KLOC4.软件的文档率D为:D=Pd/L=365页/12.1KLOC=30页/KLOC9二、某考务处理系统主要功能是考生管理和成绩管理:1.对考生送来的报名表进行检查。2.对合格的报名表编好准考证号码后将准考证送给考生,将汇总后的考生名单送给阅卷站。3.对阅卷站送来的成绩表进行检查,并根据考试中心指定的合格标准审定合格者。4.填写考生通知单(内容包含该考生的准考证号、姓名、各课程成绩及最终合格/不合格标志),送给考生。5.根据考生信息及考试成绩,按地区、年龄、文化程度和职业进行成绩分类统计及试题难度分析,产生统计分析表。画出分层的数据流图顶层图0层图加工2子图