從模擬真實世界中理解軟體設計原則

edithfang發表於2014-12-19
例如,他們瞭解耦合性、內聚性、MVC和ESB。但是當被問到為什麼要掌握這些概念以及何時使用的時候就一問三不知啞口無言了。記住一些UML圖是一件很容易的事,但是要想掌握具體使用情況以及如何稍作修改以便於適應具體應用需求就難了。

為了更好地理解軟體的設計理念,有些教授想出了一些很有意思的點子——那就是模擬真實場景,這使得這些概念更易於學生的理解和掌握。

舉個關於低耦合原則的真實事例:

Mike想要申請一本護照,他到了相關部門之後遇到了Jack



兩天後,他將所需要的資料帶來,但是卻是Patricia接待了他



在現實世界中,Patricia的行為明顯毫無邏輯可言,因為該服務並不是依賴Jack才能辦理的,作為服務的提供者,她應該也為Mike辦理護照。

其具體流程也非常簡單,如果你想要申請護照,那就準備好具體的資料即可。但是沒說一定要讓Jack受理。

這個故事的寓意是:如果此服務高度依賴於Jack,那麼一旦出現突發情況就會產生問題。而如果Jack一直在那,我們是意識不到他的重要性的,但是一旦他沒在,那就會影響服務系統了。

這個道理很淺顯,是吧?但是在軟體設計中,很多開發人員還是會犯這種錯誤,因為他們沒有考慮到高耦合是否符合邏輯。然後,等以後因為做某種改變導致整個架構出現問題的時候,就追悔莫及了——不得不投入更多的時間和資金去解決這些問題。

我們最好能夠視覺化這些軟體程式設計概念,而不僅僅只是讓學生掌握理論。此外,有些圖表工具,例如依賴圖、依賴矩陣和樹對映技術等,可以讓我們視覺化原始碼發生的各種變化。例如對於Java,可以使用JDepend,JArchitect和Structure101,對於C / C++,CppDpend則很不錯。

DSM

設計結構矩陣(DSM)用一種方陣的形式,簡單緊湊又視覺化地表現一個系統或專案。

下面就是一個在Architect使用DSM的例子,從矩陣中我們很容易檢測出常用程式包、依賴週期和非常用程式包。


樹對映

樹對映以一種巢狀矩陣的形式顯示層次(樹形結構)資料。樹的每個分支都有一個矩陣,然後再分支得到更小的矩陣。葉節點的矩陣按比例對映到指定大小的資料容器中。
下面就是一個在Architect使用樹對映的例子,使用一個String類來對映所有的類。



上圖可謂是將原始碼形象化了,通過這種投射到現實世界的方式,有助於我們更好地掌握軟體背後的設計原則。很多情況下,掌握理論並不足以理解一個概念。

英文原文:Understanding software design principles from real world cases

翻譯作者:碼農網 – 小峰
來自:碼農網
相關閱讀
評論(1)

相關文章