架構設計策略之尋找夠用的設計

要想開發成功的軟件,開發者必須根據設計策略去作最優的解決方案。儘管有時候,比較簡單的問題,無須考慮太多,「梭哈」就完了,既快速又有效。然而,隨着業務的變化和系統複雜性的增長,設計上的問題始終會出現的,就像不規範的代碼會帶來不少隱患和技術債務,這些都是要還的。
凡事預則立,沒有架構設計策略的開發,很容易陷入錯誤混亂中,開發工做難以進行下去。所以,要學會運用思惟模式(見《架構設計思惟模式》)和思惟沉澱循環(見《架構設計思惟模式實踐流程》),去制定最優的設計策略。架構

找到夠用的設計

最優的設計策略不是追求讓架構設計達到完美的狀態,應該清楚這是不可能,由於在現實開發中會有時間、資金成本、技術、知識、業務變化等限制致使架構設計不可能作到完美。學習

所以,咱們的目標是找到一個夠用的設計,這個架構設計能適應當前企業環境(知足利益相關方的需求等)和靈活應對業務變化。.net

尋找夠用的架構設計,能夠參考以下策略:架構設計

    • 快速驗證解決方案:解決方案驗證的速度越快,就越快找到合適的架構設計,項目就能越快受益。
    • 設法下降風險:架構設計失敗是很嚴重的問題,必須時刻考慮可能出現的風險,並根據風險來進行設計。
    • 努力簡化問題:運用分治、知識和抽象等方法,去理解和簡化複雜性不斷增加的問題。
    • 快速迭代學習:運用思惟沉澱循環快速學習,快速積累知識,就能快速實現目標。
    • 同時考慮問題的解法和證法:能解答問題的設計方案可能有不少,但能證實適用有效的設計方案,可能寥寥無幾。所以,須要同時考慮問題的解法和證法,以便高效地找到夠用的設計。

    以上策略可能理解起來有點難度,下面就我的理解再次一一說明下。設計

    快速驗證解決方案

    要想能快速驗證解決方案,必需要創建一套快速驗證解決方案的機制。雖然架構師不是什麼技術先知,但能夠運用如下機制來快速驗證解決方案:能夠先「紙上談兵」(頭腦風暴、參考過去經驗、決策矩陣等)來快速肯定待驗證的解決方案,再以「勝兵先勝後求戰」的思想來優先驗證最可能有效的解決方案,最後再運用各類實驗的方法去驗證解決方案。blog

    設法下降風險

    這裏要引用下工程學歷史學家Henry Petroski的話:資源

    失敗的概念是設計過程的核心,正所謂「失敗乃成功之母」,經過消除失敗,可達致成功之設計。開發

    作架構設計是必定要設法消除失敗的風險,但現在「巨人的肩膀」(各類消除風險的設計技術)實在太多了,很容易陷入了選擇困難的泥沼裏。get

    所以,這裏的「設法下降風險」應該是根據風險驅動的,即思考風險大小和解決的優先級、選擇合適的技術去行動、評估下降風險的程度再決定下一步設計,這裏其實就是運用思惟沉澱循環的思考、行動、檢查步驟。軟件

    努力簡化問題

    簡化問題不僅僅是爲了應對日益增加的複雜性和規模,還有開發成本和維護成本等問題。若是把問題想得過於複雜也是不行的,那就可能過分設計了。爲何會這樣?每每是由於咱們對問題理解的不夠深刻,這時候應該運用思惟沉澱循環去理解問題,積累知識,再運用循環去把問題抽象或者分而治之。

    快速迭代學習

    快速迭代學習,這也是敏捷開發的原則。若是一次迭代學習的時間過長,首先極可能知足不了業務的時效性,其次時間長沒法靈活應對變化,最後可能會致使維護的代價很高。由於通常週期長的迭代,實現的功能多,依賴多,複雜度高,一旦出現問題,糾正問題的成本和代價就很高了。所以,架構設計必須快速迭代學習,保證靈活性和不斷進化的特性。

    同時考慮問題的解法和證法

    問題的解法是不少的,越成熟的技術,越多成熟的解決方案,但並非都合適的。由於每一個項目和技術團隊是有差別的,並不能「一招鮮,吃遍天」,還須要根據自身的擁有的條件去證實某個解決方案確實是最優的。這是很是契合思惟沉澱循環的,由於思考了問題行動後確定是須要進行檢查的。

    總結

    雖然理想的架構設計是不可能的,可是也不能沒有實際適用追求的。尋找夠用的設計實際上是強調架構設計的度,要運用高效設計策略去尋找恰如其分的架構設計。由於過分或者過簡的架構設計是不行的,過分必然浪費資源,過簡必然沒法規避風險。

    相關文章
    相關標籤/搜索