系统架构设计师-软件架构设计(5)

目录

一、构件与中间件技术

        1、软件复用

        2、构件与中间件技术的概念

        3、构件的复用

                3.1 检索与提取构件

                3.2 理解与评价构件

                3.3 修改构件

                3.4 组装构件

        4、中间件

                4.1 采用中间件技术的优点:

                4.2 中间件的分类:

        5、构件标准

                5.1 CORBA(公共对象请求代理体系结构)

                5.2 J2EE【EJB】

                5.3 DNA2000

二、C/S架构与B/S架构

三、常用层次架构

        1、MVC架构风格

        2、MVP架构风格

        3、MVVM架构风格

四、RIA架构风格

五、数据访问模式

六、数据访问设计层


一、构件与中间件技术

        1、软件复用

                软件复用【重用】是多次不同的软件开发过程中重复使用相同或相似【软件元素】的过程。

                【软件元素】

                例:需求分析文档、设计过程、设计文档、程序代码、测绘用力、领域知识等。

                【复用的历史发展路线】

                【复用的维度】

                水平复用:不分行业领域,通用。

                垂直复用:分行业领域,专用。

        2、构件与中间件技术的概念

               【构件的定义 】

                定义1:软件构件是一种组装单元,它具有规范的接口规约和显式的语境依赖。软件构件可以被独立地部署并由第三方任意组装。

                定义2:构件是系统中有价值的、几乎独立的并可替换的一部分,它在良好定义的体系结构语境内满足某清晰的功能。

                定义3:构件是一个独立发布的功能部分,可以通过其接口访问它的服务。

        3、构件的复用

                3.1 检索与提取构件

                (1)基于关键字的检索

                        特点:树形或有向无回路图结构

                (2)刻面检索法

                        特点:利用Facet描述构件执行的功能、被操作的数据、构件应用的语境或任意其它特征。

                        例如:分多个刻面:应用领域、使用环境、功能

                (3)超文本检索法 

                        特点:按照人类的联想思维方式任意跳转到相关概念或构件的文档。

                3.2 理解与评价构件

                (1)要复用构件,准确的理解构件至关重要。特别是对构件修改使用时。

                (2)为达到目的,必须要求构件的开发过程遵循公共标准

                (3)一般构件库的文档中全面而准确地说明以下内容:

                        构件的功能与行为、相关的领域知识、可适应性约束条件与例外情形、可以预见的的修改部分及修改方法。

                3.3 修改构件

                (1)理想状态是直接复用构件库中现成的构件,但大多数情况下,必须对构件进行或多或少的修改,以应对新需求。

                (2)为了减少构件的工作量,要求开发人员尽量使构件的功能、行为和接口设计更为抽象化、通用化、和参数化。这样,复用者即可通过对实参的选取来调整构件的功能或行为。如果这种调整仍不足以使构件适用于新系统,复用者就必须借助设计信息和文档来修改构件。

                (3)构件库中若无可修改使用的构件,则按新需求开发构件,并存入构件库。

                3.4 组装构件

                组装的三种方式:

                (1)基于功能的组装:采用子程序调用和参数传递的方式将构件组装起来。

                (2)基于数据的组装:仍然是传统的子程序调用与参数传递。但它所依赖的软件设计方法不再是功能分解,而是面向数据的设计方法,例如Jackson系统开发方法。

                (3)面向对象的组装:如果从类库中检索出来的基类能够完全满足新系统的需求,则可以直接应用。否则,必须以基类为父类,生成相应的子类,以满足新系统的需求。

                构件组装失配问题:

                (1)由构件引起的失配,包括由于系统对构件基础设施、构件控制模型和构件数据模型的假设存在冲突引起的失配。

                (2)由连接子引起的失配,包括由于系统对构件交互协议、连接子数据模型的假设存在冲突引起的失配。

                (3)由于系统成分对全局体系结构的假设存在冲突引起的失配等。要解决失配问题,首先需要检测出失配问题,并在此基础上通过适当的手段消除检测出的失配问题。

        4、中间件

                中间件是一类构件。中间件是一类系统软件

                 简化结构、屏蔽差异、利于复用

                4.1 采用中间件技术的优点:

                (1)面向需求。即设计师集中精力于业务逻辑本身。

                (2)业务的分割和包容性。应用开发人员可以按照不同的业务进行功能的划分,体现为不同的接口或交互模式。

                (3)设计与实现隔离。构件对外发生作用或构件间的交互,都是通过接口进行的,构件使用者只需要知道构件的接口,而不必关心其内部实现,这是设计与实现分离的关键。

                (4)隔离复杂的系统资源。架构很重要的一个功能就是将系统资源与应用构件隔离,这是保证构件可复用甚至 “即插即用” 的基础,与中间件的意图也是一致的。

                (5)符合标准的交互模型。中间件则实现了架构的模型,实现了标准的协议。

                (6)软件复用。中间件提供了构件封装、交互规则、与环境的隔离等机制,这些都为软件复用提供了方便的解决方案。。

                (7)提供对应构件的管理。基于中间件的软件可以方便地进行管理,因为构件总可以通过标识机制进行划分。

        

                4.2 中间件的分类:

        5、构件标准

                三大构件标准:CORBA、J2EE【EJB】、DNA2000。

                5.1 CORBA(公共对象请求代理体系结构)

                        是由OMG组织制订的一种标准的面向对象应用程序体系规范。为解决分布式处理环境(DCE)中,硬件和软件系统的互连而提出的一种解决方案。

         伺服对象(Servant):CORBA对象的真正实现,负责完成客户端请求。

        对象适配器(Object Adapter):用于屏蔽ORB内核的实现细节,为服务器对象的实现者提供抽象接口,以便他们使用ORB内部的某些功能。

        对象请求代理(Object Request Broker):解释调用并负责查找实现该请求的对象,将参数传给找到的对象,并调用方法返回结果。客户不需要了解服务对象的位置、通信方式、实现、激活或存储机制

                5.2 J2EE【EJB】

                (1)会话bean:实现业务逻辑,负责完成服务端与客户端的交互。

                (2)实体bean:实现O/R映射,简化数据库开发工作。

                (3)消息驱动bean:处理并发与异常访问。

                5.3 DNA2000

二、C/S架构与B/S架构

三、常用层次架构

        1、MVC架构风格

                - Model(模型):应用程序的主体部分。模型表示业务数据和业务逻辑。一个模型通为多个视图提供数据。提高应用的可重用性。

                - View(视图):用户看到并与之交互的界面。接受用户数据,向用户展示数据。

                - Controller(控制器):用户界面与Model的接口。解释视图的输入,将其解释为系统能够理解的对象,同时识别用户运作,将其解释为对模型特定方法的调用。处理来自于模型的事件和模型逻辑执行的结果,调用适当的视图为用户提供反馈。

                J2EE体系结构中:

                - 视图(View):JSP

                - 控制(Cpntroller):Servlet

                - 模型(Model):Entity Bean、Session Bean

        2、MVP架构风格

                MVP是MVC的变种,其优点包括:

                (1)模型与视图完全分离,可以修改视图而不影响模型。

                (2)可以更高效的使用模型,因为所有交互都发生在一个地方【Presenter】内部。

                (3)可以将一个Presenter用于多个视图,而不需要改变Presenter逻辑。

                (4)如果把逻辑放在Presenter,就可以脱离用户接口来测试这些逻辑(单元测试)。

        3、MVVM架构风格

四、RIA架构风格

         【优点】:

        (1)反应速度快(2)易于传播(3)交互性强

五、数据访问模式

六、数据访问设计层

        ORM(Object Relational Mapping):对象与关系数据之间的映射。

        映射关系表         

         实现技术对比表 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【弹力设计篇】弹力设计总结

前面主要聊了多个弹力设计,遮盖力主要做一个汇总 弹力设计总图 集群:服务不能是单点的,所以我们的架构需要冗余设计,设计成集群服务,也就是多个副本机制。需要具体的技术 负载均衡服务健康检查,使用像Ng…

【单谐波非线性振动问题求解器 GUI 】使用单个谐波表示解决 MDOF 非线性振动问题(Matlab代码实现)

目录 💥1 概述 📚2 运行结果 🎉3 参考文献 🌈4 Matlab代码实现 💥1 概述 对于解决多自由度(MDOF)非线性振动问题,使用单个谐波表示是一种常见的近似方法。这种方法将系统的非线性部…

使用3ds Max粒子系统创建飞天箭雨特效场景

推荐: NSDT场景编辑器助你快速搭建可二次开发的3D应用场景 1. 设置箭头 步骤 1 打开 3ds Max。 打开 3ds Max 步骤 2 我使用多边形建模技术制作了一个简单的箭头,我将 在教程中使用。.max您可以从 下载部分。 箭头.max 步骤 3 将此箭头重命名为静态…

Stability AI推出Stable Diffusion XL 1.0,文本到图像模型

Stability AI宣布推出Stable Diffusion XL 1.0,这是一个文本到图像的模型,该公司将其描述为迄今为止“最先进的”版本。 Stability AI表示,SDXL 1.0能生成更加鲜明准确的色彩,在对比度、光线和阴影方面做了增强,可生成…

【JavaSE】运算符

【本节目标】 1. 熟练掌握各种运算符 这部分内容和C语言的位运算相似,可以参考这篇文章:【C语言】操作符详解 目录 1. 什么是运算符 2. 算术运算符 3. 关系运算符 4. 逻辑运算符 5. 位运算符 6. 移位运算(了解) 7. 条件运算符 1. 什么是运算符 …

用JavaScript和HTML实现一个精美的计算器

文章目录 一、前言二、技术栈三、功能实现3.1 引入样式3.2 编写显示页面3.2 美化计算器页面3.3 实现计算器逻辑 四、总结 一、前言 计算器是我们日常生活中经常使用的工具之一,可以帮助我们进行简单的数学运算。在本博文中,我将使用JavaScript编写一个漂…

如何解决大数据下滚动页面卡顿问题

原文合集地址如下,有需要的朋友可以关注 本文地址 合集地址 前言 之前遇到不分页直接获取到全部数据,前端滚动查看数据,页面就听卡顿的,当然这和电脑浏览器性能啥的还是有点关系。但根源还是一次性渲染数据过多导致的&#xf…

RTPS规范v2.5(中文版)

实时发布订阅协议 DDS互操作性有线协议 (DDSI-RTPS) 技术规范 V2.5 (2022-04-01正式发布) https://www.omg.org/spec/DDSI-RTPS/2.5/PDF   目 录 1 范围 8 2 一致性 8 3 规范性参考文献 8 4 术语和定义 9 5 标识 …

计算机和医学的交叉融合到底有多强呢?

目录 简介 人工智能在医学诊断中的应用 计算机辅助药物研发 计算机技术在基因组学研究中的应用 数字病理学 穿戴式医疗设备 虚拟现实(VR)和增强现实(AR)技术在医学教育中的应用 机器人手术 区块链技术在医学领域的应用 遥…

【GoLang】MAC安装Go语言环境

小试牛刀 首先安装VScode软件 或者pycharmmac安装brew软件 brew install go 报了一个错误 不提供这个支持 重新brew install go 之后又重新brew reinstall go 使用go version 可以看到go 的版本 使用go env 可以看到go安装后的配置 配置一个环境变量 vim ~/.zshrc, # bre…

UEditor 百度富文本编辑器使用 遇到问题

小小吐槽 碰到前后不分离项目,富文本使用的UEdtior UEditor 点击上传图片转base64 在ueditor.all.js文件中找到这个 callback()函数 这里使用根据图片的url转成base64 UEditore 粘贴图片转base64 UEditor回显图片(base64) 把ueditor.all…

css 书写规范!其他人总结!

CSS书写顺序 1.位置属性(position, top, right, z-index, display, float等) 2.大小(width, height, padding, margin) 3.文字系列(font, line-height, letter-spacing, color- text-align等) 4.背景(background, border等) 5.其他(animation, transition等) CSS书写规范 使用…

免费的音频转换器带你突破音频格式束缚

曾经有一个名叫吴欢的音乐爱好者,他热爱收集各种音频文件,从经典的老歌到新潮的流行曲,样样都不放过。然而,他遇到了一个令人头疼的问题:因为音频格式的不同,他无法将一些珍贵的音乐记录转化为文字形式。他…

IDEA代码自动格式化工具

1.自动import 在IDEA中,打开 IDEA 的设置,找到 Editor -> General -> Auto Import。勾选上 Add unambiguous imports on the flyOptimize imports on the fly (for current project) 2.gitee 提交格式化 设置方法如下: 1.打开设置 2.找到版本…

React Native实现震动反馈效果

React Native实现理想的震动效果 一、背景说明 业务开发中,总会用到一些和用户反馈的效果,用来提升用户对于某个事件或者操作的重要程度,比如常见的就是 长按复制、滑动或点击图表、点击底部TabBar时的反馈等操作。 二、构思实现及过程 2.…

数据结构基本概念及算法分析

文章目录 1. 数据结构基本概念1.1 基本概念和术语1.1.1 数据1.1.2 数据元素1.1.3 数据项1.1.4 数据对象1.1.5 数据结构 1.2 逻辑结构与物理结构1.2.1 逻辑结构(我们最需要关注的问题)1.2.2 物理机构 1.3 数据类型1.3.1 数据类型定义1.3.2 抽象数据类型 2. 算法分析2.1 算法的复…

pytest 自定义HOOK函数

除了系统提过的HOOK函数外,也可以通过自定义HOOK的方式实现想要的功能。 首先创建一个py文件,里面定义自己的HOOK函数,主要pytest里面的hook函数必须以pytest开头。 #myhook.pydef pytest_myhook(user):"""自定义HOOK函数&q…

element时间选择器的默认值

概览:vue使用element组件,需要给时间选择器设置默认值,场景一:默认时间选择器,场景二:时间范围选择器,开始时间和结束时间。 一、默认时间选择器 实现思路: element组件的v-model绑…

【C语言学习——————动态内存管理】

文章目录 一、什么是动态内存管理二、动态内存函数的介绍 1.malloc函数的介绍2.calloc函数的介绍3.realloc函数的介绍三、free函数的介绍 一.什么是动态内存管理 我们知道数据都是在内存中进行储存的,但是如果我们需要调用内存,我们可以通过定义一个变量…

param.grad、requires_grad、grad_fn、grad/梯度为None?

基本概念 1)is_leaf 叶子节点和非叶子节点的区别:计算图中的节点分为叶子节点和非叶子节点,叶子节点可以理解成没有其他tensor再利用它进行计算(例如b a1,那么b需要a进行计算,那么a就不是叶子结点&…