架构,框架,模式,模块、组件、插件的含义和区别

架构、框架、模式、模块、组件、插件、控件、中间件的含义和区别。经常看到这些概念,但是有些含糊,花点儿功夫整理一下,结果还是有些地方理解的不透彻,先将整理的内容写下来,以供交流。左侧英文栏中有些单词被分成了两半,放到了两行中,看的时候需要注意。欢迎各路大虾、大牛、大神拍砖警醒,油锤灌顶~~~

术语 英文解释 中文解释
软件架构architecture:Architecture is the art of planning, designing, and constructing buildings.软件架构,也称为软件体系结构。简单地说,软件架构就是一个蓝图,是一种设计方案,将客户的不同需求抽象成为抽象组件,并且能够描述这些抽象组件之间的通信和调用。它是对软件系统的系统组织,是对构成系统的构件的接口,行为模式,协作关系等体系问题的决策总和。它不仅涉及到结构与行为,而且还涉及到系统的使用,功能,性能,适应性,重用性,可理解性,经济性和技术约束的权衡和美学考虑。 使用方法:软件架构会分析工程中的问题,针对问题设计解决方案,针对解决方案分析应具有的功能,针对功能设计软件系统的层次和模块及层次模块之间的逻辑交互关系,确定各个功能如何由这些逻辑实现。工程开发者,可以根据软件架构中分析出来的层次和模块进行软件的编写。
软件框架Framework :A framework is a structure that forms a support or frame for something. A structure is something that consists of parts connected together in an ordered way. A framework is a set of classes that embodies an abstract design for solutions to a family of related problems, and supports reuses at a larger granularity than classes.A software framework provides the skeleton of an application that can be customized by an application developer.软件框架是项目软件开发过程中提取特定领域软件的共性部分形成的体系结构,不同领域的软件项目有着不同的框架类型。框架不是现成可用的应用系统,而是一个半成品,是一个提供了诸多服务,供开发人员进行二次开发,实现具体功能的应用系统。特别强调,框架是一个可供二次开发的程序实体。框架与架构关系 :首先说框架不是架构,框架比架构更具体,更偏重于技术,而架构偏重于设计。还有一个关系就是架构可以通过多种框架来实现。另外,生活中说的“框架”跟软件术语中“框架”的意思不同,要注意区别。使用方法:特定领域软件有一些共性部分形成的软件架构,将这个共性的软件架构开发出来,形成一个可供二次开发的程序实体,这个程序实体就是软件框架。 可供二次开发。
设计模式Pattern:A pattern is the repeated or regular way in which something happens or is done. If you refer to a way of doing something, you are referring to how you can do it, for example, the action you can take or the method you can use to achieve it.设计模式强调的是一个设计问题的解决方法,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。框架与设计模式关系 :设计模式研究的是针对单一问题的设计思路和解决方法,一个模式可应用于不同的框架和被不同的程序语言所实现;而框架则是一个应用的体系结构,是一种或多种设计模式和代码的混合体。虽然它们有所不同,但却共同致力于使人们的设计可以被重用,在思想上存在着统一性的特点,因而设计模式的思想可以在框架设计中进行应用。架构与设计模式关系 :两者的关系也是很好区分的,设计模式主要是针对单一问题的解决方法,范畴比较小,而架构是高层次的针对体系结构的一种设计思路,范畴比较大。可以这么说,一个架构中可能会出现多个设计模式来解决多个架构中的问题。使用方法:针对特定问题提供解决方案,以供问题解决者参考。
模块Module:In software, a module is a part of a program. Programs are composed of one or more independently developed modules that are not combined until the program is linked. A single module can contain one or several routines.A software module encapsulates related functions in a program together.one of a set of parts that can be connected or combined to build or complete something.1模块,module,模块是一个通用概念,可能从功能或其他目的来区分。模块可以是子系统子领域,主要取决于上下文环境的用法。通常我们会说程序模块,功能模块,这实际上是在按照不同的标准对模块的内容和范围的不同定义。2通常我们说的程序模块,是指的一段能够实现某个有价值目标的的成员代码段,这样的东西,我们还有另一个称呼:例程,而例程有两种,即函数和过程,它们都能实现一个有价值的目标供其它的模块使用。3而功能模块的说法一般在分析和设计阶段出现得比较频繁,通常我们用一个功能模块来说明一个功能所包含的系统行为,当我们觉得分析的颗粒度可能更大一些的时候我们可以用一个功能模块来表示一组功能的集合,这似乎让我们觉得,模块这个词的概念和“子系统”这个词的概念有些模糊,是的,事实上,有些大的模块会慢慢的让我们觉得称呼他们子系统更合适,或者一个子系统,我们会慢慢发现你还包含着一些模块。但是无论怎样,定义模块的原则应该是:高内聚和低耦合。4使用方法:就是一个描述全局中问题的概念,至于全局是什么,这个随便,比如一个人,可以看成各种功能系统,那么模块就是各种呼吸系统、消化系统等;可以看成社会关系,模块就有劳动能力、生产关系等,全在于怎么看了。
组件Component:The components of something are the parts that it is made of.1组件,Component,首先说,组件已经不是一个抽线的概念了,是封装了一个或多个实体程序模块的实体。2组件这个词通常是现在描述产品的时候出现,一个大的产品会有很多小的部分组成,而小的部分除了是一个大的组件的部分以外,自己可能还包含更小的组件,所以组件是递归的,那么组件到底是什么呢?最常见的组件就是我们已经写好的程序代码,任何一小段代码都可以是一个组件,它可以和其它代码段连接起来组成更大的一段程序代码,一个更大的组件,然后可能是一个函数,或者一个类程序单元,或者数个类单元文件的集成,当不同的组件的组装形成更大的组件时候,我们实际就是在做我们通常提到的一件事情:集成,软件中有很多集成工作要做,每日集成,重要版本集成等等,集成是什么呢?软件中,就是链编调试。这样一来,我们知道集成是需要对被集成的组件有规模要求的,换句话说,至少是一个单元文件,所以通常说到的组件就可以直观的理解为单元文件,或者可以组成软件的其他文件,以及编译后的文件。3组件是面向对象里面的一个重[chóng]用的概念,也称为构件,组件非常类似机械中构件概念,现在机械都是走向构件生成,通过不同构件组装成一个机械成品,软件目前也是这样的一个生成方式。4维基百科上说,组件之间通过接口进行交互,这个挺起来有些象插件,现实中也是这样,比如一个dll文件,可以说是插件,也可以说是组件。插件是是组件的一个子类,就是将组件中具有某些特点的组件归为插件,这些特点是:益于与系统分离,接口明晰,可以替换的程序模块。5组件强调的是封装,利用接口进行交互。因为封装有不同层次的封装,对应不同层次的接口,(比如将一个人封装成一个组件,比如国家主席,多个人封装成一个组合,比如中央的常委们),所以组件所表述的范围和层次也是多种多样的,在谈论组件的时候一定要分辨清楚谈论的层次和范围。层次是相对的。你说地球是整个世界,但是将地球放到银河系中,地球就显得渺小了;你说物质世界是整个世界,但是人类的精神世界也是无比的浩瀚;你说物质世界和精神世界合起来是整个世界,但是历史又是那么的神秘和真实;你说物质世界、精神世界、历史时空是整个世界,但是科学家又说人类可以探察的宇宙物质仅占全部宇宙的百分之四。6使用方法:就是一个描述系统中实体单元的概念。
插件Plug-in:(addin,add-in,add-on,addon,app)A plug-in is something such as a piece of software that can be added to a computer system to give extra features or functions.1根据对组件和模块的分析,插件属于组件,而且还是一个程序模块,也是一个功能模块。插件是一种电脑程序,通过和应用程序的互动,来替应用程式增加一些特定的功能。 插件必须依赖于应用程序才能发挥自身功能,仅靠插件是无法正常运行的。2使用方法:满足一定接口规范的具有一定功能的程序模块。开发者可以在自己软件系统中设计相应的接口以匹配某个插件,也可以设计一定的接口规范,来让别人开发插件。插件和程序之间通过接口进行交互。
控件Control:A control is a device such as a switch or lever which you use in order to operate a machine or other piece of equipment.1可视化的组件。
中间件Middleware:computer software that has an intermediary function between the various applications of a computer and its operating system.Middleware is computer software that provides services to software applications beyond those available from the operating system. It can be described as “software glue”.[1] Middleware makes it easier for software developers to perform communication and input/output, so they can focus on the specific purpose of their application.中间件是提供系统软件和应用软件之间连接的软件,以便于软件各部件之间的沟通。

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

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

相关文章

C语言,C#语言求100-999内的水仙花数源程序

水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant, PPDI)、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),水仙花数是指一个 3 位数&#…

一个精简的C#表达式执行框架Dynamic Expresso

一、简介Dynamic Expresso是一个用.NET Standard 2.0编写的简单c#语句的解释器。Dynamic Expresso嵌入了自己的解析逻辑,通过将其转换为.NET lambda表达式或委托来解释c#语句。使用Dynamic Expresso开发人员可以创建可编写脚本的应用程序,无需编译即可执…

算法马拉松13 A-E解题报告

A题意(取余最长路): 佳佳有一个n*m的带权矩阵,她想从(1,1)出发走到(n,m)且只能往右往下移动,她能得到的娱乐值为所经过的位置的权的总和。 有一天,她被下了恶毒的诅咒,这个诅咒的作用是将她的娱乐值变为对p…

Modis数据处理工具:MRT百度网盘下载和手把手图文安装教程

如下图所示为 MODIS Reprojection Tool(MRT)的软界面,看似简单,却是Modis遥感影像必不可少的处理工具,如投影变换等。本文以图文并茂的形式,详细讲解MRT软件在Windows10平台上的安装过程,并附MRT软件百度网盘下载地址。 Modis Tool主界面: 一、安装过程 1、安装Jav…

Word中如何设置图片与段落的间距为半行

第一种: 正文为5号,那么图片或者Viso对象前后空一行,设置字号为7号或者更小,这样设置的间距就是那个7号字的间距,比5号小,看着空白不是那么大。 第二种: Visio对象转为jpg,然后选中图…

在微信小程序中使用“随机键盘”

最近研究微信小程序,发现在手机上使用系统键盘非常不方便,一是按键太小,对于小学生来说,操作非常不方便;二是系统键盘反复切换影响界面布局。于是自己决定自己写一个随机的小键盘。 原理非常简单:拿“口算练…

Android之提示订阅配置订阅需要传新的包 添加结算权限。

1 问题 apk上google应用市场&#xff0c;然后开通支付商品&#xff0c;错误提示如下 2 解决办法 AndroidManifest.xml里面添加谷歌支付权限 <!-- google pay --><uses-permission android:name"com.android.vending.BILLING" />

【前端就业课 第一阶段】HTML5 零基础到实战(三)一篇文CSS基础入门

注意&#xff1a;手机&#xff08;APP&#xff09;打开&#xff0c;内容显示更佳&#xff0c;不会的私聊博主即可 想要拿代码或加入学习计划&#xff08;** 博主会监督你并且教你写文章 **&#xff09;的拉到最下面&#xff08;PC端Web打开&#xff09;加博主即可&#xff0c;目…

C#如何获取实体类属性名和值?

数据模型定义public class User{public User(){student new student();}public string name { get; set; }public string gender { get; set; }public int age { get; set; }public student student { get; set; }}public class student{public int ID { get; set; }public st…

将VNC 安装在Centos 7步骤

&#xff08; Virtual Network Computing&#xff09;VNC允许Linux系统可以类似实现像Windows中的远程桌面访问那样访问Linux桌面。本文配置机器是兴宁市网络信息中心的一台Centos 7 HP服务器环境下运行。 首先试试服务器装了VNC没 [rootwic ~]# rpm -q tigervnc tigervnc-serv…

利用MRT进行Modis NDVI数据(MOD13Q1)投影变换格式转换操作图文教程

本实例以Modis NDVI(MOD13Q1,空间分辨率为250m)一景影像数据为例,演示利用MRT进行Modis NDVI影像变换,主要内容包括:将.hdf格式转为.tif格式,将坐标系转为Albers等积投影。 ArcGIS完美转换方法: 《ArcGIS10.8完美实现MODIS NDVI数据格式转换和投影变换》 《重磅!ArcGI…

ActiveMQ无法启动

解决办法&#xff1a;activemq无法启动&#xff0c;端口被占用 用netstat -an无法查出61616被哪个进程占用&#xff08;实践证明&#xff0c;netstat -ano|findstr 61616什么也没有找到&#xff09; 经过排查和网上资料参考&#xff0c;被windows的Internet connection share(I…

Android之升级OkHttp编译提示错误如下Using ‘body(): ResponseBody?’ is an error. moved to val

1 问题 升级okHttp库&#xff0c;编译项目错误如下 Using ‘body(): ResponseBody?’ is an error. moved to val 2 解决办法 原来的代码 val list response.body().string() 去掉&#xff08;&#xff09;就可以了 val list response.body.string()

单例

当实际上Singleton是一个对象&#xff0c;我们不能保证使用者不会使用其他的方法去创建&#xff08;比如alloc&#xff09;,这个时候他就会创建多个实例&#xff0c;这样就会出现这些无法感知的bug&#xff09; implementation Singleton static Singleton * sharedSingleton …

Google 开源的 Android 排版库:FlexboxLayout

最近Google开源了一个项目叫「FlexboxLayout」。1.什么是 Flexbox简单来说 Flexbox 是属于web前端领域CSS的一种布局方案&#xff0c;是2009年W3C提出了一种新的布局方案&#xff0c;可以简便、完整、响应式地实现各种页面布局&#xff0c;并且 React Native 也是使用的 Flex 布…

Docker Network 配置,自定义bridge网络

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182Docker Network 配置&#xff0c;自定义bridge网络 1.停止服务 service docker stop 2.关掉docker0 ifconfi…

再见 KataCoda——O'Reilly 宣布其将在六月份关闭

近日听闻 OReilly 将永久关闭在线学习网站 KataCoda&#xff0c;对于广大程序员和学习者来说&#xff0c;这无疑是一件痛心疾首的事情&#xff0c;以后我们再也看不到那只会变成的功夫猫了。KataCoda 简介KataCoda 成立于 2016 年&#xff0c;它是一个在线学习平台&#xff0c;…

中国区域Modis行列号(附Shapefile文件下载)

重磅&#xff1a;Landsat中国西北地区行列号Shapefile图层对照&#xff08;附行列号Shapefile下载&#xff09; 全球&#xff1a; 中国&#xff1a;

Android之解决webview加载第三方网页点击弹不出下拉框(html页面里面的select标签)

1 问题 决webview加载第三方网页点击弹不出下拉框&#xff08;html页面里面的select标签&#xff09;&#xff0c;我们访问youtube.com官网&#xff0c;点击网站的视频&#xff0c;点击视频右上角三个点设置&#xff0c;然后点击 播放设置 然后点击画质 弹不出选项框&#xf…

【前端就业课 第一阶段】HTML5 零基础到实战(四)伪类与伪元素

注意&#xff1a;手机&#xff08;APP&#xff09;打开&#xff0c;内容显示更佳&#xff0c;不会的私聊博主即可 想要拿代码或加入学习计划&#xff08;** 博主会监督你并且教你写文章 **&#xff09;的拉到最下面&#xff08;PC端Web打开&#xff09;加博主即可&#xff0c;目…