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

news2024/11/17 3:24:24

目录

一、构件与中间件技术

        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):对象与关系数据之间的映射。

        映射关系表         

         实现技术对比表 

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

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

相关文章

Android 电子称定标流程

1、首先确保电子称正确安装,底部悬空,托盘悬空。 2、去皮,把去皮数据保存到本地 3、定标、例如拿100克的砝码放入托盘, 获取值-去皮值及得到定标值 4、通过定标值计算出需要设置的满量程,或者计算对应的重量&#x…

vue-element-admin中实现自适应功能

npm install postcss-px-to-viewport --save-dev 项目根目录下建一个名字为 .postcssrc.js 的js文件(前边的.别忘了),在该文件里写以下代码 //添加如下配置: module.exports {plugins: {autoprefixer: {}, // 用来给不同的浏览器自动添加相应前缀&a…

小学期笔记——天天酷跑4

效果: 点击登录: ------------------------ 效果: 静态的一张图 ------------------------ 完善一下会变成那张静态的图从左往右移动,但是这一张图到后面会拉丝 -------------------- 再完善一下: (再…

洗地机有没有必要买?好用的洗地机推荐

随着科技的发展,越来越多的家用电器出现。就比如在清洁家电方面,相继出现了吸尘器、扫地机、洗地机!其中洗地机更是近年来爆火的一个智能清洁家电!而如果你们和小编一样是个上班族,然后每天下班回家面对脏乱的地板&…

汽车UDS诊断深度学习专栏

1.英文术语 英文术语翻译Diagnostic诊断Onboard Diagnostic 在线诊断 Offboard Diagnostic离线诊断Unified diagnostic service简称 UDS 2.缩写表 缩写解释ISO国际标准化组织UDSUnified diagnostic service,统一的诊断服务ECU电控单元DTC 诊断故障码 ISO14229UD…

Modbus TCP/IP之异常响应

文章目录 一、异常响应二、异常码分析2.1 异常码0x012.2 异常码0x022.3 异常码0x032.4 异常码0x04、0x05等 一、异常响应 对于查询报文,存在以下四种处理反馈: 正常接收,正常处理,返回正常响应报文;因为通信错误等原因…

我对牟长青分享的各个私董会数据分析

我是卢松松,点点上面的头像,欢迎关注我哦! 其实之前,我也想写一个关于各个草根社群的数据分析,但这样的文章容易得罪人,因为我一直喜欢直言不讳,所以一直没有动笔。例如,我在6月份写…

OpenGl中的VAO、VBO与EBO

文章目录 VBO(顶点缓冲区对象)VBO的使用 EBO(索引缓冲对象)EBO的使用 VAO(顶点数组对象)VAO的使用 三者的区别someting。。。 哎,很离谱,上个月学learnopengl学到一半跑去看庄懂老师的视频,结果该还的东西迟早得还,再打开之前的工…

NineData支持最受欢迎数据库PostgreSQL

根据在 Stack Overflow 发布的 2023 开发者调研报告中显示,PostgreSQL 以 45% vs 41% 的受欢迎比率战胜 MySQL,成为新的最受欢迎的数据库。NineData 也在近期支持了 PostgreSQL,用户可以在 NineData 平台上进行创建数据库/Schema、管理用户与…

BTTES,2101505-88-6,是各种化学生物实验中生物偶联的理想选择

资料编辑|陕西新研博美生物科技有限公司小编MISSwu​ 规格单位:g |货期:按照具体的库存进行提供 | 纯度:95% PART1----​试剂描述: BTTES是铜(I)催化的叠氮化物-炔烃环加成(CuAAC&#x…

整数替换(力扣)HashMap + 递归 JAVA

给定一个正整数 n ,你可以做如下操作: 如果 n 是偶数,则用 n / 2替换 n 。 如果 n 是奇数,则可以用 n 1或n - 1替换 n 。 返回 n 变为 1 所需的 最小替换次数 。 示例 1: 输入:n 8 输出:3 解释…

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

目录 一、软件架构评估 1、敏感点 2、权衡点 3、风险点 4、非风险点 5、架构评估方法 5.1 基于调查问卷或检查表的方式 5.2 基于度量的方式 5.3 基于场景的方式 6、基于场景的评估方法 6.1 软件架构分析法(SAAM) 6.2 架构权衡分析法(ATAM&am…

vue 封装一个鼠标拖动选择时间段功能

<template><div class"timeRange"><div class"calendar"><table><thead><tr><th rowspan"6" class"weekRow"><b>周/时间</b></th><th colspan"24"><…

docker容器引擎(三)

docker 一、Docker 的数据管理1&#xff0e;数据卷2&#xff0e;数据卷容器 二、容器互联&#xff08;使用centos镜像&#xff09;三、docker镜像的创建创建镜像的方法DockerfileDocker 镜像结构的分层Dockerfile 操作常用的指令&#xff1a; 四、Dockerfile 案例 一、Docker 的…

Java从入门到精通(一)

Java从入门到精通&#xff08;一&#xff09; 前言 温故而知新&#xff0c;闲着没事干&#xff0c;准备将Java编程语言的知识点从头梳理一遍&#xff0c;整理成笔记&#xff0c;逐篇发布。 部分图片素材来源与B站“黑马程序员”的课程。 一 Java背景 Java是1995年 由Sun公司…

error CS0246: 未能找到类型或命名空间名“Newtonsoft”(是否缺少 using 指令或程序集引用?)

error CS0246: 未能找到类型或命名空间名“Newtonsoft”(是否缺少 using 指令或程序集引用?) 如图&#xff0c;明明已经引用了命名空间&#xff0c;可以点击生成报错。找了很长时间的原因&#xff0c;最后终于解决了问题。 原因是Newtonsoft这个dll文件只支持.net 4.5框架&…

互联网搜索的学习笔记

1. 参考资料 《Internet Search Tips》《Google Search Operators: The Complete List (42 Advanced Operators)》 2. 预备知识 2.1 查询语法 2.1.1 -&#xff1a;排除符 用于排除指定关键字。例如&#xff0c;如果想搜索“苹果”但不想看到“苹果手机”的结果&#xff0c;…

【Spring】IOC的原理

一、 IOC 的概念 Spring 的 IOC &#xff0c;即控制反转&#xff0c;所谓控制反转 —— 本来管理业务对象&#xff08;bean&#xff09;的操作是由我们程序员去做的&#xff0c;但是有了 Spring 核心容器后&#xff0c;这些 Bean 对象的创建和管理交给我们Spring容器去做了&am…

疫苗生产精细困难,有了物联网网关,让生产 更轻松

疫苗生产背景 生产出现的问题 项目工期十分紧张 无法及时获知产线生产进度&#xff0c;不易进行计划调整 无法准确的安排现场生产计划 产品线数量多&#xff0c;纸质记录及流程近10万页 设备采集数量庞大&#xff0c;超过40000点 设备管理不明确、报修维修等无法及时通知…

QPoint、QLine、QSize、QRect

QPoint、QLine、QSize、QRect QPointQLineQSizeQRect QPoint // 构造函数 // 构造一个坐标原点, 即(0, 0) QPoint::QPoint(); // 参数为 x轴坐标, y轴坐标 QPoint::QPoint(int xpos, int ypos);// 设置x轴坐标 void QPoint::setX(int x); // 设置y轴坐标 void QPoint::setY(in…