av网站免费线看精品_国产做a爱视频免费不_深爱激情网开心五月天_伊人五月天在线视频网

 
軟件過(guò)程常見(jiàn)問(wèn)題及原因分析
發(fā)布時(shí)間:2008-05-22   瀏覽次數(shù):1199555
軟件過(guò)程常見(jiàn)問(wèn)題及原因分析 軟件外包是時(shí)下的一個(gè)熱門(mén)話題,被我國(guó)不少軟件企業(yè)視為一座金礦,而CMM被人們認(rèn)為是進(jìn)入這個(gè)市場(chǎng)的敲門(mén)磚,為了拿到那張代表資格的CMM認(rèn)證證書(shū),不少企業(yè)甚至不惜投入數(shù)百萬(wàn)之巨。事實(shí)上,拿到CMM認(rèn)證在國(guó)外并不代表企業(yè)能提供一個(gè)合格的軟件,的軟件專家、擁有組件技術(shù)、用例技術(shù)等多項(xiàng)發(fā)明、與Grady Booch、James Rumbaugh一起被稱為UML之父的Ivar Jacobson博士在近期訪華期間一再提醒中國(guó)的軟件企業(yè),謹(jǐn)防掉入CMM陷阱。   CMM/CMMI的缺點(diǎn)   CMM/CMMI最早起源于美國(guó)國(guó)防部。為了改變?cè)诓少?gòu)過(guò)程中頻繁地采購(gòu)到大量不合格軟件的局面,美國(guó)國(guó)防部需要一種評(píng)估軟件質(zhì)量的方法,這是要求軟件企業(yè)進(jìn)行CMM/CMMI認(rèn)證。然而,CMM/CMMI真正解決這個(gè)問(wèn)題了嗎?   CMM/CMMI被認(rèn)為是一種最成熟、最有效地提高軟件工程化水平的方法和標(biāo)準(zhǔn),用來(lái)評(píng)估和改進(jìn)過(guò)程,它是一個(gè)描述在軟件開(kāi)發(fā)過(guò)程中有待改進(jìn)的關(guān)鍵因素的框架,描述了一個(gè)能用漸進(jìn)方式進(jìn)行改進(jìn)的途徑。它為軟件過(guò)程改進(jìn)提供一個(gè)基礎(chǔ),將軟件開(kāi)發(fā)從一個(gè)相對(duì)來(lái)說(shuō)隨意、不成熟的過(guò)程變成非常成熟的、有規(guī)律的、可管理的過(guò)程。   然而,CMM/CMMI也有一些與身俱來(lái)的缺點(diǎn)不容忽視。比如,CMM/CMMI的評(píng)估耗資不菲,一個(gè)CMM2級(jí)評(píng)估可能達(dá)到數(shù)百萬(wàn)之巨,而且耗時(shí)很長(zhǎng),過(guò)程十分復(fù)雜,常常導(dǎo)致效果不太理想。不少企業(yè)的認(rèn)證流于形式,評(píng)估完成后只留下一大堆文檔,而真正的軟件開(kāi)發(fā)過(guò)程卻依然故我。而且,CMM/CMMI只告訴我們應(yīng)該怎么做,而沒(méi)有具體地告訴如何做。比如說(shuō),它要求必須改進(jìn)需求管理,那么到底該如何做需求管理?CMM/CMMI沒(méi)有提供答案。   還有最重要的一點(diǎn)是,不少軟件企業(yè)陷入了一個(gè)誤區(qū),以為單單通過(guò)CMM/CMMI評(píng)估可以解決軟件質(zhì)量不高的問(wèn)題,而忽略了軟件過(guò)程這一真正改善軟件質(zhì)量的環(huán)節(jié)。事實(shí)上,完全有可能出現(xiàn)這樣的情況:軟件成熟度為CMM 1級(jí)或2級(jí)的企業(yè)開(kāi)發(fā)出的軟件是真正好用的,而有的企業(yè)即使通過(guò)了CMM 5級(jí)認(rèn)證,也無(wú)法保證它交付好的軟件。最糟糕的情形是,如果采用不好的軟件過(guò)程,通過(guò)CMM/CMMI的成熟度級(jí)別越高,只會(huì)使軟件企業(yè)生產(chǎn)差勁軟件的過(guò)程變得更加有效率,而不是使企業(yè)開(kāi)發(fā)出更好的軟件。   Ivar Jacobson認(rèn)為,好的軟件過(guò)程首先一定是基于組件的,在此基礎(chǔ)之上,還要符合迭代開(kāi)發(fā)、用例驅(qū)動(dòng)開(kāi)發(fā)和以架構(gòu)為中心的這三個(gè)實(shí)踐。   合理的軟件過(guò)程是軟件質(zhì)量的基礎(chǔ)   為什么會(huì)是這樣呢,Ivar Jacobson舉了一個(gè)非常形象的例子。這是一個(gè)農(nóng)夫和他的奶牛的故事。在奶牛喝水的途中(稱為“牛路”)有一片莊稼地,牛會(huì)吃掉很多莊稼。農(nóng)夫看到這種情況后,意識(shí)到必須對(duì)奶牛喝水的過(guò)程進(jìn)行改進(jìn),所以他在這條道路上鋪上了瀝青。結(jié)果,農(nóng)夫得到了一個(gè)好的“牛路”,牛走得更快了,但是并沒(méi)有真正解決牛吃莊稼的問(wèn)題。它應(yīng)該有更好的方式,是為牛喝水尋找一條全新的道路。   軟件企業(yè)利用CMM框架進(jìn)行軟件質(zhì)量控制的過(guò)程,像是這個(gè)農(nóng)夫?yàn)榕B蜂仦r青。對(duì)于軟件企業(yè)來(lái)說(shuō),如果從一個(gè)錯(cuò)誤的軟件過(guò)程開(kāi)始,即使你在這個(gè)上面再改進(jìn),得到的永遠(yuǎn)只是“牛路”。這里更應(yīng)該考慮的是要選擇一條更好的路,也是從一開(kāi)始時(shí),采用能夠開(kāi)發(fā)出好的軟件的過(guò)程。然后在這個(gè)軟件過(guò)程的基礎(chǔ)上,對(duì)這個(gè)軟件進(jìn)行度量,改進(jìn)這個(gè)軟件的過(guò)程,也是進(jìn)行CMM/CMMI要求的改進(jìn)。   Ivar Jacobson博士認(rèn)為,從一個(gè)不良的軟件過(guò)程出發(fā),在此基礎(chǔ)上進(jìn)行改進(jìn),實(shí)際上會(huì)把軟件開(kāi)發(fā)變得更糟糕,因?yàn)槟惆衍浖_(kāi)發(fā)過(guò)程固化了,使日后再想對(duì)它進(jìn)行改造,變得更加困難。正確的方法是,先要有一個(gè)好的軟件過(guò)程,這是不容易的,但是值得做的事情。Ivar Jacobson說(shuō),“把一個(gè)好的軟件過(guò)程變得可度量非常容易,但是把一個(gè)可度量的軟件過(guò)程變成一個(gè)好的軟件過(guò)程卻很難”。也是說(shuō),只有把一個(gè)好的軟件過(guò)程,即能夠開(kāi)發(fā)出好的軟件的過(guò)程變得可度量才是有益的。而把一個(gè)已經(jīng)經(jīng)過(guò)CMMI改進(jìn)的、可度量的過(guò)程變成一個(gè)真正的能夠開(kāi)發(fā)出好軟件的過(guò)程,這是幾乎不可能的事情。   那么什么是一個(gè)好的軟件過(guò)程?Ivar Jacobson建議從以下幾個(gè)方面進(jìn)行辨別:,壞的過(guò)程關(guān)注文檔上,而好的過(guò)程關(guān)注在可執(zhí)行的程序或者系統(tǒng)上;第二,壞的過(guò)程延誤了揭露風(fēng)險(xiǎn)的時(shí)間,而好的過(guò)程一開(kāi)始把自己暴露在風(fēng)險(xiǎn)之下,并及時(shí)解決它;第三,壞的過(guò)程在項(xiàng)目的才能夠驗(yàn)證這個(gè)項(xiàng)目的質(zhì)量,而好的過(guò)程其質(zhì)量是每時(shí)每刻都能夠得到驗(yàn)證的;第四,壞的過(guò)程有一個(gè)非常復(fù)雜的跟蹤關(guān)系矩陣,從需求到代碼需要一個(gè)非常復(fù)雜的矩陣,而好的過(guò)程,卻是一個(gè)無(wú)縫鏈接;第五,在面對(duì)變更時(shí),壞的軟件很脆弱,好的軟件會(huì)很健壯。   Ivar Jacobson提醒軟件開(kāi)發(fā)人員要做聰明的農(nóng)夫,首先得到一個(gè)正確的軟件過(guò)程;然后,再考慮去度量它、定義它。因?yàn)檐浖?xiàng)目管理的本質(zhì)不是能否描述并度量軟件過(guò)程以及過(guò)程到底怎么樣,而是首先關(guān)注軟件,你是否能很好地開(kāi)發(fā)出合格軟件。重點(diǎn)是得到結(jié)果,通過(guò)軟件過(guò)程得到這個(gè)結(jié)果,也是交付的軟件產(chǎn)品。 觀點(diǎn)碰撞   敏捷開(kāi)發(fā)企圖終結(jié)軟件危機(jī)   如今在軟件開(kāi)發(fā)領(lǐng)域占主流地位的傳統(tǒng)軟件工程學(xué)思想是大約在世紀(jì)60年代伴隨著“軟件危機(jī)”言論的出現(xiàn)而誕生的。所謂軟件危機(jī)是指在計(jì)算機(jī)軟件的開(kāi)發(fā)和維護(hù)過(guò)程中所遇到的一系列嚴(yán)重問(wèn)題,它包含兩方面內(nèi)容:一是如何開(kāi)發(fā)軟件,以滿足不斷增長(zhǎng)、日趨復(fù)雜的需求;二是如何維護(hù)數(shù)量不斷膨脹的軟件產(chǎn)品。的確,傳統(tǒng)軟件工程學(xué)思想的誕生,把軟件開(kāi)發(fā)活動(dòng)按照工程化的原則和方法進(jìn)行組織,并一度被認(rèn)為是擺脫軟件危機(jī)的一個(gè)主要出路。   但是,數(shù)十年后的,人們對(duì)于軟件危機(jī)的“恐懼”仍沒(méi)有絲毫減弱,相反隨著軟件系統(tǒng)的急速膨脹而越發(fā)不可收拾了:對(duì)軟件開(kāi)發(fā)成本和進(jìn)度的估計(jì)常常不準(zhǔn)確,開(kāi)發(fā)成本超出預(yù)算,實(shí)際進(jìn)度比預(yù)定計(jì)劃一再拖延的現(xiàn)象并不罕見(jiàn);用戶對(duì)“已完成”系統(tǒng)不滿意的現(xiàn)象也經(jīng)常發(fā)生;軟件產(chǎn)品的質(zhì)量往往靠不住,Bug一大堆,補(bǔ)丁一個(gè)接一個(gè);等等。于是,無(wú)論是產(chǎn)業(yè)界還是理論界,都開(kāi)始對(duì)傳統(tǒng)軟件工程學(xué)思想產(chǎn)生懷疑,甚至背叛。因此,關(guān)于軟件到底是“工程”還是“藝術(shù)”的討論一度風(fēng)靡全球。而以迭代式循序漸進(jìn)開(kāi)發(fā)方式為主,以“人”為核心的敏捷開(kāi)發(fā)方法是在這樣的背景下產(chǎn)生的,它背叛了傳統(tǒng)軟件工程學(xué)中以“過(guò)程”為核心,把設(shè)計(jì)和開(kāi)發(fā)盡可能分開(kāi),盡量弱化“人”在整個(gè)工程中地位的思想。   近日,當(dāng)世界軟件開(kāi)發(fā)領(lǐng)域影響力的五位大師之一、敏捷軟件開(kāi)發(fā)方法的早期開(kāi)拓者馬丁·福勒先生來(lái)華與國(guó)內(nèi)軟件高手論道之際,北京大學(xué)軟件學(xué)院院長(zhǎng)陣鐘老師再次將軟件是“工程”還是“藝術(shù)”這一問(wèn)題擺到了桌面上。而這位軟件教父似乎對(duì)這一問(wèn)題早有深入思考,他認(rèn)為,這一爭(zhēng)論的核心應(yīng)該在于軟件設(shè)計(jì)是否要與軟件開(kāi)發(fā)分開(kāi),這也正是傳統(tǒng)工程化軟件開(kāi)發(fā)方法與敏捷軟件開(kāi)發(fā)方法的重要區(qū)別。   作為敏捷軟件開(kāi)發(fā)方法的推動(dòng)者,馬丁先生認(rèn)為,軟件設(shè)計(jì)應(yīng)該和軟件開(kāi)發(fā)緊密結(jié)合在一起,采用迭代式開(kāi)發(fā)。軟件開(kāi)發(fā)不能被認(rèn)為是一個(gè)既定的過(guò)程,因?yàn)檐浖_(kāi)發(fā)中有太多的變化出現(xiàn),既定的過(guò)程設(shè)置不可能達(dá)到合適的預(yù)想結(jié)果。由于需求變化、技術(shù)更新、人員流動(dòng)等問(wèn)題的存在,許多軟件設(shè)計(jì)工作應(yīng)該在軟件開(kāi)發(fā)到一定程度的時(shí)候才能進(jìn)行,兩者不應(yīng)該在順序上嚴(yán)格分開(kāi)。他說(shuō):“至于從哲學(xué)的角度講,到底軟件開(kāi)發(fā)活動(dòng)是藝術(shù)還是工程呢?我很難清晰地界定,也許都是或者都不是。也許我們應(yīng)該把軟件開(kāi)發(fā)活動(dòng)當(dāng)做一個(gè)獨(dú)立的東西來(lái)對(duì)待。”   由此看來(lái),馬丁先生既不認(rèn)為軟件開(kāi)發(fā)活動(dòng)應(yīng)該是一個(gè)先進(jìn)行設(shè)計(jì),然后根據(jù)“設(shè)計(jì)圖紙”進(jìn)行構(gòu)建的工程化過(guò)程,也不認(rèn)為軟件開(kāi)發(fā)應(yīng)該是完全依賴于開(kāi)發(fā)者頭腦中隨時(shí)蹦出的靈感的藝術(shù)活動(dòng),因?yàn)檫@兩種傾向在人類數(shù)十年的軟件開(kāi)發(fā)實(shí)踐中已經(jīng)被證明都不甚完美。而他企圖在兩者之間找到一個(gè)均衡點(diǎn),這個(gè)均衡點(diǎn)也許正是真正解決“軟件危機(jī)”的突破口。   據(jù)了解,敏捷開(kāi)發(fā)實(shí)際上包括了許多的軟件開(kāi)發(fā)習(xí)慣。首先,這種方法改變了軟件測(cè)試的流程,在編寫(xiě)代碼前進(jìn)行測(cè)試,減少了開(kāi)發(fā)風(fēng)險(xiǎn);其次,可以對(duì)軟件進(jìn)行持續(xù)集成,即每個(gè)小時(shí)都在集成,任何部件間的沖突都可以隨時(shí)解決;此外,這種方法的“動(dòng)態(tài)規(guī)劃”和“重構(gòu)”做法,意味著開(kāi)發(fā)者可以對(duì)軟件架構(gòu)進(jìn)行持續(xù)改進(jìn),可以根據(jù)用戶的需求隨時(shí)進(jìn)行改進(jìn),而利用傳統(tǒng)的軟件開(kāi)發(fā)方法則很難對(duì)軟件的架構(gòu)進(jìn)行調(diào)整,同時(shí)也會(huì)造成成本的大幅增加。
立即預(yù)約