架構(gòu)學(xué)習(xí)-架構(gòu)到底是什么?

1.系統(tǒng)與子系統(tǒng)

系統(tǒng)泛指由一群有關(guān)聯(lián)的個(gè)體組成,根據(jù)某種規(guī)則運(yùn)作,能完成個(gè)別元件不能單獨(dú)完成的工作的群體。它的意思是“總體”“整體”或“聯(lián)盟”。

  • 關(guān)聯(lián):系統(tǒng)是由一群有關(guān)聯(lián)的個(gè)體組成的,沒(méi)有關(guān)聯(lián)的個(gè)體堆在一起不能成為一個(gè)系統(tǒng)。例如,把一個(gè)發(fā)動(dòng)機(jī)和一臺(tái) PC 放在一起不能稱之為一個(gè)系統(tǒng),把發(fā)動(dòng)機(jī)、底盤(pán)、輪胎、車(chē)架組合起來(lái)才能成為一臺(tái)汽車(chē)。

  • 規(guī)則:系統(tǒng)內(nèi)的個(gè)體需要按照指定的規(guī)則運(yùn)作,而不是單個(gè)個(gè)體各自為政。規(guī)則規(guī)定了系統(tǒng)內(nèi)個(gè)體分工和協(xié)作的方式。例如,汽車(chē)發(fā)動(dòng)機(jī)負(fù)責(zé)產(chǎn)生動(dòng)力,然后通過(guò)變速器和傳動(dòng)軸,將動(dòng)力輸出到車(chē)輪上,從而驅(qū)動(dòng)汽車(chē)前進(jìn)。

  • 能力:系統(tǒng)能力與個(gè)體能力有本質(zhì)的差別,系統(tǒng)能力不是個(gè)體能力之和,而是產(chǎn)生了新的能力。例如,汽車(chē)能夠載重前進(jìn),而發(fā)動(dòng)機(jī)、變速器、傳動(dòng)軸、車(chē)輪本身都不具備這樣的能力。

子系統(tǒng)也是由一群有關(guān)聯(lián)的個(gè)體所組成的系統(tǒng),多半會(huì)是更大系統(tǒng)中的一部分。

以微信為例,可以看出他們的關(guān)系


系統(tǒng)(微信).png

2.模塊與組件

軟件模塊(Module)是一套一致而互相有緊密關(guān)連的軟件組織。它分別包含了程序和數(shù)據(jù)結(jié)構(gòu)兩部分?,F(xiàn)代軟件開(kāi)發(fā)往往利用模塊作為合成的單位。模塊的接口表達(dá)了由該模塊提供的功能和調(diào)用它時(shí)所需的元素。模塊是可能分開(kāi)被編寫(xiě)的單位。這使它們可再用和允許人員同時(shí)協(xié)作、編寫(xiě)及研究不同的模塊。

軟件組件定義為自包含的、可編程的、可重用的、與語(yǔ)言無(wú)關(guān)的軟件單元,軟件組件可以很容易被用于組裝應(yīng)用程序中。

模塊:從邏輯的角度來(lái)拆分系統(tǒng)后的單元,目的是:職責(zé)分離
組件:從物理的角度來(lái)拆分系統(tǒng)后的單元,目的是:?jiǎn)卧獜?fù)用(可以理解為零件)

學(xué)生管理系統(tǒng)從模塊劃分:

學(xué)生管理系統(tǒng)從組件劃分:

3. 框架與架構(gòu)

軟件框架(Software framework)通常指的是為了實(shí)現(xiàn)某個(gè)業(yè)界標(biāo)準(zhǔn)或完成特定基本任務(wù)的軟件組件規(guī)范,也指為了實(shí)現(xiàn)某個(gè)軟件組件規(guī)范時(shí),提供規(guī)范所要求之基礎(chǔ)功能的軟件產(chǎn)品。

框架是組件規(guī)范,框架提供基礎(chǔ)功能的產(chǎn)品

軟件架構(gòu)指軟件系統(tǒng)的“基礎(chǔ)結(jié)構(gòu)”,創(chuàng)造這些基礎(chǔ)結(jié)構(gòu)的準(zhǔn)則,以及對(duì)這些結(jié)構(gòu)的描述。

從定義的角度來(lái)看,框架和架構(gòu)的區(qū)別還是比較明顯的,框架關(guān)注的是“規(guī)范”,架構(gòu)關(guān)注的是“結(jié)構(gòu)”??蚣艿挠⑽氖?Framework,架構(gòu)的英文是 Architecture。

采用不同的角度或者維度,可以將系統(tǒng)劃分為不同的結(jié)構(gòu)

  • 從業(yè)務(wù)邏輯的角度分解,“學(xué)生管理系統(tǒng)”的架構(gòu)是:

    1.png

  • 從物理部署的角度分解,“學(xué)生管理系統(tǒng)”的架構(gòu)是:

    2.png

  • 從開(kāi)發(fā)規(guī)范的角度分解,“學(xué)生管理系統(tǒng)”可以采用標(biāo)準(zhǔn)的 MVC 框架來(lái)開(kāi)發(fā),因此架構(gòu)又變成了 MVC 架構(gòu):
3.png

4.總結(jié)

架構(gòu):指軟件系統(tǒng)的頂層結(jié)構(gòu)。

首先,“系統(tǒng)是一群關(guān)聯(lián)個(gè)體組成”,這些“個(gè)體”可以是“子系統(tǒng)”“模塊”“組件”等;架構(gòu)需要明確系統(tǒng)包含哪些“個(gè)體”。

其次,系統(tǒng)中的個(gè)體需要“根據(jù)某種規(guī)則”運(yùn)作,架構(gòu)需要明確個(gè)體運(yùn)作和協(xié)作的規(guī)則。

第三,維基百科定義的架構(gòu)用到了“基礎(chǔ)結(jié)構(gòu)”這個(gè)說(shuō)法,我改為“頂層結(jié)構(gòu)”,可以更好地區(qū)分系統(tǒng)和子系統(tǒng),避免將系統(tǒng)架構(gòu)和子系統(tǒng)架構(gòu)混淆在一起導(dǎo)致架構(gòu)層次混亂。

5.注:

架構(gòu)是頂層設(shè)計(jì);
框架是面向編程或配置的半成品;
組件是從技術(shù)維度上的復(fù)用;
模塊是從業(yè)務(wù)維度上職責(zé)的劃分;
系統(tǒng)是相互協(xié)同可運(yùn)行的實(shí)體。

框架是規(guī)矩,架構(gòu)是按照規(guī)矩做規(guī)劃。
系統(tǒng)是學(xué)校,子系統(tǒng)是班級(jí),
模塊是學(xué)生老師,
組件是課桌椅。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,983評(píng)論 25 709
  • 你一會(huì)喜悅一會(huì)悲傷一會(huì)強(qiáng)顏歡笑一會(huì)滿面愁容 我小心翼翼配合你的喜怒無(wú)常不是厭倦 而是無(wú)奈不是不想挽回只可惜黔驢技...
    汪拳拳閱讀 125評(píng)論 2 2
  • 有人說(shuō),愛(ài)情就是互相折磨又舍不得放手的代價(jià)。 我聽(tīng)到過(guò)很多人告訴我,我的高冷,我的自私,我的絕情…… 什么是愛(ài),什...
    gnn怪姐姐閱讀 191評(píng)論 1 1
  • 每個(gè)人都有在心里默默的承受著委屈,就父母和子女的關(guān)系來(lái)說(shuō),父母覺(jué)得為子女已經(jīng)付出了夠多,付出了所有自己能付出的東西...
    葉梓銘閱讀 157評(píng)論 0 0
  • 夢(mèng)記錄 “這是洗澡嗎?分明是澡洗人嘛!” 在一個(gè)露天的游泳池,正在排隊(duì)取票的我看到泳池里到處都是人,發(fā)起了牢騷。 ...
    潭客富林的家閱讀 153評(píng)論 0 0

友情鏈接更多精彩內(nèi)容