您好,欢迎访问三七文档
当前位置:首页 > 高等教育 > 习题/试题 > 软件体系结构试题版本
软件体系结构考试试题1、设计模式一般用来解决什么样的问题(a)A.同一问题的不同表相B不同问题的同一表相C.不同问题的不同表相D.以上都不是2、下列属于面向对象基本原则的是(c)A.继承B.封装C.里氏代换D都不是3、Open-Close原则的含义是一个软件实体(a)A.应当对扩展开放,对修改关闭.B.应当对修改开放,对扩展关闭C.应当对继承开放,对修改关闭D.以上都不对4、当我们想创建一个具体的对象而又不希望指定具体的类时,可以使用(a)模式。A.创建型B.结构型C行为型D.以上都可以5、要依赖于抽象,不要依赖于具体。即针对接口编程,不要针对实现编程,是(d)的表述A.开-闭原则B.接口隔离原则C.里氏代换原则D.依赖倒转原则6、依据设计模式思想,程序开发中应优先使用的是(a)关系实现复用。A,委派B.继承C创建D.以上都不对复用方式:继承和组合聚合(组合委派)7、设计模式的两大主题是(d)A.系统的维护与开发B对象组合与类的继承C.系统架构与系统开发D.系统复用与系统扩展8、单子模式中,两个基本要点(ab)和单子类自己提供单例A.构造函数私有B.唯一实例C.静态工厂方法D.以上都不对9、下列模式中,属于行为模式的是(b)A.工厂模式B观察者C适配器以上都是10、“不要和陌生人说话”是(d)原则的通俗表述A.接口隔离B.里氏代换C.依赖倒转D.迪米特:一个对象应对其他对象尽可能少的了解11、构造者的的退化模式是通过合并(c)角色完成退化的。A.抽象产品B产品C创建者D使用者12、单子(单例,单态)模式类图结构如下:下列论述中,关于”0..1”表述的不正确的是(d)A.1表示,一个单例类中,最多可以有一个实例.B.”0..1”表示单例类中有不多于一个的实例C.0表示单例类中可以没有任何实例D.0表示单例类可以提供其他非自身的实例13、对象适配器模式是(a)原则的典型应用。A.合成聚合复用原则B.里式代换原则C.依赖倒转原则D.迪米特法则14、静态工厂的核心角色是(a)A.抽象产品B.具体产品C.静态工厂D.消费者15、下列关于静态工厂与工厂方法表述错误的是:(a)A.两者都满足开闭原则:静态工厂以ifelse方式创建对象,增加需求的时候会修改源代码B.静态工厂对具体产品的创建类别和创建时机的判断是混和在一起的,这点在工厂方法中C.不能形成静态工厂的继承结构D.在工厂方法模式中,对于存在继承等级结构的产品树,产品的创建是通过相应等级结构的工厂创建的。16、在观察者模式中,表述错误的是(c)A.观察者角色的更新是被动的。B.被观察者可以通知观察者进行更新C.观察者可以改变被观察者的状态,再由被观察者通知所有观察者依据被观察者的状态进行。D.以上表述全部错误。17.对于违反里式代换原则的两个类,可以采用的候选解决方案错误的是:(d)A.创建一个新的抽象类C,作为两个具体类的超类,将A和B共同的行为移动到C中,从而解决A和B行为不完全一致的问题。B.将B到A的继承关系改组成委派关系。C.区分是“IS-a”还是”Has-a”。如果是“Is-a”,可以使用继承关系,如果是”Has-a”应该改成委派关系D.以上方案错误18.对象组合的有点表述不当的是(d)A.容器类仅能通过被包含对象的接口来对其进行访问。B.“黑盒”复用,封装性好,因为被包含对象的内部细节对外是不可见。C.通过获取指向其它的具有相同类型的对象引用,可以在运行期间动态地定义(对象的)组合D.造成极其严重的依赖关系。19.关于继承表述错误的是:(d)A.继承是一种通过扩展一个已有对象的实现,从而获得新功能的复用方法。B.泛化类(超类)可以显式地捕获那些公共的属性和方法。特殊类(子类)则通过附加属性和方法来进行实现的扩展。C.破坏了封装性,因为这会将父类的实现细节暴露给子类。D.继承本质上是“白盒复用”,对父类的修改,不会影响到子类。20.对于依赖倒转的表述错误的是(e)A.依赖于抽象而不依赖于具体,也就是针对接口编程。B.依赖倒转的接口并非语法意义上的接口,而是,一个类对其他对象进行调用时,所知道的方法集合。C.从选项B的角度论述,一个对象可以有多个接口。D.实现了同一接口的对象,可以在运行期间,顺利地进行替换。而且不必知道所示用的对象是那个实现类的实例。E.此题没有正确答案。21.面向对象的六条基本原则包括:开闭原则,里式代换原则,合成聚合原则以及(依赖倒转),(迪米特法则),(单一原则),(接口隔离?)。22.在存在继承关系的情况下,方法向(超类)方向集中,而数据向(子类)方向集中。23.适配器模式,分为类的适配器和对象的适配器两种实现。其中类的适配器采用的是(继承)关系,而对象适配器采用的是(组合聚合)关系。24.设计模式的基本要素有(名字),(意图),(问题),(解决方案),(参与者与协作者),(实现),(一般性结构)。25.创立型模式的根本意图是要把(对象的创建)和(使用分离)的责任进行分离,从而降低系统的(耦合度)。26.工厂模式分为(简单工厂),(工厂方法),(抽象工厂)三种类型27.门面模式是(迪米特)法则的典型运用28.MVC模型的基本工作原理是基于(观察者)模式,实现是基于(命令)模式29.设计模式的思想根源是(开闭)基本原则的宏观运用,本质上是没有任何模式的,发现模式的人永远是大师,而死守模式的人,最对只能是一个工匠.UML、设计模式(测试题)不定项选择题:1.一个软件产品是否成功,因素有()。l需求收集是否正确l体系结构的构建是否合理l测试是否完全l软件的管理2.开发过程中最困难的一个环节是()。人与人之间的交流3.用例是从(用户)的观点对系统行为的一个描述。4.顺序图所表达的是基于(时间顺序)的动态交互。5.当需要在项目中定制自己的元素时,可使用(构造型来定制)。6.表示一个操作中的参数和返回值的数据类型的称呼是(形构)。7.多重性5,10表示(5或者10)。8.在找出了类的继承关系后,通常可以用(接口)来表示最上层的基类。9.UML中的实现是一种特殊类型的继承,因为它是指从一个(接口)继承。10.使用用例的难点在于(用例中各个场景的具体步骤)。11.收集用例的方法是(交谈)。12.产生类图和得到用例这两个步骤,位于前面的是(没有固定顺序)。13.面向对象理论中,对象之间发送信号,在UML状态图里就是(事件)。14.顺序图中,动态创建对象表示法的特点是(是在时间线上的某一点创建,结束时尾部打X)。15.当代软件工程的特点是()。l允许各个阶段进行迭代l各个阶段没有明显的分界线l允许后期得到的信息返回,使得早期的能够被修改。16.GRAPPLE中最重要的段是()。l需求收集l需求分析l用例开发l编码l测试17.设计模式的基本要素有(名称,目的(意图),解决方案,实施后达到的效果)。18.当我们想创建一个具体的对象而又不希望指定具体的类时,可以使用(创建性)模式。19.当我们想将抽象部分和实现部分分离时,可以使用(桥接)模式。20.当我们想用不同的请求对客户进行参数化时,可以使用(命令)模式。21.当我们想封装不同算法并使它们可相互替换时,可以使用(策略)模式。22.面向对象系统中功能复用的两种最常用技术是()。l对象组合(优先使用)l类继承(限制使用类继承)-产生类爆炸23.面向对象系统中的“黑盒复用”是指(对象组合)。24.对象组合是通过获得(抽象类的指针)而在运行时刻动态定义的。25.设计模式中应优先使用的复用技术是(对象组合)。26.在Lexi系统中,我们把所有文档元素都看作是图元,这样,它们就有了相同的(接口(也叫类型))。27.Lexi系统中,我们之所以能对文档采用Composite模式,是因为文档的元素之间有(递归(树型结构))关系。填空题:16.GRAPPLE把开发过程分为5个段,之中又由许多动作组成。17.GRAPPLE过程中,得到初步类图是在需求收集段,细化类图是在需求分析段。18.每一个设计模式都集中于一个特定的设计问题,描述了相互通信的对象或者类、以及解决方案和解决效果。19.面向对象系统中功能复用的两种最常用技术是对象组合和类继承。20.设计模式中应优先使用对象组合而不是类继承。简答题1.类图在UML中有何重要作用?答:1.为开发人员提供这种模仿现实世界的表达方式。2.让分析员使用客户所采用的术语和客户交流,促使客户说出所要解决的问题的重要细节。2.阐述用例对于系统开发人员来说的价值。答:是用来从用户的观察角度收集系统需求的一项技术,便于分析员与客户和用户交流,使系统更符合用户的需求3.简述如何在实际工作中发现类。答:在与客户的交谈中,要注意客户用来描述业务实体的名词术语。这些名词可作为领域模型中的类。还要注意你听到的动词,因为这些动词可能会构成这些类中的操作。当得到一组类的核心列表后,应当向客户询问在业务过程中每个类的作用。他们的回答将告诉你这些类的职责。4.简述怎样发现类之间的继承关系。答:作为候选的类有可能和它的父类、子类在谈话中同时被发现。系统分析员意识到某个类的属性和操作也许能被运用到其他多个类当中去。另一种可能的情况是系统分析员注意到两个或者多个类可能具有相同的属性和操作数5.试使用UML的关系表示法,表示出大学计算机专业中如下这些课程的模型:C语言程序设计、C++语言程序设计、Windows程序设计、网络程序设计。注意抽象类和依赖的使用。6.画出图形用户界面GUI的状态图,要包括屏幕保护状态。其中要表明相应的事件、动作。答:图形用户界面(GUI)是一个可以说明状态转移细节的例子。在这里,假设GUI可以处于以下3种状态之一:Initializing(初始化)。Working(工作)。ShutDown(关闭)。当打开PC电源的时候,自启动发生。因此TurningthePCon(打开PC)是一个触发器事件,它导致了GUI的状态转移到Initializing状态,而Bootup(自启动)是一个在转移过程中执行的动作。由于Initializing状态中活动的完成,GUI将转移进入Working状态。当你对PC选择ShutDown(关闭机器)时,就引发了ShutDown触发器事件,最后PC自己切断电源,整个过程结束。下面的状态图捕获了GUI的这些状态和转移。下图是GUI加入了Screensaving状态和保护条件的状态图,注意图中的保护条件[isTimeout],被写成一个布尔表达式。7.顺序图和协作图中,消息有哪三种?各自的意义和表示法什么?答:消息可以是简单的(simple)、同步的(synchronous)或异步的(asynchronous)。简单消息是从—个对象到另一个对象的控制流的转移。如果一个对象发送了—个同步消息,那么它要等待对方对消息的应答,收到应答后才能继续自己的操作。而发送异步消息的对象不需要等待对方的应答便可以继续自己的操作。在顺序图中,简单消息是—个简单箭头,同步消息是实心箭头。异步消息是—个半边箭头,8.画出自动饮料销售机中,理想场景和“钱数不正确”的场景合并在一起的顺序图假设在饮料销售机中有3个对象来做上述工作:前端(Front)(它是饮料销售机与顾客之间的接口),钱币记录仪(Register)(它负责收集顾客投的钱币),以及分配器(Dispenser)。我们还假设钱币记录仪控制分配器对象。那么对象之间的交互序列可能如下所示:1.顾客向机器前端的槽缝中投入钱币。2.顾客选择所要购买的饮料品种。3.钱币被转送给记录仪。4.由于这是一个理想情况下的场景,假设有饮料存货,则记录仪控制分配器将一罐饮料投递到销售机的前端。由于上述对应的序列图只覆盖了用例“Buysoda”的一个场景(也就是一个实例),因此它被称之为实例顺序图(instancesequencediagram)。下图显示了对应的实例顺序图。注意图中只有简单消息,每个消息都引起控制流程从一个对象转移到另一个对象。对于“钱数不正确”场景:1.记录仪检查顾客输入的钱币数星是否与所要购买的饮料价格匹配。2.如果输入数量大于价格,则记录仪
本文标题:软件体系结构试题版本
链接地址:https://www.777doc.com/doc-1990598 .html