自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

敏捷建模思想中的九個建模誤區(qū)

開發(fā) 項目管理
建模在軟件開發(fā)中的重要一環(huán),本文總結(jié)敏捷建模思想中的九個建模誤區(qū),并給出10條建模原則的建議。

無論你遵從的是重量級的方法,比如Enterprise Unified Process(EUP),還是輕量級的開發(fā)過程,如Extreme Programming(XP),建模在軟件開發(fā)中都是不可或缺的。但不幸的是其中充斥著各種謬誤與迷思。這來自于各個方面,有從理論家錯誤的研究、數(shù)十年來信息技術(shù)領(lǐng)域內(nèi)的文化沉積、軟件工具開發(fā)商天花亂墜半的市場宣傳以及象Object Management Group (OMG)和IEEE這類組織的標(biāo)準。這個月,我要揭示建模中的誤區(qū),指出其相應(yīng)的事實真相。

誤區(qū)一:建模就等于是寫文檔

這很可能是其中最具破壞力的一條,因為開發(fā)人員可以此為借口而完全放棄建模。許多優(yōu)秀的軟件開發(fā)人員會說他們不想把時間浪費在這些“無用的“文檔上。他們沉溺于編碼之中,制造著一些脆弱而劣質(zhì)的系統(tǒng)。另外,甚至于許多盡責(zé)的開發(fā)人員現(xiàn)在也認為建模是一件討厭的事,而不愿去學(xué)習(xí)相應(yīng)的建模技術(shù)。

事實分析:“模型”與“文檔”這二者在概念上是風(fēng)馬牛不相及的—你可以擁有一個不是文檔的模型和不是模型的文檔。一幅設(shè)計圖就是一個模型,而不論是被畫在餐巾紙的背面,或?qū)懺谝粔K白板上,或在Class Responsibility Collaboration(CRC)卡片中,還是根據(jù)記錄在報紙和便簽紙上的流程圖而生成的一個粗略的用戶界面原型。雖然這些都不能說是文檔,但他們卻都是有價值的模型。

建模很象是作計劃:作計劃的價值在于計劃編制的過程中,而非計劃本身;價值體現(xiàn)在建模的活動中,而非模型本身。實際上,模型不是你系統(tǒng)中的一部分正式的文檔,而且在完成它們的使命后可以被丟掉。你會發(fā)現(xiàn)值得保留的只有很少的模型,而且它一定是非常完美。

誤區(qū)二:從開始階段你可以考慮到所有的一切

這種說法流行于二十世紀七十年代到八十年代早期,現(xiàn)今的許多經(jīng)理都是在那個時候?qū)W習(xí)的軟件開發(fā)。對這一點的迷信會導(dǎo)致在前期投入可觀的時間去對所有的一切建模以期把所有一切都弄正確,試圖在編碼開始前就“凍結(jié)”所有的需求(見誤區(qū)四),以致于患上“分析期麻痹癥” – 要等到模型非常完美之后才敢向前進?;谶@個觀點,項目組開發(fā)了大量的文檔,而不是他們真正想要得到的—開發(fā)滿足需要的軟件。

事實分析:怎么才能走出這個誤區(qū)呢?首先,你必須認識到你不能考慮到所有的細枝末節(jié)。第二,認識到編碼員可能會對建模者的工作不以為然(這是可能的,事實上建模者所作的工作在實際價值中只占很少的部分),他們或許會說模型沒有反應(yīng)出真實的情況。第三,認識到不管你的最初所作的規(guī)格說明書有多好,但注定代碼會很快地與之失去同步,即便是你自己建模自己編碼。一個基本的道理就是代碼永遠只會和代碼保持一致。第四,認識到迭代法(小規(guī)模地建模,編一些代碼,做一些測試,可能還會做一個小的工作版本)是軟件開發(fā)的準則。它是現(xiàn)代重量級的軟件開發(fā)過程(如EUP),以及輕量級(如XP)的基本原理。

誤區(qū)三:建模意味著需要一個重量級的軟件開發(fā)過程

走入這個誤區(qū)(經(jīng)常與誤區(qū)一有聯(lián)系)的項目組常常是連建模都徹底地放棄了,應(yīng)為這樣的軟件開發(fā)過程對他們來說太復(fù)雜太沉重了。這不亞于一場天災(zāi)。

事實分析:你可以用一種敏捷的方式取而代之。關(guān)于用簡單的工具進行簡單地建模的詳細內(nèi)容可參看Agile Modeling(AM)。而且,你可以丟棄你的模型當(dāng)使命完之后,同樣也可以很基本的方式進行建模(比如,從辦公桌起來,來到白板前就開始構(gòu)略草圖)。只要你愿意,你就可以輕松地建模。

誤區(qū)四:必須“凍結(jié)”需求

這個要求常常來自高級經(jīng)理,他們確切地想知道他們從這個項目組能得到什么東西。這樣的好處就是在開發(fā)周期的早期確定下需求,就可以確切地知道所要的是一個什么樣的東西;缺點就是他們可能沒有得到實際上所需要的(不全或錯誤的需求,譯者)。

事實分析:變化總會發(fā)生的。由于優(yōu)先級的變化和逐漸對系統(tǒng)有了更進一步的理解,都會引起需求的變化。與凍結(jié)需求相反,估計項目成功的風(fēng)險,盡量去接受變化而且相應(yīng)地采取行動,就象XP所建議的一樣。

誤區(qū)五:設(shè)計是不可更改的

如同誤區(qū)四,要求每一個開發(fā)人員必須嚴格遵從“設(shè)計“,導(dǎo)致開發(fā)人員為了符合“設(shè)計“而作了錯誤的事情或以錯誤的方式作正確的事情?;蛘呤呛唵蔚睾雎粤嗽O(shè)計,否定了所有設(shè)計可能帶來的好處。凍結(jié)了設(shè)計,你就不能從在項目進程中所學(xué)到知識進一步獲益。另外一個很大的趨勢就是開發(fā)出大量的文檔而不是實際的軟件,使用面向文檔的CASE工具而不是能給項目帶來實際價值的面向應(yīng)用的工具。

事實分析:事實上,設(shè)計會經(jīng)常根據(jù)開發(fā)人員和數(shù)據(jù)庫管理員的反饋進行修改,因為他們是最接近實際應(yīng)用的人,通常他們對技術(shù)環(huán)境的理解要好于建模者。我們必須的面對這樣一個事實:人無完人,他們所作的工作也不可能盡善盡美。難道您真的想將一個并不完善的設(shè)計固定下來而不再去修改其中的錯誤嗎?另外,如果需求并沒有被凍結(jié),其實就意味著你不能凍結(jié)你的設(shè)計,因為任何需求的修改勢必影響設(shè)計。對之,正確的態(tài)度是:只要你的代碼還在改動,涉及就沒完。

誤區(qū)六:必須使用CASE工具

建模常常被認為是一項復(fù)雜的工作,因此需要大量地使用CASE工具輔助進行。

事實分析:是的,建??梢允呛軓?fù)雜的。但你完全可以建立一個有效而簡單的模型表述其中關(guān)鍵的信息,而不是將一些無關(guān)緊要的細節(jié)包括進來。

比如,我經(jīng)常使用UML建立模型來表示類、它們的屬性及一些關(guān)鍵的業(yè)務(wù)操作,但并不畫出屬性的存取操作(get和set),以及維護與其它類關(guān)系的框架代碼,或者其他一些瑣碎的實現(xiàn)細節(jié)。我通過建模尋找解決問題的方法,讓我和我的同事能繼續(xù)前進去實現(xiàn)這個模型。以這樣靈活的方式,大多數(shù)情況下我并不需要一個CASE工具來支持建模工作,一塊白板,或者一臺數(shù)字相機足以。這樣,我就不用花時間去評估CASE工具,不用去和工具供應(yīng)商討論許可證的問題,也免去了人員培訓(xùn)開銷。CASE工具只有當(dāng)它能體現(xiàn)最佳性價比時(相對你自己的情況而言),才值得購買。大多數(shù)情況下,我都能不用它而達到目的(完成建模)。我經(jīng)常使用的工具有Together– 因為它能產(chǎn)生數(shù)目可觀的Java框架代碼;還有ERWin,因為它能規(guī)劃數(shù)據(jù)庫。這兩個工具真正地幫助我實現(xiàn)了軟件開發(fā)的目的 – 制造滿足用戶要求的軟件。但我絕大多數(shù)得建模工作仍然使用的是簡單的工具,而不是CASE工具。

誤區(qū)七:建模是在浪費時間

許多新手都這樣認為,這主要是因為他們所接受的教育僅僅局限于如何編寫代碼,對于完整的開發(fā)流程鮮有接觸。而且他們的經(jīng)驗也僅限于如何實現(xiàn)代碼,就如初級程序員。他們放棄了提高效率和學(xué)習(xí)技能的機會,這些技能能夠使他們很容易地適應(yīng)不同的項目或組織。他們應(yīng)該為此感到羞愧。

事實分析:在大多數(shù)情況下,在開始編碼之前畫一個草圖、開發(fā)一個粗率的原型或者制作一些索引卡片都能提高你的生產(chǎn)效率。高效的開發(fā)者在編碼之前都要進行建模工作。另外,建模是一種很好的在項目組成員與項目負責(zé)人之間溝通途徑。你們在這個過程中探討問題,從而對所要的是一個什么樣的東西可以得到更好的理解,涉及到該項目中的每個成員也可得到對該項目有一個從分的了解。

誤區(qū)八:數(shù)據(jù)模型(Data Model)就是一切

許多組織基于數(shù)據(jù)模型就蹣跚啟動新的開發(fā)工作,也許正如你所在的組織:IT部門對于數(shù)據(jù)有非常嚴格的規(guī)定,控制著你的開發(fā)項目;或者你以前的數(shù)據(jù)庫是一團糟,別無選擇。

事實分析:數(shù)據(jù)模型是一個重要的但不是最重要的建模,它最好是建立在另外的模型之上。(參見“Extreme Modeling”,Thinking Objectively,Nov.2000)。這即使在象數(shù)據(jù)倉庫這類面向數(shù)據(jù)的項目中也如此。如果沒有很好的理解用戶是如何使用該數(shù)據(jù)倉庫的(在數(shù)據(jù)模型中沒有表示出來),這些項目經(jīng)常是以可悲的失敗而告終。你可以使用的模型有很多 – 使用案例(use cases),業(yè)務(wù)規(guī)則(business rules),activity diagrams,類圖(class diagrams),component diagrams,用戶界面流程圖(user interface flow diagrams)和CRC,等等。數(shù)據(jù)模型僅僅是其中的一種。每種模型都有其長處和短處,應(yīng)該正確地使用。

誤區(qū)九:所有的開發(fā)人員都知道如何建模

我們現(xiàn)在面臨照這樣一個嚴重的問題:許多不是開發(fā)人員的人,包括高級經(jīng)理和用戶,不知道軟件是如何建成的。其結(jié)果,他們不能夠區(qū)分開熟練的開發(fā)者和一般的程序員(當(dāng)然也分不清高級程序員和一般程序員),他們想當(dāng)然地認為所有的開發(fā)人員都具備從頭到尾開發(fā)整個系統(tǒng)的技能。

事實分析:這肯定是不正確的。建模的技能,是只有當(dāng)一個開發(fā)者通過學(xué)習(xí)它,并經(jīng)過長期的實踐才能夠掌握。一些非常聰明的程序員常常相信自己無所不能,畢竟他們終究只是程序員。正因為這樣的狂妄自大,他們承當(dāng)?shù)囊恍┤蝿?wù)是他們根本就沒有相應(yīng)的技能去完成的。軟件開發(fā)是如此的復(fù)雜,單單一個人是很難具備所有的技能去成功地進行開發(fā),甚至也不可能去配置有一定復(fù)雜程度的系統(tǒng)。開發(fā)這應(yīng)該有自知之明,明白他們自己的弱點,學(xué)無止境。通過互相取長補短,建模者可從程序員身上學(xué)到一項技術(shù)的具體細節(jié),程序員也可從建模者那里學(xué)到有價值的設(shè)計和體系結(jié)構(gòu)的技術(shù)。我個人認為所有的人,包括我自己,都是新手。

Agile Modeling

通過理解和避開建模的誤區(qū),你能夠是得你自己、你的項目組和你的組織更加有效地進行軟件開發(fā)。在揭示這些普遍存在誤區(qū)的過程中,我已經(jīng)表述了Agile Modeling(AM)的許多原則。Agile Modeling 以前叫做Extreme Modeling(XM)。我希望我所給于你的是精神上的食糧。

建模十條原則

◆僅有數(shù)據(jù)模型對于現(xiàn)代軟件是不夠的。

◆接受變化,并且允許你的模型能夠隨著時間進行改進。 你不能凍結(jié)它們,然后就期待著成功。

◆模型并不一定就是文檔,文檔也不一定就是模型。

◆大多數(shù)的模型可能也應(yīng)該被丟棄。

◆只有代碼才能與代碼保持真正的同步。

◆一些簡單的工具,比如白板,就完全足以應(yīng)付大多數(shù)得建模工作。

◆思考,然后再編碼。

◆你總能從別人身上學(xué)到東西。

◆建??梢杂靡环N輕盈的方式。

◆設(shè)計直到代碼發(fā)布以后才算完成。

【編輯推薦】

  1. 敏捷開發(fā)實踐 擁抱變化的產(chǎn)品開發(fā)流程
  2. 敏捷開發(fā)環(huán)境下的領(lǐng)導(dǎo)問題
  3. 對話敏捷專家麥天志:敏捷開發(fā)現(xiàn)狀及發(fā)展之路
  4. 如何向敏捷開發(fā)團隊轉(zhuǎn)型
  5. 中小企業(yè)如何進行敏捷SOA治理?
責(zé)任編輯:佚名 來源: 網(wǎng)絡(luò)轉(zhuǎn)載
相關(guān)推薦

2010-06-10 14:28:13

UML建模誤區(qū)

2010-07-12 12:48:37

UML建模誤區(qū)

2009-11-12 11:30:13

Scrum

2010-06-29 19:37:43

UML建模誤區(qū)

2010-06-29 18:33:31

UML建模圖形

2022-04-25 21:40:54

數(shù)據(jù)建模

2022-04-19 10:29:56

外包誤區(qū)IT外包IT領(lǐng)導(dǎo)者

2020-10-10 06:53:18

數(shù)據(jù)建模數(shù)據(jù)庫

2010-06-13 13:13:12

UML建模

2022-09-26 14:23:00

物聯(lián)網(wǎng)智能建筑大數(shù)據(jù)

2017-02-05 14:59:18

MongoDB數(shù)據(jù)建模數(shù)據(jù)庫

2010-06-07 18:17:54

UML建模

2010-06-12 11:22:57

UML應(yīng)用

2009-07-17 17:25:31

敏捷開發(fā)

2009-09-22 13:11:01

ibmdwSOA

2010-06-29 15:45:57

UML業(yè)務(wù)流程

2023-08-14 16:56:53

2009-12-17 10:14:04

UML建模

2010-07-08 11:27:00

UML用例建模

2009-08-24 10:35:30

點贊
收藏

51CTO技術(shù)棧公眾號