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

news/2024/5/10 8:32:05

目录

一、构件与中间件技术

        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.mrgr.cn/p/60807704

相关文章

day43-Feedback Ui Design(反馈ui设计)

50 天学习 50 个项目 - HTMLCSS and JavaScript day43-Feedback Ui Design&#xff08;反馈ui设计&#xff09; 效果 index.html <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport&q…

CPU密集型和IO密集型任务的权衡:如何找到最佳平衡点

关于作者&#xff1a;CSDN内容合伙人、技术专家&#xff0c; 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 &#xff0c;擅长java后端、移动开发、人工智能等&#xff0c;希望大家多多支持。 目录 一、导读二、概览三、CPU密集型与IO密集型3.1、CPU密集型3.2、I/O密…

【已解决】windows7添加打印机报错:加载Tcp Mib库时的错误,无法加载标准TCP/IP端口的向导页

windows7 添加打印机的时候&#xff0c;输入完打印机的IP地址后&#xff0c;点击下一步&#xff0c;报错&#xff1a; 加载Tcp Mib库时的错误&#xff0c;无法加载标准TCP/IP端口的向导页 解决办法&#xff1a; 复制以下的代码到新建文本文档.txt中&#xff0c;然后修改文本文…

搭建测试平台开发(一):Django基本配置与项目创建

一、安装Django最新版本 1 pip install django 二、创建Django项目 首先进入要存放项目的目录&#xff0c;再执行创建项目的命令 1 django-admin startproject testplatform 三、Django项目目录详解 1 testplatform 2 ├── testplatform  # 项目的容器 3 │ ├──…

清洁机器人规划控制方案

清洁机器人规划控制方案 作者联系方式Forrest709335543qq.com 文章目录 清洁机器人规划控制方案方案简介方案设计模块链路坐标变换算法框架 功能设计定点自主导航固定路线清洁区域覆盖清洁贴边沿墙清洁自主返航回充 仿真测试仿真测试准备定点自主导航测试固定路线清洁测试区域…

ER系列路由器多网段划分设置指南

ER系列路由器多网段划分设置指南 - TP-LINK 服务支持 TP-LINK ER系列路由器支持划分多网段&#xff0c;可以针对不同的LAN接口划分网段&#xff0c;即每一个或多个LAN接口对应一个网段&#xff1b;也可以通过一个LAN接口与支持划分802.1Q VLAN的交换机进行对接&#xff0c;实现…

微信小程序导入微信地址

获取用户收货地址。调起用户编辑收货地址原生界面&#xff0c;并在编辑完成后返回用户选择的地址。 1&#xff1a;原生微信小程序接口使用API&#xff1a;wx.chooseAddress(OBJECT) wx.chooseAddress({success (res) {console.log(res.userName)console.log(res.postalCode)c…

Day02-作业(JavaScriptVue)

作业1&#xff1a;实现5秒之后&#xff0c;当前页面直接跳转到官网首页&#xff08;首页地址&#xff1a;https://www.itcast.cn&#xff09; 提示&#xff1a; 5秒之后&#xff0c;才触发某一个动作 素材&#xff1a; <!DOCTYPE html> <html lang"en"&…

【AGI】Copilot AI编程辅助工具安装教程

1. 基础激活教程 GitHub和OpenAI联合为程序员们送上了编程神器——GitHub Copilot。 但是&#xff0c;Copilot目前不提供公开使用&#xff0c;需要注册账号通过审核&#xff0c;我也提交了申请&#xff1a;这里第一期记录下&#xff0c;开启教程&#xff0c;欢迎大佬们来讨论…

【Linux】更换jdk版本

目录 一、前言二、查看jdk版本号1、项目中的版本号&#xff08;pom.xml&#xff09;2、服务器中的版本号 三、更换jdk版本1、创建java文件夹2、下载并解压JDK安装包①、下载jdk安装包②、移动到创建好的/usr/local/java路径下③、解压jdk安装包 四、删除原来的jdk版本1、删除原…

删除 iptables 中的规则

查看规则编号 要删除 iptables 中的规则&#xff0c;可以使用以下命令&#xff1a; 查看 iptables 中的规则&#xff0c;找到要删除的规则的编号&#xff1a; iptables -L --line-numbers删除指定编号的规则&#xff1a; iptables -D [chain] [rule-number]其中&#xff0c;…

设计模式再探——代理模式

目录 一、背景介绍二、思路&方案三、过程1.代理模式简介2.代理模式的类图3.代理模式代码4.代理模式还可以优化的地方5.代理模式的项目实战&#xff0c;优化后(只加了泛型方式&#xff0c;使用CGLIB的代理) 四、总结五、升华 一、背景介绍 最近在做产品过程中对于日志的统一…

c# 此程序集中已使用了资源标识符

严重性 代码 说明 项目 文件 行 禁止显示状态 错误 CS1508 此程序集中已使用了资源标识符“BMap.NET.WindowsForm.BMapControl.resources” BMap.NET.WindowsForm D:\MySource\Decompile\BMap.NET.WindowsForm\CSC 1 活动 运行程序时&a…

网络安全(黑客)自学笔记

1.网络安全是什么 网络安全可以基于攻击和防御视角来分类&#xff0c;我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术&#xff0c;而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 2.网络安全市场 一是市场需求量高&#xff1b; 二则是发展相对成熟入门…

【iOS】—— UIKit相关问题

文章目录 UIKit常用的UIKit组件懒加载的优势 CALayer和UIView区别关系 UITableViewUITableView遵循的两个delegate以及必须实现的方法上述四个必须实现方法执行顺序其他方法的执行顺序&#xff1a; UICollectionView和UITableView的区别UICollectionViewFlowLayout和UICollecti…

【Hadoop 01】简介

目录 1 Hadoop 简介 2 下载并配置Hadoop 2.1 修改/etc/profile 2.2 修改hadoop-env.sh 2.3 修改core-site.xml 2.4 修改hdfs-site.xml 2.5 修改mapred-site.xml 2.6 修改yarn-site.xml 2.7 修改workers 2.8 修改start-dfs.sh、stop-dfs.sh 2.9 修改start-yarn.sh、s…

Spring MVC异步上传、跨服务器上传和文件下载

一、异步上传 之前的上传方案&#xff0c;在上传成功后都会跳转页面。而在实际开发中&#xff0c;很多情况下上传后不进行跳转&#xff0c;而是进行页面的局部刷新&#xff0c;比如&#xff1a;上传头像成功后将头像显示在网页中。这时候就需要使用异步文件上传。 1.1 JSP页面 …

Abaqus 导出单元刚度矩阵和全局刚度矩阵

Abaqus 导出单元刚度矩阵和全局刚度矩阵 首次创建&#xff1a;2023.7.29 最后更新&#xff1a;2023.7.29 如有什么改进的地方&#xff0c;欢迎大家讨论&#xff01; 详细情况请查阅&#xff1a;Abaqus Analysis User’s Guide 一、Abaqus 导出单元刚度矩阵 1.生成单元刚度矩阵…

DevOps-Jenkins

Jenkins Jenkins是一个可扩展的持续集成引擎&#xff0c;是一个开源软件项目&#xff0c;旨在提供一个开放易用的软件平台&#xff0c;使软件的持续集成变成可能。 官网 应用场景 场景一 研发人员上传开发好的代码到github代码仓库需要将代码下载nginx服务器部署手动下载再…

Android 测试

工程目录图 1- Espresso 2- uiautomator Espresso 文档UI Automator文档ui-automator 英文文档 请点击下面工程名称&#xff0c;跳转到代码的仓库页面&#xff0c;将工程 下载下来 Demo Code 里有详细的注释 代码&#xff1a;testespresso 参考文献 Android 利用 espre…