12006-2007-2软件工程复习一、单项选择题(20选10)1.结构化分析的主要描述手段有(B)。A.系统流程图和模块图B.DFD图、数据词典、加工说明C.软件结构图、加工说明D.功能结构图、加工说明2.用于表示模块间的调用关系的图叫(D)。A.PADB.SCC.N-SD.HIPO3.在(B)模型中是采用用例驱动和架构优先的策略,使用迭代增量建造方法,软件“逐渐”被开发出来的。A.快速原型B.统一过程C.瀑布模型D.螺旋模型4.常用的软件开发方法有面向对象方法、面向(A)方法和面向数据方法。A.过程B.内容C.用户D.流程5从工程管理的角度来看,软件设计分两步完成(D)。A.①系统分析②模块设计B.①详细设计②概要设计C.①模块设计②详细设计D.①概要设计②详细设计6.程序的三种基本结构是(B)。A.过程、子程序、分程序B.顺序、条件、循环C.递归、堆栈、队列D.调用、返回、转移7.程序的三种基本结构是(B)。A.过程、子程序、分程序B.顺序、条件、循环C.递归、堆栈、队列D.调用、返回、转移8.SD方法衡量模块结构质量的目标是(C)。A.模块间联系紧密,模块内联系紧密B.模块间联系紧密,模块内联系松散C.模块间联系松散,模块内联系紧密D.模块间联系松散,模块内联系松散9.为提高软件测试的效率,应该(C)。A.随机地选取测试数据B.取一切可能的输入数据作为测试数据C.在完成编码后制定软件测试计划D.选择发现错误可能性大的数据作为测试数据10.(D)测试用例发现错误的能力较大。A.路径覆盖B.条件覆盖C.判断覆盖D.条件组合覆盖11.软件需求分析应确定的是用户对软件的(A)。A.功能需求和非功能需求B.性能需求C.非功能需求D.功能需求12.下列各种图可用于动态建模的有(C)。A.用例图B.类图C.序列图D.包图13.软件过程模型有瀑布模型、(B)、增量模型等。A.概念模型B.原型模型C.逻辑模型D.物理模型14.面向对象的分析方法主要是建立三类模型,即(D)。A.系统模型、ER模型、应用模型B.对象模型、动态模型、应用模型C.E-R模型、对象模型、功能模型D.对象模型、动态模型、功能模型15.测试的分析方法是通过分析程序(B)来设计测试用例的方法。A.应用范围B.内部逻辑C.功能D.输入数据16.软件工程是研究软件(B)的一门工程学科。A.数学B.开发与管理C.运筹学D.工具17.需求分析可以使用许多工具,但(C)是不适合使用的。A.数据流图B.判定表C.PAD图D.数据字典18.划分模块时,一个模块内聚性最好的是(A)。A.功能内聚B.过程内聚C.信息内聚D.逻辑内聚19.软件可移植性是用来衡量软件的(D)的重要尺度之一。A.效率B.质量C.人机关系D.通用性20.软件配置管理是在软件的整个生存周期内管理(D)的一组活动。A.程序B.文档C.变更D.数据二、判定题(20选10)1统一过程是一种以用户需求为动力,以对象作为驱动的模型,适合于面向对象的开发方法。(×)2当模块中所有成分结合起来完成一项任务,该模块的内聚是偶然内聚。(×)3SD方法衡量模块结构质量的目标是模块间联系松散,模块内联系紧密(√)4当模块中所有成分结合起来完成一项任务,该模块的内聚是功能内聚。(√)5在进行需求分析时,就应该同时考虑软件的可维护性问题。(√)6需求分析可以使用许多工具,但数据流图是不适合使用的。(×)27用白盒法测试时,测试用例是根据程序内部逻辑设计的。(√)8一组测试用例是条件覆盖,则一定是语句覆盖。(√)9用黑盒法测试时,测试用例是根据程序内部逻辑设计的。(×)10因果图法可以用于系统地设计测试用例。(√)11在了解被测试模块的内部结构或算法的情况下进行测试叫白盒测试。(√)12为提高软件可移植性,应注意提高软件的设备独立性。(×)13在完成测试作业之后,为缩短源程序长度,应删去源程序中的注解。(×)14有GOTO语句的程序一般无法机械地变成功能等价的无GOTO语句的程序。(×)15快速原型模型是一种以用户需求为动力,以对象作为驱动的模型,适合于面向对象的开发方法。(√)16好的程序不仅处理速度要快,而且易读、易修改。(√)17应多使用GOTO语句。(×)18系统模块的内聚度应尽可能地小。(×)19信息隐藏原则禁止在模块外使用在模块接口说明中所没有说明的、关于该模块的信息。(√)20在完成测试作业之后,为缩短源程序长度,应删去源程序中的注解。(×)三、名词解释(十选5)四、简答题(十选5)1可行性研究有哪些步骤?1)确定项目规模和目标;2)研究现行系统(如果存在);3)建立系统的高级逻辑模型,用系统流程图或数据流图(DFD图)描述;4)提高实现高层逻辑模型的各种方案,并对各方案进行评价;5)推荐可行的方案;6)编写可行性报告;2什么是软件生存周期?软件生存周期模型有哪些?答:软件生存周期模型是描述软件开发过程中各种活动如何执行的模型。主要模型包括:瀑布模型、增量模型、螺旋模型、喷泉模型、变换模型和基于知识的模型。3软件质量保证措施有那些?1)以客户对于质量的需求为基础,对项目开发周期的各个阶段,建立质量目标;2)定义质量度量以衡量项目活动的结果,协助评价有关的质量目标是否达到;3)确定质量活动;4)执行已经确定的质量活动;5)评价质量4什么是软件开发方法?有哪些主要方法?答:软件开发方法是一种使用早已定义好的技术集及符号表示习惯来组织软件生产过程的方法,其方法一般描述成一系列的步骤,每一个步骤都与相应的技术和符号相关。主要方法有:1)结构化开发方法2)面向数据结构的开发方法3)原型化开发方法4)面向对象的开发方法5结构化分析的步骤有哪些?1)建立当前系统的具体模型2)抽象出当前系统的逻辑模型3)建立目标系统的逻辑模型4)为了对目标系统进行完整的描述,考虑人机界面和其他一些问题6什么是软件维护?它有哪些类型?软件维护是指软件系统交付使用以后,为了改正软件运行错误,或者因新的需求而加入新功能的修改软件的过程。它的类型有:完善性维护,适应性维护,纠错性维护,预防性维护。7软件测试的步骤有哪些?1单元测试,分别完成每个单元的测试任务,以确保每个模块能正常工作2集成测试,把已测试的模块组装起来,进行集成测试3确认测试,完成集测试以后,要对开发工作初期制定的确认准则进行检验4系统测试,完成确认测试以后,给出的应该是合格的软件产品,为了检验能否与系统的其他部分协调工作,需要进行系统测试5验收测试,检验软件产品3质量的最后一道工序是验收测试8试述用户界面设计应考虑的因素。答:(1)可实用性。要求使用简单,用户界面中所用术语的标准化和一致性,具有help功能。快速的系统响应和低的系统成本,具有容错能力。(2)灵活性。考虑用户的特点,能力,知识水平;提供不同的系统响应时间,提供根据用户需求制定和修改界面,(3)界面的复杂性与可靠性9评价模块分割好坏的标准有哪些?模块分割好坏的标准有2个定性准则:藕合性和内聚性。耦合性用于描述模块之间联系的紧密程度;内聚性用于描述模块内部联系的紧密程度。模块分割时耦合越松越好,内聚性愈强愈好10UML有那些图?答:用例图:从用户角度描述系统功能,并指出各功能的操作者静态图:表示系统的静态结构,包括类图,对象图,包图行为图:描述系统的动态模型和组成对象间的交互关系,包括状态图,活动图交互图:描述对象间的交互关系,包括顺序图,合作图实现图:用于描述系统的物理实现,包括构件图,部件图五、分析设计题(4选1)1、数字校园网上考试系统提供给教师的功能如下:(1)登录教师通过帐户和密码登录到网上考试系统。(2)题库管理对试题库进行添加试题、修改试题以及删除试题等。(3)试卷生成教师从试题库中抽题实现自动组卷或手工组卷,然后存入试卷库中。(4)试卷查询教师从试卷库中选出符合要求的试题,被选中的题目将被加入新的试卷中去。(5)答卷批改当试卷中存在填空题或问答题,教师需参与答卷评分,系统统计成绩存入成绩库。(6)维护教学大纲教师可对教学大纲库中的教学大纲进行维护(修改、增加、删除等)工作。要求:画出详细的数据流图或用例图2、数字校园网上考试系统提供给学生的功能如下:(1)登录:学生通过帐户和密码登录到网上考试系统。(2)在线练习:学生可以从试题库中任意选择各种题型的试题进行解答,系统将给出正确答案供学生参照,并将学生解答练习情况存入练习库中。(3)在线测试:为了对学生的学习效果进行考核,系统可从试卷库中随机组好试卷供学生进行考试并计时。考生保存答卷到答卷库。成绩统计进入成绩库。(4)在线学习:学生可在网上根据教学大纲的要求选择课程库中的课程进行学习。(5)成绩查询:提供查询考试成绩功能,并可以查看答卷得分情况。要求:画出详细的数据流图或用例图3、图书管理主要包括三类用户:读者、图书管理员、系统管理员。其中,读者是多个,图书管理员是几个,系统管理员是一个。对于系统,读者可以查询自己的借阅情况、分门别类的查询图书和在规定期限内续借不能超过一次操作的情况下进行自行登录续借书等。图书管理员主要是日常操作以下几个工作环节:图书订购、新书验证、书目录入、图书登记、读者信息管理、借阅书登记、图书信息注销和读者信息注销等,而系统管理员统筹管理图书的系统相关事宜,比如权限维护、日志维护、增删用户和管理系统后台数据等。要求:画出详细的数据流图或用例图4、广告管理系统操作业务人员角色包括:预订员,财务,划版员,系统管理员和报刊领导。各个角色承担不同的系统任务:预订员管理预订、划版员负责划版管理、财务员管理财务、业务员与客户交流、系统管理员负责系统配置、领导根据外部信息源进行决策。经初步分析,该系统应该包括预订子系统、财务子系统、划版子系统、系统管理子系统、客户管理子系统和决策支持子系统。划版子系统和客户管理子系统都需要使用财务子系统和预订子系统的信息;财务子系统需要使用预订子系统的信息。要求:画出详细的数据流图或用例图六、测试用例设计1、使用逻辑覆盖测试法测试以下程序:4PROCEDUREEXAMPLE(A,B:REAL;VARX:REAL);BEGINIF(A>2)AND(B=0)THENX:=X/A;IF(A=4)OR(X>1)THENX:=X+1END;1)画出程序流程图;2)分别以语句覆盖、判定覆盖、判定/条件覆盖、条件组合覆盖方法设计用例,并写出每个测试用例的执行路径。2、使用逻辑覆盖测试法测试以下程序:PROCEDUREEXAMPLE(A,B:REAL;VARX:REAL);BEGINIF(A=1)OR(B1)THENX:=AⅹB;IF(A2)OR(B=1)THENX:=A-2END;1)画出程序流程图;2)分别以语句覆盖、判定覆盖、判定/条件覆盖、条件组合覆盖方法设计用例,并写出每个测试用例的执行路径。3、某城市的电话号码由3个部分组成。这3个部分的名称与内容分别是:地区码:空白或3位数字前缀:以大于等于‘5’开头的4位数字后缀:4位数字要求:用等价分类法设计它的测试用例。4、输入三个数据,判断是否能构成三角形?要求:用等价分类法设计它的测试用例。七、1谈谈你学习软件工程的理解和体会。软件工程这门学科随着发展越来越显得重要,是一个专业的软件开发人员所应该具有的品质,没有需求分析就不可以有一个完整而又经济的软件出现和发展!这门学科特别的好,应该好好体会其中的理念,为你个人以后的成长和做人处事都是有帮助的!我们做什么事情都应该事前做好需求分析才能立二不败之地!特别你要是一个软件开发人员更应该深入体会其中的奥秘!2谈谈你对参加需求分析或总体设计的体会。需求分析是要决定“做什么,不做什么”。需求分析为什么困难?有几种原因使需求分析变得困难:(1)客户说不清楚需求;(2)需求自身经常变动;(3)分析人员或客户理解有误。客户说不清楚需求:有些客户对需求只有朦胧的感觉,当然说不清楚具体的需求。有些客户心里非常清楚想要什么,但却说不明白。事实上,用简单的话来说明需求过程,就是确定系统该做些什么以及该符合什么条件。话虽然简单,实现起来可没有