簡單談談軟件開發中的模式
在我們身邊,有些問題反復出現,而我們總是能夠成功的解決,但卻沒有及時總結,升華思想;有些方法總是導致我們失敗,我們卻也沒有及時吸取教訓。作為軟件開發人員,也不能例外。那么,不妨讓我們看看軟件開發中的模式,以及一些大師們經典著作,希望能對以上問題提供解決思路。
何為模式?
模式一詞最早源于建筑行業,但是如今含義和范圍已經非常廣泛,它標志了物件之間隱藏的規律關系,而這些物件并不必然是圖像、圖案,也可以是數字、抽象的關系、甚至思維的方式。模式強調的是形式上的規律,而非實質上的規律。前人積累的經驗的抽象和升華。簡單地說,就是從不斷重復出現的事件中發現和抽象出的規律,對解決問題的經驗的總結。只要是一再重復出現的事物,就可能存在某種模式。 簡而言之,模式就是解決某一類問題的方法,而一般情況下,這種方法是可以被升華到理論,向更多人推廣和共享。
軟件開發中有哪些模式?
模式一詞也只是在八十年代,被Kent Beck等人引入軟件開發領域。那么軟件中到底都有那些模式呢?下面我就針對軟件開發中存在的一些模式做一些總結。
1、 代碼模式或者成例。
這類型的模式往往是最低層的模式,基本上和代碼或者某種開發語言有很強的相關性,是實現某個具體功能最佳編碼實現方式。比如:java script如何實現飄動文字、進程互斥、雙檢鎖等都可以作為代碼模式或者成例,甚至于一些常見的經典算法。
若對這方面知識感興趣,我推薦兩本書:
一是《代碼大全》,此書是是著名IT暢銷書作者Steve McConnell的經典之作,兩屆震撼大獎得主,數十年軟件開發智慧。
二是《Effective C# (中文版)改善C#程序的50種方法》, 本書作者Bill Wagner是世界知名的.NET專家,微軟C#領域的MVP。此書圍繞一些關于C#和.NET的重要主題,包括C#語言元素、.NET資源管理、使用C#表達設計、創建二進制組件和使用框架等,講述了最常見的50個問題的解決方案,為程序員提供了改善C#和.NET程序的方法。
2、 設計模式。
提起軟件模式,可能大家第一個想到的就是設計模式了,設計模式解決的往往面向對象設計中對象之間的關系。可使人們可以更加簡單方便地復用成功的設計和體系結構。將已證實的技術表述成設計模式也會使新系統開發者更加容易理解其設計思路。
通常情況下,設計模式指的是GOF 在1995提出的23種模式,其第一次將設計模式提升到理論高度,并將之規范化。時至今日,在可復用面向對象軟件的發展過程中,新的設計模式仍然不斷出現,但很難找出能出其右的新理論了。
如果對設計模式還不是很清楚,那么請直接參考GOF經典之作《設計模式》,不過閱讀此書需要注意,書中舉得例子不是現在主流的語言,所用圖示也不是標準UML。所以也可以閱讀后來人們專門針對.net或者java編寫的相關書籍。
3、 架構模式
架構一詞,其實很泛,在這里,我僅指軟件實現的框架,描述了一個軟件的總體綱要或者基本結構。體現在程序中,指的是模塊之間或者子系統之間的預先定義的職責關系,是一種粗粒度的對象處理,架構往往強調設計復用。比如常見的MVC、MVP、AOP、ORM、總線架構、微內核、元數據模式等整體架構或者局部架構。
關于架構模式,推薦書籍為《企業應用架構模式》,作者Martin Fowler是當今面向對象軟件開發的權威,他在一組專家級合作者的幫助下,將40多種經常出現的解決方案轉化成模式,最終寫成這本能夠應用于任何一種企業應用平臺的、關于解決方案的、不可或缺的手冊。本書獲得了2003年度美國軟件開發雜志圖書類的生產效率獎和讀者選擇獎。
4、 項目管理模式
項目管理模式指的是對項目組織實現過程中解決某種問題而采取的成功方法的總結。項目管理常見的模式如:敏捷開發、RUP、測試驅動開發等。項目管理模式也是眾多模式中理解最容易卻實現最難的模式,很多時候需要項目管理人員根據經驗去選擇合適的方法(模式)。
對此,推薦書籍如下:
一是《敏捷軟件開發——原則、模式與實踐》,此書是享譽全球的軟件開發專家和軟件工程大師Robert C . Martin向您介紹如何解決軟件開發人員、項目經理及軟件項目領導們所面臨的最棘手的問題,是第13屆軟件開發震撼大獎獲獎作品。
二是《測試驅動開發》和《極限編程》。隨著軟件規模的不斷擴大和軟件復雜性的不斷提高,傳統的軟件開發方法已逐漸不能適應當代軟件開發的需要,Kent Beck長期致力于軟件工程的理論研究和實踐,這兩本書介紹的正是在這種背景下提出的一些全新的軟件開發方法(其實,極限編程應該是1996年就提出來并被Kent Beck應用在項目管理中,至今依然備受推崇)。
5、 反模式
怎么前邊都是模式,最后又要反模式?其實,反模式也是模式,是指用來解決問題的帶有共同性的不良方法,它們已經經過研究并分類,以防止日后重蹈覆轍,并能在研發尚未投產的系統時辨認出來。說白了,反模式就是容易將事情搞砸的卻經常犯的錯誤方法。
其實反模式涉及面也很廣,包括了項目管理上的反模式,如:水中望月、軟件膨脹等;設計中的反模式:上帝類、煙囪系統等,此外還有編碼上的反模式、方法上的反模式等。
關于反模式的詳細信息,具體參與《反模式:危機中軟件、架構和項目的重構》,作者William J . Brown從一個新的角度審視模式,提出了反模式的概念,介紹了在軟件開發中常常出現的問題,讓讀者可以迅速地檢驗身邊的項目是否出現了這些狀況,同時也針對每個反模式給出了相應的解決方案。
通過以上模式的總結,既是對自己思路的總結,也希望能夠對他人起到拋磚引玉的作用。
原文鏈接:http://www.cnblogs.com/YangWeiguo/archive/2011/08/09/2132330.html
【編輯推薦】