由於軟體系統的複雜性,一般人很難非常清楚的將整個系統理的很清楚,所以才會出現架構檢視的概念,而架構檢視出現的乙個主要動力或者原則就是:分而治之。
分而治之有兩種型別
1.按問題深度分而治之,即先不把問題想的那麼深入,那麼仔細,要淺嘗輒止。例如定義各個模組之間的介面就屬於這種,先不考慮如何實現介面,只是定義模組之間進行通訊時的契約。
2.按問題廣度分而治之,即先不研究整個問題,而是研究問題的一部分,分割問題,各個擊破。例如採取mvc架構進行開發時,每一層都屬於乙個比較深入的部分。
軟體架構應該採取哪種方式?
所謂架構設計,是關於如何構建軟體的一些最重要的設計決策,這些決策往往是圍繞著系統分為哪些部分,各部分之間如何互動進行展開的。
所謂詳細設計,則是針對每個部分的內部進行設計。
所以可以說對於架構設計,應該採取按照問題深度分而治之,關注的是系統的整體設計;而詳細設計時應該採取按照問題廣度分而治之,關注的是每個模組如何實現。
軟體架構是團隊開發的基礎
一方面,架構從大局著手,就技術方面的重大問題作出決策,構造乙個具有一定抽象層次的解決方案,而不是將所有細節全部展開,從而有效的控制了『技術複雜性』。
另一方面,因為架構中包含了關於各元素應該如何彼此互動的資訊,所以可以把不同的模組分配給不同的小組分頭開發,架構在中間扮演『橋梁』和『合作契約』的作用。
架構應該設計到什麼程度?
1.由於專案不同、開發團隊情況的不同,架構設計的程度也會不同。
2.軟體架構應該為開發人員提供足夠的指導和限制。
什麼是高來高去的軟體架構?
高來高去的架構是指不能為開發人員提供足夠的指導和限制的那種架構設計。
高來高去的架構的危害
1.缺少來自架構的指導和限制,開發人員進入開發階段後,會碰到很多問題,並且容易造成管理混亂,溝通和協作效率低。
2.對軟體質量非常關鍵的全域性性設計決定被拖延到分頭開發期間草率決定,嚴重降低了軟體產品的質量。
3.沒有完成化解重大技術風險的職責,可能造成整個專案的失敗。
4.團隊成員對架構師意見很大,團隊士氣低落。
常見的高來高去的架構
1.缺失主要架構檢視。
越是複雜的系統,越是應該從多個方面進行架構設計。如果遺漏了對團隊某些角色的指導,那麼會對開發進度和開發質量造成眼中影響。如果存在這種現象,應該對遺漏的架構檢視進行設計。
2.淺嘗輒止,不夠深入。
對架構設計不夠深入,依然停留在概念階段。概念架構雖然『有用』,但很多時候不是『夠用』,很容易將重大技術風險遺留到後續開發中。如果存在這種現象,應該將設計決策必須細化到和技術相關的層面。
3.名不副實的分層架構。
指那些號稱採取分層架構,卻僅用分層來盡心職責劃分,而沒有規劃層次之間的互動介面和互動機制。如果存在這種現象,應該步步深入,明確各層之間的互動介面和互動機制。
參考文獻
《軟體架構設計》 溫昱
為什麼要關注架構設計?
因為假如你不關心架構,那麼總有一天,需要在同乙個龐大的類中除錯若干複雜的事情,你會發現在這樣的條件下,根本不可能在這個類中快速的找到以及有效的修改任何bug.當然,把這樣的乙個類想象為乙個整體是困難的,因此,有可能一些重要的細節總會在這個過程中會被忽略。如果現在的你正是處於這樣乙個開發環境中,很有可...
用C 進行開發要學到什麼程度
用c 進行開發要學到什麼程度,需要什麼知識最小集呢,當然要根本目標問題的不同決定不同的複雜度,但語言和工具級的複雜度都是一樣的那麼真正要掌握c 進行開發,你需要掌握那些語言級和庫級的知識呢 1,至少熟練乙個ide,make,install,除錯,等編譯技術,能在編譯期出現錯誤的時候能搞明白基本的i關...
UI設計是什麼要學習哪些軟體
ui設計是什麼要學習哪些軟體?當年輕人談到高薪職業時,ui設計可謂是近幾年年行業的領軍人物。引起許多年輕人的擁戴,甚至躍躍欲試要加入。可以說ui設計應用的領域非常廣泛,發展空間有目共睹的。儘管很多人聽說過但是學習ui需要學習哪些軟體?ui設計主要做什麼?下面aaa教育胡老師就給大家來介紹一下ui設計...