架構(gòu)師之路軟件架構(gòu) — Overview

      網(wǎng)友投稿 1016 2022-05-30

      目錄

      文章目錄

      目錄

      軟件架構(gòu)的定義

      軟件架構(gòu)的核心要素

      架構(gòu)師之路 — 軟件架構(gòu) — Overview

      軟件架構(gòu)的目的

      軟件架構(gòu)分類

      業(yè)務(wù)架構(gòu)

      應(yīng)用架構(gòu)

      系統(tǒng)架構(gòu)

      數(shù)據(jù)架構(gòu)

      部署架構(gòu)

      運維架構(gòu)

      軟件架構(gòu)的定義

      IEEE 給出的定義:

      架構(gòu)是環(huán)境中該系統(tǒng)的一組基礎(chǔ)概念(concepts)和屬性(properties),具體表現(xiàn)就是它的元素(elements)、關(guān)系(relationships),以及設(shè)計與演進的基本原則(principles)。

      CMU 軟件工程研究院的定義:

      架構(gòu)是用于推演出該系統(tǒng)的一組結(jié)構(gòu)(structures),具體是由軟件元素(elements)、元素之間的關(guān)系(relationships),以及各自的屬性(properties)共同組成。

      軟件架構(gòu)的核心要素

      從上述軟件架構(gòu)的定義中,我們可以提取出 4 個核心要素:

      元素(elements):將系統(tǒng)拆分為一組元素,例如:模塊、組件、結(jié)構(gòu)體、子系統(tǒng);

      關(guān)系(relationships):不同元素之間的關(guān)系,例如:交互、依賴 、繼承、組合、聚合;

      屬性(properties):每個元素具備的屬性,例如:名稱、職責、接口、實現(xiàn)限制等;

      原理(principles):為什么這么設(shè)計,例如:拆分依據(jù)、設(shè)計原則、決策原因等。

      可見,軟件架構(gòu)不僅顯示了軟件需求和軟件結(jié)構(gòu)之間的對應(yīng)關(guān)系,而且指定了整個軟件系統(tǒng)的組織和拓撲結(jié)構(gòu),提供了一些設(shè)計決策的基本原理。

      軟件架構(gòu)的目的

      高級語言的出現(xiàn),解放了程序員,但好景不長,隨著軟件的規(guī)模和復(fù)雜度的大大增加,軟件質(zhì)量低下,質(zhì)量把控難度高,項目無法如期完成,嚴重超支等現(xiàn)象。例如,1963 年美國的 水手一號火箭發(fā)射失敗事故,就是因為一行 FORTRAN 代碼錯誤導(dǎo)致的。

      所以,為了解決上面的問題,針對性的提出了解決方法 “軟件工程”。雖然 “軟件工程” 提出之后也曾被視為軟件領(lǐng)域的銀彈,但后來事實證明,軟件工程同樣無法根除軟件危機,只能在一定程度上緩解軟件危機。

      差不多同一時間,“結(jié)構(gòu)化程序設(shè)計” 作為另外一種解決軟件危機的方案被提了出來。結(jié)構(gòu)化程序設(shè)計的主要特點是拋棄 goto 語句,采取 “自頂向下、逐步細化、模塊化” 的指導(dǎo)思想。“結(jié)構(gòu)化程序設(shè)計” 的本質(zhì)上還是一種面向過程的設(shè)計思想,但通過 “自頂向下、逐步細化、模塊化” 的方法,將軟件的復(fù)雜度控制在一定范圍內(nèi),從而從整體上降低了軟件開發(fā)的復(fù)雜度。

      結(jié)構(gòu)化編程的風靡在一定程度上緩解了軟件危機,然而隨著硬件的快速發(fā)展,業(yè)務(wù)需求越來越復(fù)雜,以及編程應(yīng)用領(lǐng)域越來越廣泛,第二次軟件危機很快就到來了。第二次軟件危機的根本原因還是在于軟件生產(chǎn)力遠遠跟不上硬件和業(yè)務(wù)的發(fā)展。

      第一次軟件危機的根源在于軟件的 “邏輯” 變得非常復(fù)雜;

      第二次軟件危機主要體現(xiàn)在軟件的 “擴展” 變的非常復(fù)雜。

      結(jié)構(gòu)化程序設(shè)計雖然能夠緩解軟件邏輯的復(fù)雜性,但是對于業(yè)務(wù)變化帶來的軟件擴展卻無能為力。軟件領(lǐng)域迫切希望找到新的銀彈來解決軟件危機,在這種背景下,面向?qū)ο蟮乃枷腴_始流行起來。

      雖然面向?qū)ο箝_始也被當做解決軟件危機的銀彈,在一定程度上解決了軟件 “擴展” 帶來的復(fù)雜性。但事實證明,和軟件工程、結(jié)構(gòu)化程度設(shè)計一樣,面向?qū)ο笠膊皇倾y彈,而只是一種新的軟件方法而已。

      隨著軟件系統(tǒng)規(guī)模的增加,計算相關(guān)的算法和數(shù)據(jù)結(jié)構(gòu)不再構(gòu)成主要的設(shè)計問題。當系統(tǒng)由許多部分組成時,整個系統(tǒng)的組織,也就是所說的 “軟件架構(gòu)”,產(chǎn)生了一系列新的設(shè)計問題。比如:

      系統(tǒng)規(guī)模龐大,內(nèi)部耦合嚴重,開發(fā)效率低;

      系統(tǒng)耦合嚴重,牽一發(fā)動全身,后續(xù)修改和擴展困難;

      系統(tǒng)邏輯復(fù)雜,容易出問題,出問題后很難排查和修復(fù);

      可見,第一次軟件危機引出了 “結(jié)構(gòu)化編程”,創(chuàng)造了 “模塊” 概念;第二次軟件危機引出了 “面向?qū)ο缶幊獭?,?chuàng)造了 “對象” 概念;直到 “軟件架構(gòu)” 的產(chǎn)生,創(chuàng)造了 “組件” 概念。

      “模塊”、“對象” 和 “組件” 本質(zhì)上都是對達到一定規(guī)模的軟件進行拆分,差別只是在于隨著軟件的復(fù)雜度不斷增加,拆分的粒度越來越粗,拆分的層次越來越高。

      簡而言之,軟件架構(gòu)的目的就是描述系統(tǒng)實現(xiàn)的藍圖(Blueprints),本質(zhì)是為了管理軟件的復(fù)雜性。其價值應(yīng)該只圍繞一個核心命題:控制復(fù)雜性,效率最大化。

      軟件架構(gòu)分類

      業(yè)務(wù)架構(gòu)

      由業(yè)務(wù)架構(gòu)師負責,也可以稱為業(yè)務(wù)領(lǐng)域?qū)<?、行業(yè)專家。

      業(yè)務(wù)架構(gòu)屬于頂層設(shè)計,其對業(yè)務(wù)的定義和劃分會影響組織結(jié)構(gòu)和技術(shù)架構(gòu)。例如,阿里巴巴在沒有中臺部門之前,每個業(yè)務(wù)部門的技術(shù)架構(gòu)都是煙囪式的,淘寶、天貓、飛豬、1688 等各有一套體系結(jié)構(gòu)。而后,成立了共享平臺事業(yè)部,打通了賬號、商品、訂單等體系,讓商業(yè)基礎(chǔ)實施的復(fù)用成為可能。

      應(yīng)用架構(gòu)

      由應(yīng)用架構(gòu)師負責,他需要根據(jù)業(yè)務(wù)場景的需要,設(shè)計應(yīng)用的層次結(jié)構(gòu),制定應(yīng)用規(guī)范、定義接口和數(shù)據(jù)交互協(xié)議等。并盡量將應(yīng)用的復(fù)雜度控制在一個可以接受的水平,從而在快速的支撐業(yè)務(wù)發(fā)展的同時,在保證系統(tǒng)的可用性和可維護性的同時,確保應(yīng)用滿足非功能屬性要求(性能、安全、穩(wěn)定性等)。

      系統(tǒng)架構(gòu)

      分布式系統(tǒng)基本是稍具規(guī)模業(yè)務(wù)的必選項。它需要解決服務(wù)器負載,分布式服務(wù)的注冊和發(fā)現(xiàn),消息系統(tǒng),緩存系統(tǒng),分布式數(shù)據(jù)庫等問題,同時架構(gòu)師要在 CAP(Consistency,Availability,Partition tolerance)之間進行權(quán)衡。

      數(shù)據(jù)架構(gòu)

      對于規(guī)模大一些的公司,數(shù)據(jù)治理是一個很重要的課題。如何對數(shù)據(jù)收集、數(shù)據(jù)處理提供統(tǒng)一的服務(wù)和標準,是數(shù)據(jù)架構(gòu)需要關(guān)注的問題。其目的就是統(tǒng)一數(shù)據(jù)定義規(guī)范,標準化數(shù)據(jù)表達,形成有效易維護的數(shù)據(jù)資產(chǎn),搭建統(tǒng)一的大數(shù)據(jù)處理平臺,形成數(shù)據(jù)使用閉環(huán)。

      部署架構(gòu)

      物理架構(gòu)關(guān)注軟件元件是如何放到硬件上的,包括機房搭建、網(wǎng)絡(luò)拓撲結(jié)構(gòu),網(wǎng)絡(luò)分流器、代理服務(wù)器、Web 服務(wù)器、應(yīng)用服務(wù)器、報表服務(wù)器、整合服務(wù)器、存儲服務(wù)器和主機等。

      運維架構(gòu)

      負責運維系統(tǒng)的規(guī)劃、選型、部署上線,建立規(guī)范化的運維體系。

      運維

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔相應(yīng)法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:HarmonyOS小熊派 | HarmonyOS內(nèi)核編程開發(fā)—信號量
      下一篇:網(wǎng)站加載速度優(yōu)化的14個技巧
      相關(guān)文章
      亚洲xxxx视频| 爱情岛论坛亚洲品质自拍视频网站| 亚洲欧美不卡高清在线| 亚洲国产精品久久丫| 91亚洲导航深夜福利| 亚洲 综合 国产 欧洲 丝袜| 亚洲精品无AMM毛片| 亚洲欧美国产精品专区久久| 在线aⅴ亚洲中文字幕| 亚洲日本国产综合高清| 国产亚洲精aa在线看| 亚洲www77777| 亚洲av无码一区二区三区四区| 亚洲av日韩综合一区在线观看| 亚洲电影在线免费观看| 国产亚洲人成网站在线观看不卡| 久久久久噜噜噜亚洲熟女综合| 亚洲人成人网站在线观看| 亚洲国产精品无码久久九九| 亚洲第一区精品日韩在线播放| 亚洲电影日韩精品| 亚洲人成色77777在线观看大| 亚洲人成无码网WWW| 爱情岛论坛网亚洲品质自拍| 国产成人99久久亚洲综合精品| 亚洲精品无码久久久久AV麻豆| 国产成人亚洲综合| 亚洲午夜福利AV一区二区无码| 亚洲国产精品特色大片观看完整版 | 亚洲综合精品香蕉久久网97| 亚洲国产香蕉碰碰人人| 亚洲av无码成人精品区| 老牛精品亚洲成av人片| 亚洲欧美熟妇综合久久久久| 精品国产亚洲一区二区三区在线观看| www.亚洲一区| 中文字幕在线亚洲精品 | 亚洲国产日韩成人综合天堂| 中文亚洲成a人片在线观看| 亚洲国产成人片在线观看无码| 久久亚洲AV成人出白浆无码国产|