恰如其分的軟件架構---不可取代的專業能力系列(二)

一、爲什麼要找到軟件開發的道和術!

隨着歲月的推移,軟件系統無論是規模還是複雜度都在呈數量級增長。作爲軟件的構建者,這種非凡的變化帶給我們的驚歎遠甚於恐慌。設想我們採用同樣的方式讓籃球比賽不停的擴大規模,在十年內,從最初的5名球員,增加到50名球員,再到500名球員......該是多麼困難。軟件開發者常常陷入與複雜度和規模這些宿敵鬥爭的泥沼。但是很明顯,開發者總會絕處逢生、甚至大獲全勝。他們是如何做到的?

一種說法:軟件開發者善於運用一些有形的武器,如集成開發環境和編程語言。然而無形的武器帶來的影響可以說更爲深遠!

前提是你要能找到這無形的武器。就像中國古人經常提倡的,道和術,掌握了道,才能理解千千萬的術。

例如:假設一個新手和一個教練一同觀看籃球比賽,內行看門道,外行看熱鬧。教練所能察覺到的內容會遠遠超過新手。這並非因爲教練火眼金睛,而是因爲他掌握了某種無形的武器。通過建立一整套思維抽象,教練能夠透過現象看本質,把對原始現象的感知轉換爲對目前局勢簡明扼要的理解。例如教練在看到傳球的一瞬間,就會聯想到某種進攻戰術的成功。儘管教練和新手都觀看了同一場比賽,但是教練卻可以更好的理解比賽,原因何在?Alan Kay早已捕捉到了這一現象,稱之爲你的“觀察能力就值80分智商指數”。


二、軟件開發的道是什麼?(借鑑大師的書,淺析一下,推薦大家看看)

分治、知識、抽象,這是軟件架構所能提供的最有力的武器,它有利於分割軟件系統,提供有助於設計出更優秀軟件的知識,提供有助於理解軟件的抽象。不過它仍需要經驗豐富的軟件開發者。它並不是要扼殺創造力,而是使得開發者可以用其創造力去構建規模更大、複雜度更高的系統。


如何進行軟件架構的設計?

這裏有一個框架思路:《恰如其分的軟件架構-風險驅動的設計方法

假如你實現的是一個非常簡單的系統,那麼,很可能不需要軟件架構的設計。只需要憑藉經驗直接開始幹就好了。

而如果你實現的是一個複雜的系統,那麼就不能像之前那麼幹了,就需要做宏觀、微觀分析,要做軟件架構。否則,這個系統你很可能完不成,甚至都實現不了。


(1)如何掌握架構設計的分寸???

架構的風險驅動模型將指導開發者把握架構活動的程度,及時開始編碼。

首先需要識別風險,假如這套軟件架構在通過重構以後不能降低某一方面的風險,那麼,這塊就需要再做設計,以降低風險!

如果這套架構能夠通過重構來降低某一方面的風險,那麼設計到這裏就可以截止了,不用再做過度的設計。

(2)軟件架構難道僅僅關注宏觀方面嗎?

軟件架構關注宏觀部分,但有時不僅僅是這樣。

判斷某些細節是否屬於架構的範疇,就看這些細節是否會直接影響建築物的整體質量。是,則屬於,不是則不屬於!



如果大家想看更多的內容,推薦大家看看《恰如其分的軟件架構-風險驅動的設計方法


下篇我們繼續解決前面遇到的問題。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章