宣告:本文已發表在《程式設計師》雜誌,**必須說明。
問題已暴露,情況很嚴重
「在很長一段時間裡,我一直對一件事情比較困惑——那就是在大部分討論軟體開發過程的書裡,所討論的都是從零開始編輯程式。我之所以對此感到困惑,是因為在人們開始編寫**時,這並不是他們最通常所面臨的情境。很多人必須從改進既有**庫開始,即使這些**庫並不是他們自己編寫的。」[1]
martin fowler
為《軟體再造》一書作序,上面就是他的第一句話——多少有些鬱悶已久、不吐不快的意味。
的確如此。不是教你「從零開始」的軟體開發過程,就是教你「在理想狀況下」的物件導向方法……。更貼近當前業界現實的書相對來說比較少。這就是買書時「最通常所面臨的情境」。
大師尚「感到困惑」,那我們呢?不少開發人員對修改別人的程式非常排斥,不知這是不是一種自我保護——由於「再工程」能力不足,乾脆就「唯恐避之而不及」。
看來,問題已暴露,情況很嚴重。
充下電先
智者為王。
《定位》一書的兩位作者艾·里斯和傑克·特勞特,無疑是這樣的智者。
「七喜:不是可樂(seven-up: the uncola)。」在三分之二的軟飲料市場被可樂類飲料佔據的形勢之下,七喜公司打出了這樣的廣告。後來,七喜的銷量陡公升,並成為世界銷量第三的軟飲料。這,就是定位思維的威力。
定位的基本方法不是創造出新的、不同的東西,而是改變人們頭腦裡早已存在的東西,把那些早已存在的聯絡重新連線到一起。[2]
不少團隊都會發生問題,但人們傾向於認為,拿出一點時間來交流一下,問題自然就會消失。而定位大師進行了更加犀利的思考,他們把交流本身當成問題,從局外向內看——把交流作為研究物件——於是定位理論產生了。
為我們的工作重新定位
現實中的軟體開發行業,顯然沒有被很好地定位。無論是大多數的書籍中,還是大多數人的頭腦中,軟體開發都被當作從高層抽象模型到不斷具體的模型的轉換過程,而這並不是我們「最通常所面臨的情境」。
我們需要跳出廬山,通過「從局外向內看」來為軟體開發行業重新定位。《軟體再造》正是這樣一本書。
本書的三位作者,揭示了軟體開發中「最通常所面臨的情境」——他們宣稱,「如果從乙個極端的觀點來看,可以說每乙個軟體專案都是乙個軟體再工程專案」。這個論斷,對思維的衝擊和啟發是巨大的,以致不能不讓我這個深受定位思維影響的人,大呼定位思維的又一卓越案例產生了。
書中所展示的主題,正是每個開發人員的生活:通過逆向工程去理解,抽取出它的設計,然後通過前向工程去改變,其間還充滿了測試和驗證——這正是乙個再工程的過程全景。圖1展示了再工程的馬蹄鐵模型。
圖2 本書的範圍、內容和形式
《軟體再造》內容簡介——生命週期檢視
本書共十章,第一章綜合介紹了軟體再工程的重要性、生命週期、模式。
其餘各章按照軟體再工程的生命週期分為逆向工程和再工程兩部分:第二章到第五章介紹生命週期的逆向工程部分;第六章到第十章介紹生命週期的再工程部分。
《軟體再造》內容簡介——技術檢視
本書結構清晰,每一章的主題都很明確。無論是專案經理、架構師、還是敏捷設計者,都會很輕鬆地捕捉到他們最感興趣的主題。
第二章是關於如何啟動乙個再工程軟體專案的。本章想必是專案經理最感興趣的,特別是手上正有再工程軟體專案的。
第三章到第五章是關於如何理解乙個大型的軟體遺留系統。關於這個主題,本書是我見過的闡述最為系統、最有實際指導意義的一本。其中不少方法是我們都用過、但未必清楚地意識到的。在如今的開源時代,如果你掌握了書中介紹的自底向上的設計抽取(design extraction)方法,你將有可能快速成為所在領域的優秀設計師。
第六章和第七章分別關注測試和移植策略。諸如「為理解而編寫測試」、「保持熟悉度」等模式都非常有啟發性。另外,這兩章包含了不少敏捷思想,更體現了與業界趨勢的同步。
最後三章是敏捷設計者的最愛——關於重構的。可貴的是,在這裡重構的語境被闡述地清清楚楚;我想,每個明白「設計的語境比設計本身更有教育意義」的開發人員,都不會放過研讀這三章的機會。
合上書,卻合不上思緒
本書的背景是乙個名為famoos的歐洲工業研究專案。訪問過famoos專案的martin fowler說:「他們在理論領域和實驗室實踐之間建立起了乙個迴圈,嘗試先將理論思想放入到真正的專案中檢驗,然後再從實驗室實踐中返回到理論總結。」[1]
軟體產業發展到今天,已經有大量遺留軟體系統需要維護和演進;
商業環境的急劇變化對軟體提出了隨需應變的迫切要求,軟體系統變成遺留系統的週期已大大縮短;
軟體產業的分工也日益細化,不斷分化出更多類庫、框架和平台等基礎軟體生產商,更是從根本上讓應用開發變成了「再工程」……
總之,我們站在乙個充滿變化的舞台,重視實踐與理論的結合、並讓理論跟上實踐發展的腳步,這難道不是事關生死存亡的大事嗎?
我合上書,卻合不上思緒。《軟體再造》這本一百多頁的「小書」,薄而不輕……
參考文獻:
[1] serge demeyer
等著,莫倩等譯. 軟體再造:物件導向的軟體再工程模式. 機械工業出版社,2004
[2]
艾·里斯等著,王恩冕等譯. 定位. 中國財政經濟出版社,2002
重新定位合適我的作業系統
夏天已至,我的電腦又一次引來了他的殘酷考驗期。為了讓它能安全的度過還是提前做點優化的小準備。先說說我的寶貝電腦的配置,呵呵,也快成古董級的了。牌子 神舟 本本 很多人對神舟這個牌子很是不屑,是的,神舟相對於別的高階品牌在筆記本上來說,是有水份的,但是看你的使用範圍和用途,只有合適的,沒有最好的。人云...
悅讀 重新定義公司 谷歌是如何運營的
這本書一出版,我在深圳機場候機的時候就買到了,飛機上看了一路,不知不覺間3個小時的航程結束了。後來去印度班加羅爾出差途中,在香港機場看到了英文版,便直接買了。中英文版本都看過了,感覺寫的非常好!google獨樹一幟的管理哲學 辦公室擁擠雜亂沒關係,重點在讓員工能高度互動,充滿活力。要達成真正的共識,...
重新認識物件導向和物件導向的設計原則
理解隔離變化 從巨集觀層面來看,物件導向的構建方式更能適應軟體的變化,能將變化所帶來的影響降到最小 各司其職 從微觀層面來看,物件導向的方式更強調各個類的 責任 由於需求變化導致的新增型別不應該影響原來型別的實現 是所謂各負其責 物件是什麼?從語言實現層面來看,物件封裝了 和資料 從規格層面講,物件...