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. 什么是设计模式?其目的是解决什么问题?

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

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

软件设计与体系结构简答题汇总相关推荐

  1. 软件设计与体系结构编程题汇总

    现在需要开发一款游戏软件,请以单例模式来设计其中的 Boss 角色.角色的属性和动作可以任意设计. 要求:该 Boss 类可以在多线程中使用.( 8 分) Public class Boss{Priv ...

  2. 计算机组成原理简答知识点,计算机组成原理简答题汇总,史上最全

    研究生入学考试,计算机组成原理简答题汇总,基本覆盖全部知识点. 一.计算机硬件系统组成的基本概念 1.什么是计算机系统?说明计算机系统的层次结构. 计算机系统包括硬件和软件.从计算机系统的层次结构来看 ...

  3. 软件设计与体系结构第二版董威_董威-软件设计与体系结构(第2版)-PPT课件.zip-3-4-形式化方法.ppt...

    董威-软件设计与体系结构(第2版)-PPT课件.zip-3-4-形式化方法.ppt (1009.5 KB) 下载风险提示 若需要下载,请务必先预览(下载的文件和预览的文件一致) 由于本站上传量巨大,来 ...

  4. 软件设计与体系结构第三次实验——web服务开发

    目录 一.后端 二.前端 三.运行结果 概述:本次实验中我们选择使用实现REST API,在web上实现登录.签到以及查询签到结果的功能. 一.后端 本次实验在第二次实验(设计模式)的基础上进行了极大 ...

  5. 自考计算机网络原理简答题,自考计算机网络原理简答题汇总.doc

    自考计算机网络原理简答题汇总 2013-440.TCP可用的端口号有65536个,请说明这些端口号的使用规定. P139第六章 (1)端口号小于256的定义为常用端口,服务器一般都是通过常用端口来识别 ...

  6. 最新java自考简答题汇总_我的自考经历

    亲爱的尚德的校友们,大家好.我是来自四川一个小城镇的80后南方姑娘,在2019年6月在尚德报的自考连锁经营管理专行政管理本专本连读. 之前上大学的时候.由于某些原因.就上了一年就休学了.大专毕业证也没 ...

  7. 软件设计与体系结构思维导图

    软件设计与体系结构思维导图 第一章 软件工程与软件设计 第二章 统一建模语言UML 目录版 详细版 第三章 软件设计基础 目录版 详细版 第四章 面向对象的软件设计方法 目录版 详细版 第六章 用户界 ...

  8. 【软件工程】简答题汇总

    [软件工程]简答题 第一章 软件工程 1.与硬件相比,软件的特点 (1)不是具体的物理实体,具有抽象性 (2)没有明显的制造过程 (3)存在退化问题 (4)对计算机系统有着不同程度的依赖性 (5)尚未 ...

  9. 软件设计与体系结构(第二版)部分习题

    第一章:软件工程与软件设计 1.叙述软件工程中可修改性,有效性,可靠性,可理解性,可维护性,可重用性,可适应性,可移植性和可追踪性等概念的含义,并指明这些概念的重要性 可修改性(modifiabili ...

最新文章

  1. windows 平台使用 VS2017 编译 libevent 源码
  2. 区块链课程笔记-第一课哈希算法在加密中的应用
  3. HTML5语言格式,HTML5 自然语言格式的输入表单
  4. mysql 5.6.23 源码包安装报错_大环境下MySQL5.6源码安装实战一步步教你 CentOS6.5_64bit下编译安装...
  5. arggis怎么修改上下标_京东自营是怎么操作的?有什么要求?
  6. 玩转oracle 11g(1):Oracle 11g的安装
  7. JEECMS编辑漏洞及随便拿webshell,啊哈哈
  8. 计算机科学是对描述和变换,对计算机科学发展的思考
  9. 敏捷开发“松结对编程”实践之六:大型团队篇|后记(大型研发团队,学习型团队,139团队,师徒制度,人员招聘,职业生涯规划)...
  10. Linux 超全实用指令大全 | CSDN 博文精选
  11. Scala学习笔记(二)表达式和函数
  12. python爬虫cookie池搭建_爬虫——cookies池的搭建
  13. Android开机优化之调整Launcher的加载时间
  14. c语言编程开发app,C语言编程app
  15. PS CS6启动“不能打开暂存盘文件”的解决方法
  16. 软件设计实战:基于Java的俄罗斯方块游戏【完整版】
  17. unity制作子弹击砖块过程分析
  18. 深度揭秘暴力破解SSH密码 —— Medusa美杜莎
  19. java服务监控_Java最流行的微服务框架监控和各种监控数据
  20. Excel VBA工程密码破解程序 (绝对可以破解)

热门文章

  1. 扑克牌自动图像识别在博彩行业的应用
  2. 基于PHP的学生管理系统设计与实现
  3. 信息系统项目管理师考试如何备考
  4. .NetCore微信支付+服务商模式(saas)
  5. tomcat的部署 tar.gz
  6. coreseek错误WARNING: failed to open pid_file '/usr/local/coreseek/var/log/searchd_mysql.pid'
  7. 【云原生系列】第一讲:什么是云计算
  8. Java程序员,你会选择25k的996还是18k的965?
  9. 记录slow log相关的参数
  10. 祝贺Phyllis Turner女士成为世界上最年长的硕士!