架構設計的各種方**是為把事情變得更簡單易懂而準備的,它們幫我們梳理複雜應用的邏輯頭緒,把我們不能一下子掌握的事情通過一種有條不紊的途徑消化掉。可以說,把事情變得更簡單是架構設計的遠景和目標。但這種簡單是有條件的,實用就是它的條件。所謂實用就是要滿足各種各樣外部環境並盡可能的提供更多的指標,這些指標包括可伸縮性、可維護性、學習曲線、穩定性等。所謂的盡可能就意味著需要有乙個平衡點,我們需要通過各種努力來實現乙個np問題的解。
由於技術在大多數情況下都不是唯一的,同一問題解決方案可以非常多樣。對於不同的架構,特別是稍微複雜一點的,相互很難能說服對方,專案真正進入實施階段後這些不同所帶來的影響就慢慢的浮出水面。之所以兩個架構師可能會對同一問題得到兩種截然不同的解,原因是多方面的:
這其中,個人經驗佔的比重相當大。個人經驗在某些情況下會變成一種感情的因素,成了阻礙和排他的根源。實踐是檢驗真理的唯一標準,**於實踐的經驗理應得到感情的偏愛。不僅要用實踐來檢驗正確的事情,也要用實踐來驗證錯誤的決策。排他法就是這個意思。
現在的很多應用模式,其實就是由實踐檢驗過的解決方案。我們通常會在架構設計的時候自覺不自覺地引用成熟的架構模式,它往往能帶來事半功倍的效果。但事情總不是那麼順利,失敗的專案仍然比比皆是。原因就在於對模式的理解,或者說本身模式的描述就不全面。每乙個應用都有自身的特殊性,放之四海而皆準的真理在這個世界上並不多見。所以,我們需要在架構設計中引入架構驗證的環節。
危險來自不確定性,架構驗證是乙個非常重要的環節,它能在很大程度上預期專案的遠景。架構設計過程通常把架構驗證的時間放得比較靠後,很多時候我們是先有了乙個通過經驗(或感情)取得的乙個模型之後再來找證據。這些證據確實說明了大多數問題,但不幸的是,20%的漏洞往往決定了80%的失敗。這是種先入為主的思考問題的方式,它很難能給出最優解。更好的方法是在架構設計之初,綜合當時能綜合的因素得到一些不同的架構方案並對各個方案進行先期驗證。這是一種排他法,非常的古老和簡單。
驗證的目的就是要避免來自不確定性的危險。如果某個結論是確定的了,或者是長期的實踐檢驗過的了,通常沒必要耗費時間去驗證了。用確定性的東西越多,專案的預期也就越確定。有人喜歡求新求時尚,但新東西往往是付帶著許多不確定的因素。比如物件導向是被長期檢驗過的了,而soa就還是比較新的東西。
先期的架構驗證要避免的乙個問題是流於形式,或者說仍然帶著感情的因素去做驗證。並不是說把一些個條條框框搬出來對比就能得出結論的,更多的時候需要理性的思維,畢竟計算機仍然是一門科學。科學的東西最好是用資料說話。我很少看到哪個架構設計文件會把幾個可選的架構放在一起用資料進行比較得出結論的情況,往往是紙上談兵的方式比較常見。有經驗的架構師手裡應該掌握了很多資料,這些數字在很多時候比爭論要來得直接得多。
結論:用證據篩選架構而不是為架構找證據,使用成熟的技術避免風險。不僅是架構設計,對很多事情最好都能養成先期驗證的習慣。
架構驗證的時間
架構設計的各種方 是為把事情變得更簡單易懂而準備的,它們幫我們梳理複雜應用的邏輯頭緒,把我們不能一下子掌握的事情通過一種有條不紊的途徑消化掉。可以說,把事情變得更簡單是架構設計的遠景和目標。但這種簡單是有條件的,實用就是它的條件。所謂實用就是要滿足各種各樣外部環境並盡可能的提供更多的指標,這些指標包...
jquery驗證時間
驗證時間的正規表示式集合 日期格式yyyy patternsdict.date y d 日期格式yyyy mm patternsdict.date ym d 0 d 1 0 2 日期格式yyyy mm dd patternsdict.date ymd d 0 d 1 0 2 0 d 12 d 3 0...
12306驗證碼 驗證碼的架構
最近和眾屌絲一樣,在12306上面刷著春節回家的票。與她大戰無數個回合之後,終於搶到了一張回家的高鐵票,不斷感慨最近人品還不錯。當前,在使用12306的過程中,充滿很多的心酸,念叨了鐵道部的親人很多次 罪過 其中最讓人糾結的一項即是 驗證碼。12306採用驗證碼,無疑是一種很不錯的措施,可以在一定程...