反模式讀書(shū)筆記之實(shí)現(xiàn)主體架構(gòu)(二)
摘要:反模式作為一種新視角模式,在表述和指導(dǎo)開(kāi)發(fā)上與傳統(tǒng)設(shè)計(jì)模式不同,他先提出模式的反面案例,而后在給出重構(gòu)方案,這在指導(dǎo)開(kāi)發(fā)人員(尤其是新手)不無(wú)裨益。本系列筆記為個(gè)人學(xué)習(xí)總結(jié),也希望沒(méi)有接觸過(guò)反模式的朋友們一起學(xué)習(xí)進(jìn)步。
正文:
1引言
有一名專業(yè)的規(guī)劃師(Jack)說(shuō)過(guò),一名工程師的20%時(shí)間應(yīng)該用于做規(guī)劃。隨著我們經(jīng)驗(yàn)的增加,對(duì)這一論斷的相信程度也在增加。通過(guò)規(guī)劃來(lái)很好的組織工作,生產(chǎn)率和效率都會(huì)得到極大的提高。不幸的是很多公司機(jī)構(gòu)都試圖把過(guò)多的規(guī)劃活動(dòng)形式化。規(guī)劃在由個(gè)人來(lái)推動(dòng)和利用時(shí)最有效,時(shí)間管理專家的一個(gè)減少壓力的關(guān)鍵要素就是通過(guò)規(guī)劃讓生活中的各項(xiàng)活動(dòng)保持均衡。隨著這種實(shí)踐活動(dòng)的成熟,時(shí)間國(guó)立系統(tǒng)的形式和使用方法越來(lái)越個(gè)人化了。
2實(shí)現(xiàn)主體架構(gòu)
本反模式的特點(diǎn)是開(kāi)發(fā)中的系統(tǒng)缺乏架構(gòu)規(guī)范。一般負(fù)責(zé)項(xiàng)目的架構(gòu)師都有以前系統(tǒng)
架構(gòu)經(jīng)驗(yàn),因此認(rèn)為文檔是不必要的。這種過(guò)度的自行導(dǎo)致在影響到系統(tǒng)成功的關(guān)鍵區(qū)域中風(fēng)險(xiǎn)劇增。比如下面某些區(qū)域往往會(huì)缺失架構(gòu)定義:
1) 包括對(duì)語(yǔ)言和庫(kù)的使用、編碼標(biāo)準(zhǔn)、內(nèi)存管理等在呢你的軟件架構(gòu)和規(guī)范。
2) 包括客戶端和服務(wù)器配置的硬件架構(gòu)。
3) 包括網(wǎng)絡(luò)協(xié)議和設(shè)備的通信架構(gòu)。
4) 包括數(shù)據(jù)庫(kù)和文件處理機(jī)制的持久性架構(gòu)。
5) 包括線程模型和信任系統(tǒng)集的應(yīng)用安全架構(gòu)。
6) 系統(tǒng)管理架構(gòu)。
3帶來(lái)的后果
1) 缺乏架構(gòu)規(guī)劃和規(guī)范:對(duì)軟件、硬件、通信、持久性、安全和系統(tǒng)管理架構(gòu)的定義不足。
2) 由規(guī)模、領(lǐng)域知識(shí)、技術(shù)和復(fù)雜性導(dǎo)致的隱藏風(fēng)險(xiǎn)隨著項(xiàng)目的進(jìn)展暴露出來(lái)。
3) 由于性能不足、過(guò)度復(fù)雜、需求理解錯(cuò)誤、可用性問(wèn)題和其他系統(tǒng)特性導(dǎo)致項(xiàng)目將要失敗或系統(tǒng)不成功。例如;大約1/3的系統(tǒng)在開(kāi)發(fā)和運(yùn)行中會(huì)遇到嚴(yán)重的性能問(wèn)題。
4) 不了解新技術(shù)。
5) 缺乏后備技術(shù)和應(yīng)急計(jì)劃。
4產(chǎn)生的原因
1) 沒(méi)有風(fēng)險(xiǎn)管理。
2) 管理人員、架構(gòu)師或開(kāi)發(fā)人員過(guò)于自信。
3) 依賴于過(guò)去的經(jīng)驗(yàn),而這些經(jīng)驗(yàn)與現(xiàn)實(shí)在某些關(guān)鍵區(qū)域有區(qū)別。
4) 由于系統(tǒng)設(shè)計(jì)活動(dòng)中的缺口導(dǎo)致隱含的和未解決的架構(gòu)問(wèn)題。
5重構(gòu)方案
重構(gòu)方案要求以有組織的方式進(jìn)行系統(tǒng)定義,并依賴于系統(tǒng)的多個(gè)視圖。每個(gè)視圖從一個(gè)系統(tǒng)利益相關(guān)者的角度對(duì)系統(tǒng)進(jìn)行建模,這里的利益相關(guān)者可能是真實(shí)的也可能是假象的,可能是個(gè)體也可能是一群人的聚合。每個(gè)利益相關(guān)者負(fù)責(zé)一組搞優(yōu)先級(jí)的問(wèn)題,每個(gè)視圖都代表了整個(gè)系統(tǒng)并回答了這個(gè)關(guān)鍵的問(wèn)題。這些視圖包括一些圖、表和規(guī)范說(shuō)明,被連接到一個(gè)保證一致性。一般而言,視圖是輕量級(jí)的說(shuō)明。架構(gòu)文檔的作用是交流架構(gòu)決策和其他問(wèn)題的解決方案。文檔因該易于理解,維護(hù)成本低廉。
只有完整理解一個(gè)架構(gòu)的人才能夠成功定義實(shí)現(xiàn)它。不過(guò),現(xiàn)實(shí)往往并不是這樣,因?yàn)楹芏囗?xiàng)目采用了一些沒(méi)有被很好理解的新技術(shù)。因此,從頭開(kāi)始建立良好的架構(gòu)是一個(gè)迭代式的過(guò)程,大家都應(yīng)該認(rèn)識(shí)到這一點(diǎn)。起初的參考架構(gòu)應(yīng)該具備可以在第一個(gè)產(chǎn)品的開(kāi)發(fā)期間被實(shí)現(xiàn)的強(qiáng)大策略。然后,可以使用將來(lái)的參考架構(gòu)版本以增量的方式精煉他,并使用第一個(gè)產(chǎn)品或新版本來(lái)驅(qū)動(dòng)這個(gè)過(guò)程。
具體流程如圖:

本博客為學(xué)習(xí)交流用,凡未注明引用的均為本人作品,轉(zhuǎn)載請(qǐng)注明出處,如有版權(quán)問(wèn)題請(qǐng)及時(shí)通知。由于博客時(shí)間倉(cāng)促,錯(cuò)誤之處敬請(qǐng)諒解,有任何意見(jiàn)可給我留言,愿共同學(xué)習(xí)進(jìn)步。