1、中南大学复习题及参考答案软件工程一、选择题:1.下面哪些UML图描述系统行为 ( a )A.用例图 B.类图 C.对象图2.属于概要设计活动的是 ( a ) A.软件结构设计 B.数据结构设计 C.算法设计3.属行为型设计模式的是 ( c ) A.组合模式 B.工厂方法模式 C.观察者模式4.下列说法正确的是 ( b ) A.UML是软件开发方法 B.UML是系统描述语言 C.UML是软件开发过程5. 根据程序流程图划分的模块通常是 ( b ) A. 信息内聚的模块 B. 过程内聚的模块 C.逻辑内聚的模块6.如果某程序中的比较个数是m,则其McCabe环形复杂度为 ( c ) A.m-1 B
2、.m C.m+17.按ISO9000-3的说明,下列属软件配置项的是 ( c ) A.软件开发方法 B.软件开发组织管理制度 C.软件开发合同8. 软件测试的目的是 ( c ) A.证明软件无错 B.发现软件中的所有错误 C.尽可能发现软件系统中的错误9.软件重构关注的是 ( b ) A. 软件体系结构 B. 模块细节 C.软件性能10.软件项目开发计划的内容有 ( b ) A. 数据分析 B.风险分析 C.功能分析 11.在UML的类图中,描述整体与部分关系的有 ( b )A.泛化关系 B.聚合关系 C.依赖关系12.软件过程能力成熟度模型CMM用以评价 ( a )A.软件过程能力 B.组织
3、能力 C.学习能力13. 因计算机硬件和软件环境的变化而作出的修改软件的过程称为 ( c )A. 完善性维护 B. 改正性维护 C.适应性维护14. 对项目软件而言,软件功能需求信息主要由谁提供 ( a )A.软件用户 B.软件开发人员 C.软件项目管理人员15. IDEF0图反映不出 ( c )A.系统做什么 B.系统功能由谁做 C.系统如何做16. 原型模型是一种什么开发过程模型 ( b )A.自顶向上 B. 由外至内 C.增量式17. 系统流程图描述 ( a ) A.物理系统 B.逻辑系统 C.软件体系结构18.需求规格说明书的内容不应该包括 ( c ) A.软件确认准则 B.软件的性能
4、描述 C.算法过程的详细描述19.适合需求模糊或需求不确定系统开发的软件开发模型有 ( c ) A. 瀑布模型 B. RAD模型 C.原型模型20.UML图中描述系统结构的有 ( a ) A. 组件图 B. 顺序图 C.状态图21.面向对象方法是一种什么软件开发方法 ( b ) A.层次化 B.迭代增量式 C.逐步求精22.不可以用来衡量软件可维护性的有 ( c ) A.可靠性 B.可用性 C.可行性23. 系统分析员在需求分析最后负责编写 ( a )A.用户手册 B. 概要设计说明书 C.可行性研究报告24.为了提高软件的可靠性、可维护性等而对软件的修改称为 ( c )A.改正性维护 B.适
5、应性维护 C.预防性维护25.在结构化方法中,为使需求改变对软件影响较小,应该使软件结构 ( a )A. 与问题结构对应 B. 与问题结构独立 C.与用户界面对应26.单元测试的计划应该在什么阶段完成 ( c )A. 需求分析 B. 概要设计 C.详细设计27. 下列属面向对象软件开发方法的有 ( b )A. LCP方法 B. OMT方法 C.IDEF0方法28.强调信息隐藏的软件工程设计方法有 ( b )A.Jackson方法 B.Parnas方法 C.SA/SD方法29.描述系统动态行为的模型有 ( c )A.包图 B.软件结构图 C.状态图 30.考虑输入条件组合的测试用例设计方法有 (
6、 c )A.等价分类法 B.语句覆盖法 C. 因果图法31. 下列能减少支援性维护活动的有 ( c )A.利用软件包 B.进行配置管理 C.对用户进行适当培训32. 只支持单重继承的程序设计语言有 ( b )A.C+ B.Delphi C. C33. IDEF0图的顶层图是 ( a )A. A0图 B.A-0图 C.A-1图 34. 在UML的用例图中,扩展关系是一种 ( b )A. 泛化关系 B.依赖关系 C.关联关系35.独立测试小组开始介入测试是在 ( c )A.模块测试阶段 B.集成测试阶段 C.确认测试阶段36. 在成本估计中容易低估局部问题的方法是 ( c )A. 基于经验模型的估
7、计 B. 自底向上估计 C. 自顶向下估计37.在IDEF1X图中,如果子实体与父实体存在联系,则子实体将继承父实体的 ( b )A.全部属性 B.主关键字属性 C.非主关键字属性38. 结构化分析方法使用的工具有 ( a )A. 数据流图 B.类图 C.软件结构图39. 白盒测试设计用例的方法是 ( b )A. 等价分类法 B.基本路径覆盖法 C.因果图法40. 在衡量软件质量时,最重要的标准是 ( c )A. 可维护性好 B. 可用性好 C. 满足用户功能需求41. 瀑布模型是一种 ( b )A. 演化模型 B. 顺序模型 C. 增量模型42. 模块的独立程度可以由什么定性标准度量 ( a
8、 )A. 耦合度 B. 复杂度 C.可靠性43.以下选项中,不属于对象的特点有 ( c )A. 继承 B. 多态 C. 封闭44. 面向数据结构的设计方法有 ( b )A.Parnas方法 B.Jackson方法 C. IDEF0方法45. 与UML配合最好的软件开发方法是 ( a )A.RUP方法 B.Coad/Yourdon方法 C.IDEF4方法二、填空题:1.统一建模语言UML提供了两种描述整体/部分关系的方法,分别是 聚合 和 组合 。2.软件是计算机程序、 描述计算机程序的文档 及 数据 的完整集合,将其统称为软件配置,这些项称为软件配置项。通过正式复审的软件配置项称为 基线 ,只
9、有通过正式的变化控制过程才能改变它。3.纯收入是指在整个生存周期之内的 累计经济效益(折合成现在值) 与投资之差。4.瀑布模型是以 文档 驱动的软件生存周期模型,适合需求明确的软件系统开发。5.在单元测试期间,应该为被测模块编写相应的测试软件,一般地 驱动 模块接收测试数据,并把数据传给被测模块,而 桩 模块则模拟实际模块完成少量数据处理。6.IDEF0方法用严格的自顶向下、逐层分解的方式进行系统的功能描述,其顶层图将 A-0 图在建模范围内分解成 3-6 个主要部分得到。7.如果一个模块完成多个逻辑上相近或相关的功能,并且每次调用只选择该模块中的一个功能执行,则称此模块为 内聚的模块。8.程
10、序静态分析的对象是 源程序 。常生成各种引用表,如 标号交叉引用表 列出各模块中出现的全部标号。9.在数据流图中,每个加工至少有一个 输入流 和一个 输出流 。10.两个小组独立地测试同一个程序,第一组发现25个错误,第二组发现30个错误,在两个小组发现的错误中有15个是共同的,那么可以估计程序中的错误总数是 50 。11.设E为程序图G中边的总数; N 为程序图中结点的总数,则该程序图的环形复杂度为 E-N+2 。12.汽车有一个发动机。若用UML描述汽车和发动机之间的关系,则它们之间是_聚合_关系。13.自顶向下结合的渐增式测试法,在组合模块时有两种组合策略,即 深度优先 策略和 广度优先
11、 策略。14.在基本路径测试中,以详细设计为基础,导出控制流程图的拓扑结构: 程序图,在计算了程序图的 环形复杂度 之后,确定只包含独立路径的基本路径图,其中独立路径是包括一组 以前没有处理的语句或条件 的一条路径。从程序图来看,一条独立路径是至少包含有一条在其他独立路径中未有过的边的路径。15.在多层次的结构图中,其模块结构的层次数称为结构图的 深度 。结构图中同一层模块的最大模块数称为结构图的 宽度 。16.耦合性是指两个模块之间的 依赖 关系,模块之间的联系越复杂,每个模块的独立性就 越低 。17.可行性研究实质上是进行了一次 大大压缩简化了的系统分析和设计过程 过程。18.需求分析的任
12、务是 大大压缩简化了的系统分析和设计过程 。19.NS图的主要优点是它强制设计人员使用 结构化 技术,从而可保证软件设计的质量。20.结构型模式涉及如何组合类和对象,从而构成更大的对象,一是采用 继承 来组合接口或实现形成更大的结构;另一种方式通过 对象组合 方式来形成。 21.为了便于对照检查,测试用例应由 输入数据 和预期的 输出结果 两部分组成。22.软件开发时,一个错误发现得越晚,为改正它所付出的代价就 越大 。23.在UML的用例图中,根据参与者与用例关系的不同,参与者可分为 主要参与者 和次要参与者,参与者之间的关系只有 泛化 关系。24.评价软件质量可以从三个方面进行,即产品或中
13、间产品、 过程 和项目。25.软件配置管理是一组用于在计算机软件的整个生存周期内管理 变化 的活动。26.通过抽象,可以确定组成软件的 过程实体 。通过信息隐蔽,可以定义和实施对模块的过程细节和局部数据结构的 存取限制 。27.UML表示法的基础是 UML元模型 ,它描述建模元素的语义。28.条件覆盖是指设计足够的测试用例,使得 判定表达式中每个条件的各种可能的值 至少出现一次。29.面向数据流图的结构化分析方法是根据 分解与抽象 的原则,按照系统中数据处理的流程,用数据图来建立系统的 功能 模型。30.评估软件企业的质量管理有两种方法,一种是按照 ISO9001 认证,另外一种是按照CMM认
14、证。31.风险估计从两个方面来度量,一是估计 风险发生的可能性 ,二是估计与风险相关的问题出现后将会带来的损失。三、名词解释题:1. 集成测试也称组装测试或联调。是指在单元测试的基础上,将所有模块按照概要设计要求组装成一个完整的系统而进行的测试。模块组装的方式有两种:渐增式和非渐增式。2. 设计模式是普通面向对象设计问题的解决方案,这类问题以一组交互类的形式出现,用户根据需要定制这些交互类以形成专门的设计。所有设计模式均可以从四个方面加以描述:模式名称、问题描述、解决方案和效果。3. 信息隐藏是指在模块设计时,使得一个模块内包含的信息(过程或数据),对于不需要这些信息的其他模块来说是不能访问的
15、。这样,改变模块的内部过程和数据的设计不会影响到其它模块。4. 用例是参与者为达到某个目的而与系统进行的一系列交互,执行结果将为参与者提供可度量的价值。从参与者的角度来看,用例应该是一个完整的任务,在一个相对较短的时间内完成。5. 结构化方法是一种传统的软件开发方法,其总的指导思想是自顶向下、初步求精、单入口、单出口,其基本原则是抽象和功能分解。6. MVC即模型、视图、控制器。其中,模型是应用对象,其包含一些数据值,维护数据并提供数据的访问方法。视图显示模型的部分或说有数据,多个视图可以以不同的方式来显示模型中数据。控制器处理用户输入事件。四、判断题:1. 测试计划、测试用例和出错统计等一般
16、不用长期保存。 ( )2. 在面向对象方法中,需求分析和设计没有差别。 ( )3. 应用设计模式使得软件灵活,可重用性提高,应该尽量多使用。 ( )4. UML是一种建模语言,可以被任何面向对象方法使用。 ( )5. 任何系统都需要对数据进行处理,因而数据流图可描述任何系统。 ( )6. 软件开发就是编写程序代码。 ( )7. 面向对象软件开发最适合采用迭代、增量式的开发模型。 ( )8. 设计模式是一种可以重用的面向对象软件设计方案。 ( )9. 软件测试就是检查程序是否正确。 ( )10. 软件项目计划在可行性研究阶段就已定稿。 ( ) 11. 软件工程认为软件设计的最终目标是要取得最佳方
17、案。 ( )12. 只要对软件进行严格的测试,就能发现软件中的所有错误。 ( )13. 初级技术人员在编码阶段参与软件项目的程度在各类人员中最高。 ( )14. 单元测试常常在编码阶段进行。 ( )15. CMM描述和分析了软件过程能力的发展与改进的程度。 ( ) 16. 为了加快开发速度,可以一边写程序,一边设计文档。 ( )17. 没有发现任何错误的测试是无效的测试。 ( )18. 软件结构图中不能有控制信息流动。 ( )19. 单元测试常常由独立的测试小组进行。 ( )20. 用例建模只能用于面向对象软件系统的开发。 ( )21. 数据流建模方法是一种自顶向下的需求分析方法。 ( )22
18、. 为了减少程序的长度,最好不要在程序中增加注释。 ( )五、简答题:1. 在需求分析和设计阶段建立原型的好处有哪些?2. 什么是模块的扇入和扇出?3. UML的特点是什么?4.层次图和层次方框图有何区别?5. 软件测试对象应包括哪些内容?6. 试简要叙述文档在软件工程中的作用。7. 为何螺旋模型主要适合开发人员和用户为同一个组织机构成员的软件项目的开发?8. 软件测试为何需要尽早和不断地进行?9.简要说明如何实现MVC。10.试给出一种开源软件框架,并简要说明开源软件存在的问题。11. IDEF0方法有什么特点?12. 快速原型模型有几种?各有何特点?六、综合题:1.某网络学院决定开发一个管
19、理所有学生和教师信息的交互式网络系统,该系统提供如下服务:(1)浏览学生信息:网络学院的任何人员,包括学生和老师,均可以浏览学院任何学生的信息,包括姓名、学号和专业名称。(2)浏览教师信息:网络学院的任何人,包括学生和老师,均可以浏览学院任何教师的信息,包括姓名、工号和职称。(3)登录:网络学院给学院每个人一个账号。拥有授权帐号的学生和老师,可以使用系统提供的页面设置个人密码,并使用该帐号和密码向系统注册。(4)修改个人信息:学生或老师向系统注册后,可以发送电子邮件或使用系统提供的页面,对个人信息进行修改。(5)删除个人信息:只有网络学院的管理人员才能删除不再是学院学生或老师的人员的有关信息。
20、试问哪些是参与者?哪些是用例?并用UML的用例图描述系统行为。 2.试据下述伪代码描述的模块,改用NS图描述。Begin a b Do Until x6 If xl then f If x4 then Do Until x5 i End Until Else g h End if Else Select Case x2 Case 1: Do While x3 c End While Case 2: d Case 3: e End Select End ifEnd UntilEnd3.某五星级宾馆共有H间客房。每间客房的房间号、房间等级、床位数以及占用状态分别存放在数组ROOM、RANK、NBE
21、D和STATUS中。房间等级用整数表示。房间状态有:空闲(0表示)和占用(1表示)。客房以房间为单位出租。试设计一个算法,依据散客的要求预定房间,要求输入为:人数M,房间等级要求R(R为0表示任意等级均可);输出为:可供选择的房间号。要求用程序流程图描述算法。4. 某医院打算开发一个以计算机为中心的患者监护系统,以解决医院人手不够和对危重病人的及时监护。该系统应能做到以下几点:随时接受每个病人的生理信号;定时记录病人情况形成患者日志;当病人生理信号超出医生规定的安全范围时向值班护士发告警信息;此外,护士在需要时,还可要求系统印出指定病人的病情报告。试椐此叙述绘出对应的DFD图。5. 试采用设计
22、模式描述算术表达式(不含圆括号)的设计方案。算术表达式是由加、减、乘、除和操作数构成的表达式,操作数假定为实数。(A1)(B=0)X=X/2(A=2)(X1)X=X+2adbceFFTT6.请根据如下程序流程图设计该程序段的判定覆盖测试用例,其中输入为A,B,X,输出为X。参考答案一、选择题:1A 2A 3C 4B 5B 6C 7C8C 9B 10B 11B 12A 13C 14A15C 16B 17A 18C 19C 20A 21B22C 23A 24C 25A 26C 27B 28B29C 30C 31C 32B 33A 34B 35C36C 37B 38A 39B 40C 41B 42A
23、43C 44B 45A二、填空题:1聚集 组合2描述计算机程序的文档 数据 基线3累计经济效益(折合成现在值)4文档5驱动模块 桩模块6A-0 3-6 7逻辑8源程序 标号交叉引用表 9输入流 输出流1050 11 E N + 212 聚合 13深度优先 广度优先 14. 环形复杂性 以前没有处理的语句或条件 15. 深度 宽度16依赖 越低 17大大压缩简化了的系统分析和设计过程18确定系统必须完成哪些工作 19结构化 20. 继承 对象组合21输入数据 预期输出结果 22越大 23主要参与者 泛化 24. 过程 25. 变化26过程实体 存取限制 27UML元模型 28判定表达式中每个条件
24、的各种可能的值 29分解与抽象 功能 30. ISO9001 31. 风险发生的可能性三、名词解释题:1集成测试也称组装测试或联调。是指在单元测试的基础上,将所有模块按照概要设计要求组装成一个完整的系统而进行的测试。模块组装的方式有两种:渐增式和非渐增式。2设计模式是普通面向对象设计问题的解决方案,这类问题以一组交互类的形式出现,用户根据需要定制这些交互类以形成专门的设计。所有设计模式均可以从四个方面加以描述:模式名称、问题描述、解决方案和效果。 3信息隐藏是指在模块设计时,使得一个模块内包含的信息(过程或数据),对于不需要这些信息的其他模块来说是不能访问的。这样,改变模块的内部过程和数据的设
25、计不会影响到其它模块。4用例是参与者为达到某个目的而与系统进行的一系列交互,执行结果将为参与者提供可度量的价值。从参与者的角度来看,用例应该是一个完整的任务,在一个相对较短的时间内完成。5结构化方法是一种传统的软件开发方法,其总的指导思想是自顶向下、初步求精、单入口、单出口,其基本原则是抽象和功能分解。6MVC即模型、视图、控制器。其中,模型是应用对象,其包含一些数据值,维护数据并提供数据的访问方法。视图显示模型的部分或说有数据,多个视图可以以不同的方式来显示模型中数据。控制器处理用户输入事件。 四、判断题:1X 2X 3X 4 5 6X 7 8 9X 10X11X 12X 13 14 151
26、6X 17 18X 19X 20. X21. 22. X五、简答题:1在需求分析和设计阶段建立原型的好处有:(1)增进开发人员和用户对系统需求的一致理解,明确软件需求,尤其是功能含糊的需求。(2)原型提供了一种有力的学习手段,能够使用户尽早接触系统。(3)原型可以用来识别或化解风险。(4)原型有的可以原封不动地成为产品,有的略加修改就可以成为最终系统的一个组成部分,这样有利于建成最终系统。2扇入则定义为一个模块被调用(或控制)的模块个数;扇出表示一个模块直接调用(或控制)的其他模块数目。3UML的特点是: (1)统一了面向对象方法的有关概念和描述方法; (2)表达能力强,能对各种并发分布式系统
27、进行建模,且UML还提供了扩展机制; (3)UML专注于一种标准的建模语言,而不是一个开发过程。4层次图主要用来描绘软件的层次结构,矩形框代表一个模块,矩形框之间的连线表示模块之间的调用关系,常与IPO图一起形成HIPO图。层次方框图主要描述系统的组成关系,一般自用域需求分析。 5软件测试并不等于程序代码测试,其应该贯穿于软件定义与开发的整个期间。因此,需求分析、概要设计以及程序编码等各阶段所得的文档,包括需求规格说明、概要设计说明、详细设计规格说明以及源程序代码都应成为软件测试的对象。6在软件工程中,文档的作用是:(1)提高软件开发过程的能见度;(2)记录开发过程的有关信息便于使用与维护;
28、(3)作为开发人员阶段工作成果和结束标志;(4)提高开发效率;(5)提供软件运行、维护和培训有关资料;(6)便于用户了解软件功能、性能。7因为如果开发人员和用户属于不同的组织机构,则一般在正式的软件开发之前均需要签订合同,所有的风险分析均必须在签订合同之前完成。但螺旋模型需要在软件开发的每一个阶段都进行风险分析,当重要风险不能解决时,项目应该终止。由此螺旋模型可能因为风险使得合同在完成之前就终止,从而导致法律诉讼。故螺旋模型不适合开发人员和用户属于不同组织机构的情况。8软件测试不应仅仅作为一个独立的软件开发阶段,而应贯穿到软件开发的各个阶段中。通过各阶段的评审,在早期把错误解决,以减少错误放大
29、效应,这样不仅可以提高软件质量,而且也是降低软件成本的一个重要措施。由此,软件测试应该尽早和不断地进行。 9MVC是ModelViewController的简写。Model 代表的是应用的业务逻辑(通过JavaBean,EJB组件实现), View 是应用的表示层(由JSP页面产生),Controller 是提供应用的处理过程控制(一般是一个Servlet),通过MVC把应用逻辑,处理过程和显示逻辑分成不同的组件实现。 10Struts是采用Java Servlet/JavaServer Pages技术,开发Web应用程序的开源应用框架。 Struts框架主要有如下功能:1)包含一个contr
30、oller servlet,能将用户的请求发送到相应的Action对象; 2)JSP自由tag库,并且在controller servlet中提供关联支持,帮助开发人员创建交互式表单应用;3).提供了一系列实用对象,如XML处理、通过Java reflection APIs自动处理JavaBeans属性、国际化的提示和消息等。开源软件存在的主要问题有:(1)技术服务支持较少;(2)版本控制困难;(3)性能不够稳定;(4)文档不全,等等。11IDEF0方法的特点是:(1)采用方框和箭头等简单的图形符号描述系统的活动和数据流,描述活动所受到的约束条件及实现机制,清楚地反映了系统的功能。(2)采用严
31、格的自顶向下、逐层分解的方式建立系统功能模型。顶层确定系统范围,采用抽象原则,然后有控制的逐步展开有关活动的细节,符合SA方法的分析策略。同时,IDEF0规定每张图至少有3个、最多有6个方框,上界6保证采用层次性描述复杂问题的可理解性,下界3保证分解有意义。 12根据原型的不同作用,有三类原型模型:探索型原型。这种类型的原型模型是把原型用于开发的需求分析阶段,目的是要弄清用户的需求,确定所期望的特性,并探索各种方案的可行性。它主要针对开发目标模糊,用户与开发着对项目都缺乏经验的情况,通过对原型的开发来明确用户的需求。实验型原型。这种原型主要用于设计阶段,考核实现方案是否合适,能否实现,对于一个
32、大型系统,若对设计方案心中没有把握时,可通过这种原型来证实设计方案的正确性。演化型原型。这种原型主要用于及早向用户提交一个原型系统,该原型系统或者包含系统的框或者包含系统的主要功能。在得到用户的认可后,将原型系统不断扩充演变为最终的软件系统,它将原型的思路扩展到软件开发的全过程。六、综合题:1. 2. 3.开始输入M和RI=1,J=0IH?NBED(I)1)(B=0)为假;判定(A=2)(X1)为假) (3分)II:a c e (判定(A1)(B=0)为真;判定(A=2)(X1)为真) (3分) (2) 选择测试用例I:输入A=1 B=1 X=1 预期输出 X=1(3分)II:输入A=2 B=0 X=4 预期输出 X=4(3分)