架構,框架,模式,模塊、組件、插件的含義和區別

架構、框架、模式、模塊、組件、插件、控件、中間件的含義和區別。經常看到這些概念,但是有些含糊,花點兒功夫整理一下,結果還是有些地方理解的不透徹,先將整理的內容寫下來,以供交流。左側英文欄中有些單詞被分成了兩半,放到了兩行中,看的時候需要注意。歡迎各路大蝦、大牛、大神拍磚警醒,油錘灌頂~~~

術語 英文解釋 中文解釋
軟件架構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.pswp.cn/news/286594.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/286594.shtml
英文地址,請注明出處:http://en.pswp.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;目…