系統(tǒng)與子系統(tǒng)
系統(tǒng)定義(維基百科):泛指由一群有關(guān)聯(lián)的個體組成,根據(jù)某種規(guī)則運(yùn)作听哭,能完成個別元件不能單獨(dú) 完成的工作的群體慢洋。其中3點(diǎn)關(guān)鍵內(nèi)容:
1、關(guān)聯(lián):系統(tǒng)是由一群有關(guān)聯(lián)的個體組成的陆盘,沒有關(guān)聯(lián)的個體堆在一起不能成為一個系統(tǒng)普筹。
2、規(guī)則:系統(tǒng)內(nèi)的個體需要按照指定的規(guī)則運(yùn)作隘马,而不是單個個體各自為政斑芜。規(guī)則規(guī)定了系統(tǒng) 內(nèi)個
? ? ? ? ? ? ? ? 體分工和協(xié)作的方式。
3祟霍、能力:系統(tǒng)能力與個體能力有本質(zhì)的差別杏头,系統(tǒng)能力不是個體能力之和,而是產(chǎn)生了新的能 力沸呐。
其中按角度不同醇王,子系統(tǒng)一般為更大系統(tǒng)的組成部分。比如QQ本身是一個大系統(tǒng)崭添,包括小系統(tǒng)(聊天寓娩、群組等等)
模塊與組件
模塊定義(維基百科):是一套一致而互相有緊密關(guān)連的軟件組織。它分別包含了程 序和數(shù)據(jù)結(jié)構(gòu)兩部分。現(xiàn)代軟件開發(fā)往往利用模塊作為合成的單位棘伴。模塊的接口表 達(dá)了由該模塊提供的功能和調(diào)用它時所需的元素寞埠。模塊是可能分開被編寫的單位。 這使它們可再用和允許人員同時協(xié)作焊夸、編寫及研究不同的模塊仁连。
軟件組件(維基百科):軟件組件定義為自包含的、可編程的阱穗、可重用的饭冬、與語言無關(guān)的軟件單元,軟件組 件可以很容易被用于組裝應(yīng)用程序中揪阶。
模塊和組件都是系統(tǒng)的組成部分昌抠,只是從不同的角度拆分系統(tǒng)而已。
從邏輯的角度來拆分系統(tǒng)后鲁僚,得到的單元就是“模塊”炊苫;
從物理的角度來拆分系統(tǒng)后,得到的單 元就是“組件”冰沙。
舉例:論壇信息管理系統(tǒng)侨艾,這個系統(tǒng)從邏輯的角 度來拆分,可以分為“登錄注冊模塊”“個人信息模塊”“帖子模塊”倦淀;從物理的角度來拆 分,可以拆分為 Nginx声畏、Web 服務(wù)器撞叽、MySQL。
框架與架構(gòu)
軟件框架(維基百科):指的是為了實(shí)現(xiàn)某個業(yè)界標(biāo)準(zhǔn)或完成特定 基本任務(wù)的軟件組件規(guī)范插龄,也指為了實(shí)現(xiàn)某個軟件組件規(guī)范時愿棋,提供規(guī)范所要求之 基礎(chǔ)功能的軟件產(chǎn)品。其中3點(diǎn)關(guān)鍵內(nèi)容:
1. 框架是組件規(guī)范:例如均牢,MVC 就是一種最常見的開發(fā)規(guī)范糠雨,類似的還有 MVP、MVVM徘跪、 J2EE 等框架甘邀。
2. 框架提供基礎(chǔ)功能的產(chǎn)品:例如,Spring MVC 是 MVC 的開發(fā)框架垮庐,除了滿足 MVC 的規(guī) 范松邪,Spring 提供了很多基礎(chǔ)功能來幫助我們實(shí)現(xiàn)功能,包括注解(@Controller 等)哨查、Spring Security逗抑、Spring JPA 等很多基礎(chǔ)功能。
軟件架構(gòu)(維基百科):指軟件系統(tǒng)的“基礎(chǔ)結(jié)構(gòu)”,創(chuàng)造這些基礎(chǔ)結(jié)構(gòu)的準(zhǔn)則邮府,以及對這些結(jié)構(gòu) 的描述荧关。
舉例:從業(yè)務(wù)邏輯的角度分解,“論壇信息管理系統(tǒng)”的架構(gòu)是:
從物理部署的角度分解褂傀,“論壇信息管理系統(tǒng)”的架構(gòu)是:
從開發(fā)規(guī)范的角度分解忍啤,“論壇信息管理系統(tǒng)”可以采用標(biāo)準(zhǔn)的 MVC 框架來開發(fā),因此架構(gòu)又變成 了 MVC 架構(gòu):
這些“架構(gòu)”紊服,都是“論壇信息管理系統(tǒng)”正確的架構(gòu)檀轨,只是從不同的角度來分解而已,這也是 IBM 的 RUP 將軟件架構(gòu)視圖分為著名的“4+1 視圖”的原因欺嗤。
架構(gòu)是頂層設(shè)計(jì)参萄;框架是面向編程或配置的半成品;組件是從技術(shù)維度上的復(fù)用煎饼;模塊是從 業(yè)務(wù)維度上職責(zé)的劃分讹挎;系統(tǒng)是相互協(xié)同可運(yùn)行的實(shí)體。