软件设计与体系结构简答题汇总

news2024/11/25 20:19:32
  1. 假设系统中有三个类,分别为类 A 、类 B 和类 C 。在现有的设计中,让类 A 直接依赖类 B ,如果要将类 A 改为依赖类 C ,必须通过修改类 A 的代码来达成,请问这样的设计符合开闭原则吗( 2 分)?如果符合,请依据开闭原则进行解释,如果不符合请给出重构的方法( 3 分)。

目前的设计不符合开闭原则( 2 分)
重构问题:新建接口 I ,使得类 A 依赖于接口 I , 而类 B 和 C 实现接口 I 。(或相同概念的表述)( 3 分)

  1. 假设某一软件系统中存在类 A,B,C,D,E 。请分别画出使用这些类的中介者模式类图及外观模式类图。

    中介者模式类图 ( 4 分)
    在这里插入图片描述
    外观模式类图( 4 分
    在这里插入图片描述

  2. 假如系统中存在一组具有相同结构的产品类,如图所示,如果要创建具体产品对象,应该使用哪一种创建模式?( 2 分)
    根据给出的类图,绘制出产品等级和产品族的图示。( 3 分)
    根据产品族图示,绘制工厂类的层次结构图(必须写清类的方法)。( 4 分)
    在这里插入图片描述
    1 )应该使用抽象工厂模式( 2 分)

    2 )产品等级和产品族的图示 (3 分)
    在这里插入图片描述
    工厂类图( 4 分 , 不对类名和方法名做限制,能够正确表达含义即可)
    在这里插入图片描述

  3. 简述开闭原则、依赖倒转原则的定义。

    开闭原则:一个软件实体,应该对扩展开放,对修改关闭( 3 分)
    依赖倒转原则:高层模块不应该依赖于低层模块,它们都应该依赖抽象。( 3 分)

  4. 简述策略模式的应用场景( 3 分),并绘制策略模式的类图 (3 分)。
    1 )策略模式的应用场景:当解决一个问题,有很多种方法或解决方案可以使用时,可以将每一种方法或解决方案封装成一个类,可以相互替换(或相同意义表达, 3 分 ).
    2) 类图( 3 分)
    在这里插入图片描述

  5. 假如要用软件实现自动茶水销售机的功能,茶水的价格取决于茶的品种和杯子的大小。请回答以下问题,

    1. 应该使用哪一种模式?( 2 分)
    2. 请绘制该模式的类图。( 4 分)
    1. 根据产品族图示,绘制工厂类的层次结构图(必须写清类的方法)。( 4 分)

    1)应该使用桥接模式(2分)
    2) 类图(4分,不对类名和方法名做限制,能够正确表达含义即可)
    在这里插入图片描述
    3 ) 根据产品族图示,绘制工厂类的层次结构图(必须写清类的方法)。( 4 分)
    在这里插入图片描述

  6. 三层 C/S 体系结构中,中间件是最重要的构件,请请简述其定义及功能?

    三层C/S体系结构中,中间件是一个用API定义的软件层,是具有强大的通信能力和良好可扩展性的分布式软件管理框架。

    它的功能是在客户机和服务器或者服务器和服务器之间传送数据,客户机群和服务器群之间的通信。

  7. 程序设计语言的集成开发环境通常会集成各种工具,如调试器、编辑器、变量监视器
    等,当调试器执行到断点时,编辑器需要定位到相应的源码位置、变量监视器需要更新局部变量列表及其当前值。这样的集成开发环境适合采用哪种体系结构?简述这种体系结构的优点。

    基于事件的系统

    为软件重用提供强大的支持。当需要将一个构件加入现存系统中时,只需要将它注册到系统的事件中;
    为改进系统带来了方便。当用一个构件代替另一个构件时,不会影响其他构件的接口。

  8. 简述分层系统的结构形式及其优点。

    层次系统组织成一个层次结构,每一层为上层服务,并作为下层客户。连接件通过决定层间如何交互的协议来定义,拓扑约束包括对相邻层间交互的约束。

    优点:支持基于抽象程度递增的系统设计,使设计者可以把一个复杂系统按递增的步骤进行分解;支持功能增强,因为每一层至多和相邻的上下层交互,因此功能的改变最多影响相邻的上下层。

    支持重用,只要提供的服务接口定义不变,同一层的不同实现可以交换使用。这样,就可以定义一组标准的接口,而允许各种不同的实现方法。

  9. 简述基于事件的隐式调用系统风格的思想及其优点。

    构件不直接调用一个过程,而是触发或广播一个或多个事件。系统中的其它构件中的过程在一个或多个事件中注册,当一个事件被触发,系统自动调用在这个事件中注册的所有过程,这样,一个事件的触发就导致了另一模块中的过程的调用。

    为软件重用提供了强大的支持。当需要将一个构件加入现存系统中时,只需将它注册到系统的事件中;为改进系统带来了方便,当用一个构件代替另一个构件时,不会影响到其它构件的接口。

  10. 三层C/S体系结构中,各层的主要功能是什么?各层间通信效率若不高,即使分配给各
    层的硬件能力很强,其作为整体来说也达不到所要求的性能。设计时必须慎重考虑层间通信哪几个方面的问题?

    表示层是应用的用户接口部分,它担负着用户与应用间的对话功能。它用于检查用户从键盘输入的数据,显示应用输出的数据。

    功能层相当于应用的本体,将具体的业务处理逻辑编入程序中。

    数据层就是数据库管理系统,负责管理对数据库数据的读写。

    通信方法、通信频度、数据量。

  11. 仓库系统按照控制原则的选取产生两个主要的子类,即传统型数据库和黑板系统。传统型数据库和黑板系统分别根据什么触发进程的选择?举例说明黑板系统传统应用领域。

    若输入源中某类事件触发进程执行的选择,则仓库是一传统型数据库;若中央数据结构的当前状态触发进程执行的选择,则仓库是一黑板系统。

    信号处理领域,如语音与模式识别;松耦合代理数据存储共享。

  12. 三层 C/S 体系结构中,中间件是最重要的构件,它是一个用 API 定义的软件层。
    在三层 C/S 结构中中间件需要具有什么样的特性?中间件在三层 C/S 结构中完成什
    么功能?其工作流程是怎样的?

    具有强大的通信能力和良好的可扩展性的分布式软件管理框架。

    它的功能是在客户机和服务器或者服务器与服务器之间传送数据,实现客户机群和
    服务器群之间的通信。

    工作流程是:在客户机里的应用程序需要驻留在某个服务器的数据或服务时,搜索
    此数据和服务的 C/S 应用程序需访问中间件系统,该系统将查找数据源或服务,并
    在发送应用程序请求后重新打包响应,将其传送回应用程序。

  13. 简述黑板系统的三个组成部分?说明黑板系统传统应用在什么领域?

    知识源:知识源中包含独立的,与应用程序相关的知识。

    黑板数据结构:黑板数据是按照与应用程序相关的层次来组织的解决问题的数据。

    控制:控制完全由黑板的状态驱动,黑板状态的改变决定使用的特定知识。

    黑板系统传统应用在信号处理领域,另一应用是松耦合代理数据共享存取。

  14. ”内外有别”模型

    C/S 与 B/S 混合软件体系结构的一种模型。企业内部用户通过局域网直接访问数据库
    服务器,软件系统采用 C/S 体系结构;企业外部用户通过 Internet 访问 Web 服务器,
    通过 Web 服务器再访问数据库服务器,软件系统采用 B/S 体系结构。

  15. “查改有别”模型

    C/S 与 B/S 混合软件体系结构的一种模型。不管用户通过什么方式连接到系统,凡是
    需要执行维护和修改数据操作的,就使用 C/S 体系结构,如果只是执行一般的查询
    和浏览操作,则使用 B/S 体系结构。

  16. 基于事件的隐式调用系统的主要优缺点有哪些?

    优点:
    (1)为软件系统重用提供了强大的支持。当需要将一个构件加入到现存系统
    中,只需将它注册到系统的事件中。
    (2)为改进系统带来了方便。当用一个构件代替另一个构件时,不会影响到其它构
    件的接口。

    缺点:
    (1)构件放弃了对系统计算的控制;
    (2)数据交换的问题;
    (3)既然过程的语义必须依赖于被触发事件的上下文约束,关于正确性的推理存在
    问题。

  17. 软件重用

    软件重用是指两次或多次不同的软件开发过程中重复使用相同和相近元素的过程。
    软件元素包括程序代码、测试用例、设计文档、设计过程、需求分析文档甚至领域
    知识。

  18. 构件

    构件是指语义完整、语法正确和有可重用价值的单位软件,是软件重用过程中可以
    明确标识的系统;结构上它是语义描述、通信接口、和实现代码的复合体。

  19. 体系结构的意义

    1)体系结构是风险承担者进行交流的手段
    2)体系结构是早期设计决策的体现:体系结构明确了对系统实现的约束条件、决定了开发和维护组织的组织结构、制约着系统的质量因素、通过研究体系结构可能预测软件质量、软件体系结构使推理和控制更改更简单、有助于循序渐进的原型设计、软件体系结构可以作为培训的基础
    3)软件体系结构是可传递和可重用的模型

  20. ATAM 评估方法的基本步骤是什么?

    (1)描述 ATAM 方法
    (2)描述业务动机
    (3)描述体系结构
    (4)确定体系结构方法
    (5)生成质量属性效用树
    (6)分析体系结构方法
    (7)讨论和分级场景
    (8)分析体系结构方法
    (9)描述评估结果

  21. 软件体系结构评估对主要方式有哪些?

    (1) 基于调查问卷或检查表的评估方式调查问卷是一系列可以应用到各种体系结构评估对相关问题, 这些问题可能涉及体系结构对设计决策, 文档,描述本身对细节问题等质量属性。这一评估方法比较灵活自由, 可评估多种质量属性,也可以在软件体系结构设计的多个阶段进行。尽管此方式相对比较主观,但他仍然是进行软件体系结构评估对重要途径之一。
    (2) 基于场景的评估方式场景是一系列有序使用或修改系统的步骤。 这种软件体系评估方式分析软件体系结构对场景,也就是对系统对使用或修改活动的支持程度, 从而判断该体系结构对这一场景所代表对质量需求对满足程度。
    (3) 基于度量的评估方式度量是指为软件产品对某一属性所赋予对数值。 此评估技术涉及 3 个基本活动: 首先需要建立属性和质量之间的映射关系, 然后从软件体系结构文档中获取度量信息, 最后根据映射原则分析推导出系统对某些质量属性。

  22. 图形用户界面对于用户输入的响应一般采用基于事件隐式调用来实现,可使用观
    察者模式来实现,画出观察者模式的结构图,以 JDK 中 awt 组件 Button 的
    ActionEvent 的响应为例,说明 awt 中是如何使用观察者模式的。

    观察者模式结构图:
    在这里插入图片描述

    Button 实例为被观察者,actionListener 接口(模式结构中的 Observer)定义了
    actionPerformed(对应模式中的 update 方法)。Button 的 addActionListener(模式
    中 Subject 的 attach 方法)用于注册负责事件处理的对象,负责处理事件的对象(模
    式中的 ConcreteOberver)实现了 actionListener 接口,当动作事件发生时 Button
    实例对注册的负责事件处理的对象调用 actionPerformed 方法实现对事件的处理

  23. 某可跨平台移植的图形绘制软件提供了多种不同类型的图形,例如圆形、三角
    形、长方形等,并为每种图形提供了多种样式,例如平面图形、立体图形等。该软
    件还需经常增加新的图形及新的图形样式,可采用哪种模式设计该图形绘制软件?
    画出该模式的结构示意图。

    桥接模式
    桥接模式结构示意图:
    在这里插入图片描述

  24. 举出一个职责链模式应用的例子,说明其优点。

    例子,例如:学生请假
    优点:让多个对象都有可能接受请求,将这些对象连接成一条链,沿着连接传递请求,避免请求发送者与接收者耦合在一起。

  25. 举出一个外观模式应用的例子,说明其优点。

    例子,例如:系统门户
    外部模块与子系统的通信通过一个统一的外观对象进行,为子系统中的一组接口提供一个一致的界面,定义了一个高层接口,使得这一子系统更容易使用。解耦外部模块与子系统,子系统的变化只影响外观对象。

  26. 设计模式的问题陈述告诉人们什么时候要使用设计模式、解释问题及其背景,一般用一
    个强制条件集来表示。多个强制条件之间的关系有哪两种可能?MVC 模式指出了两个强制条件,分别是什么?

    相互补充或相互矛盾。
    易于修改界面;软件核心功能不能被修改所影响。

  27. 简述基于事件的系统风格的思想。如果选择一个设计模式来实现基于事件的系统
    可以选择哪个设计模式?

    构件不直接调用过程,而是触发或广播一个或多个事件。系统中其他构件中的过程
    在一个或多个事件中注册,当一个事件被触发,系统自动调用在这个事件中注册的所有过程。

    观察者模式。触发事件的构件为被观察者,其它构件为观察者。

  28. 简述单例模式的动机或者目的。假设有一个类 A,采用 Java 语言写出如何实现单例模式。

    单例模式确保某一个类只有一个实例,自行实例化并向整个系统提供这个实例。
    参考代码:

    classA{
    	private static A aInstance=null;
    	private A(){} //私有构造方法
    	public static A getInstance()
    	{
    		if(aInstance==null) aInstance = new A();
    		return aInstance;
    	}
    }
    
  29. 什么是设计模式?其目的是解决什么问题?

    设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。

    使用设计模式的目的是为了提高代码的可重用性,让代码更容易被他人理解,并保
    证代码的可靠性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/42844.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

跟着官方帮助文档学ICEM网格划分(附视频教程)

作者 | 如鹰展翅上腾 导读:划分结构化网格是ICEM软件的一大特色,自学的话会比较耗时,如有人带的话,入门进阶都是比较快的,就像一层窗户纸一捅就破。软件是使我们研究的问题得以求解的工具,重点侧向于操作…

毕业设计 基于大数据的服务器数据分析与可视化系统 -python 可视化 大数据

文章目录0 前言1 课题背景2 实现效果3 数据收集分析过程**总体框架图****kafka 创建日志主题****flume 收集日志写到 kafka****python 读取 kafka 实时处理****数据分析可视化**4 Flask框架5 最后0 前言 🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升&…

企业数据流转5个大坑,你最烦哪个?

对于公司来说,注重数据安全已然是一个必须项,如何保护数据安全也是让公司管理者头痛的问题。 云宝贝罗列了公司5个常见的数据安全场景,并给出了应对方法,看看你公司有没有踩雷。 01、文件云端流转,不落地 “员工在公…

【初阶数据结构】——限定性线性表:栈 和 队列详解(C描述)

文章目录前言1. 栈1.1 栈的概念及结构1.2栈的实现1.2.1 动态or静态1.2.2 结构介绍1.2.3 初始化栈1.2.4 销毁栈1.2.5 压栈1.2.6 出栈1.2.7 判空1.2.8 取栈顶元素1.2.9 获取有效元素个数1.3 测试1.4 源码展示1.4.1 stack.h1.4.2 stack.c1.4.3 test.c2. 队列2.1 队列的概念及结构2…

2022年最新全国各省五级行政区划代码及名称数据(省-市-区县-乡镇-村)

1、数据来源:国家统计局 2、官方更新时间:2021年10月31日 3、数据样例: 包括字段:省份名称、城市代码、城市名称、区县代码、区县名称、乡镇街道代码、乡镇街道名称、居委会村代码、城乡分类代码、居委会村名称、完整五级地址 …

Java的JFrame窗体的创建(两种方法)

第一种直接创建 package com.jwz.h综合项目;import javax.swing.*;public class Test {public static void main(String[] args) {//创建宽高jFrame.setSize(488, 580);//创建窗口对象JFrame jFrame new JFrame();jFrame.setTitle("拼图游戏");//设置标题jFrame.se…

肝了47天最终上岸美团,这份最新版千页Java八股到底是有多全面?

上周接到美团HR打来的电话(吃惊!),居然约我面试。 一面和二面都是电话面试,一面的的时候美团小哥给我一个链接,需要手写代码就在那个页面里面写。一面比较顺利,感觉美团问得挺全面的。二面的时…

数据机构——顺序表的基本操作

一、实验要求 二、实验代码 # include "bits/stdc.h"using namespace std;#define OK 1 #define ERROR 0 #define OVERFLOW -2 #define MAXSIZE 100 //定义顺序表的最大长度//定义数据结构体 typedef struct book {int number; //编号string name; //名称float p…

二、CSS下拉菜单[颜色布局、子影响父]

一、源码 效果 html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevi…

python+pyautogui—PC端自动化(二)键盘鼠标及对话框操作

目录 鼠标操作 获取鼠标所在位置坐标 获取鼠标所在位置的RGB值 鼠标点击 鼠标按下和释放 鼠标移动 鼠标拖拽 滚轮滚动 键盘操作 输入英文字符 普通按键操作press 按下与抬起 组合键hotkey 持续按键hold 弹出对话框 alert confirm prompt password 鼠标操作 …

iconfont在vue项目中的使用及如何在一个项目中引入多个iconfont图标库

iconfont的使用 下载方式本文不做详细的展示 重点演示一下同一个项目如何使用两个图标库 有的时候在一个项目的基础上,把当前的项目改为另一个项目,不想影响到当前的字体图标,或者不知道之前的字体图标管理的图标库在哪里了.再引入一个新的字体图标库不失为一个好办法,那么如何…

DASCTF NOV X联合出题人2022年度积分榜争夺赛 RE-部分题解

babytea 一轮8位加密 先对输入的前4位进行异或0x1234567 在对输入的后4位进行异或0x89ABCDEF 对del的条件加密为del>>180时进行异或0x1234567 到了32时 就把先对输入的前4位作为异或的xor1 先对输入的后4位进行异或xor2 逻辑整理下那么就是 void encrypt(uint32_t*…

Linux安装elasticsearch、IK分词器和kibana

简介&#xff1a; 因为内网环境不能上外网&#xff0c;安装最新的版本有问题而且不容易排查&#xff0c;所以安装了比较老的一个版本6.2.2。在安装的时候&#xff0c;为了讲清楚所有文件源头&#xff0c;所以介绍的啰嗦&#xff0c;但是很详细。 这里主要说明elasticsearch、ki…

如何用R语言在机器学习中建立集成模型?

介绍 在本文中&#xff0c;我将向您介绍集成建模的基础知识。 另外&#xff0c;为了向您提供有关集成建模的实践经验&#xff0c;我们将使用R进行集成。最近我们被客户要求撰写关于集成模型的研究报告&#xff0c;包括一些图形和统计输出。 1.什么是集成&#xff1f; 通常&am…

简单描述标准生成树协议STP

简单描述标准生成树协议STP 生成树协议STP 为什么需要生成树 如上图所示网络拓扑&#xff0c;如果没有生成树协议&#xff0c;在网络通信开始时&#xff0c;假设PC0向PC1发送一个数据包&#xff0c;交换机S2的MAC地址表中并没有对应的MAC地址&#xff0c;因此会产生ARP洪泛&a…

常见的项目管理问题有哪些?

在项目执行过程中&#xff0c;相信大家总会遇到一些项目管理常见问题以及各种意想不到的管理问题。如果想让你的项目取得最终成功&#xff0c;项经理便需要有一个计划来快速有效地应对任何出现的问题&#xff0c;否则它们会影响项目的成果。那么常见的项目管理问题有哪些呢&…

PolarDB-X 的 in 常量查询

场景 实际场景中经常需要根据一些常量指标做IN查询&#xff0c;并且IN值往往是分区键。例如在电商场景中&#xff0c;有两张表&#xff0c;买家表与订单表。订单的具体信息会记录到订单表中&#xff0c;该表按照订单ID进行哈希拆分&#xff1b;买家表则会保存买家ID及其关联的…

Flowable 中的网关、流程变量以及历史流程

今天这篇文章&#xff0c;松哥和大家梳理一下 Flowable 中的网关、流程变量以及历史流程的玩法。 1. 三大网关 Flowable 中网关类型其实也不少&#xff0c;常见的主要有三种类型&#xff0c;分别是&#xff1a; 排他网关并行网关包容网关 这三个里边最常用的当然就是排他网关…

苦等官方阿里云盘TV版久矣,终于期待一款TV版。

苦等官方阿里云盘TV版久矣&#xff0c;终于期待一款TV版。 一、获取链接&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/19Z-2Lb4-lOSU14M83rivVA 提取码&#xff1a;o2z0 二、产品&#xff1a; 1、文件列表&#xff1a;确定键打开文件或文件夹&#xff0c;菜单键进…

华为19级专家10年心血终成百页负载均衡高并发网关设计实战文档

负载均衡&#xff08;LoadBalance&#xff09;的字面意思是将工作负载分担到多个工作单元上进行执行&#xff0c;它建立在现有网络结构之上&#xff0c;是构建分布式服务、大型网络应用的关键组件。 近十几年来&#xff0c;负载均衡技术层出不穷&#xff0c;令人眼花缭乱。如果…