關(guān)于軟件架構(gòu)

架構(gòu)的定義

架構(gòu)(Architecture)一詞源于建筑領(lǐng)域,其本身就是建筑的意思,也有體系結(jié)構(gòu)的意思。維基百科英文版里對(duì)Architecture的解釋是:規(guī)劃、設(shè)計(jì)和建造建筑物的過(guò)程及產(chǎn)物。鑒于軟件工程與建筑工程一樣是一項(xiàng)系統(tǒng)的工程性工作,在引入計(jì)算機(jī)領(lǐng)域后,軟件架構(gòu)就成為描述軟件規(guī)劃設(shè)計(jì)技術(shù)的專(zhuān)有名詞。特別地,軟件架構(gòu)師一詞在英文里和建筑師也是同一個(gè)詞(Architect)。

1972年圖靈獎(jiǎng)獲得者、荷蘭計(jì)算機(jī)科學(xué)家Edsger Wybe Dijkstra(就是大名鼎鼎的Dijkstra最短路徑算法的發(fā)明者)早在二十世紀(jì)六十年代就已經(jīng)涉及軟件架構(gòu)這個(gè)概念了。到了二十世紀(jì)九十年代,Rational Software Corporation和Microsoft、卡內(nèi)基梅隆大學(xué)和加州大學(xué)埃爾文分校在這個(gè)領(lǐng)域做了很多研究和實(shí)踐,提出了軟件架構(gòu)中的很多概念。

維基百科里對(duì)軟件架構(gòu)的定義:

軟件架構(gòu)是有關(guān)軟件整體結(jié)構(gòu)與組件的抽象描述,用于指導(dǎo)大型軟件系統(tǒng)各個(gè)方面的設(shè)計(jì)。軟件架構(gòu)師定義和設(shè)計(jì)軟件的模塊化、模塊之間的交互、用戶界面風(fēng)格、對(duì)外接口方法、創(chuàng)新的設(shè)計(jì)特性,以及高層事物的對(duì)象操作、邏輯和流程。軟件架構(gòu)是一個(gè)系統(tǒng)的草圖。軟件架構(gòu)描述的對(duì)象是直接構(gòu)成系統(tǒng)的抽象組件。各個(gè)組件之間的連接則明確和相對(duì)細(xì)致地描述組件之間的通信。在實(shí)現(xiàn)階段,這些抽象組件被細(xì)化為實(shí)際的組件,比如具體某個(gè)類(lèi)或?qū)ο?。在面向?qū)ο箢I(lǐng)域中,組件之間的連接通常用接口來(lái)實(shí)現(xiàn)。

Kruchten認(rèn)為:

架構(gòu)是對(duì)軟件系統(tǒng)組織、結(jié)構(gòu)部分和系統(tǒng)包含接口的選擇,滿足功能和性能需求的一系列架構(gòu)元素的集合。軟件架構(gòu)設(shè)計(jì)與軟件高層次結(jié)構(gòu)的實(shí)現(xiàn)能夠抽象、分解、組合等。

Bass等人認(rèn)為:

系統(tǒng)或計(jì)算系統(tǒng)的軟件架構(gòu)是包含軟件部分、外部可見(jiàn)特性部分,以及它們之間關(guān)系的系統(tǒng)結(jié)構(gòu)。

McGovern則認(rèn)為:

軟件架構(gòu)或系統(tǒng)由組成系統(tǒng)的結(jié)構(gòu)的相互作用和軟件結(jié)構(gòu)的重要設(shè)計(jì)決定組成。設(shè)計(jì)決定應(yīng)成功實(shí)現(xiàn)所期望支持的質(zhì)量。設(shè)計(jì)決定為系統(tǒng)開(kāi)發(fā)、支持和維護(hù)提供概念上的基礎(chǔ)。

比較公認(rèn)的軟件架構(gòu)定義是在2000年的ANSI/IEEE 1471標(biāo)準(zhǔn)《軟件增強(qiáng)系統(tǒng)的體系結(jié)構(gòu)描述推薦實(shí)施規(guī)程(Recommended Practice for Architectural Description for Software-Intensive Systems Description)》、2011年的ISO/IEC/IEEE 42010標(biāo)準(zhǔn)《系統(tǒng)和軟件工程——架構(gòu)描述(Systems and software engineering — Architecture description)》中定義的。

(1)架構(gòu)過(guò)程:在系統(tǒng)整個(gè)生命周期中構(gòu)思、定義、表達(dá)、記錄、交流,驗(yàn)證合適實(shí)現(xiàn),維護(hù)和改進(jìn)架構(gòu)的過(guò)程,也就是設(shè)計(jì)過(guò)程。

(2)架構(gòu):一個(gè)系統(tǒng)體現(xiàn)在其環(huán)境中的元素、關(guān)系的基本概念或?qū)傩?,以及其設(shè)計(jì)和進(jìn)化原則。

(3)架構(gòu)描述:表達(dá)一個(gè)架構(gòu)的工作產(chǎn)出物(通常指的是各種架構(gòu)圖和設(shè)計(jì)文檔)。

(4)架構(gòu)視圖:通過(guò)系統(tǒng)的某些關(guān)注點(diǎn)的視角,表達(dá)一個(gè)系統(tǒng)的工作產(chǎn)出物(例如部署視圖、開(kāi)發(fā)視圖等)。

(5)系統(tǒng):包含一個(gè)或多個(gè)進(jìn)程,硬件、軟件、工具與可以滿足需求的人的集合。

(6)環(huán)境:決定開(kāi)發(fā)、操作、策略和其他影響系統(tǒng)的設(shè)置和條件。

總結(jié):軟件架構(gòu)是一個(gè)用于指導(dǎo)系統(tǒng)實(shí)現(xiàn)的草圖。這個(gè)草圖越詳細(xì),對(duì)系統(tǒng)實(shí)現(xiàn)的指導(dǎo)意義就越重要,且貫穿于軟件的整個(gè)生命周期

?著作權(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)容

  • 什么是軟件架構(gòu) 架構(gòu)服務(wù)于效率、質(zhì)量、體驗(yàn)、性能等 架構(gòu)優(yōu)化的短期成本和長(zhǎng)期收益的權(quán)衡 架構(gòu)要與當(dāng)前業(yè)務(wù)發(fā)展和團(tuán)隊(duì)...
    李傳格閱讀 283評(píng)論 0 0
  • 我承認(rèn)自己因?yàn)橄脒@個(gè)話題,今晚失眠了。反正也睡不著,手機(jī)碼字把思考的東西分享出來(lái)。 項(xiàng)目前期 軟件工程也像建筑工程...
    蘇星河閱讀 947評(píng)論 0 0
  • 這是中國(guó)游泳隊(duì)覃海洋亞運(yùn)會(huì)200米蛙泳賽前的話,深以為然。比賽結(jié)果是位列兩位日本選手之后獲得季軍,提高最好成績(jī)1秒...
    鐵腿閱讀 205評(píng)論 0 0
  • 炮聲響徹云霄天 恭迎灶爺返家園 善念善事須奉行 神靈護(hù)佑家才安
    讀書(shū)不負(fù)我魏霞閱讀 213評(píng)論 1 5
  • 今日是母親節(jié),而我起了個(gè)大早,去聽(tīng)幼兒教育的講座,老師是北京來(lái)的,據(jù)介紹她研究幼兒教師6年之久,講課內(nèi)容豐富、緊促...
    井新艷閱讀 112評(píng)論 0 1

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