软件架构风格

  1. 什么是软件架构风格?常见的架构风格有哪些?(架构风格数独虚调仓)

软件架构风格是描述某一特定应用领域中系统组织方式的惯用模式。架构风格定义一个系统家族,即一个体系结构定义一个词汇表和一组约束。词汇表中包含一些构件和连接件类型,而这组约束指出系统是如何将这些构件和连接件组合起来的。架构风格反映了领域中众多系统共有的结构和语义特性,并指导如何将各个模块和子系统有效地组织成一个完整的系统。
常见的架构风格包括:

架构风格种类简介
数据流

批处理:整体方式传递数据,传统编译器

管道过滤器

区别在于整体
调用/返回

主程序/子程序:单线程控制,显示调用

面向对象:对象是构件

层次结构:构件组成一个结构

独立构件

进程通信

事件驱动系统:语法高亮、语法错误提示

虚拟机

解释器

规则系统:包括规则集、规则解释器、规则/数据选择器、工作内存。DSS、人工智能、专家系统

仓库

数据库系统:独立处理单元

黑板系统:语音识别、知识推理、信号处理、问题规划、编译器优化。知识源、黑板、控制。

超文本系统:网状链接,互联网

现代编译器的IDE,以数据为中心,数据共享
其他

消息总线/面向服务架构

过程控制:汽车巡航定速、空调温度调节

C2:构件和连接件、顶部和底部


一.数据流风格:面向数据流,按照一定的顺序从前向后执行程序。代表有批处理、管道-过滤器。
批处理:构件为一系列固定顺序的计算单元,构件之间只通过数据传递交互。每个处理步骤是一个独立的程序,每一步必须在前一步结束后才能开始,数据必须是完整的,以整体的方式传递。
管道-过滤器:每个构件都有一组输入和输出,构件读取输入的数据流,经过内部处理,产生输出数据流。前一个构件的输出作为后一个构件的输入,前后数据关联。过滤器是构件,管道是连接件。
二.调用返回风格:构件之间存在相互调用的关系,一般是显示的调用。代表有主程序/子程序、面向对象、层次结构
主程序/子程序:单线程控制,把问题划分为若干个处理步骤,构件是主程序和子程序,子程序通常可合成为模块。过程调用作为交互机制,充当连接件角色。
面向对象:构件是对象,对象是抽象数据类型的实例。在抽象数据类型中,数据的表示和它们的相应操作被封装起来,对象的行为体现在其接受和请求的动作。连接件是对象间交互的方式,对象是通过函数和过程调用来交互的。
层次结构:构件组成一个层次结构,连接件通过决定层间如何交互的协议来定义。每层为上一层提供服务,使用下一层的服务,只能见到与自己相邻的层。
三.独立构件风格:构件之间是相互独立的,不存在显示调用关系,而是通过某个事件触发、异步通信的方式来执行。代表有进程通信、事件驱动(隐式调用)。
进程通信:构件是独立的进程,连接件是消息传递。构件通常是命名过程,其消息传递的方式可以是点对点、异步或同步方式或远程调用的方式。
事件驱动(隐式调用):构件不直接调用一个过程,而是触发或广播一个或多个事件。构件中的过程在一个或多个事件中注册,当某个事件被触发时,系统自动调用在这个事件中注册的所有过程。
四.虚拟机风格:自定义了一套规则供使用者使用,使用者基于这个规则来开发构件,能够跨平台适配。代表有解释器、规则系统。
解释器:它含有一个虚拟机,通常包括一个完成解释工作的解释引擎、一个包含将被解释的代码存储区、一个记录解释引擎当前工作状态的数据结构,以及一个记录源代码被解释执行的进度数据结构。
规则系统:包括规则集、规则解释器、规则/数据选择器和工作内存,一般用于人工智能和DSS中。
五.仓库风格:以数据为中心,所有的操作都是围绕建立的数据中心进行的。代表有数据库系统、黑板系统、超文本系统。
数据库系统:构件主要有两大类,一类是中央共享数据源,保存当前系统的数据状态;另一类是多个独立处理单元,处理单元对数据元素进行操作。
黑板系统:包括知识源、黑板和控制三部分。知识源包括若干独立的不同计算单元,提供解决问题的知识。知识源响应黑板的变化,也只修改黑板;黑板是一个全局数据库,包含问题域解空间的全部状态,是知识源的唯一媒介;知识源响应是通过黑板状态的变化来控制的。
超文本系统:构件以网状链接方式相互连接,用户可以在构件之间任意跳转到相关构件。
六.闭环-过程控制风格。
七.C2风格。

  1. 解释器,管道过滤器,隐式调用三种架构风格从机器学习流程定义的灵活性和学习算法的可扩展性两个方面进行对比与分析,哪个更适合于机器学习平台?

解释器:机器学习流程定义的灵活性高,可扩展能力强,因为解释器风格可以通过自定义流程规则及配套流程解释引擎开发,做到用户层面的流程完全定义,而不需要修改代码,所以无论是修改已有的业务流程,还是要扩展不同的角色,创建新角色的流程都非常便利。
管道过滤器:机器学习流程定义的灵活性较低,可扩展能力较弱。因为管道过滤器是把数据处理职能做成过滤器,把数据传递做成管道,此时如果流程不发生变化,是可以通过这种方式实现的,但一旦流程变化,或是扩展功能,需要对过滤器进行修改调整,或是流程在程序层面重建,此时必须修改代码完成任务。
隐式调用:机器学习流程定义的灵活性一般,可扩展能力一般。隐式调用强调的是通过间接方式进行调用,如采用事件机制,要完成某个动作时先触发事件,事件与相关动作关联,以提升灵活度,比管道过滤器强,但弱于完全自定义的解释器。

  1. 针对用户级别和折扣规则管理功能的架构设计问题,李工建议采用面向对象,王工建议采用基于规则,请从用户级别和折扣规则定义的灵活性、可扩展性、性能三个方面进行比较,更适合采用哪种架构风格?

灵活性:面向对象将用户级别、折扣规则等封装为对象,在系统启动时加载,灵活性较低。基于规则将用户级别、折扣规则等描述为可动态改变的规则数据,灵活性高。
可扩展性:面向对象加入新的用户和折扣规则时需要重新定义新的对象,并需要重启系统,可扩展性差。基于规则加入新的用户级别和折扣规则时只需要定义新的规则,解释规则即可进行扩展。
性能:面向对象的用户级别和折扣规则已经在系统内编码,可直接运行,性能较好。基于规则需要对用户级别和折扣规则进行实时解释,性能较差。
综上可以得出,针对用户级别和折扣规则管理功能更适合采用基于规则的架构风格。

  1. 针对手机应用程序集成开发环境,李工建议采用管道-过滤器,王工建议采用数据仓库,请从交互方式、数据结构、控制结构、扩展方法四个方面进行比较,更适合采用哪种架构风格?

交互方式:管道-过滤器数据在管道中传递,采用顺序结构或有限循环结构;数据仓库的数据在中心位置,中心为语法结构树,与周边结点都可以交互,采用星型结构。
数据结构:管道-过滤器在过滤器之间传递数据流;数据仓库采用文件或模型存储数据。
控制结构:管道-过滤器采用数据流驱动;数据仓库采用业务功能驱动。
扩展方法:管道-过滤器通过过滤器提供的标准接口适配;数据仓库采用数据模型适配。

  1. 什么是构件?什么是连接件?什么是软件重用?构件的三个特性是什么?

构件又称组件,是一个功能相对独立的、具有可重用价值的软件单元。在面向对象方法中,一个构件由一组对象组成,包含了一些协作的类的集合。
连接件是一种架构元素,它通过对构件之间交互规则的建模来实现构件之间的连接。
软件重用是使用已有的软件产品(如设计、代码、文档等)来开发新的软件系统的过程。可分为垂直式重用和水平式重用。
构件的三个特性是:1.独立部署单元;2.作为第三方的组装单元;3.没有外部可见的状态。

  1. 什么是中间件?中间件的作用和特点是什么?

中间件是一种独立的系统软件或服务程序,可以帮助分布式应用软件在不同的技术之间共享资源。
中间件的作用:
1. 负责客户机与服务器之间的连接与通信,以及客户机与应用层之间的高效通信。
2. 提供应用层不同服务之间的互操作机制,以及应用层与数据库之间的连接和控制机制。
3. 提供多层架构的应用开发和运行的平台。
4. 屏蔽硬件、操作系统、网络和数据库的差异。
5. 提供应用的负载均衡和高可用性、安全机制与管理功能。
6. 提供一种通用的服务去执行不同的功能,避免重复的工作和使应用之间高效协作。

  1. EJB构件中的Bean构件分为哪三种类型,每种类型Bean的职责是什么?

1、会话Bean:维护一个短暂的会话。
2、实体Bean:维护一行持久稳定的数据。
3、消息驱动Bean:异步接受消息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值