深圳網(wǎng)站建設加q479185700外貿網(wǎng)絡營銷推廣
2019獨角獸企業(yè)重金招聘Python工程師標準>>>
我的經(jīng)歷及對軟件架構的理解
我個人從事軟件開發(fā)8年,大大小小軟件做過不計其數(shù),做過企業(yè)應用的架構設計,也做過全新的互聯(lián)網(wǎng)在線SaaS應用的架構設計,也做過全新的互聯(lián)網(wǎng)網(wǎng)站的架構設計,現(xiàn)在在做的是歷史遺留的大型互聯(lián)網(wǎng)應用的架構演進工作?;谖覀€人先談談自己對于軟件架構的理解談談軟件架構。
我理解的軟件架構是設計師根據(jù)軟件的各種類型的需求而設計的軟件組成結構的設計。
那么這些需求應該包括業(yè)務目標、用戶的軟件功能性需求,非功能性需求;軟件開發(fā)組織內部的開發(fā)效率需求,代碼質量需求;軟件運維組織的系統(tǒng)運維需求等等綜合需求和設計約束等。
軟件架構的組成我理解包括軟件開發(fā)期的包以及類的設計及關系,項目工程組成及它們之間的關系,發(fā)布的應用程序及之間交互關系,軟件系統(tǒng)最終運行期間的各種終端硬件、服務器、網(wǎng)絡設備以及網(wǎng)絡連接設備等。
但是我覺得我們很多被稱作為“架構師”的人其實天天在做開發(fā),做架構設計可能對架構的理解也是比較片面的,比較膚淺的,有的就好比是“盲人摸象”只知道局部不知道整體,了解的內容不夠系統(tǒng)和全面,有的就好比是”不識廬山真面目,只緣身在此山中“,在某個領域做的時間太久了,思維和認知的局限性太強,沒有對具體事務進行抽象,架構的本質認識不清晰。
《軟件架構設計》的評價
我最近在閱讀溫昱編寫的《軟件架構設計》一書,溫昱的個人實踐經(jīng)驗更多的在企業(yè)級應用開發(fā),所以本書中描述的很多內容都是企業(yè)級開發(fā)的一些具體方法及案例,因此對于我們很多驕傲的互聯(lián)網(wǎng)行業(yè)的”架構師“會不屑一顧看,這些架構師會更多專注于”高并發(fā)、大數(shù)據(jù)、kafka、zookeeper,hadoop、redis"等等諸如這些高大上的具人技術上,根本看不起做企業(yè)應用開發(fā)的人。
但是我個人粗略看了本書,覺得對自己在理解軟件架構及如何做軟件架構設計方面有非常大的幫助,互聯(lián)網(wǎng)的軟件它本質上也是應用軟件,只不過由于它的超大規(guī)?;渴饘е萝浖軜嫾熬唧w技術上產生很多巨大的挑戰(zhàn)而已,但是本書是通用的講解軟件架構的概念及通用方法論的,對互聯(lián)網(wǎng)應用同樣是適用的。
《軟件架構設計》一書對軟件架構的定義
本書應該是總結了軟件行業(yè)很多大牛對軟件架構這個概念的看法,提取了大家的一些共識,應該是還是具有非常強的普適性的,我覺得對于我們從具體的軟件架構中跳出來是有幫助的。
本文總結行業(yè)大牛對軟件架構概念的定義分成兩派,應該說相互聯(lián)系但又互為補充。分別是“組成派”和“決策派”。
組成派
定義是:”軟件系統(tǒng)的架構將系統(tǒng)描述為計算機組件及組件之間的交互“。這里的組件是廣泛意義上的,是非常抽象的,既可以是軟件也可以硬件,既可以很宏觀,也可以很微小。它的描述是以軟件本身為描述對象。
如上圖所示,軟件架構就是應用了一個組合模式,它是有很多部分組成的。
決策派
定義是軟件系統(tǒng)是一些重要方面的決策集合。它包括這樣一些問題的重要決策:
- 軟件系統(tǒng)的組成。這點上又包含了組合派的定義。
- 選擇組成系統(tǒng)的結構元素和他們之間的接口,以及當這些袁術交互協(xié)作所體現(xiàn)的行為;
- 如何組合這些元素,使它們逐漸組合成更加大的子系統(tǒng);
- 用于指導這個系統(tǒng)組織的架構風格;這些元素以及它們的接口、協(xié)作和組合。
- 軟件架構不僅這種軟件本身的結構和行為,還注重其它特性:使用、功能性、彈性、重用、可理解性、經(jīng)濟和技術的限制及權衡,甚至包括美學等。
這個定義有些復雜,理解起來也比較困難,我的理解就為了設計出一個符合各種需求,滿足各種角色的要求,在各種約束范圍之類的軟件組成結構而需要做的各種決策集合。它的定義關注軟件架構實踐的主體——人,以人的決策作為描述對象;
這是技術選型的決策示例。
這是系統(tǒng)切分的決策示例。
對我的啟示
做一個好的”大架構師“,需要做非常多的決策,而做出優(yōu)雅的決策,這不僅僅是技術,還需要藝術,如何在多種復雜的、矛盾的因數(shù)中做出一個良好的權衡,這是對于人本身的知識、技能經(jīng)驗的深度和廣度都有較高的要求,本身對我的作用是讓自己知道還有哪些差距,哪些地方還需要提高。
我曾經(jīng)親身經(jīng)歷并了解的一個錯誤決策帶來的后果可以說給大家聽聽,某公司來了一個具有Oracle背景的CTO,這位牛人來之后,因為自己的技術背景就行政命令要求正在研發(fā)的某系統(tǒng)將數(shù)據(jù)庫從MySQL修改為Oracle,這位某CTO沒干多久就走了,現(xiàn)在各部門都在熱火朝天的干著去Oracle的事情,因為這個錯誤的決策,給我們苦逼的程序猿帶來多少額外的工作量,這樣翻來覆去的改給公司帶來多少成本損失。所以說沒有科學嚴謹?shù)臎Q策方法,某位具有某種陳舊的經(jīng)驗的某CTO一句話就產生了一個及其錯誤的決策的事情真是害人不淺。
轉載于:https://my.oschina.net/ywbrj042/blog/631653