如果你現(xiàn)在是一個程序員,準(zhǔn)備在軟件開發(fā)這條路上走下去,并且希望能夠在這條路上越走越順的話,你應(yīng)該在模型上下更多的功夫。典型的技術(shù)人員在軟件開發(fā)職
業(yè)上的路有兩條:1. 程序員(編碼)->高級程序員(詳細設(shè)計)->系統(tǒng)分析員(系統(tǒng)分析)->架構(gòu)師(架構(gòu)設(shè)計);2.
程序員->高級程序員->Team Leader->Project
Manager。不管你準(zhǔn)備走哪一條路,模型都是你必不可少的、有力的工具。
模型是什么?
模型是系統(tǒng)知識的抽象表示。我們不能僅僅通過語言來描述一個系統(tǒng),也不能僅僅通過記憶來記錄關(guān)于系統(tǒng)的知識。知識是通過某種媒介來表達的,這種媒介所表達 的內(nèi)容就是模型。而知識形成媒介的過程就是建模,或者稱為模型化。通常模型可以使用多種不同的媒介來表達,比如紙質(zhì)或電子文檔、縮微模型/原型、音像制品 等等。而表達模型的體現(xiàn)方式也是多種多樣的,常見的有圖表、公式、原型、文字描述等等。
模型三要素
模型是通過建模語言、表示法和文字描述來表示的。語法(syntax)、語義(semantics)和語用(pragmatics)是模型的三個要素。
語法是使用建模語言所提供的元素的方法,以及如何組織、關(guān)聯(lián)這些元素。
語義是指一個具體模型所表達的含義。
語用則表示模型在特定環(huán)境下的應(yīng)用,以及應(yīng)用此模型的環(huán)境對模型本身的影響。
模型的作用
模型首先是參與構(gòu)造軟件的人之間的主要溝通手段和基礎(chǔ);其次,模型指導(dǎo)系統(tǒng)的實現(xiàn);模型還幫助設(shè)計者做出決策;最后,模型對未來的開發(fā)很重要,也是軟件維護的基礎(chǔ)。
軟件模型存在的問題
國內(nèi)的軟件開發(fā),從來都不缺乏模型——缺乏的是模型的完整性和準(zhǔn)確性。產(chǎn)生這個問題的原因有很多,其中主要的、影響較大的有:不切實際的進度要求迫使開發(fā)商極力壓 縮建模時間;分析設(shè)計人員水平不夠;分析設(shè)計人員沒有掌握建模方法或?qū)δP偷谋磉_不科學(xué);建模完成后缺乏維護。
進度問題是一個非常棘手的問題,一般還是要依靠商務(wù)人員解決。分析設(shè)計人員水平問題,我是沒有辦法解決。——這些都不在本文討論范圍內(nèi)。下面主要講后面兩個問題。
建模問題及對策
首先就是對建模語言的語法掌握不準(zhǔn)確,甚至存在對語法的誤用。這就導(dǎo)致了模型表達不精確,或者使用錯誤的方式來表達正確的概念。這在小型的開發(fā)組織中是比較常見的。解決這個問題的對策如下:
相比建模問題,模型維護在問題更加嚴(yán)重和普遍。本來,模型和實際的事物之間就存在著一定的差異,這叫做語義間隙(semantic gap)。這類似于思維和客觀對象之間的關(guān)系——思維只能無限逼近客觀對象的實際原理。由于人(客戶)本身的思維不確定性及其不斷發(fā)展,用戶需求總是在不 斷改進或變化。相應(yīng)的,我們開發(fā)的軟件也要不斷的修改。但是,在國內(nèi),這種變化基本從未反應(yīng)到模型中。這就造成語義間隙越來越大,最后模型也就成了聾子的 耳朵——擺設(shè)。解決這個問題的對策:
關(guān)于語用的研究不多。語用,即使在語言學(xué)范疇也是比較偏的領(lǐng)域。基本上我們沒有一個可用的指導(dǎo)理論,只能依賴于經(jīng)驗。對于越大的系統(tǒng),模型越重要,也能夠 發(fā)揮其作用。對于簡單的系統(tǒng),可以建設(shè)較小的模型,其發(fā)展可能會較快,這就需要更多的維護工作。簡單系統(tǒng)通常至少需要一個精致的核心模型,雖然用到的語法 元素不多,比較緊湊,但也不能在這方面忽視它。
繼續(xù)閱讀下一篇:《再議模型》
模型是什么?
模型是系統(tǒng)知識的抽象表示。我們不能僅僅通過語言來描述一個系統(tǒng),也不能僅僅通過記憶來記錄關(guān)于系統(tǒng)的知識。知識是通過某種媒介來表達的,這種媒介所表達 的內(nèi)容就是模型。而知識形成媒介的過程就是建模,或者稱為模型化。通常模型可以使用多種不同的媒介來表達,比如紙質(zhì)或電子文檔、縮微模型/原型、音像制品 等等。而表達模型的體現(xiàn)方式也是多種多樣的,常見的有圖表、公式、原型、文字描述等等。
模型三要素
模型是通過建模語言、表示法和文字描述來表示的。語法(syntax)、語義(semantics)和語用(pragmatics)是模型的三個要素。
語法是使用建模語言所提供的元素的方法,以及如何組織、關(guān)聯(lián)這些元素。
語義是指一個具體模型所表達的含義。
語用則表示模型在特定環(huán)境下的應(yīng)用,以及應(yīng)用此模型的環(huán)境對模型本身的影響。
模型的作用
模型首先是參與構(gòu)造軟件的人之間的主要溝通手段和基礎(chǔ);其次,模型指導(dǎo)系統(tǒng)的實現(xiàn);模型還幫助設(shè)計者做出決策;最后,模型對未來的開發(fā)很重要,也是軟件維護的基礎(chǔ)。
軟件模型存在的問題
國內(nèi)的軟件開發(fā),從來都不缺乏模型——缺乏的是模型的完整性和準(zhǔn)確性。產(chǎn)生這個問題的原因有很多,其中主要的、影響較大的有:不切實際的進度要求迫使開發(fā)商極力壓 縮建模時間;分析設(shè)計人員水平不夠;分析設(shè)計人員沒有掌握建模方法或?qū)δP偷谋磉_不科學(xué);建模完成后缺乏維護。
進度問題是一個非常棘手的問題,一般還是要依靠商務(wù)人員解決。分析設(shè)計人員水平問題,我是沒有辦法解決。——這些都不在本文討論范圍內(nèi)。下面主要講后面兩個問題。
建模問題及對策
首先就是對建模語言的語法掌握不準(zhǔn)確,甚至存在對語法的誤用。這就導(dǎo)致了模型表達不精確,或者使用錯誤的方式來表達正確的概念。這在小型的開發(fā)組織中是比較常見的。解決這個問題的對策如下:
- 開展針對建模語言、建模方法的培訓(xùn)。培訓(xùn)才是王道啊!
- 使用盡量小的建模語言元素集合。這樣可以減小犯錯誤的機會,只是治標(biāo)不治本。
- 局部范圍內(nèi)統(tǒng)一對建模語言元素的使用。這是Work around的方法,初始成本低,但這要求后期水平提高后批量修改原存在錯誤的模型。
相比建模問題,模型維護在問題更加嚴(yán)重和普遍。本來,模型和實際的事物之間就存在著一定的差異,這叫做語義間隙(semantic gap)。這類似于思維和客觀對象之間的關(guān)系——思維只能無限逼近客觀對象的實際原理。由于人(客戶)本身的思維不確定性及其不斷發(fā)展,用戶需求總是在不 斷改進或變化。相應(yīng)的,我們開發(fā)的軟件也要不斷的修改。但是,在國內(nèi),這種變化基本從未反應(yīng)到模型中。這就造成語義間隙越來越大,最后模型也就成了聾子的 耳朵——擺設(shè)。解決這個問題的對策:
- 加強軟件配置管理和變更控制。通過嚴(yán)格的變更控制來確保模型的一致性。
- 逆向工程在某些情況下可以發(fā)揮作用。可惜不是總能夠發(fā)揮作用,而且它不能減小語義間隙。
- 期待MDA(Model Driven Architecture)。問題是MDA什么時候才能完善呢?保持關(guān)注吧。
關(guān)于語用的研究不多。語用,即使在語言學(xué)范疇也是比較偏的領(lǐng)域。基本上我們沒有一個可用的指導(dǎo)理論,只能依賴于經(jīng)驗。對于越大的系統(tǒng),模型越重要,也能夠 發(fā)揮其作用。對于簡單的系統(tǒng),可以建設(shè)較小的模型,其發(fā)展可能會較快,這就需要更多的維護工作。簡單系統(tǒng)通常至少需要一個精致的核心模型,雖然用到的語法 元素不多,比較緊湊,但也不能在這方面忽視它。
繼續(xù)閱讀下一篇:《再議模型》