01從軟件體系結(jié)構(gòu)(架構(gòu))談起

01

關(guān)于軟件架構(gòu)(Software Architecture)钥飞,這其實也是仁者見仁付翁,智者見智筛欢,不過也早有了一個國際標(biāo)準(zhǔn)了恢共,我所使用的概念全都來自國際標(biāo)準(zhǔn)战秋。

國外軟件架構(gòu)的書有很多,有卡耐基梅隆大學(xué)的《軟件構(gòu)架實踐》讨韭,作者們是美國國防部軍事軟件的供應(yīng)商脂信,這個大學(xué)好像外包了美國的很多軍事項目。不過這本書講的項目都是軍事項目透硝,我們軟件技術(shù)人員大多是沒有搞過搞軍事項目的狰闪。我們更多的是企業(yè)應(yīng)用軟件的開發(fā),所以濒生,那本書中的軍事領(lǐng)域里面的那些術(shù)語埋泵,很多是和我們軟件開發(fā)過程中的術(shù)語是不一樣的,因此,我們不會太多的涉及這本書的內(nèi)容丽声,當(dāng)然了礁蔗,雖然我們無法用他書中的概念來談關(guān)于架構(gòu)的問題,但它的那里面的很多方法也是可以參考的雁社。

What’s Software Architecture?

軟件架構(gòu)浴井,也可以稱為是軟件系統(tǒng)結(jié)構(gòu),或者說軟件實際上是軟件系統(tǒng)的一個簡稱歧胁。

它最核心的一個方法論滋饲,是面對真正的需求,去尋找到一個架構(gòu)喊巍,從而能夠平衡(balance)的完成這個需求屠缭。

02

我們先來看看,軟件是個什么東西崭参?

What’s Software?

軟件是什么呵曹?

Software is a general term used to describe a collection of computer programs, procedures and documentation that perform some tasks on an operating System.

這個軟件它是用來干什么的呢?

它是一個計算機的程序何暮,然后呢奄喂,是這樣的一個集合或者一個收集物。要讓程序通過系統(tǒng)來執(zhí)行一些任務(wù)海洼,就是一個執(zhí)行過程跨新,從操作系統(tǒng)的眼光看,它是運行在操作系統(tǒng)上的很小的一個局部的過程坏逢。

那什么又是軟件系統(tǒng)呢域帐?

What’s Software System?

The term software system is often used as a system of computer program or software.

A software system is a system based on software forming part of a computer system(a combination of hardware and software).

The term software system is related to the application of systems theory approaches in software engineering context. This approach is often used to study large and complex software,because it focuses on the major components of software and their interactions.

The term software system is also related to the field of Software Architecture.

我們再來對軟件系統(tǒng)做一個更深刻的說明,軟件系統(tǒng)這個術(shù)語是整,它常常也是一個計算機程序肖揣。或者軟件的一個同義詞浮入。一個計算機系統(tǒng)包括了硬件龙优、軟件。當(dāng)我們講一個軟件架構(gòu)的時候事秀,我們要跟硬件與軟件彤断,粘連在一起嗎?軟件架構(gòu)是需要映射一個組織的架構(gòu)嗎秽晚?

核心問題是瓦糟,軟件有一個架構(gòu)。先有架構(gòu)赴蝇,然后軟件菩浙,然后又有一個語境。我們直觀的看到軟件要部署在硬件上,這樣構(gòu)成了一個計算機系統(tǒng)劲蜻,而這個計算機系統(tǒng)陆淀,是需要運行在一個企業(yè)里面的,它首先要映射一個企業(yè)先嬉。這是我們的兩個核心轧苫。

一個軟件系統(tǒng)在一個企業(yè)里面,要包括四個部分疫蔓,軟件含懊,硬件,組織衅胀,信息岔乔。

那么,軟件系統(tǒng)有哪些分類滚躯?

Major Categories of Software Systems:

Application software/Programming software (DevelopmentTools)/System Software

應(yīng)用軟件/編程軟件(開發(fā)工具)/系統(tǒng)軟件

03

首先雏门,介紹一下軟件體系結(jié)構(gòu)的核心概念和關(guān)鍵圖像。

Architect (架構(gòu)師) 名詞/Architecting(構(gòu)架) 動詞/Architecture(架構(gòu)掸掏,體系結(jié)構(gòu)) 名詞

Architect performs Architecting./Architecting results in Architecture./Architect creates Architecture.

他們的關(guān)系是茁影,架構(gòu)師構(gòu)架體系結(jié)構(gòu)。那丧凤,什么是架構(gòu)師呢募闲?

What is An Architect?

System stakeholder(涉眾) responsible for a system’s architecture.

架構(gòu)師是,負責(zé)系統(tǒng)體系結(jié)構(gòu)的系統(tǒng)利益干系人(涉眾)愿待。

04

軟件架構(gòu)首先放在了一個軟件工程的語境里面蝇更,它最重要的目標(biāo)就是提高它的模塊的通用性,以及關(guān)注點的分割呼盆,通過這兩個核心的手段,來降低軟件的復(fù)雜性蚁廓,這是軟件工程中要解決的重中之重的問題访圃。

Approach,是一個途徑相嵌。達到一個目標(biāo)你有很多途徑腿时,在一些條件的限定下,你獲得一種對各種資源的平衡(比如項目管理中饭宾,資源時間成本批糟,三者互相統(tǒng)一又互相矛盾的關(guān)系),你再去選擇一條適合你的一種途徑看铆。

各種類型的軟件系統(tǒng)都有一個架構(gòu)徽鼎。它是系統(tǒng)里面一個有效的組成部分,這就把我們的范圍在逐漸縮小,逐漸限定否淤。我們首先要選擇一下我們的方向悄但,我在書中探討的是,應(yīng)用軟件的架構(gòu)石抡。

軟件一定會有一個架構(gòu)檐嚣,不管你有沒有意識到,架構(gòu)一定存在啰扛。那我們研究架構(gòu)的時候需要考慮嚎京,是哪一種類型的架構(gòu),我們先下決心去做一種選擇隐解,然后再確定我們研究的是應(yīng)用軟件鞍帝,那應(yīng)用軟件也會有很多呀,我們到底要做什么厢漩,我們最終要選擇的是做一個application膜眠,在企業(yè)的環(huán)境中,去做一個企業(yè)級的應(yīng)用溜嗜。

通過這樣一系列的選擇宵膨,用的這個方法,其實是非常復(fù)雜炸宵,因為你要進行取舍辟躏,最后才能確定方向。然后呢土全,還要找到一個架構(gòu)捎琐,來達到一種很好的平衡,這樣才算理解了前進的方向裹匙。

05

架構(gòu)師通過他的思考與設(shè)計瑞凑,構(gòu)建了一個符合要求達到標(biāo)準(zhǔn)的軟件架構(gòu)。

注意我們的主語和謂語概页,我們現(xiàn)在的目光要聚焦在誰在干這個事兒籽御,不是如何干,也不是干成的結(jié)果是什么惰匙,也不是等著這個結(jié)論與結(jié)果技掏,然后用一個東西把它描述一下。

很多人项鬼,把架構(gòu)理解成了一種結(jié)果性的東西哑梳,比如系統(tǒng)文檔,他們認為通過這些文檔绘盟,就理解了這種文檔背后的系統(tǒng)交流的語言鸠真,這個方向其實有點問題悯仙,搞成了反推機制,也就是說我們開發(fā)好一個軟件后弧哎,然后再解釋這個軟件是如何產(chǎn)生的雁比,反過來再解釋這個軟件的架構(gòu),而不是把架構(gòu)理解成一個動態(tài)正向的過程撤嫩,是一個前期的設(shè)計過程偎捎,這其實已經(jīng)搞反了。

我們有時候序攘,會看到軟件工程中有很多的藍圖茴她,這其實是設(shè)計上的東西。

而這三者的關(guān)系是程奠,架構(gòu)師通過執(zhí)行構(gòu)架這個活動丈牢,然后設(shè)計實現(xiàn)了一個架構(gòu)。

06

當(dāng)然瞄沙,在現(xiàn)實生活中己沛,很多時候架構(gòu)實際上是三個要素(政治,經(jīng)濟與技術(shù))距境,斗爭與評價申尼,甚至是迭代的動態(tài)平衡后的一個結(jié)果。

首先是一個技術(shù)面臨的實現(xiàn)因素垫桂,你在企業(yè)里面呆久了之后你就會知道师幕,架構(gòu),首先是政治斗爭的結(jié)果诬滩,然后是經(jīng)濟斗爭的結(jié)果霹粥,再然后才是技術(shù)選擇的結(jié)果。

比如疼鸟,在一個公司里后控,每個銷售經(jīng)理從怎么維護自己部門的利益的角度來看問題,其他部門的負責(zé)人也是如此空镜,而很少有人能從大局觀來看問題忆蚀,當(dāng)然老板必須從大局觀來看。這是因為公司的政策都會影響他們姑裂,會影響他們的收入,地位男旗,以及未來發(fā)展前途舶斧。

所以,每一個架構(gòu)也會影響他們察皇,組織結(jié)構(gòu)也是一種balance的結(jié)果茴厉。因為我參與了一些事務(wù)的決策過程泽台,這里面的利益之爭是非常復(fù)雜的。

第一個要素首先是正視權(quán)力斗爭的結(jié)果矾缓,然后下一個是經(jīng)濟利益斗爭的結(jié)果怀酷,第三位才是技術(shù)選擇的結(jié)果。

如果我們有足夠多的開發(fā)經(jīng)驗和人生閱歷的話嗜闻,你慢慢就會接受一個概念蜕依,架構(gòu)沒有最好的,只有適合自己的琉雳,只有適合自己特定的企業(yè)環(huán)境的样眠。

當(dāng)然了,這個世界上充滿智慧的人也很多翠肘,很多人都是高標(biāo)準(zhǔn)檐束、嚴要求,甚至很多都算是完美主義者束倍,包括我自己被丧,但我發(fā)現(xiàn)這種思考問題的角度是大有問題的。

我們在開發(fā)軟件的過程中绪妹,尤其是在實現(xiàn)軟件架構(gòu)的過程中甥桂,有很多人在技術(shù)上喜歡用比較新的東西,有技術(shù)含量的東西喂急,以體現(xiàn)出我是牛人的特點的東西格嘁。從而,力爭把軟件設(shè)想得比較先進廊移,以證明我的偉大糕簿。

但實際經(jīng)驗,我要告訴你狡孔,你那叫找死懂诗,你只要能夠解決問題,達到平衡苗膝,能按時完成任務(wù)殃恒,讓老板們賺到錢,然后你也賺到錢辱揭,你只需要比別人多想一小步就足夠厲害了离唐。

因此,在架構(gòu)面前问窃,我們不做best亥鬓,做到better,我認為就很perfect了域庇,這是因為嵌戈,在技術(shù)面前覆积,總有更新的,也總有更先進的熟呛,你追求這個永遠追求不完宽档。當(dāng)然了,我們還要有一個考慮庵朝,步子不能太大吗冤,要結(jié)合實際情況,財、物、人暗甥、力佑笋,各種資源整體協(xié)調(diào)前進,做先鋒做先驅(qū)可以,做先烈就有點慘了,如果沒有各方面足夠的投入,那就沒有必要了婆排。

你可以做一個先驅(qū),而不要緊接著做了先烈笔链,一不小心把自己作死了段只,這就是有點冒進了,因此鉴扫,我們要把握好這個度赞枕。

所以,有這樣一句話坪创,叫尺度把握人生炕婶,高度決定視野,角度改變觀念莱预。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末柠掂,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子依沮,更是在濱河造成了極大的恐慌涯贞,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件危喉,死亡現(xiàn)場離奇詭異宋渔,居然都是意外死亡,警方通過查閱死者的電腦和手機辜限,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進店門傻谁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人列粪,你說我怎么就攤上這事审磁。” “怎么了岂座?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵态蒂,是天一觀的道長。 經(jīng)常有香客問我费什,道長钾恢,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任鸳址,我火速辦了婚禮瘩蚪,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘稿黍。我一直安慰自己疹瘦,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布巡球。 她就那樣靜靜地躺著言沐,像睡著了一般。 火紅的嫁衣襯著肌膚如雪酣栈。 梳的紋絲不亂的頭發(fā)上险胰,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天,我揣著相機與錄音矿筝,去河邊找鬼起便。 笑死,一個胖子當(dāng)著我的面吹牛窖维,可吹牛的內(nèi)容都是我干的榆综。 我是一名探鬼主播,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼陈辱,長吁一口氣:“原來是場噩夢啊……” “哼奖年!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起沛贪,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤陋守,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后利赋,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體水评,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年媚送,在試婚紗的時候發(fā)現(xiàn)自己被綠了中燥。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,617評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡塘偎,死狀恐怖疗涉,靈堂內(nèi)的尸體忽然破棺而出拿霉,到底是詐尸還是另有隱情,我是刑警寧澤咱扣,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布绽淘,位于F島的核電站,受9級特大地震影響闹伪,放射性物質(zhì)發(fā)生泄漏沪铭。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一偏瓤、第九天 我趴在偏房一處隱蔽的房頂上張望杀怠。 院中可真熱鬧,春花似錦厅克、人聲如沸赔退。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽离钝。三九已至,卻和暖如春褪储,著一層夾襖步出監(jiān)牢的瞬間卵渴,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工鲤竹, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留浪读,地道東北人。 一個月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓辛藻,卻偏偏與公主長得像碘橘,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子吱肌,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,486評論 2 348

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