日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

软件架构设计_给非专业人士介绍——软件架构设计工作

發(fā)布時(shí)間:2025/3/20 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 软件架构设计_给非专业人士介绍——软件架构设计工作 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

軟件架構(gòu)設(shè)計(jì)

? ? ? ? 架構(gòu)設(shè)計(jì)是高層設(shè)計(jì),是設(shè)計(jì)決策之上的決策。它為決策引入的額外的約束,這種約束不產(chǎn)生立即可見的效果。

????????用一個(gè)例子來輔助我們的表述。比如你買了一間新房子,有5個(gè)房間,你的床放哪里?書柜放哪里?馬桶放哪里?微波爐放哪里?(允許先假定哪里都有下水管道之類的設(shè)施)

????????如果按眼前的決策,剛進(jìn)來的時(shí)候,哪里都能放。而且,這個(gè)判斷最快了。但等你在床旁邊安裝了一個(gè)馬桶。或者每個(gè)房間都安排了書柜,導(dǎo)致想放張大一點(diǎn)的床都放不下的時(shí)候,那就不由得感慨:早知道就……了。

????????那么提前決定買多大的房子,房子有多少房間,不同的房間是什么功能,就是架構(gòu)設(shè)計(jì)工作要做的工作了。

01

? ? ? 架構(gòu)工作呈現(xiàn)為約束。你搬一個(gè)微波爐進(jìn)來,看見有塊空地,你覺得就應(yīng)該放下來了,這毫無約束。但架構(gòu)工作會(huì)給你增加額外的約束——“你不能放這里,你必須放到那個(gè)貼著‘廚房’標(biāo)簽的的房間里”。所以架構(gòu)工作總是討人嫌,而且?guī)淼暮锰幦藗兛偸钦f“這本來就是這樣的”,因?yàn)檫@個(gè)微波爐本來就是他搬進(jìn)去的呀。

02

? ? ? 架構(gòu)工作在初期都表現(xiàn)為不是非做不可的樣子。就如同這個(gè)例子中,你買了300平的大房子,把你出租屋的那些破爛搬進(jìn)來,全扔雜物房就可以了,不需要“設(shè)計(jì)”。但如果你不“設(shè)計(jì)”,后面你的房子可能就一塌糊涂,沒法用。

? ? ? 架構(gòu)體現(xiàn)價(jià)值總出現(xiàn)在設(shè)計(jì)的后期,特別是所有的約束都被實(shí)施上來的時(shí)候。那時(shí)你會(huì)要求睡房里不要有潮濕的東西,書架旁邊不要有帶火的東西,電源線不能拉太遠(yuǎn),洗衣機(jī)旁邊必須可以排水之類的要求了,這些要求會(huì)互相沖突。

03

? ? ??有效的架構(gòu)工作很難呈現(xiàn)出直接被外行看到的模式或表象。比如你找個(gè)神棍來給你的房子看風(fēng)水,他用羅盤給你看半天,要求你每個(gè)房間里放個(gè)馬桶,再養(yǎng)條金魚進(jìn)去,不僅給你增加約束,還表現(xiàn)的很專業(yè)的樣子,你也無法事后說他不對:“雖然你每天都要聞著臭味睡覺,但這給你增加財(cái)運(yùn)啊,你現(xiàn)在沒有住醫(yī)院,都是我給你擺的這個(gè)陣給你壓著的”。虛假的架構(gòu)師還喜歡用什么是自己做的來聲稱自己架構(gòu)做得好,這也只是騙外行,因?yàn)榧軜?gòu)好不好是看使用效果好不好(一定程度上表現(xiàn)為具體設(shè)計(jì),特別是后期的具體設(shè)計(jì)和使用者自己的‘使用設(shè)計(jì)’是否容易做),而不是架構(gòu)設(shè)計(jì)本身難不難,好不好看,多不多,好不好。

04

? ? ? 架構(gòu)無法被簡單評(píng)價(jià),因?yàn)槊總€(gè)架構(gòu)的實(shí)施,都是獨(dú)一無二的。架構(gòu)也不是在選擇不出任何問題的路線,架構(gòu)只是在選擇出問題比較少的路線。不出問題對你來說可能就是應(yīng)該的,出了問題你都會(huì)說“早知道我就……”。你以為“你早知道就……”,其實(shí)你早那樣,別的地方就該出毛病了。其實(shí),大部分時(shí)候,你的房子住得還可以,沒有出什么大問題,比起情況差不多的人來說還有些明顯的優(yōu)勢,你的架構(gòu)就可以了。只是大部分情況下,你也不會(huì)說架構(gòu)設(shè)計(jì)師的什么好話。現(xiàn)在新冠病毒肆虐,你說早該隔離了,但假定早隔離保證這個(gè)病毒沒有發(fā)作,你又該說當(dāng)初的實(shí)施者吃飽了撐的了。

05

? ? ? 架構(gòu)無法被細(xì)致化,細(xì)致化的架構(gòu)無法響應(yīng)變化,比如你提前決定每個(gè)家具擺放的位置,如果某個(gè)家具不能到貨,你就處理不了,你考慮所有可能的組合呢,這個(gè)工作量你無法承擔(dān)。所以,架構(gòu)不是一次性的工作,而是一個(gè)長期的過程,是一個(gè)設(shè)計(jì),響應(yīng),再設(shè)計(jì),再響應(yīng)……的一個(gè)連續(xù)循環(huán)的過程。架構(gòu)設(shè)計(jì)不能著眼于眼前,也不能離開現(xiàn)實(shí)。很類似《道德經(jīng)》的一個(gè)表述:豫兮若冬涉川,猶兮若畏四鄰,儼兮其若客,渙兮若冰之將釋,孰兮其若樸,曠兮其若谷,渾兮其若濁。架構(gòu)遠(yuǎn)了不行,近了也不行。

06

? ? ? 架構(gòu)的工作很多都表現(xiàn)為不能一次成功,比如你為了裝修,在外墻會(huì)建腳手架,事后你會(huì)拆掉它,你不能說這是“浪費(fèi)時(shí)間”,架構(gòu)功能常常通過這種腳手架工作體現(xiàn)出來的。它不呈現(xiàn)你想象的純粹“指揮別人干活”的樣子。

07

? ? ? 架構(gòu)只能靠建模進(jìn)行邏輯驗(yàn)證,真正的驗(yàn)證只有實(shí)施的時(shí)候才知道。你單考慮水、電、通訊、家具的時(shí)候,可能邏輯是通的。但把它們放在一起,就不一定了,每個(gè)獨(dú)立的建模都有邊際效應(yīng),這種邊際效應(yīng)會(huì)互相影響。

? ? ? 最后,架構(gòu)幾乎無法回頭,如果你一開始就沒有做架構(gòu)設(shè)計(jì),房子里面的線拉得到處都是,每個(gè)房間都安排了一些排水設(shè)施之類的。或者你干脆買錯(cuò)了房子,這個(gè)位置根本沒有公交系統(tǒng),你還沒車,你除了把房子賣掉重新找一間,你沒有任何辦法。

? ? ? 所以,架構(gòu)這種東西,就像雞湯,你說它沒用,沒有這種設(shè)計(jì)的時(shí)候,你就是老出問題,你覺得你“做了架構(gòu)設(shè)計(jì)”,這只是個(gè)名義,它也不保證你不出問題。

架構(gòu)設(shè)計(jì)的方法一般來自四個(gè)輸入:

01

? ? ? 架構(gòu)師在這個(gè)問題上的經(jīng)驗(yàn)。比如他以前干過很多次這個(gè)事情,每個(gè)家庭都是有廚房、臥室、衛(wèi)生間的,分開有好處,他在沒有任何約束的時(shí)候,都會(huì)制造這個(gè)約束,這也確實(shí)會(huì)帶來好處。因此,也不存在跨行業(yè)的架構(gòu)設(shè)計(jì),沒有實(shí)際經(jīng)驗(yàn),哲學(xué)再好也不能成為架構(gòu)師(當(dāng)然,充神棍說不定可以)

02

? ? ? 高層邏輯建模。設(shè)計(jì)師會(huì)在一個(gè)很高的層次上構(gòu)造一些邏輯鏈,保證這個(gè)邏輯鏈?zhǔn)亲郧〉?#xff0c;先用這些邏輯鏈建立約束。比如他會(huì)先問:你住在這里是為了什么?為了孩子上學(xué)的方便?那么上班怎么辦?……這個(gè)邏輯通了,他才會(huì)討論是否買車,房子如何設(shè)計(jì)車庫書房這類的問題。

03

? ? ? 競爭對比。“別人怎么做的”,特別是“成功者是怎么做的”

04

? ? ? 反復(fù)的投資收益對比。設(shè)計(jì)師可能想的是一件事怎么做,而架構(gòu)師想的是這件事的成本是多少,是否有錢做,能否找別人做。架構(gòu)師還要觀察每波投資的時(shí)機(jī),讓每波投資進(jìn)入系統(tǒng)的時(shí)候,都能成為架構(gòu)目標(biāo)的助力(“動(dòng)善時(shí)”)。所以成功的架構(gòu)過程幾乎不可能被復(fù)制,因?yàn)榧軜?gòu)過程是和外部輸入的時(shí)機(jī)緊密結(jié)合在一起的。房子要填一個(gè)小洞的時(shí)候,正好鄰居有一些沙子要扔,這個(gè)時(shí)機(jī),你沒有準(zhǔn)備,就沒有辦法利用上。軟件更加是這樣,使用方的投資的時(shí)候,你不成熟不會(huì)用你,你成熟了你不需要它,你要做好一這個(gè)軟件,就要排布一個(gè)用戶機(jī)會(huì)計(jì)劃,靠這些用戶催熟你的軟件,這需要一個(gè)計(jì)較和設(shè)計(jì)。沒有應(yīng)用可以僅在實(shí)驗(yàn)室就成熟的。

另外

架構(gòu)設(shè)計(jì)還會(huì)引入一些其他策略!

? ? ? 比如“不為天下先”,每個(gè)架構(gòu)設(shè)計(jì)引入的約束,都會(huì)被要求找到一個(gè)“收益”,這樣雖然不能解釋為什么,但減少了約束,就為未來響應(yīng)變化增加了機(jī)會(huì))。比如有人建議,“所有房間都要裝排風(fēng)機(jī)”,加排風(fēng)機(jī)需要成本,但這個(gè)成本看不到收益,那么我們寧愿邏輯復(fù)雜一點(diǎn),某些房間裝排風(fēng)機(jī),某些房間不裝,某些房間開窗戶……我們也不能提前增加這個(gè)約束,這樣我們才能在后面根據(jù)需要決定裝排風(fēng)機(jī),還是保持密封用來存儲(chǔ)東西之類的。“不為天下先”,是為未來增加需求留下余地。好的架構(gòu)師極其反感沒有收益的設(shè)計(jì)約束,而裝樣子的架構(gòu)師喜歡引入無效的約束來證明“我也干了活”。

? ? ? 等等······

? ? ? 說到底,架構(gòu)是在自由階段增加約束,把未來你有可能遇到的約束提前統(tǒng)一在一起,以保證你設(shè)計(jì)的后期減少約束。架構(gòu)師分析邏輯鏈總是不考慮“這是對的”,而是考慮“少了什么”。比如有人說,我在房間里放一張床,兩個(gè)衣柜,一盞燈,是不是就可以了?架構(gòu)師不考慮單獨(dú)的床,衣柜是不是可以,架構(gòu)師考慮的是總成本是多少,房間有多大,用來干什么,然后才決定一張床兩個(gè)衣柜是不是對的。所以它總是從邏輯的全集來考慮問題。也正因?yàn)檫@樣,架構(gòu)師比一般具體設(shè)計(jì)的設(shè)計(jì)師更關(guān)注邊界和邊界上的需求和約束,因?yàn)橐粋€(gè)簡單的需求判斷的不同,就會(huì)帶來一個(gè)軟件架構(gòu)翻天覆地的變化。

版權(quán)聲明:凡非原創(chuàng)內(nèi)容,皆秉分享宗旨,圖文整理自網(wǎng)絡(luò)公開信息,版權(quán)屬原持有人,亦非本公眾號(hào)觀點(diǎn),如有侵權(quán),請聯(lián)系我們刪除。

總結(jié)

以上是生活随笔為你收集整理的软件架构设计_给非专业人士介绍——软件架构设计工作的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。