




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、今昔軟件工程方法探究由于用戶的需求和軟、硬件技術(shù)的不斷發(fā)展,按照功能劃分設(shè)計(jì)的系統(tǒng)模塊必然是易變的和不穩(wěn)定的,這樣開發(fā)出來的模塊可重用性不高。因而,結(jié)構(gòu)化系統(tǒng)分析與設(shè)計(jì)已無法滿足用戶需求的變化。發(fā)展軟件質(zhì)量,縮短軟件開發(fā)周期,發(fā)展軟件可靠性、可擴(kuò)充性和可重用性迫使軟件界人士不斷研究新方法、新技術(shù),探索新途徑。1. 什么是傳統(tǒng)軟件工程方法1.1傳統(tǒng)軟件工程的概念傳統(tǒng)軟件工程過程主要包括開發(fā)過程、運(yùn)作過程、維護(hù)過程。它們覆蓋了需求、設(shè)計(jì)、實(shí)現(xiàn)、確認(rèn)以及維護(hù)等活動(dòng)。進(jìn)入上世紀(jì)60年代,人們開始逐漸認(rèn)識(shí)到了確實(shí)存在著“軟件危機(jī)”這樣一個(gè)事實(shí)。例如:n 軟件生產(chǎn)不能滿足日益增長(zhǎng)的需要;n 軟件開發(fā)成本和
2、開發(fā)盡速估計(jì)往往不準(zhǔn)確;n 軟件開發(fā)人員和用戶之間信息交流不充分,用戶對(duì)完成的軟件滿意度很低;n 軟件價(jià)格昂貴,軟件成本在整個(gè)計(jì)算機(jī)系統(tǒng)中所占的比例急劇上升,軟件已成為許多計(jì)算機(jī)系統(tǒng)中花錢最多的項(xiàng)目;n 軟件質(zhì)量難以保證;n 軟件可維護(hù)性差,程序中的錯(cuò)誤很難更正,適應(yīng)性或完善性維護(hù)都及其困難;問題域需求分析需求分析分析與設(shè)計(jì)的鴻溝總體設(shè)計(jì)詳細(xì)設(shè)計(jì)編程編程語言測(cè)試計(jì)算機(jī)圖1.傳統(tǒng)軟件工程方法示意圖我們所說的傳統(tǒng)軟件工程方法主要指結(jié)構(gòu)化軟件工程方法,目前較新的部分文獻(xiàn)將傳統(tǒng)軟件工程方法劃分為以下階段:系統(tǒng)工程、分析、設(shè)計(jì)、測(cè)試、軟件維護(hù)。傳統(tǒng)軟件工程方法的前期工作主要集中在分析和設(shè)計(jì)階段,實(shí)際上分
3、析和設(shè)計(jì)是傳統(tǒng)軟件工程方法中最為重要的階段。傳統(tǒng)軟件工程方法以功能、數(shù)據(jù)和數(shù)據(jù)流進(jìn)行分析,也就是基于數(shù)據(jù)的。在傳統(tǒng)軟件工程方法的分析階段,所使用的主要工具有數(shù)據(jù)字典(DD)、實(shí)體關(guān)系圖(EFU)、數(shù)據(jù)流圖(DFD)和狀態(tài)變換圖(STD)。在傳統(tǒng)軟件工程方法的設(shè)計(jì)階段,所使用的主要工具有針對(duì)總體設(shè)計(jì)的模塊結(jié)構(gòu)圖(MSD)和針對(duì)詳細(xì)設(shè)計(jì)的流程圖,在目前實(shí)際的軟件開發(fā)中,通常不使用流程圖,而直接通過編程完成詳細(xì)設(shè)計(jì),所以較新的部分文獻(xiàn)中,設(shè)計(jì)階段包括了總體設(shè)計(jì)、詳細(xì)設(shè)計(jì)和編程階段,三者之間的界線較模糊。傳統(tǒng)軟件工程方法的主要缺點(diǎn)是在分析階段以功能、數(shù)據(jù)和數(shù)據(jù)流進(jìn)行分析,對(duì)問題域的認(rèn)識(shí)和描述不是以問題
4、域中的固有事物作為基本單位并保持它們的原貌,這些方法的分析結(jié)果不能直接地映射到問題域;在設(shè)計(jì)階段分析的結(jié)果數(shù)據(jù)流圖和設(shè)計(jì)的結(jié)果模塊結(jié)構(gòu)圖是兩種不同的表示體系,從分析到設(shè)計(jì)的轉(zhuǎn)換實(shí)際上沒有可靠的轉(zhuǎn)換規(guī)則,帶有人為的隨意性,導(dǎo)致為軟件開發(fā)帶來隱患和設(shè)計(jì)結(jié)果與問題域偏差大。1.2軟件生命周期及其模型一個(gè)計(jì)算機(jī)軟件,從出現(xiàn)一個(gè)構(gòu)思之日起,經(jīng)過開發(fā)成功投入使用,在使用中不斷增補(bǔ)修訂,知道最后決定停止使用,并被另一項(xiàng)軟件替之時(shí)至,被認(rèn)為是該軟件的一個(gè)生命周期(或稱生存周期、生存期,Life-cycle)。一個(gè)軟件產(chǎn)品的生命周期可以劃分成若干個(gè)互相區(qū)分二又有聯(lián)系的階段,每個(gè)階段中的工作均以上一階段工作的結(jié)果
5、為依據(jù),并為下一階段的工作提供了前提。經(jīng)驗(yàn)表明,失誤造成的誤差越是發(fā)生在生存周期的前提,在系統(tǒng)交付使用時(shí)造成的影響和損失就越大,要糾正它所花費(fèi)的代價(jià)也越高。因而在前一階段工作沒有做好之前,絕不要草率地進(jìn)入下一階段。國(guó)家標(biāo)準(zhǔn)GB/T8566-2001信息技術(shù) 軟件生存周期過程將軟件生存周期劃分為以下8個(gè)階段:n 可行性研究與計(jì)劃n 需求分析n 概要分析n 詳細(xì)設(shè)計(jì)n 實(shí)現(xiàn)(包括單元測(cè)試)n 組裝測(cè)試(即集成測(cè)試)n 確認(rèn)測(cè)試n 使用和維護(hù)軟件工程學(xué)中的需求分析具有兩方面的意義。在認(rèn)識(shí)事物方面,它具有一整套分析,認(rèn)識(shí)問題域的方法、原則和策略。這些方法、原則和策略使開發(fā)人員對(duì)問題域的理解比不遵循軟件
6、工程方法更為全面,深刻和有效。在描述事物方面,它具有一套表示體系和文檔規(guī)范,但是,傳統(tǒng)的軟件工程方法學(xué)中的需求分析在上述兩方面都存在不足。它在全局范圍內(nèi)以功能、數(shù)據(jù)或數(shù)據(jù)流為中心來進(jìn)行分析。這些方法的分析結(jié)果不能直接地映射問題域,而是經(jīng)過了不同程度的轉(zhuǎn)化和重新組合。因此,傳統(tǒng)的分析方法容易隱蔽一些對(duì)問題域的理解偏差,與后續(xù)開發(fā)階段的銜接也比較困難??傮w設(shè)計(jì)階段,以需求分析的結(jié)果作為出發(fā)點(diǎn)構(gòu)造出一個(gè)具體的系統(tǒng)設(shè)計(jì)方案,主要是決定系統(tǒng)的模塊結(jié)構(gòu),包括決定模塊的劃分,模塊間的數(shù)據(jù)傳送及調(diào)用關(guān)系。詳細(xì)設(shè)計(jì)是在總體設(shè)計(jì)的基礎(chǔ)上考慮每個(gè)模塊的內(nèi)部結(jié)構(gòu)及算法。最終將產(chǎn)生每個(gè)模塊的程序流程圖。經(jīng)過總體設(shè)計(jì)和詳
7、細(xì)設(shè)計(jì),開發(fā)人員對(duì)問題域的認(rèn)識(shí)和描述越來越接近于系統(tǒng)的具體實(shí)現(xiàn)編程。編程階段,是利用一種編程語言產(chǎn)生一個(gè)能夠被機(jī)器理解和執(zhí)行的系統(tǒng)。測(cè)試是發(fā)現(xiàn)和排除程序中的錯(cuò)誤,最終產(chǎn)生一個(gè)正確的系統(tǒng)。但是由于分析方法的缺陷很容易產(chǎn)生對(duì)問題域的錯(cuò)誤理解,而分析與設(shè)計(jì)的鴻溝很容易造成設(shè)計(jì)人員對(duì)分析結(jié)果的錯(cuò)誤轉(zhuǎn)換,所以在編程時(shí)程序員往往需要對(duì)分析員和設(shè)計(jì)人員已經(jīng)認(rèn)識(shí)過的事物重新進(jìn)行認(rèn)識(shí),并產(chǎn)生與他們不同的理解。在實(shí)際開發(fā)過程中常??吹?,后期開發(fā)階段的人員不斷地發(fā)現(xiàn)前期階段中的錯(cuò)誤,并按照他們的新的理解進(jìn)行工作,所以每?jī)蓚€(gè)階段之間都會(huì)出現(xiàn)不少變化,其文檔不能很好的銜接。維護(hù)階段的工作,一是對(duì)使用中發(fā)現(xiàn)的錯(cuò)誤進(jìn)行修改
8、,二是因需求發(fā)生了變化而進(jìn)行修改。前一種情況需要從程序逆向追溯到發(fā)生錯(cuò)誤的開發(fā)階段。由于程序不能映射問題域以及各個(gè)階段的文檔不能對(duì)應(yīng),每一步追溯都存在許多理解障礙。第二種情況是一個(gè)從需求到程序的順向過程,它也存在初次開發(fā)時(shí)的那些困難,并且又增加了理解每個(gè)階段原有文檔的困難。軟件生命周期模型僅對(duì)軟件的開發(fā)、運(yùn)行、維護(hù)過程有意義,在ISO12207和ISO9000-3中都提到軟件生命周期模型,它包括:瀑布模型、漸增模型、演化模型、螺旋模型、噴泉模型和智能模型等。這里僅對(duì)出現(xiàn)最早的瀑布軟件開發(fā)模型進(jìn)行介紹。瀑布模型是1970年W.Royce提出的,其開發(fā)過程依照固定順序進(jìn)行。該模型嚴(yán)格規(guī)定各階段的任
9、務(wù),上一階段任務(wù)輸出作為下一階段工作輸入。此模型適合于用戶需求明確、開發(fā)技術(shù)比較成熟、工程管理嚴(yán)格的場(chǎng)所使用。其缺點(diǎn)是:由于任務(wù)順序固定,軟件研制周期長(zhǎng),前一階段工作中造成的差錯(cuò)越到后期越大,而且糾正前期錯(cuò)誤的代價(jià)高。在評(píng)價(jià)瀑布模型時(shí),應(yīng)考慮一下的相關(guān)風(fēng)險(xiǎn):n 需求未被充分理解n 系統(tǒng)太大而一次不能做完所有的事n 事先打算采用的技術(shù)迅速發(fā)生變化n 需求迅速發(fā)生變化n 有限的資源n 無法利用某一中間產(chǎn)品圖2.具有維護(hù)循環(huán)的軟件生存周期2. 現(xiàn)代軟件工程方法有哪些2.1面向?qū)ο筌浖こ谭椒嫦驅(qū)ο筌浖こ谭椒ǎ∣OSE)是面向?qū)ο螅∣O)方法在軟件工程領(lǐng)域的全面應(yīng)用,面向?qū)ο筌浖こ谭椒壳坝卸喾N
10、流派,但目前面向?qū)ο筌浖こ谭椒ㄒ部梢詣澐譃橐韵码A段:面向?qū)ο蟮姆治觯∣OA)、面向?qū)ο蟮脑O(shè)計(jì)(OOD)、面向?qū)ο蟮木幊蹋∣OP)、面向?qū)ο蟮臏y(cè)試、面向?qū)ο蟮能浖S護(hù)(OOSM)。問題域OOOOPOOAOOD計(jì)算機(jī)圖3.面向?qū)ο蟮能浖こ谭椒ㄊ疽鈭Dn 面向?qū)ο蟮姆治?OOA(Object-Oriented Analysis):OOA強(qiáng)調(diào)直接針對(duì)問題域客觀存在的各項(xiàng)事物設(shè)立OOA模型中的對(duì)象。問題域有哪些值得考慮的事物,OOA模型中就有哪些對(duì)象。OOA對(duì)問題域的觀察、分析和認(rèn)識(shí)是很直接的,對(duì)問題域的描述也是很直接的。它所采用的概念及其術(shù)語與問題域中的事物保持了最大程度的一致,不存在語言上的鴻溝。
11、n 面向?qū)ο蟮脑O(shè)計(jì)OOD(Object-Oriented Design):OOD是針對(duì)系統(tǒng)的一個(gè)具體的實(shí)現(xiàn)運(yùn)用OO方法。它與OOA采用相同的表示法和模型結(jié)構(gòu)。OOA與OOD采用一致的表示法是面向?qū)ο蟮姆治雠c設(shè)計(jì)優(yōu)于傳統(tǒng)的軟件工程方法的重要因素之一。這使得從OOA到OOD不存在轉(zhuǎn)換,只有很局部的修改或調(diào)整,并增加幾個(gè)與實(shí)現(xiàn)有關(guān)的獨(dú)立部分,因此OOA與OOD之間不存在傳統(tǒng)方法中分析與設(shè)計(jì)之間的鴻溝,二者能夠緊密銜接,大大降低了從OOA到OOD的難度、工作量和出錯(cuò)率。n 面向?qū)ο蟮木幊蘋OP(Object-Oriented Programing):OOP工作就是用同一種面向?qū)ο蟮木幊陶Z言把OOD模型
12、中的每個(gè)成分書寫出來。即用具體的數(shù)據(jù)結(jié)構(gòu)來定義對(duì)象的屬性,用具體的語句來實(shí)現(xiàn)服務(wù)流程圖所表示的算法。OOP階段產(chǎn)生的程序能夠緊密地對(duì)應(yīng)OOD模型;OOD模型中一部分對(duì)象類對(duì)應(yīng)OOA模型,其余部分的對(duì)象類對(duì)應(yīng)與實(shí)現(xiàn)有關(guān)的因素;OOA模型中全部類及對(duì)象都對(duì)應(yīng)問題域中的事物。這樣的映射關(guān)系提高了開發(fā)工作的效率和質(zhì)量。n 面向?qū)ο蟮臏y(cè)試OOT(Object-Oriented Test):OOT指對(duì)于用OO技術(shù)開發(fā)的軟件,在測(cè)試過程中繼續(xù)運(yùn)用OO技術(shù),進(jìn)行以對(duì)象概念為中心的軟件測(cè)試。在測(cè)試過程中發(fā)掘并利用與OO方法的概念、原則及技術(shù)機(jī)制有關(guān)的語法與語義信息??梢愿鼫?zhǔn)確地發(fā)現(xiàn)程序錯(cuò)誤并提高測(cè)試效率。對(duì)于用
13、OOA和OOD建模并由OOPL編程的軟件,OOT可以通過捕OOA/OOD模型信息,檢查程序與模型不匹配的錯(cuò)誤。這一點(diǎn)傳統(tǒng)的軟件工程方法很難達(dá)到。n 面向?qū)ο蟮能浖S護(hù):面向?qū)ο蟮能浖こ谭椒楦倪M(jìn)軟件維護(hù)提供了有效的途徑。程序與問題域是一致的,各個(gè)階段的表示是一致的,從而大大減少了理解的難度。2.2面向構(gòu)件(組裝)、架構(gòu)(復(fù)用)的軟件工程方法這一方法在分布式系統(tǒng)中得到了廣泛的應(yīng)用,構(gòu)件和基于構(gòu)件的方法是電子商務(wù)革命的驅(qū)動(dòng)力,它們是Internet時(shí)代開發(fā)企業(yè)級(jí)解決方案的方法。在任何行業(yè)中,復(fù)雜情況通常是通過很多關(guān)鍵概念來解決的。這些概念是通過抽象、分解、選代、細(xì)化等方法來表達(dá)的。其中的關(guān)鍵是分
14、解技術(shù)把一個(gè)較大的問題分解成較小的、可管理的單元,這樣每一個(gè)單元都是可以單獨(dú)處理的,這個(gè)技術(shù)是軟件工程的許多方法的核心。這些方法可以稱為結(jié)構(gòu)化設(shè)計(jì),模塊化編程,面向?qū)ο蟪绦蛟O(shè)計(jì),基于構(gòu)件的程序設(shè)計(jì),它們產(chǎn)生的單元稱為模塊、包、對(duì)象或構(gòu)件?;跇?gòu)件軟件開發(fā)是歷史發(fā)展的必然,基于構(gòu)件的軟件開發(fā)(Component Based Software Development),簡(jiǎn)稱CBD?;跇?gòu)件的軟件工程(Component Based Software Engineering),簡(jiǎn)稱CBSE。CBD追求的目標(biāo)是軟件的“即插即用”。 回顧經(jīng)典的工業(yè)化革命,不難得出一些有益的啟示:功能再?gòu)?fù)雜的產(chǎn)品都是由大
15、量標(biāo)準(zhǔn)的零件(領(lǐng)域構(gòu)件)組成,零件在生產(chǎn)線上裝配成一個(gè)產(chǎn)品,所有零件在產(chǎn)品中共同發(fā)揮作用。分工越細(xì)致,專業(yè)生產(chǎn)的程度越高,總體生產(chǎn)效率就越高。把這些啟示運(yùn)用于軟件開發(fā),那就是:標(biāo)準(zhǔn)的零件就是軟件生產(chǎn)的構(gòu)件,構(gòu)件在軟件生產(chǎn)線上通過集成得到新開發(fā)的軟件。由此,中國(guó)誕生了像青鳥工程這樣致力于生產(chǎn)構(gòu)件的項(xiàng)目。2.3 形式化開發(fā)方法隨著軟件系統(tǒng)復(fù)雜度的不斷增長(zhǎng),開發(fā)正確、可靠的軟件,成為一個(gè)急待解決的問題。解決此問題的一個(gè)有前途、有希望的技術(shù)是形式化方法的應(yīng)用。形式化方法建立在嚴(yán)格的數(shù)學(xué)基礎(chǔ)上,其目標(biāo)是希望能使系統(tǒng)具有較高的可信度和正確性,并能使系統(tǒng)具有良好的結(jié)構(gòu),使其易維護(hù),關(guān)鍵是能較好地滿足用戶需求
16、。一般說來,形式化方法是指具有堅(jiān)實(shí)數(shù)學(xué)基礎(chǔ)的方法,它是數(shù)學(xué)上的綜合、分析技術(shù)的應(yīng)用,用于開發(fā)計(jì)算機(jī)控制的系統(tǒng),經(jīng)常有推理工具的支持,它可提供一個(gè)用于模型設(shè)計(jì)和分析的一個(gè)嚴(yán)格而有效的途徑。從形式系統(tǒng)和復(fù)雜問題的本質(zhì)來看,還未有一個(gè)適于全面描述和分析一個(gè)復(fù)雜系統(tǒng)的形式系統(tǒng)。所以,可以說,一個(gè)“形式化方法”并不是系統(tǒng)設(shè)計(jì)者開發(fā)系統(tǒng)時(shí)可能選擇使用的方法,而只是設(shè)計(jì)者在此過程中希望利用的一種工具之一Wood*1988??傮w上,形式化方法大致可分為五類Barroca* 1992:(1) 基于模型的方法 給出系統(tǒng)(程序)狀態(tài)和狀態(tài)變換操作的顯式但亦是抽象的定義,但對(duì)于并發(fā)沒有顯式的表示,如:Z 和 VDMJ
17、ones 1990。(2) 代數(shù)方法 通過聯(lián)系不同操作間的行為關(guān)系而給出操作的隱式定義,而不定義狀態(tài),同樣,它亦未給出并發(fā)的顯式表示,如:OBJ、CLEAR。(3) 過程代數(shù)方法 給出并發(fā)過程的一個(gè)顯式模型,并通過過程間允許的可觀察的通訊上的限制(約束)來表示行為,如:CSP、CCS。(4) 基于邏輯的方法 有很多方法采用邏輯來描述系統(tǒng)的特性,包括程序行為的低級(jí)規(guī)范和系統(tǒng)時(shí)間行為的規(guī)范,如:時(shí)態(tài)邏輯Galton 1992。(5) 基于網(wǎng)絡(luò)的方法 根據(jù)網(wǎng)絡(luò)中的數(shù)據(jù)流顯式地給出系統(tǒng)的并發(fā)模型,包括數(shù)據(jù)在網(wǎng)中從一個(gè)結(jié)點(diǎn)流向另一個(gè)結(jié)點(diǎn)的條件。如Petri 網(wǎng)、謂詞變換網(wǎng)。在形式化方法的使用中,這些方法
18、之間的區(qū)別并不總是那么清楚的,有些是結(jié)合多種方法的多個(gè)方面而形成的混成(hybrid)方法,大多數(shù)方法都以集合論和謂詞邏輯作為其根本基礎(chǔ),所以,這些方法在技術(shù)上都有一些相似性。不過,在表達(dá)能力上,這些方法之間有著一定的不同,這也是上述分類的主要依據(jù)。此模型將軟件開發(fā)的生命周期分為五個(gè)階段:(1) 需求規(guī)范 描述系統(tǒng)及其操作環(huán)境,特別強(qiáng)調(diào)系統(tǒng)與環(huán)境間的接口。(2) 系統(tǒng)規(guī)范 描述系統(tǒng)輸入、輸出以及它們之間的關(guān)系。系統(tǒng)規(guī)范是待開發(fā)系統(tǒng)的外部特性描述,不涉及系統(tǒng)的內(nèi)部結(jié)構(gòu)。(3) 體系結(jié)構(gòu)設(shè)計(jì) 體系結(jié)構(gòu)設(shè)計(jì)階段描述系統(tǒng)的接口、功能、結(jié)構(gòu)的初步實(shí)現(xiàn)。(4) 詳細(xì)設(shè)計(jì) 描述用于實(shí)現(xiàn)此系統(tǒng)的算法及數(shù)據(jù)結(jié)構(gòu)
19、。(5) 實(shí)現(xiàn) 程序源代碼,規(guī)范的一種可實(shí)現(xiàn)映象。形式實(shí)現(xiàn)技術(shù)在順序程序上應(yīng)用較廣,目前也有對(duì)并發(fā)程序方面的研究。這一技術(shù)的使用代價(jià)很高,所以主要用于高精確系統(tǒng)的開發(fā),因?yàn)楦呔_系統(tǒng)中的一個(gè)很小的錯(cuò)誤可能會(huì)引起極大的災(zāi)難。若要使形式實(shí)現(xiàn)技術(shù)能廣泛地應(yīng)用,還須對(duì)其做較大的改進(jìn),以提高其效率,降低其使用代價(jià)。2.4 凈室軟件工程(Cleanroom Software Engineering)凈室軟件工程(CSE)是一種應(yīng)用數(shù)學(xué)和統(tǒng)計(jì)學(xué)理論高效、經(jīng)濟(jì)地生產(chǎn)高質(zhì)量軟件的工程技術(shù)。力圖通過嚴(yán)格的工程化的軟件過程達(dá)到開發(fā)中的零缺陷或接近零缺陷,個(gè)人覺得有點(diǎn)類似于“形式化開發(fā)方法(Formal Method
20、s)”。該工程技術(shù)的基本特點(diǎn)是:u 它致力于通過防止軟件缺陷來提高軟件質(zhì)量;u 它建立在嚴(yán)格的科學(xué)理論基礎(chǔ)上;u 它強(qiáng)調(diào)team-work和team-review;u 它的基本目標(biāo)是:開發(fā)過程的可管理性和使用時(shí)無失效圖.凈室軟件工程的基本模型即經(jīng)由統(tǒng)計(jì)過程控制下的增量式開發(fā)(增量是最終軟件產(chǎn)品的功能子集),基于函數(shù)的規(guī)范、設(shè)計(jì),真確性驗(yàn)證以及統(tǒng)計(jì)測(cè)試和軟件測(cè)試的技術(shù)手段,以函數(shù)和抽樣為理論基礎(chǔ),通過防止軟件缺陷來提高軟件質(zhì)量的開發(fā)方式。2.5現(xiàn)代軟件工程開發(fā)模型2.5.1極限編程(XP)極限編程是一種經(jīng)過實(shí)踐考驗(yàn)的輕量級(jí)軟件開發(fā)方法學(xué)。它強(qiáng)調(diào)軟件開發(fā)模型由四個(gè)變量組成:n 成本n 時(shí)間n 質(zhì)量
21、n 范圍極限編程開發(fā)的四個(gè)基本活動(dòng)是:n 編碼n 測(cè)試n 傾聽n 設(shè)計(jì)極限編程是一組簡(jiǎn)單、具體的實(shí)踐,這些實(shí)踐結(jié)合在一起形成了一個(gè)敏捷軟件開發(fā)模型。2.5.2基于體系結(jié)構(gòu)的開發(fā)目前的軟件構(gòu)件技術(shù)主要還是著眼于構(gòu)件實(shí)現(xiàn)模型和運(yùn)行時(shí)互操作,缺乏一套系統(tǒng)的方法以指導(dǎo)整個(gè)開發(fā)過程.近年來,以構(gòu)件為基本單元的軟件體系結(jié)構(gòu)研究取得了較大的發(fā)展.它通過對(duì)軟件系統(tǒng)整體結(jié)構(gòu)和特性的描述,為面向構(gòu)件的軟件開發(fā)提供了一個(gè)自頂向下的途徑。就是將軟件體系結(jié)構(gòu)引入到軟件開發(fā)的各個(gè)階段,作為系統(tǒng)開發(fā)的藍(lán)圖,利用工具支持的自動(dòng)轉(zhuǎn)換機(jī)制縮小從高層設(shè)計(jì)到實(shí)現(xiàn)的距離,而后在構(gòu)件平臺(tái)的運(yùn)行支持下實(shí)現(xiàn)自動(dòng)的系統(tǒng)組裝生成。2.5.3基于
22、框架的軟件開發(fā)架構(gòu)在開發(fā)中得到廣泛的應(yīng)用,具有以下幾方面的原因:首先,免費(fèi)、開源、有豐富的文檔和穩(wěn)定的開發(fā)背景。其次,便于實(shí)現(xiàn)系統(tǒng)的大規(guī)模開發(fā)和管理。由于層次之間松散耦合,在開發(fā)過程中,層與層之間的工作幾乎是完全獨(dú)立的,而不同的業(yè)務(wù)邏輯基于模塊進(jìn)行開發(fā),所以便于團(tuán)隊(duì)開發(fā)。再者,利于系統(tǒng)業(yè)務(wù)的重用和改動(dòng)?;谶@種架構(gòu)的應(yīng)用是基于模塊的,表示層和業(yè)務(wù)邏輯分離,所以不至于“牽一發(fā)而動(dòng)全身”。同時(shí),這樣也便于業(yè)務(wù)邏輯的重用。第四,良好的設(shè)計(jì)思想,很好地把業(yè)務(wù)邏輯和表示層分離;是一個(gè)小巧的實(shí)現(xiàn)對(duì)象關(guān)系映射的工具,把面向?qū)ο蟮脑O(shè)計(jì)開發(fā)與關(guān)系數(shù)據(jù)庫(kù)聯(lián)系起來了。典型的J2EE框架開發(fā),已然成為了大眾軟件開發(fā)的
23、首選。2.5.4迭代的開發(fā)方法圖4.迭代開發(fā)模型迭代化方法解決的主要是對(duì)于風(fēng)險(xiǎn)的控制問題,從下圖可以看出,傳統(tǒng)的開發(fā)流程中系統(tǒng)的風(fēng)險(xiǎn)要到項(xiàng)目開發(fā)的后期(主要是測(cè)試階段)才能夠被真正降低。 而迭代化開發(fā)中的風(fēng)險(xiǎn),可以在項(xiàng)目開發(fā)的早期通過幾次迭代來盡快地解決掉。在早期的迭代中一旦遇到問題,如某一個(gè)迭代沒有完成預(yù)定的目標(biāo),我們還可以及時(shí) 調(diào)整開發(fā)進(jìn)度以保證項(xiàng)目按時(shí)完成。一般到了項(xiàng)目開發(fā)的后期(風(fēng)險(xiǎn)受控階段),由于大部分高風(fēng)險(xiǎn)的因素(如需求、架構(gòu)、性能等)都已經(jīng)解決,這時(shí)候只需要投 入更多的資源去實(shí)現(xiàn)剩余的需求即可。這個(gè)階段的項(xiàng)目開發(fā)具有很強(qiáng)的可控性,從而保證我們按時(shí)交付
24、一個(gè)高質(zhì)量的軟件系統(tǒng)。2.5.5模型驅(qū)動(dòng)開發(fā)一種新型軟件設(shè)計(jì)方法面向模型的分析設(shè)計(jì)方法,系統(tǒng)一開始我們就首先確立實(shí)體模型Entity Model,以及它們之間的關(guān)系,進(jìn)而可以交由程序員分別實(shí)現(xiàn)表現(xiàn)層、業(yè)務(wù)服務(wù)層和持久層,通過使用Jdon Framework(以下簡(jiǎn)稱JF)等模型驅(qū)動(dòng)框架,結(jié)合FDD等模型驅(qū)動(dòng)的工程方法,從而正確無誤地、且快速高質(zhì)量地完成一個(gè)軟件開發(fā)過程。2.5.6敏捷開發(fā)敏捷開發(fā)以用戶的需求進(jìn)化為核心,采用迭代、循序漸進(jìn)的方法進(jìn)行軟件開發(fā)。在敏捷開發(fā)中,軟件項(xiàng)目在構(gòu)建初期被切分成多個(gè)子項(xiàng)目,各個(gè)子項(xiàng)目的成果都經(jīng)過測(cè)試,具備可視、可集成和可運(yùn)行使用的特征。換言之,就是把一個(gè)大項(xiàng)目
25、分為多個(gè)相互聯(lián)系,但也可獨(dú)立運(yùn)行的小項(xiàng)目,并分別完成,在此過程中軟件一直處于可使用狀態(tài)。3. 傳統(tǒng)軟件工程方法與現(xiàn)代軟件工程方法的區(qū)別比較3.1傳統(tǒng)軟件工程方法傳統(tǒng)軟件工程方法,即結(jié)構(gòu)化方法面向的是過程,它按照數(shù)據(jù)變換的過程尋找問題的結(jié)點(diǎn),對(duì)問題進(jìn)行分解。由于不同人對(duì)過程的理解不同,故面向過程的功能所分割出的功能模塊會(huì)因人而異。對(duì)于問題世界的抽象結(jié)論,結(jié)構(gòu)化方法可以用數(shù)據(jù)流圖、系統(tǒng)結(jié)構(gòu)圖、數(shù)據(jù)辭典、狀態(tài)轉(zhuǎn)移圖、實(shí)體關(guān)系圖來進(jìn)行系統(tǒng)邏輯模型的描述。傳統(tǒng)軟件工程方法關(guān)心的是功能,強(qiáng)調(diào)以模塊為中心,采用模塊化、自頂向下、逐步求精設(shè)計(jì)過程,系統(tǒng)是實(shí)現(xiàn)模塊功能的函數(shù)和過程的集合,結(jié)構(gòu)清晰、可讀性好,是提
26、高軟件開發(fā)質(zhì)量的一種有效手段。結(jié)構(gòu)化設(shè)計(jì)從系統(tǒng)的功能人手,按照工程標(biāo)準(zhǔn),嚴(yán)格規(guī)范地將系統(tǒng)分解為若干功能模塊,因?yàn)橄到y(tǒng)是實(shí)現(xiàn)模塊功能的函數(shù)和過程的集合。然而,由于用戶的需求和軟、硬件技術(shù)的不斷發(fā)展變化,作為系統(tǒng)基本成分的功能模塊很容易受到影響,局部修改甚至?xí)鹣到y(tǒng)的根本性變化。開發(fā)過程前期人手快而后期頻繁改動(dòng)的現(xiàn)象比較常見。3.2現(xiàn)代軟件工程方法現(xiàn)代軟件工程方法從所處理的數(shù)據(jù)入手,以數(shù)據(jù)為中心來描述系統(tǒng),它把編程問題視為一個(gè)數(shù)據(jù)集合。數(shù)據(jù)相對(duì)于功能而言,具有更強(qiáng)的穩(wěn)定性,這樣設(shè)計(jì)出的系統(tǒng)模型往往能較好地映射問題域模型。對(duì)象、類、繼承性、多態(tài)性、動(dòng)態(tài)定連概念和設(shè)施的引入使用,顯然這種設(shè)計(jì)方法具有
27、一定的優(yōu)勢(shì),能為生產(chǎn)可重用的軟件構(gòu)件和解決軟件的復(fù)雜性問題提供一條有效的途徑。同時(shí),系統(tǒng)的分析設(shè)計(jì)是一個(gè)注重實(shí)踐的領(lǐng)域,不僅僅依賴于一整套核心的概念與原理,要想設(shè)計(jì)出一個(gè)成功的系統(tǒng)來,還需要相應(yīng)的語言、工具和技術(shù)的有力支持。在這方面,經(jīng)過多年的實(shí)踐和發(fā)展,適應(yīng)結(jié)構(gòu)化方法的技術(shù)和開發(fā)環(huán)境已經(jīng)相當(dāng)成熟穩(wěn)定,但仍有待于不斷的完善和改進(jìn)。3.3小結(jié)及現(xiàn)代軟件工程的優(yōu)勢(shì)目前從導(dǎo)向看來,現(xiàn)代軟件工程方法大有取代傳統(tǒng)軟件工程方法的趨勢(shì),關(guān)于現(xiàn)代軟件工程方法和工具(RUPUML等)在國(guó)內(nèi)迅速成為軟件工程的熱點(diǎn)話題?,F(xiàn)在似乎不談UML就好像不是在談現(xiàn)代軟件工程,RUP似乎真的能成為“統(tǒng)一軟件開發(fā)”,能夠取代一切
28、軟件工程方法。而傳統(tǒng)軟件工程方法受到冷落,被看成是守舊和落后的象征。但是我們冷靜地發(fā)現(xiàn),傳統(tǒng)軟件工程方法仍然被大部分軟件開發(fā)沿用,傳統(tǒng)軟件工程方法中的工具一數(shù)據(jù)字典、實(shí)體一關(guān)系圖、數(shù)據(jù)流圖等在使用數(shù)據(jù)庫(kù)的應(yīng)用軟件的分析和設(shè)計(jì)中,特別是數(shù)據(jù)庫(kù)的分析和設(shè)計(jì)中仍然有絕對(duì)的優(yōu)勢(shì),這絕非OOSE能夠解釋的。大致上,現(xiàn)代軟件工程具有以下幾個(gè)方面的優(yōu)勢(shì):n 面向?qū)ο螅ɑ跇?gòu)件):將領(lǐng)域模型實(shí)例化為數(shù)據(jù)對(duì)象,清晰明了,降低了軟件模型間的復(fù)雜性。n UML等建模工具的興起:StarUml等建模工具的使用,使開發(fā)人員在需求分析和總體設(shè)計(jì)階段有了很好的工具,規(guī)范了軟件開發(fā)過程。n 高可用性和高復(fù)用性:構(gòu)件和組件的復(fù)
29、用和移植,使得軟件開發(fā)周期大大縮短,提高了開發(fā)的效率。n 模塊化、形式化的開發(fā)方法:這一技術(shù)的使用代價(jià)很高,所以主要用于高精確系統(tǒng)的開發(fā),因?yàn)楦呔_系統(tǒng)中的一個(gè)很小的錯(cuò)誤可能會(huì)引起極大的災(zāi)難。n 開源框架的使用:J2EE為代表的開源框架,給軟件開發(fā)提供了輕量級(jí)的解決方案。n 敏捷開發(fā):以用戶的需求進(jìn)化為核心,在保持軟件一直處于可使用狀態(tài)前提下采用迭代、循序漸進(jìn)的方法進(jìn)行軟件開發(fā),使軟件開發(fā)具有很大程度的靈活性。n 成熟的設(shè)計(jì)模式:耿祥義總結(jié)有23種設(shè)計(jì)模式,工廠模式,單例模式,觀察者模式都是常用的軟件開發(fā)模式;n 先進(jìn)的測(cè)試方法和工具:黑盒白盒測(cè)試,Radom Adapted Testing等
30、常規(guī)測(cè)試方法,加上Bugfree 、Selenium、TPTEST等常用測(cè)試工具,現(xiàn)代軟件測(cè)試方法層出不窮。4. 現(xiàn)代軟件工程的合理應(yīng)用下面我將針對(duì)自己前段時(shí)間參與研發(fā)的金沙江移民安置獨(dú)立評(píng)估系統(tǒng)簡(jiǎn)單分析一下,其中所包含的現(xiàn)代軟件工程學(xué)的方法和技術(shù)。4.1 基于組件以及組件復(fù)用方法在系統(tǒng)中應(yīng)用整體架構(gòu)方面,我們采用典型的J2EE輕量級(jí)企業(yè)開發(fā)框架,即SSH(Spring、Struts、Hibernate)三大框架,分別控制MVC模型中的視圖-模型-控制三個(gè)部分,這運(yùn)用了現(xiàn)代軟件工程學(xué)基于軟件復(fù)用的高級(jí)軟件工程方法,以及基于(開源)框架、基于組件及組件復(fù)用的軟件開發(fā)技術(shù)。4.2 面向?qū)ο蠓椒ㄔ谙?/p>
31、統(tǒng)中應(yīng)用編程思想方面,這里采用面向?qū)ο蟮拈_發(fā)方法,例如移民安置點(diǎn)的道路信息,對(duì)應(yīng)著數(shù)據(jù)庫(kù)中Road表,也與前面框架管理的Road.java這個(gè)Javabean對(duì)應(yīng),都代表地圖中的實(shí)體“道路”這一對(duì)象,同樣安置點(diǎn)也是一個(gè)對(duì)象,基本實(shí)現(xiàn)了“一切皆為對(duì)象”的編程原則。同時(shí)編碼方法上,遵循“開放-封閉原則”,即對(duì)于拓展開放、對(duì)修改封閉,模塊的行為功能可拓展,但不改變模塊的源代碼。項(xiàng)目管理方面,遵循了軟件生命周期的歷程,從前期的調(diào)研(需求分析)撰寫開發(fā)、需求文檔,總體(概要)設(shè)計(jì),詳細(xì)設(shè)計(jì),到后面的編碼階段,測(cè)試階段,以及維護(hù)部署及維護(hù)階段,都有相關(guān)技術(shù)人員負(fù)責(zé),某一模塊的用例圖如下所示。4.3 基于設(shè)計(jì)模式和框架方法在系統(tǒng)中應(yīng)用設(shè)計(jì)模式方面,系統(tǒng)中體現(xiàn)了多種現(xiàn)代軟件設(shè)計(jì)模式,像所有的Javabean都按照“單例模式”進(jìn)行創(chuàng)建,所有對(duì)象都有對(duì)應(yīng)的抽象接口,這也是“工廠模式”的一種體現(xiàn),當(dāng)然這也體現(xiàn)出“高內(nèi)聚,低耦合”的現(xiàn)代軟件開發(fā)經(jīng)驗(yàn),即面向“接口編程”,以及控制反轉(zhuǎn)的框架技術(shù)。外觀設(shè)計(jì)上,系統(tǒng)大部分的樣式都來自于開源
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 運(yùn)動(dòng)防護(hù)用具的體育產(chǎn)業(yè)與體育科技創(chuàng)新考核試卷
- 豆類油料和薯類種植行業(yè)的種植管理與病蟲害防控考核試卷
- 木片在能源儲(chǔ)存技術(shù)的應(yīng)用考核試卷
- 船舶修理中的綠色維修與資源回收考核試卷
- 航空公司航班機(jī)組人員協(xié)作與溝通考核試卷
- 液化石油氣生產(chǎn)過程安全監(jiān)測(cè)考核試卷
- 絹紡和絲織的產(chǎn)業(yè)政策支持與產(chǎn)業(yè)發(fā)展分析考核試卷
- 臨床醫(yī)學(xué)專業(yè)認(rèn)識(shí)
- 文藝演出項(xiàng)目簽約演職人員合同范本:排練與演出規(guī)定
- 國(guó)際房地產(chǎn)投資風(fēng)險(xiǎn)評(píng)估與咨詢合同
- 2025年蘇錫常鎮(zhèn)四市高三語文5月模擬調(diào)研試卷(二)附答案解析
- 2025初級(jí)社會(huì)工作者職業(yè)資格筆試知識(shí)點(diǎn)合輯
- 編曲制作合同協(xié)議
- 2024安徽三支一扶試卷真題及答案詳解解析
- 2025-2030全球及中國(guó)網(wǎng)絡(luò)訪問控制(NAC)解決方案行業(yè)市場(chǎng)現(xiàn)狀供需分析及市場(chǎng)深度研究發(fā)展前景及規(guī)劃可行性分析研究報(bào)告
- 初二學(xué)生心理健康教育
- 2025年社會(huì)工作者職業(yè)水平考試初級(jí)綜合能力測(cè)試題庫(kù)
- 氣管切開非機(jī)械通氣患者氣道護(hù)理團(tuán)體標(biāo)準(zhǔn)課件
- 數(shù)學(xué)-湖北省武漢市2025屆高中畢業(yè)生二月調(diào)研考試(武漢二調(diào))試題和解析
- 中醫(yī)理療合同范本
- 《經(jīng)典常談》各章測(cè)試題
評(píng)論
0/150
提交評(píng)論