《物件導向分析設計與應用》未付印的譯序

物件導向分析設計與應用》沒有譯序,而這篇,應可算是未付印的譯序吧。

在翻譯過程中就開始寫譯序,似乎成了我的習慣。每當有一些想法時就寫一點、改一點,等到整本書譯完,譯序也差不多完成了。但這次我並沒有把譯序交給出版社,一方面,本書作者已是大師級人物,讀者可能沒興趣再看一些錦上添花的推薦文,或翻譯甘苦談之類的碎碎念。另一方面,貼在部落格上比較方便修改,隨時反映新的想法。

一點提醒

雖然作者的名氣響亮,但每個人的需求和口味不同,建議您先看看試讀章節(包含目錄、序、和第一章),考慮一下這本書是不是「你的菜」。比如說,有些人可能會覺得這本書的參考文獻太「豐富」、學術味道太濃、UML 語法不夠完整詳盡、案例跟自己碰到的專案類型相差太遠(而無法直接依樣畫葫蘆)、譯筆太差、當枕頭太硬......等等。

其實光看厚度也知道,這本書不是兩三下就能消化完的,而且文字風格也絕對不會像 Head First 系列書籍那樣輕鬆詼諧。願意嘗試「啃」這本書的人,我想應該是對物件導向技術有相當的興趣與學習熱誠吧。那麼,我也樂意在這裡野人獻曝,提供一點個人的小小心得。

本書梗概

本書的架構主要分成三個部分,即概念篇、方法篇、和應用篇。以下簡單說一下各篇的內容概要。

開發過軟體專案的人應該都會同意,看似簡單的需求,最後都可能演變成複雜的大系統(希望不是大災難)。因此,為了解決許多複雜的軟體設計問題,開發人員必須化繁為簡,讓使用者能夠以簡馭繁;而達成此目標的一種有效策略,便是分而治之、各個擊破。那麼,分而治之的「分」指的是什麼呢?作者在書中便從「演算法分解」與「物件導向分解」兩種方法的比較作為切入點。瞭解物件導向分解的原理和優點之後,再來便是分類的哲學與物件模型的介紹。以上這些,大概就是第一篇所要闡述的重點。當然,分得好,還須合得妙;若只是將系統拆解成各自分散的個體,還是成不了一個完整運作的系統。至於怎麼合,又涉及了 UML 各種圖形以及模式(patterns)的搭配運用,是另一層次的議題了(本書的第三篇其實已經有運用一些 design patterns)。既名為概念篇,其內容自然是以物件導向的基本理論、觀念、原則為主。就這個部分來說,讀者可能容易覺得枯燥,或者學術味道比較濃。作者大概也有想到這點吧,所以在書中適時加入一些與主題有關的卡通插畫,讓嚴肅的主題增添一點趣味。

第二篇(「方法」篇)包含 UML 圖形表示法(第 5 章)、開發流程(第 6 章)、以及一些實務作法(第 7 章)。UML 表示法的部分比較像參考手冊,已熟悉 UML 2 的讀者大可先跳過這個部分,等到需要時再回頭查閱無妨。如果你是方法論專家,或者是開發塑模工具的設計師,可能會覺得書中的 UML 表示法不夠詳盡,因為這裡介紹的 UML 表示法主要是針對一般的 SA/SD/PG 來寫,而這些內容對於一般軟體系統的分析設計來說已經相當夠用了。一般比較常用的,大概也就是所謂的 UML 三劍客(使用案例圖、類別圖、循序圖)。如果需要塑模事務流程,自然得再加上活動圖--姑且稱它們為 UML 四君子吧 :)

第三篇(「應用」)全是物件導向分析設計(OOAD)的個案探討,分為五章,每一章都是一個不同的案例。

在學習一項技術時,如果有搭配範例說明,通常會比較有感覺,而如果範例正好跟自己碰到的問題類似,那更好,說不定還可以透過複製再修改的方式直接套用。因此,範例對個人的幫助有多大,就牽涉到範例的大小與其涉及的問題領域了。簡單如自動櫃員機(ATM)的案例,雖然容易理解,可是在實際開發 OOAD 專案時,可能會發現原來還會碰到那麼多大大小小的問題、那麼多設計決策要取捨,因而不知所措。此時你可能會希望找到更貼近自己手邊問題的範例,以及一些更明確的開發指引和建議,例如:剛開始進行一個新專案時,軟體的架構要怎麼規劃、子系統和套件應如何切割、使用案例描述該怎麼寫、如何抓類別等等。本書第三篇的用意即在透過實際的案例展示 OOAD 的開發流程,並提供一些實務面的分析設計技巧。

要提醒的是,這些案例的專案規模都不小,如衛星導航、鐵路交通管理、氣象監測等,若要把這些專案的設計理念和開發細節全交代清楚,恐怕每個個案都可以寫成一本書了。所以在看這些範例時,最好把焦點放在如何從這些去蕪存菁的個案探討當中體會作者想要表達的東西,同時思考作者為何要這麼設計(優缺點在哪裡,有沒有更好的設計方法),以及找到對我們實際開發有用的部分。

大概就這樣吧,軟體設計的世界裡沒有絕對正確、一體適用的答案,希望這本書對您有幫助!
Copyright © 2012. Huan-Lin 學習筆記 - All Rights Reserved
Powered by Blogger
Template Design by Cool Blogger Tutorials
Published by Templates Doctor