我主持信息化工作幾十年,由于多年工作經(jīng)驗(yàn)的積累驅(qū)使我對(duì)軟件開發(fā)中的總體設(shè)計(jì)很感興趣;同時(shí)由于發(fā)現(xiàn)軟件開發(fā)應(yīng)用中的許多問題需要一種好的總體設(shè)計(jì)理論和方法來給予解決。在這種情況下,我迫切需要一本這樣的書:能夠幫我釋疑又幫我解惑,給我以指導(dǎo)和“點(diǎn)撥”;能夠與我進(jìn)行“面對(duì)面”式的平等交流,給我一種科學(xué)的解決問題的思維方法;能夠使我在現(xiàn)有水平下對(duì)若干新概念、新技術(shù)看得明白,又在原有基礎(chǔ)上有較大提高;能夠在閱讀時(shí)充分調(diào)動(dòng)大腦神經(jīng)興奮起來而不至于像一般技術(shù)書籍那樣讀起來感到索然無味。后來我受聘于某軟件公司任技術(shù)總監(jiān),繼續(xù)主持應(yīng)用軟件開發(fā)工作。這時(shí)原來出現(xiàn)的問題照舊產(chǎn)生,我的想法依然沒有實(shí)現(xiàn)。這時(shí)又出現(xiàn)了新的情況:軟件開發(fā)技術(shù)人員多用C++、Java編程語言,這些都是面向?qū)ο蟮木幊陶Z言,在軟件開發(fā)中出現(xiàn)許多類型的問題,都同時(shí)指向一個(gè)目標(biāo):面向?qū)ο蟮姆治雠c設(shè)計(jì),特別是用戶需求分析及其說明書的編制。如果有這樣一本書講解面向?qū)ο蟮姆治雠c設(shè)計(jì),幫助我解決以前曾經(jīng)遇到過而未解決的問題,那該多好!
大約是2003年前后,一次偶然的機(jī)會(huì),也忘記了在哪個(gè)地方,我看到北京大學(xué)邵維忠教授和楊芙清院士所著的《面向?qū)ο蟮南到y(tǒng)分析》,看了“前言”后,頓時(shí)產(chǎn)生一種直覺:這不就是我需要而一直沒有得到的書嗎?書買到后就迫不急待地閱讀起來,沒想到越讀越想讀,越想讀越愛讀,竟有些廢寢忘食、愛不釋手,并且在很短時(shí)間內(nèi)讀完了全書,并嘗試著做了實(shí)例練習(xí)。讀完后掩卷而思,真有一種滿足感、如釋重負(fù)感、升華感。我很快和邵教授取得聯(lián)系,告訴他我的感受,并當(dāng)面向他請(qǐng)教問題,也談了我發(fā)現(xiàn)的個(gè)別文字差錯(cuò)。邵教授對(duì)我有求必應(yīng),與我面談并一一賜教。這本書不僅內(nèi)容豐富,立意很高,理論闡述嚴(yán)謹(jǐn),示例詳實(shí)可信,而且文字表達(dá)酣暢淋漓,語言閱讀朗朗上口,足見著者文字功底之深厚。我所想的正是書中所講的,我所要的正是書中所給的。作者寫書的立場(chǎng)與讀者平起平坐,似乎在一起商量著研究和判斷是非,沒有那種以權(quán)威自尊、居高臨下之感,而是以一個(gè)技術(shù)學(xué)人的口氣,用文學(xué)的語言娓娓道來,由不得你不接受,不為著者的高深造詣所折服。后來我又買了《面向?qū)ο蟮南到y(tǒng)設(shè)計(jì)》,閱讀后感覺自己在學(xué)術(shù)上受益匪淺、百尺竿頭又上一層。再后來,由于我?guī)椭本┦芯帉懶畔⒒瘶?biāo)準(zhǔn)的原因,具體接觸到UML技術(shù),我在圖書市場(chǎng)買了一本有關(guān)UML翻譯書籍,但讀起來讓人大倒胃口,要么過于“原生態(tài)”,洋人洋書的口氣讓人費(fèi)解,要么錯(cuò)別字連篇。我很希望有人對(duì)UML進(jìn)行本地化,并且編譯、校對(duì)、出版十分嚴(yán)謹(jǐn)。記得原來聽說邵教授要對(duì)《面向?qū)ο蟮南到y(tǒng)分析》再版,我想,再版時(shí)把這件事也一起做了多好。今年一月份的某一天,由于工作需要又趨使我對(duì)UML研究起來,我情急之下電話聯(lián)系到邵教授,向他說明了自己的想法。結(jié)果很湊巧,《面向?qū)ο蟮南到y(tǒng)分析》再版了,而且這一天作為作者的他剛剛拿到新書。我也很高興。沒過幾天我買到了這本書,從與讀者服務(wù)部人員的對(duì)話中看出,我是第一個(gè)買到這本書的讀者。我便以先睹為快的心情開讀起來。由于時(shí)間關(guān)系,我現(xiàn)在尚未全部讀完,更未仔細(xì)研究。即使是這樣,也真是開卷有益呀!
結(jié)合我的需求,我初步感覺到,再版起碼有以下幾點(diǎn)值得給予充分肯定:
一、再版繼承了原版的基本內(nèi)容,仍以有力的理論闡述和事例分析堅(jiān)定了讀者的這么一種信念:面向?qū)ο蠓椒ㄕ嬲h(yuǎn)大的目標(biāo)是它適合解決分析與設(shè)計(jì)期間的復(fù)雜性并實(shí)現(xiàn)分析與設(shè)計(jì)的復(fù)用。樹立這種觀點(diǎn)對(duì)于具體從事系統(tǒng)總體工作的人來說真是太重要了,它可以幫助我們教育和說服領(lǐng)導(dǎo)和技術(shù)人員:做好這項(xiàng)工作對(duì)于提高工作效率,降低開發(fā)成本是多么重要、多么必要。這對(duì)于讀者來說,無形中大大增加了吸引力。
二、再版進(jìn)一步強(qiáng)調(diào)OOA只針對(duì)問題域和系統(tǒng)責(zé)任,暫不涉及與具體實(shí)現(xiàn)有關(guān)的問題,它獨(dú)立于任何實(shí)現(xiàn)平臺(tái)。這正是當(dāng)前模型驅(qū)動(dòng)的體系結(jié)構(gòu)(MDA)所倡導(dǎo)的觀點(diǎn)。這使我們更加重視OOA的研究和應(yīng)用,特別是說服那些對(duì)技術(shù)知之不多的業(yè)務(wù)工作者和管理人員使用OOA方法是十分重要的。這一點(diǎn)也正是讀者所需要的。
三、再版對(duì)OOA方法的闡述更容易使人感受到OOA方法與功能分解、信息建模、數(shù)據(jù)流等傳統(tǒng)分析方法相比存在優(yōu)勢(shì)。比如同樣是分析一個(gè)事物,OOA從對(duì)象出發(fā),既分析數(shù)據(jù),又分析操作,是一個(gè)完整的結(jié)果,而信息建模方法只是從屬性出發(fā)而不注意操作,有明顯局限。這種分析、推理既中肯而又符合實(shí)際,使讀者容易接受和理解。
四、一些UML書籍介紹UML的概念與術(shù)語過多,使讀者感到不堪重負(fù)。
再版基于一個(gè)精煉的OO基本概念集合建立OOA與OOD方法體系,限制概念的擴(kuò)充,使讀者對(duì)OOA更容易學(xué)習(xí)和使用。書中對(duì)UML中那些不太常用的概念也作了簡(jiǎn)要的介紹,并進(jìn)行了分析和評(píng)論,使讀者能夠根據(jù)自己的實(shí)際需要進(jìn)行判斷和取舍。
五、作為軟件開發(fā)的組織者,我一向重視成果復(fù)用,再版一方面強(qiáng)調(diào)對(duì)以往的OOA結(jié)果的復(fù)用,另一方面給出相應(yīng)的策略,使人更容易在其他系統(tǒng)中復(fù)用。這一點(diǎn)使讀者感覺到著者確實(shí)是從實(shí)用的角度著想的,令人欽佩。
六、再版仍以類圖為OOA中的基本模型,使其作為面向?qū)ο蠼V械幕灸P停诟鞣N模型中處于核心地位,提供最重要的模型信息;以用況圖作為需求模型,用于描述需求。這符合實(shí)際情況和讀者的需求,因?yàn)槟P妥鳛橐环N信息描述和分析的方法,不建立模型就不容易表述要素之間的關(guān)系。有重點(diǎn)地建立適合于各種人員都能理解的模型以解決基本問題就可以了,模型太多、太復(fù)雜反而容易使分析工作走入形式化歧途。在這一點(diǎn)上,本書做到了,這對(duì)于讀者來說是一種欣慰。
七、再版的書中對(duì)UML2.0的各種模型圖都進(jìn)行了介紹,對(duì)書中所有概念均采用UML一致的術(shù)語和表示法,而且嚴(yán)格按照我國(guó)有關(guān)標(biāo)準(zhǔn)進(jìn)行中文翻譯。充分體現(xiàn)出著者高度的責(zé)任感和嚴(yán)謹(jǐn)?shù)闹螌W(xué)態(tài)度,令讀者感到敬佩。