架構(gòu)設(shè)計(jì)00-架構(gòu)師知識體系10-對軟件認(rèn)知層次的思考

架構(gòu)設(shè)計(jì)系列文章肘交,請參見連接谦屑。

前言:對于軟件的認(rèn)知層次代表著不同的專業(yè)程度,也代表著不同層次需要完成的工作的不同朴皆。在架構(gòu)設(shè)計(jì)過程中需要有效的利用分層的認(rèn)知贴彼,對不同層次的問題進(jìn)行有針對性的解決確定。

1. 背景

在架構(gòu)設(shè)計(jì)與實(shí)現(xiàn)過程中窍育,需要對軟件系統(tǒng)做全局的分析與考慮以求全局的認(rèn)知卡睦。在分析和考慮過程中軟件的不同層次都有獨(dú)特的問題。為了在設(shè)計(jì)階段做出更全面的決策漱抓,以解決絕大部分實(shí)現(xiàn)過程中可能遇到的問題表锻,需要對軟件開發(fā)過程中不同的層次的工作內(nèi)容進(jìn)行具體的分析。

所以需要對軟件設(shè)計(jì)與決策提供全局框架辽旋,并把握每個(gè)層次的關(guān)鍵點(diǎn)浩嫌。

軟件層次

2. 層次

可以將軟件的實(shí)現(xiàn)過程分為如圖的幾個(gè)層次,軟件從業(yè)人員也可以根據(jù)圖中的層次進(jìn)行劃分补胚。對于軟件實(shí)現(xiàn)層級的劃分也印證了現(xiàn)在的軟件設(shè)計(jì)與實(shí)現(xiàn)已經(jīng)超越了算法和數(shù)據(jù)解構(gòu)码耐,對系統(tǒng)結(jié)構(gòu)的設(shè)計(jì)與治理成為架構(gòu)設(shè)計(jì)的重點(diǎn)。分層結(jié)構(gòu)如上圖所示溶其,軟件分為7個(gè)層次:

2.1 代碼=數(shù)據(jù)結(jié)構(gòu)+算法:

在學(xué)校學(xué)軟件的時(shí)候有一種普遍的認(rèn)知:軟件=算法+數(shù)據(jù)結(jié)構(gòu)骚腥。在當(dāng)時(shí)(零幾年)沒有微服務(wù)、沒有DevOps瓶逃、沒有超大互聯(lián)網(wǎng)企業(yè)束铭,那會(huì)對于軟件的認(rèn)識可能就是單體,mfc這種模式的軟件厢绝。所以契沫,將軟件認(rèn)為就是數(shù)據(jù)結(jié)構(gòu)加算法即可解決絕大部分問題。

其實(shí)這樣的認(rèn)知也是受到時(shí)代的局限昔汉。在大部分軟件都是小型的C/S懈万、B/S的時(shí)候,當(dāng)時(shí)最大的問題還是怎樣開發(fā)一套業(yè)務(wù)系統(tǒng)的年代靶病,不會(huì)涉及到分布式系統(tǒng)的情況下能做出來就很不錯(cuò)了会通。更不用談對于軟件的認(rèn)知。

2.2 程序=代碼+設(shè)計(jì)模式:

在代碼使用設(shè)計(jì)模式娄周。為什么涕侈?

軟件規(guī)模在不斷的擴(kuò)大,不斷的發(fā)展煤辨。而在這個(gè)過程中遇到的規(guī)纳烟危化代碼的管理問題木张,可擴(kuò)展問題,可修改性問題调违。急需為軟件的持續(xù)發(fā)展提供一種解決方式窟哺,讓軟件規(guī)模增長提供管理的方法。

這時(shí)小規(guī)模的問題通用解決方案可以使用設(shè)計(jì)模式進(jìn)行管理技肩。因?yàn)槊恳粋€(gè)設(shè)計(jì)模式都是解決代碼規(guī)那夜欤化的一部分問題。

2.3 模塊=程序+分包模式:

這是伏羲一畫開天式的創(chuàng)舉虚婿,但很少有人提到分包模式旋奢。因?yàn)楝F(xiàn)在的mvc,mvp然痊,acp等已經(jīng)很流行而且已經(jīng)深入人心至朗。所以分包模式對于現(xiàn)在的開發(fā)已經(jīng)很平常。但是分包模式是第一次進(jìn)行了高內(nèi)聚低耦合的實(shí)踐剧浸。

2.4 軟件=模塊+架構(gòu)模式:

設(shè)計(jì)模式之上的架構(gòu)模式锹引。為什么?

到現(xiàn)在為止并沒有對軟件系統(tǒng)中的工作內(nèi)容進(jìn)行劃分唆香,例如:MVC的各種變種嫌变。軟件層之下的主要是管理代碼,代碼編寫的內(nèi)容躬它。而架構(gòu)模式管理的是對于復(fù)雜業(yè)務(wù)下模塊的拆分腾啥,模塊的關(guān)系,代碼的復(fù)用的工作冯吓。這部分內(nèi)容之所以需要做是因?yàn)橐庾R到軟件的工作中并不是所有的工作都需要用到算法和數(shù)據(jù)結(jié)構(gòu)倘待,需要將不同的業(yè)務(wù)之間隔離并確定業(yè)務(wù)之間的關(guān)系。

所以架構(gòu)模式負(fù)責(zé)的是給業(yè)務(wù)分包组贺、模塊凸舵。讓軟件中的每一個(gè)模塊都可以做到單一職責(zé)。

2.5 系統(tǒng)=軟件+架構(gòu)風(fēng)格:

架構(gòu)模式之上的架構(gòu)風(fēng)格失尖。為什么贞间?

上一個(gè)層次中已經(jīng)說明通過使用分包、模塊化的方法進(jìn)行模塊的職責(zé)的劃分雹仿。那么一個(gè)系統(tǒng)應(yīng)該以怎樣的方式將系統(tǒng)中的服務(wù)鏈接起來。

在常見的架構(gòu)的定義中有一種:一個(gè)程序或計(jì)算機(jī)系統(tǒng)的軟件體系結(jié)構(gòu)包括一個(gè)或一組軟件構(gòu)件整以、軟件構(gòu)件的外部的可見特性及其相互關(guān)系胧辽。

2.6 平臺=系統(tǒng)+企業(yè)架構(gòu):

架構(gòu)風(fēng)格之上的企業(yè)架構(gòu)。為什么公黑?

軟件的最終目標(biāo)是什么邑商?按照作者理解應(yīng)該是解決人們現(xiàn)實(shí)中的切實(shí)問題摄咆,不管是提升效率、降低成本人断、提升便利性還是提供特定幫助都是可以通過計(jì)算機(jī)的計(jì)算能力來解決的事情吭从。抱著這個(gè)目標(biāo)去實(shí)現(xiàn)

傳說中的EA,它最主要的解決問題是:為了解決IT與業(yè)務(wù)對齊恶迈、業(yè)務(wù)和戰(zhàn)略對齊問題涩金。

2.7 企業(yè)架構(gòu)

企業(yè)架構(gòu)有多種方法論,也有不同層面的解決方案暇仲。例如:EA可以有togaf步做,zachman,dodaf等奈附。產(chǎn)品開發(fā)方法有ipd全度,精益等方法。

我個(gè)人一般喜歡以:理想斥滤、目標(biāo)将鸵、原則、方法這幾個(gè)方向去分析一個(gè)公司是否真正的解決了現(xiàn)實(shí)問題佑颇。并根據(jù)四個(gè)元素去確認(rèn)公司的目標(biāo)與個(gè)人目標(biāo)的一致性顶掉。

3. 總結(jié)

每個(gè)層次的認(rèn)知都是對的,并沒有錯(cuò)誤一說漩符。這里最主要的區(qū)別是你處在什么階段就會(huì)認(rèn)知到什么樣的軟件一喘。行業(yè)所處的階段也會(huì)影響從業(yè)者對于這個(gè)行業(yè)的認(rèn)知,就像文中所說的一樣認(rèn)知是受到時(shí)代的局限嗜暴。

就像《演進(jìn)式架構(gòu)》中所說的:適度的重復(fù)是有益的凸克。而不像之前人們認(rèn)為DRY,不能重復(fù)任何東西闷沥。所以萎战,站在鄧寧克魯格的開悟之坡的人并不會(huì)去嘲笑處在愚昧之峰的人。

再比如《軟件架構(gòu):架構(gòu)模式舆逃、特征及實(shí)踐指南》中所說的:適合的才是最好的蚂维。很多時(shí)候沒有對錯(cuò),只有合適路狮,在馬丁富勒的《單體優(yōu)先》中也有類似的描述虫啥。

在這里說這么多要證明的是:認(rèn)知處在任何階段都是正常的,不過需要不斷的提升認(rèn)知奄妨。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末涂籽,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子砸抛,更是在濱河造成了極大的恐慌评雌,老刑警劉巖树枫,帶你破解...
    沈念sama閱讀 219,539評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異景东,居然都是意外死亡砂轻,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評論 3 396
  • 文/潘曉璐 我一進(jìn)店門斤吐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來搔涝,“玉大人,你說我怎么就攤上這事曲初√遐耍” “怎么了?”我有些...
    開封第一講書人閱讀 165,871評論 0 356
  • 文/不壞的土叔 我叫張陵臼婆,是天一觀的道長抒痒。 經(jīng)常有香客問我,道長颁褂,這世上最難降的妖魔是什么故响? 我笑而不...
    開封第一講書人閱讀 58,963評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮颁独,結(jié)果婚禮上彩届,老公的妹妹穿的比我還像新娘。我一直安慰自己誓酒,他們只是感情好樟蠕,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,984評論 6 393
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著靠柑,像睡著了一般寨辩。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上歼冰,一...
    開封第一講書人閱讀 51,763評論 1 307
  • 那天靡狞,我揣著相機(jī)與錄音,去河邊找鬼隔嫡。 笑死甸怕,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的腮恩。 我是一名探鬼主播梢杭,決...
    沈念sama閱讀 40,468評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼秸滴!你這毒婦竟也來了式曲?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎吝羞,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體内颗,經(jīng)...
    沈念sama閱讀 45,850評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡钧排,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,002評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了均澳。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片恨溜。...
    茶點(diǎn)故事閱讀 40,144評論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖找前,靈堂內(nèi)的尸體忽然破棺而出糟袁,到底是詐尸還是另有隱情,我是刑警寧澤躺盛,帶...
    沈念sama閱讀 35,823評論 5 346
  • 正文 年R本政府宣布项戴,位于F島的核電站,受9級特大地震影響槽惫,放射性物質(zhì)發(fā)生泄漏周叮。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,483評論 3 331
  • 文/蒙蒙 一界斜、第九天 我趴在偏房一處隱蔽的房頂上張望仿耽。 院中可真熱鬧,春花似錦各薇、人聲如沸项贺。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,026評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽开缎。三九已至,卻和暖如春朝抖,著一層夾襖步出監(jiān)牢的瞬間啥箭,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,150評論 1 272
  • 我被黑心中介騙來泰國打工治宣, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留急侥,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,415評論 3 373
  • 正文 我出身青樓侮邀,卻偏偏與公主長得像坏怪,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子绊茧,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,092評論 2 355

推薦閱讀更多精彩內(nèi)容