- 假设系统中有三个类,分别为类 A 、类 B 和类 C 。在现有的设计中,让类 A 直接依赖类 B ,如果要将类 A 改为依赖类 C ,必须通过修改类 A 的代码来达成,请问这样的设计符合开闭原则吗( 2 分)?如果符合,请依据开闭原则进行解释,如果不符合请给出重构的方法( 3 分)。
目前的设计不符合开闭原则( 2 分)
重构问题:新建接口 I ,使得类 A 依赖于接口 I , 而类 B 和 C 实现接口 I 。(或相同概念的表述)( 3 分)
-
假设某一软件系统中存在类 A,B,C,D,E 。请分别画出使用这些类的中介者模式类图及外观模式类图。
中介者模式类图 ( 4 分)
外观模式类图( 4 分
-
假如系统中存在一组具有相同结构的产品类,如图所示,如果要创建具体产品对象,应该使用哪一种创建模式?( 2 分)
根据给出的类图,绘制出产品等级和产品族的图示。( 3 分)
根据产品族图示,绘制工厂类的层次结构图(必须写清类的方法)。( 4 分)
1 )应该使用抽象工厂模式( 2 分)2 )产品等级和产品族的图示 (3 分)
工厂类图( 4 分 , 不对类名和方法名做限制,能够正确表达含义即可)
-
简述开闭原则、依赖倒转原则的定义。
开闭原则:一个软件实体,应该对扩展开放,对修改关闭( 3 分)
依赖倒转原则:高层模块不应该依赖于低层模块,它们都应该依赖抽象。( 3 分) -
简述策略模式的应用场景( 3 分),并绘制策略模式的类图 (3 分)。
1 )策略模式的应用场景:当解决一个问题,有很多种方法或解决方案可以使用时,可以将每一种方法或解决方案封装成一个类,可以相互替换(或相同意义表达, 3 分 ).
2) 类图( 3 分)
-
假如要用软件实现自动茶水销售机的功能,茶水的价格取决于茶的品种和杯子的大小。请回答以下问题,
- 应该使用哪一种模式?( 2 分)
- 请绘制该模式的类图。( 4 分)
- 根据产品族图示,绘制工厂类的层次结构图(必须写清类的方法)。( 4 分)
1)应该使用桥接模式(2分)
2) 类图(4分,不对类名和方法名做限制,能够正确表达含义即可)
3 ) 根据产品族图示,绘制工厂类的层次结构图(必须写清类的方法)。( 4 分)
-
三层 C/S 体系结构中,中间件是最重要的构件,请请简述其定义及功能?
三层C/S体系结构中,中间件是一个用API定义的软件层,是具有强大的通信能力和良好可扩展性的分布式软件管理框架。
它的功能是在客户机和服务器或者服务器和服务器之间传送数据,客户机群和服务器群之间的通信。
-
程序设计语言的集成开发环境通常会集成各种工具,如调试器、编辑器、变量监视器
等,当调试器执行到断点时,编辑器需要定位到相应的源码位置、变量监视器需要更新局部变量列表及其当前值。这样的集成开发环境适合采用哪种体系结构?简述这种体系结构的优点。基于事件的系统
为软件重用提供强大的支持。当需要将一个构件加入现存系统中时,只需要将它注册到系统的事件中;
为改进系统带来了方便。当用一个构件代替另一个构件时,不会影响其他构件的接口。 -
简述分层系统的结构形式及其优点。
层次系统组织成一个层次结构,每一层为上层服务,并作为下层客户。连接件通过决定层间如何交互的协议来定义,拓扑约束包括对相邻层间交互的约束。
优点:支持基于抽象程度递增的系统设计,使设计者可以把一个复杂系统按递增的步骤进行分解;支持功能增强,因为每一层至多和相邻的上下层交互,因此功能的改变最多影响相邻的上下层。
支持重用,只要提供的服务接口定义不变,同一层的不同实现可以交换使用。这样,就可以定义一组标准的接口,而允许各种不同的实现方法。
-
简述基于事件的隐式调用系统风格的思想及其优点。
构件不直接调用一个过程,而是触发或广播一个或多个事件。系统中的其它构件中的过程在一个或多个事件中注册,当一个事件被触发,系统自动调用在这个事件中注册的所有过程,这样,一个事件的触发就导致了另一模块中的过程的调用。
为软件重用提供了强大的支持。当需要将一个构件加入现存系统中时,只需将它注册到系统的事件中;为改进系统带来了方便,当用一个构件代替另一个构件时,不会影响到其它构件的接口。
-
三层C/S体系结构中,各层的主要功能是什么?各层间通信效率若不高,即使分配给各
层的硬件能力很强,其作为整体来说也达不到所要求的性能。设计时必须慎重考虑层间通信哪几个方面的问题?表示层是应用的用户接口部分,它担负着用户与应用间的对话功能。它用于检查用户从键盘输入的数据,显示应用输出的数据。
功能层相当于应用的本体,将具体的业务处理逻辑编入程序中。
数据层就是数据库管理系统,负责管理对数据库数据的读写。
通信方法、通信频度、数据量。
-
仓库系统按照控制原则的选取产生两个主要的子类,即传统型数据库和黑板系统。传统型数据库和黑板系统分别根据什么触发进程的选择?举例说明黑板系统传统应用领域。
若输入源中某类事件触发进程执行的选择,则仓库是一传统型数据库;若中央数据结构的当前状态触发进程执行的选择,则仓库是一黑板系统。
信号处理领域,如语音与模式识别;松耦合代理数据存储共享。
-
三层 C/S 体系结构中,中间件是最重要的构件,它是一个用 API 定义的软件层。
在三层 C/S 结构中中间件需要具有什么样的特性?中间件在三层 C/S 结构中完成什
么功能?其工作流程是怎样的?具有强大的通信能力和良好的可扩展性的分布式软件管理框架。
它的功能是在客户机和服务器或者服务器与服务器之间传送数据,实现客户机群和
服务器群之间的通信。工作流程是:在客户机里的应用程序需要驻留在某个服务器的数据或服务时,搜索
此数据和服务的 C/S 应用程序需访问中间件系统,该系统将查找数据源或服务,并
在发送应用程序请求后重新打包响应,将其传送回应用程序。 -
简述黑板系统的三个组成部分?说明黑板系统传统应用在什么领域?
知识源:知识源中包含独立的,与应用程序相关的知识。
黑板数据结构:黑板数据是按照与应用程序相关的层次来组织的解决问题的数据。
控制:控制完全由黑板的状态驱动,黑板状态的改变决定使用的特定知识。
黑板系统传统应用在信号处理领域,另一应用是松耦合代理数据共享存取。
-
”内外有别”模型
C/S 与 B/S 混合软件体系结构的一种模型。企业内部用户通过局域网直接访问数据库
服务器,软件系统采用 C/S 体系结构;企业外部用户通过 Internet 访问 Web 服务器,
通过 Web 服务器再访问数据库服务器,软件系统采用 B/S 体系结构。 -
“查改有别”模型
C/S 与 B/S 混合软件体系结构的一种模型。不管用户通过什么方式连接到系统,凡是
需要执行维护和修改数据操作的,就使用 C/S 体系结构,如果只是执行一般的查询
和浏览操作,则使用 B/S 体系结构。 -
基于事件的隐式调用系统的主要优缺点有哪些?
优点:
(1)为软件系统重用提供了强大的支持。当需要将一个构件加入到现存系统
中,只需将它注册到系统的事件中。
(2)为改进系统带来了方便。当用一个构件代替另一个构件时,不会影响到其它构
件的接口。缺点:
(1)构件放弃了对系统计算的控制;
(2)数据交换的问题;
(3)既然过程的语义必须依赖于被触发事件的上下文约束,关于正确性的推理存在
问题。 -
软件重用
软件重用是指两次或多次不同的软件开发过程中重复使用相同和相近元素的过程。
软件元素包括程序代码、测试用例、设计文档、设计过程、需求分析文档甚至领域
知识。 -
构件
构件是指语义完整、语法正确和有可重用价值的单位软件,是软件重用过程中可以
明确标识的系统;结构上它是语义描述、通信接口、和实现代码的复合体。 -
体系结构的意义
1)体系结构是风险承担者进行交流的手段
2)体系结构是早期设计决策的体现:体系结构明确了对系统实现的约束条件、决定了开发和维护组织的组织结构、制约着系统的质量因素、通过研究体系结构可能预测软件质量、软件体系结构使推理和控制更改更简单、有助于循序渐进的原型设计、软件体系结构可以作为培训的基础
3)软件体系结构是可传递和可重用的模型 -
ATAM 评估方法的基本步骤是什么?
(1)描述 ATAM 方法
(2)描述业务动机
(3)描述体系结构
(4)确定体系结构方法
(5)生成质量属性效用树
(6)分析体系结构方法
(7)讨论和分级场景
(8)分析体系结构方法
(9)描述评估结果 -
软件体系结构评估对主要方式有哪些?
(1) 基于调查问卷或检查表的评估方式调查问卷是一系列可以应用到各种体系结构评估对相关问题, 这些问题可能涉及体系结构对设计决策, 文档,描述本身对细节问题等质量属性。这一评估方法比较灵活自由, 可评估多种质量属性,也可以在软件体系结构设计的多个阶段进行。尽管此方式相对比较主观,但他仍然是进行软件体系结构评估对重要途径之一。
(2) 基于场景的评估方式场景是一系列有序使用或修改系统的步骤。 这种软件体系评估方式分析软件体系结构对场景,也就是对系统对使用或修改活动的支持程度, 从而判断该体系结构对这一场景所代表对质量需求对满足程度。
(3) 基于度量的评估方式度量是指为软件产品对某一属性所赋予对数值。 此评估技术涉及 3 个基本活动: 首先需要建立属性和质量之间的映射关系, 然后从软件体系结构文档中获取度量信息, 最后根据映射原则分析推导出系统对某些质量属性。 -
图形用户界面对于用户输入的响应一般采用基于事件隐式调用来实现,可使用观
察者模式来实现,画出观察者模式的结构图,以 JDK 中 awt 组件 Button 的
ActionEvent 的响应为例,说明 awt 中是如何使用观察者模式的。观察者模式结构图:
Button 实例为被观察者,actionListener 接口(模式结构中的 Observer)定义了
actionPerformed(对应模式中的 update 方法)。Button 的 addActionListener(模式
中 Subject 的 attach 方法)用于注册负责事件处理的对象,负责处理事件的对象(模
式中的 ConcreteOberver)实现了 actionListener 接口,当动作事件发生时 Button
实例对注册的负责事件处理的对象调用 actionPerformed 方法实现对事件的处理 -
某可跨平台移植的图形绘制软件提供了多种不同类型的图形,例如圆形、三角
形、长方形等,并为每种图形提供了多种样式,例如平面图形、立体图形等。该软
件还需经常增加新的图形及新的图形样式,可采用哪种模式设计该图形绘制软件?
画出该模式的结构示意图。桥接模式
桥接模式结构示意图:
-
举出一个职责链模式应用的例子,说明其优点。
例子,例如:学生请假
优点:让多个对象都有可能接受请求,将这些对象连接成一条链,沿着连接传递请求,避免请求发送者与接收者耦合在一起。 -
举出一个外观模式应用的例子,说明其优点。
例子,例如:系统门户
外部模块与子系统的通信通过一个统一的外观对象进行,为子系统中的一组接口提供一个一致的界面,定义了一个高层接口,使得这一子系统更容易使用。解耦外部模块与子系统,子系统的变化只影响外观对象。 -
设计模式的问题陈述告诉人们什么时候要使用设计模式、解释问题及其背景,一般用一
个强制条件集来表示。多个强制条件之间的关系有哪两种可能?MVC 模式指出了两个强制条件,分别是什么?相互补充或相互矛盾。
易于修改界面;软件核心功能不能被修改所影响。 -
简述基于事件的系统风格的思想。如果选择一个设计模式来实现基于事件的系统
可以选择哪个设计模式?构件不直接调用过程,而是触发或广播一个或多个事件。系统中其他构件中的过程
在一个或多个事件中注册,当一个事件被触发,系统自动调用在这个事件中注册的所有过程。观察者模式。触发事件的构件为被观察者,其它构件为观察者。
-
简述单例模式的动机或者目的。假设有一个类 A,采用 Java 语言写出如何实现单例模式。
单例模式确保某一个类只有一个实例,自行实例化并向整个系统提供这个实例。
参考代码:classA{ private static A aInstance=null; private A(){} //私有构造方法 public static A getInstance() { if(aInstance==null) aInstance = new A(); return aInstance; } }
-
什么是设计模式?其目的是解决什么问题?
设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。
使用设计模式的目的是为了提高代码的可重用性,让代码更容易被他人理解,并保
证代码的可靠性。