版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 合肥工業(yè)大學(xué)碩士學(xué)位論文面向?qū)ο筌浖兏绊懛治龉ぞ叩难芯考皩?shí)現(xiàn)姓名:楊明申請(qǐng)學(xué)位級(jí)別:碩士專業(yè):計(jì)算機(jī)軟件與理論指導(dǎo)教師:李心科20090301面向?qū)ο筌浖兏绊懛治鐾蹙叩难芯考皩?shí)現(xiàn)摘要在軟件開(kāi)發(fā)豹整個(gè)生禽溺嬲墨,軟件變更是不可避免的。懿西應(yīng)對(duì)不斷出現(xiàn)的燮更是人們一直關(guān)注的一個(gè)熱點(diǎn)問(wèn)題。由于分析、設(shè)計(jì)鞠實(shí)現(xiàn)階段的側(cè)重點(diǎn)各有不同,變更邀現(xiàn)的原囂和表現(xiàn)形式也不盡穗藏。本文對(duì)這三個(gè)階段出現(xiàn)豹變更進(jìn)行了分祈研究,并重點(diǎn)研究了如何分析、追蹤代碼的變更。本文鮑主要工作包括:總結(jié)了面向?qū)ο筌浖灠l(fā)的需求分析階段和設(shè)計(jì)階段的變慝影響處理方法,提出了編碼階段酶變更影瞧處理方法。類成員依賴關(guān)系可分為類內(nèi)依賴
2、和類間依賴,本文重點(diǎn)分析了繼承依賴、關(guān)聯(lián)依賴和多態(tài)依賴三種類間成員依賴關(guān)系的建立過(guò)程。提出了基于類成員依賴關(guān)系翦變更影響分析算法。算法的總體思路是:先掃播代羈,建立類或類成員之間的依賴關(guān)系;再確定變更影響源和變更類型;最后根據(jù)變更影響源、變更類型和依賴關(guān)系確定變更影響的范圍。其體包括:類成員依賴關(guān)系算法、變更影響源和變更類型識(shí)別算法、變更影響追蹤算法。提出了一個(gè)面向?qū)ο筌浖a變更影響分析原型,并以此為基礎(chǔ)實(shí)現(xiàn)了一個(gè)變更影響分輯工具。試驗(yàn)表鞠此工具是畜效麴,置對(duì)變更影螭對(duì)象酶追蹤是斃較準(zhǔn)確的。關(guān)鍵詞:面向?qū)ο笞兏芾碜兏绊懛治鲎兏绊懽粉櫼? . .,.:,. ,.:, ,.: , . ?,
3、 . , .:?, , ,。論文插圖清單圖.變更控制和變更請(qǐng)求流.圖.三層體系結(jié)構(gòu)圖圖關(guān)聯(lián)依賴的例圖圖.多態(tài)依賴的例圖圖變更影響分析器原型圖圖.變更影響分析流程圖?圖.安徽省科學(xué)技術(shù)獎(jiǎng)勵(lì)網(wǎng)上申報(bào)評(píng)審管理系統(tǒng)主頁(yè)面圖.業(yè)務(wù)邏輯層的部分源碼圖.數(shù)據(jù)庫(kù)連接層的部分源碼?圖實(shí)驗(yàn)結(jié)果截圖論文表格清單表.可追蹤性信息的類型?。表?可追蹤性表?。表.可追蹤性列表?.表原子變更分類表.獨(dú)創(chuàng)性聲明本久聲甓所呈交的學(xué)位論文是本入在導(dǎo)師指導(dǎo)下進(jìn)行觴研究工捺及取得的研究成暴。據(jù)我所知,除了文中特別加以標(biāo)志和致謝的地方外,論文中不包含其他人已經(jīng)發(fā)表或撰或其他教育機(jī)構(gòu)的學(xué)位或證書(shū)瓶寫(xiě)過(guò)的研究成果,邀不包含為獲得.金篷蘭些
4、太堂使用過(guò)的材料。與我一同作的同志對(duì)本研究所傲的任何貢獻(xiàn)均己在論文中作了明確的說(shuō)明并表示謝意。 學(xué)位論文作者簽字:鉑蚪簽字日期:夕年印月/廠園學(xué)位論文版權(quán)使用授權(quán)書(shū)本學(xué)位論文作者憲全了解 有關(guān)保留、使用學(xué)位論文的規(guī)定,有權(quán)僉筵王些態(tài)堂保留并向國(guó)家有關(guān)部門或機(jī)構(gòu)送交論文的復(fù)印鋅和磁盤,允許論文被查閱或借閱。本人授權(quán) 可以將學(xué)位論文的全部或部分論文內(nèi)容編入有關(guān)數(shù)據(jù)庫(kù)進(jìn)行檢僉旦墨王些盔堂索,可數(shù)采溺影印、縮印或掃描等復(fù)翎手段保存、匯編學(xué)位論文。保密的學(xué)位論文在解密質(zhì)適用本授權(quán)書(shū)導(dǎo)師簽名:學(xué)位論文者簽名:孑矧簽字眺如哆年乒月曠日簽字聃:年月咖學(xué)位論文作者畢業(yè)后去向:工作單位:通訊地址:致謝首先在此特別
5、感謝我的導(dǎo)師李心科副教授,本論文從選題、研究到寫(xiě)作的整個(gè)過(guò)程都是在李老師的悉心指導(dǎo)和幫助下才得以圓滿完成的。李老師知識(shí)豐富、治學(xué)嚴(yán)謹(jǐn)、平易近人,對(duì)學(xué)生要求嚴(yán)格,對(duì)論文質(zhì)量嚴(yán)格把關(guān)。在李老師三年來(lái)的悉心指導(dǎo)之下,我在軟件工程方向無(wú)論是在理論上還是在實(shí)踐中都收獲良多。在此,謹(jǐn)向敬愛(ài)的李老師致以崇高的敬意和衷心的感謝。感謝合肥工業(yè)大學(xué)研究生院和計(jì)算機(jī)與信息學(xué)院里的各位領(lǐng)導(dǎo)和老師,謝謝你們?cè)谶@三年中對(duì)我的關(guān)心和教導(dǎo)。同時(shí),也非常感謝各位同學(xué)對(duì)我的支持、關(guān)心和幫助。最后,感謝我的家人在這三年里對(duì)我的鼓勵(lì)、支持和關(guān)愛(ài)。作者:楊明年月第一章緒論重。董弓言世紀(jì)年代,結(jié)構(gòu)化程序設(shè)計(jì)幾乎完全統(tǒng)治了第二次計(jì)算機(jī)浪潮
6、后的軟件開(kāi)發(fā)豹黃金時(shí)代。結(jié)構(gòu)化編程給入粥集中于創(chuàng)造性思考翡同時(shí),也帶給程序員們松散凌亂的代碼和難尋其宗的復(fù)雜流獠。軟件變更對(duì)程序員來(lái)說(shuō)往往需要付出極大的代價(jià)。直到面趣對(duì)象技術(shù)的出現(xiàn),使得入們終于可以從盡可能自然的角度計(jì)算這個(gè)世界。然焉,隨著軟件開(kāi)發(fā)技術(shù)的不斷發(fā)展,軟佟所能搐述的問(wèn)題越來(lái)越多,范圍越來(lái)越廣,變更亦越來(lái)越頻繁。可見(jiàn),軟件變更并沒(méi)有隨著軟讒開(kāi)發(fā)技術(shù)的發(fā)震兩逐漸減少。究其原因,是因?yàn)檐浖_(kāi)發(fā)所面對(duì)的問(wèn)題域從不同的角度看會(huì)呈現(xiàn)不同的側(cè)越,這是事物所固有的屬性。然麗,人們對(duì)藤題的認(rèn)識(shí)常常受限于各個(gè)方垂,不可能一下予就看到闖題豹全部。褥加上系統(tǒng)本來(lái)豹復(fù)雜性,使得各種閼題交叉在一起,軟件出現(xiàn)變
7、更也就在所難免了。在軟件開(kāi)發(fā)的過(guò)程中,往往一次小小豹變動(dòng),就會(huì)零起整個(gè)軟件系統(tǒng)熬軒然大波。在交菱出現(xiàn)之蜃再虻予應(yīng)付危局已經(jīng)晚了。那么,我們?nèi)绾蚊鎸?duì)這些變更呢實(shí)踐證明,對(duì)變更置之不理或祈望通過(guò)某種方式“凍結(jié)變更都是不切實(shí)際的。在沒(méi)有工具輔助的情況下,儀靠程序員人為地應(yīng)對(duì)變更,那是場(chǎng)災(zāi)難。然磁,緊盯糟代碼,一味對(duì)細(xì)節(jié)刨根問(wèn)底地追尋,只會(huì)使人迷失方向。必須從細(xì)節(jié)中瓣脫出來(lái),對(duì)變蔓進(jìn)行全面、有效的管理和控制。然麗,要想對(duì)軟件開(kāi)發(fā)全過(guò)程進(jìn)行全方位的綜合治理不是一件容易的事情。匿囪對(duì)象軟件開(kāi)發(fā)過(guò)程大致可以分為囂個(gè)階段:需求分析、設(shè)計(jì)、編碼、測(cè)試,而軟件變更可能出現(xiàn)在各個(gè)階段中,且各個(gè)階段出現(xiàn)變更的原因及應(yīng)
8、對(duì)變更的辦法各有不感。隨著軟件開(kāi)發(fā)方法學(xué)的發(fā)展,對(duì)變更影響的處理方法也在不斷翡發(fā)震之中。重。變更影響分板磷究現(xiàn)狀在不同的時(shí)期,入們對(duì)變更影響的研究側(cè)重點(diǎn)有所不同。有通過(guò)對(duì)控制流的追蹤從函數(shù)層來(lái)分析變更影響的傳播范圍?;有通過(guò)對(duì)矩陣進(jìn)行運(yùn)算從構(gòu)件層對(duì)需求變更影嗡的進(jìn)行分析瞎】;有依據(jù)對(duì)變更囂分類姨語(yǔ)言酶語(yǔ)法特點(diǎn)來(lái)圈定變更影響的范圍【】等等。下面就從面向過(guò)程和面向?qū)ο筮@兩個(gè)不同時(shí)期來(lái)總結(jié)一下人锏對(duì)變更影確辯題的分橋方法。.面向過(guò)程的變更影響分析在以面淘過(guò)程為主要開(kāi)發(fā)方法的畦裁,人霰就已經(jīng)注意到了變更影嚷薛潤(rùn)題。年,文獻(xiàn)】提出了種關(guān)于模型的變更影響分析技術(shù),主要觀點(diǎn)是使用數(shù)據(jù)流圖來(lái)鑒別受影響鮑定義。
9、使用毪對(duì)和予路徑。文獻(xiàn)【提滋了種控制流圖分析方法,以此來(lái)鑒別模型中受影響的控制路徑。此后,.。.和.提出了一種防火墻技術(shù),防火墻的作用是將程序變更所受影響的模塊與其他模塊分割開(kāi)來(lái)】瓦引。防火墻內(nèi)的模塊可以是與變更模塊交互的模塊,也可以是變更模塊的直接祖先或子孫。文獻(xiàn)】利用一種程序切片技術(shù)定義了一個(gè)選擇重測(cè)的集會(huì),對(duì)每一個(gè)測(cè)試用例毫,采用不同的重測(cè)技術(shù)創(chuàng)建不同的切片。并把切片技術(shù)分為四種不同的類型:執(zhí)行切片、動(dòng)態(tài)切片、相關(guān)切片和近似相關(guān)切片。利用這四種切片技術(shù)中的任何一種,為測(cè)試用例創(chuàng)建切片,如果包含一個(gè)交受的狀態(tài),那么就選擇測(cè)試用倒菱測(cè)。年,文獻(xiàn)【 提出了基于狀態(tài)模型的切片技術(shù),其研究側(cè)重于系
10、統(tǒng)測(cè)試,利用形式化語(yǔ)言基于模型測(cè)試來(lái)測(cè)試軟件系統(tǒng),利用模型進(jìn)行依賴性分析,得出的測(cè)試組件可以減少回歸測(cè)試用例。.。面向?qū)ο筌浖淖兏绊懛治鲭S著面向?qū)ο笳Z(yǔ)言的快速發(fā)展,人們對(duì)變更影響問(wèn)題又有了新的認(rèn)識(shí)。文獻(xiàn)【】將變更影響分析技術(shù)運(yùn)用于面向?qū)ο蟮沫h(huán)境中,所提出的類依賴圖、程序依賴圖分別表示數(shù)據(jù)依賴和控制依賴。這里強(qiáng)調(diào)當(dāng)一個(gè)類發(fā)生變化,通過(guò)圖確定類與類之間的繼承、多態(tài)、動(dòng)態(tài)綁定和封裝等關(guān)系。年,文獻(xiàn)將以前震予過(guò)程語(yǔ)言軟件中的防火墻概念擴(kuò)展到了面向?qū)ο蟮能浖?。該方法把變更后的類或?qū)ο笠约芭c它們交互的類或?qū)ο笕Φ椒阑饓?nèi)。依據(jù)類之間和對(duì)象之間的不網(wǎng)關(guān)系,分別構(gòu)造了類放火墻和對(duì)象防火墻。文獻(xiàn)【】提出了
11、一種類層次上的變更影響分析方法。該方法基于類防火墻,使用成員函數(shù)作為測(cè)試單元,處理與各種面向?qū)ο筇卣飨嚓P(guān)的變更影響。采用了成員依賴圖來(lái)描述類中成員的依賴關(guān)系,進(jìn)面對(duì)變更影響做出分析。文獻(xiàn)【】提出了一種基于控制依賴圖變更影響追蹤方法,它可以追蹤各相關(guān)元素的調(diào)用控制,并生成不闋的程序控制路徑。這種方法可以用來(lái)預(yù)測(cè)變更秘篩選回歸測(cè)試的測(cè)試用例。文獻(xiàn)提出了一種軟件需求變化追蹤方法,分別從基于需求信息傳播與建橫、需求變化信崽傳播路徑和需求變純信息跟蹤方法三個(gè)層面,闡述了軟件變化跟蹤的整體過(guò)程框架。通過(guò)構(gòu)建各種變化跟蹤矩陣和可達(dá)矩陣,并對(duì)這些矩陣進(jìn)行運(yùn)算,給爨了實(shí)旄變化所付懣代價(jià)高低的初步判定方法。文獻(xiàn)【
12、】通過(guò)對(duì)原子變更的定義和對(duì)面向?qū)ο蟾鞣N語(yǔ)法特點(diǎn)的分析,針對(duì)語(yǔ)言實(shí)現(xiàn)了一個(gè)變更影響的追蹤工具。最后,利用此工具對(duì)回歸測(cè)試的測(cè)試用飼進(jìn)行了篩選??傊?研究者們從不同的側(cè)面對(duì)變更類型進(jìn)行了分類,對(duì)變更影響的追蹤、控制進(jìn)行了分析研究。本文立足于面向?qū)ο筌浖_(kāi)發(fā)的整個(gè)過(guò)程,系統(tǒng)地分析了各個(gè)階段對(duì)變更的管理、追蹤方法,并在代碼層次上實(shí)現(xiàn)了對(duì)代碼變更影響的分析跟蹤。.本文的主要研究?jī)?nèi)容及意義本文的主要工作包括四個(gè)部分,首先介紹了面向?qū)ο蟮囊恍┗靖拍詈兔娲缹?duì)象軟件酶特點(diǎn),分析了霹向?qū)ο筌浖奶攸c(diǎn)對(duì)測(cè)試產(chǎn)生的影響,討論了瑟向?qū)ο筌浖男枨笞兏芾砗妥粉櫡椒?并定義了變更影響分析相關(guān)基本概念。然后,分別從類內(nèi)和
13、類間兩個(gè)層次,對(duì)變更影響的傳播機(jī)制進(jìn)行了分析,提出了類內(nèi)變更向外傳播的充要條件。接著,基于類成員圖提出了變更影響的分析算法。最后,提出了一個(gè)面向?qū)ο筌浖兏绊懛治瞿P?并結(jié)合群語(yǔ)言實(shí)現(xiàn)之。其具體的研究工作闡述如下:闡述了面向?qū)ο筌浖谛枨蟆⒃O(shè)計(jì)、編碼階段的變更處理方法。分析了需求變曼的原因,介紹了一種有效進(jìn)行變更管理的五步過(guò)程啟發(fā)式和追蹤需求變更的方法。分別闡述了分層思想和設(shè)計(jì)模式所能應(yīng)對(duì)的變更類型和處理變更的方法。提出了一種編碼階段處理變更的方法。分柝了類成員之聞依賴關(guān)系,給出了基于類成員依賴關(guān)系的交更影響分析算法。根據(jù)不同類型的類成員依賴關(guān)系,分析了相應(yīng)的依賴關(guān)系建立過(guò)程。在此基礎(chǔ)上,進(jìn)
14、一步提出了確定類成員依賴關(guān)系的算法、變更影響源和變更類型識(shí)別算法、變更影響追蹤算法。構(gòu)造了一個(gè)面向?qū)ο筌浖兏绊懛治瞿P?并結(jié)合攆語(yǔ)言的特點(diǎn),實(shí)現(xiàn)了一個(gè)變更影響分析工具。本文的研究意義:分析清楚了編碼階段的變更影響、較準(zhǔn)確地追蹤到了變有影響的對(duì)象,就打遙了需求分析的變更影響追蹤和測(cè)試用鍘的篩選的關(guān)鍵環(huán)節(jié),為最終評(píng)估需求變更的代價(jià)和回歸測(cè)試的成本鋪平了道路。保存軟件的每次變更影響分析結(jié)果,可以為軟件演化提供支持。.論文的組織結(jié)構(gòu)本文從面向?qū)ο筌浖_(kāi)發(fā)的整個(gè)過(guò)程出發(fā),分析了各個(gè)階段對(duì)軟俸變更的處理方法,并著重研究了編碼階段的變更影響分析技術(shù)。第一章緒論介紹了面向?qū)ο筌浖幕靖拍?討論了國(guó)內(nèi)終對(duì)
15、變更影響的研究成栗,分析了論文的研究意義。.第二章面向?qū)ο筌浖淖兪苡绊懛治鼋榻B了面向?qū)ο筌浖幕靖拍詈吞攸c(diǎn),以及面向?qū)ο筌浖谛枨?、設(shè)計(jì)、編碼階段的變更處理方法。第三章基于類成員依賴關(guān)系的變更影響分析算法分析了類成員之間的依賴關(guān)系,提出了基于類成員依賴關(guān)系的變更影響分析算法。算法總的來(lái)說(shuō)分為王步。第一步,季疊攢代碼,建立類或類成員之間的依賴關(guān)系。第二步,確定變更類型和變更影響源。第三部,根據(jù)變更影響源、變更類型和依賴關(guān)系確定變更影響的范圍。第圜章面向?qū)ο筌浖兏吧畏治鲈瓑畔到y(tǒng)構(gòu)造了一個(gè)面向?qū)ο筌浖a變更影響分析原型,并以此為基礎(chǔ)實(shí)現(xiàn)了一個(gè)變更影響分析工具。通過(guò)把該工具應(yīng)用于“安徽省科學(xué)
16、技術(shù)獎(jiǎng)勵(lì)網(wǎng)上申報(bào)評(píng)審管理系統(tǒng),證明該工具是有效的,對(duì)變更影響的追蹤是比較準(zhǔn)確的。第五章總結(jié)與展望總結(jié)了本文的研究?jī)?nèi)容,并對(duì)未來(lái)的工作進(jìn)行了展望。第二章面向?qū)ο筌浖淖兏绊懛治鰝鹘y(tǒng)的計(jì)算機(jī)編程方法將數(shù)據(jù)和過(guò)程分離開(kāi),但是許多分析員發(fā)現(xiàn),這種分離是不自然的。一個(gè)現(xiàn)實(shí)世賽中的對(duì)象,無(wú)論是天然的還是人造的,都有特性類似于數(shù)據(jù)和行為類似于過(guò)程,這二者是結(jié)合在一起的。從這個(gè)角度看,在計(jì)算機(jī)編程中也將數(shù)據(jù)和過(guò)程結(jié)合起來(lái)似乎是符合邏輯的。這種方法就是西向?qū)ο筌浖_(kāi)發(fā)方法。廉于面向?qū)ο筌浖哂蟹庋b、繼承、多態(tài)等良好的特性,面向?qū)ο蟮能浖_(kāi)發(fā)方法得以迅速普及。.面向?qū)ο蟮幕靖拍蠲嫦驅(qū)ο笙到y(tǒng)利用抽象來(lái)降低軟件的
17、復(fù)雜度,抽象讓人們從細(xì)節(jié)中解脫出來(lái)。藹向?qū)ο笙到y(tǒng)把過(guò)程抽象與數(shù)據(jù)抽象結(jié)合在一起。在早期的程序設(shè)計(jì)中,軟件是圍繞著過(guò)程有些語(yǔ)境稱之為函數(shù)或例程概念組織的。當(dāng)使用某個(gè)過(guò)程時(shí),程序員無(wú)需關(guān)心過(guò)程內(nèi)部執(zhí)行計(jì)算的細(xì)節(jié),瑟只需知道怎么樣調(diào)用該過(guò)程以及該過(guò)程完成什么樣的計(jì)算即可。在所謂過(guò)程式范型中,整個(gè)系統(tǒng)由一組過(guò)程組成。一個(gè)主過(guò)程調(diào)用若干其他過(guò)程,這些過(guò)程再調(diào)用其他過(guò)程。當(dāng)程序敕主要目的是使用相對(duì)簡(jiǎn)單的數(shù)據(jù)完成計(jì)算時(shí),過(guò)程式范型的效果菲常好。但是,如果許多不同的過(guò)程需要操作各自類型的數(shù)據(jù),或是每個(gè)過(guò)程都需要操作多種類型的數(shù)據(jù),使用過(guò)程式范型編寫(xiě)的系統(tǒng)就交褥毒鎏常復(fù)雜了。數(shù)據(jù)抽象有助于降低系統(tǒng)的復(fù)雜性。記錄
18、和結(jié)構(gòu)是引入的第一級(jí)數(shù)據(jù)抽象。從年代后期開(kāi)始,程序員看到了圍繞數(shù)據(jù)抽象組織程序的優(yōu)點(diǎn)。如果把所有訪問(wèn)與修改某對(duì)象類的過(guò)程都集中在一個(gè)地方,而不是讓這些過(guò)程散步在整個(gè)系統(tǒng)中,就會(huì)使系統(tǒng)簡(jiǎn)單得多。這種思想是面向?qū)ο蠓缎偷母?到了年代,它邑經(jīng)被認(rèn)為是組織大多數(shù)系統(tǒng)的最佳方法了。面向?qū)ο蠓缎褪且环N解決問(wèn)題的方法,其中所有的計(jì)算都是針對(duì)對(duì)象進(jìn)行的。對(duì)象是通常被稱為類的程序設(shè)計(jì)結(jié)構(gòu)的實(shí)例。類是一種數(shù)據(jù)抽象,它包含著作用于對(duì)象上的過(guò)程抽象。在面向?qū)ο蠓缎椭?運(yùn)行中的程序可以看成是一組對(duì)象相互協(xié)作,共同完成指定的任務(wù)。對(duì)象是在運(yùn)季亍靜軟件系統(tǒng)中的一綴結(jié)構(gòu)化數(shù)據(jù)。它可以描述任何可以將屬性和行為關(guān)聯(lián)起來(lái)的事物。
19、屬性是對(duì)象的特征,描述對(duì)象的當(dāng)前狀態(tài)。行為是對(duì)象動(dòng)作與反應(yīng)的方式,它有可能改變對(duì)象的狀態(tài)。類是面向?qū)ο蟪绦蛑袛?shù)據(jù)抽象的單元。特別是,類是一個(gè)軟件模塊,它描述并定義了一組相似的對(duì)象。所有具有相同屬性與行為的對(duì)象是同一個(gè)類的實(shí)例。作為軟件模塊,類包含了與它的對(duì)象相關(guān)的所有代碼,包括:描述類的對(duì)象如何組織的代碼,即每個(gè)對(duì)象內(nèi)部實(shí)現(xiàn)屬性的數(shù)據(jù)。過(guò)程,也稱為方法,它稍實(shí)現(xiàn)對(duì)象的行為。變量是可以存放數(shù)據(jù)的地方。每個(gè)類聲明了一個(gè)變量列表,其中的變量對(duì)應(yīng)予出現(xiàn)在每個(gè)實(shí)例中的數(shù)據(jù),這樣的變量稱作實(shí)鍘變量。屬性是用來(lái)表示對(duì)象特征的簡(jiǎn)單的數(shù)據(jù)項(xiàng)。關(guān)聯(lián)表示一個(gè)類的實(shí)例與其他實(shí)例的關(guān)系。實(shí)例變量可用于實(shí)現(xiàn)屬性或用于實(shí)現(xiàn)
20、關(guān)聯(lián)。變量與對(duì)象是完全不同的實(shí)體。在任意時(shí)刻,變量可以指向一個(gè)特定的對(duì)象,也可以根本不指向任何對(duì)象。指向?qū)ο蟮淖兞糠Q為引用。在程序執(zhí)行過(guò)程中,一個(gè)給定的變量可以指向不同的對(duì)象,或者說(shuō),一個(gè)對(duì)象可以同時(shí)被若于不同的變量引用。類所具有的變量稱為屬性。面向?qū)ο蟪绦蛑械摹胺椒ā币辉~與其他程序中的過(guò)程、函數(shù)或例程相對(duì)應(yīng)。方法是實(shí)現(xiàn)類的行為的過(guò)程抽象。操作是更高層的過(guò)程抽象,它用于描述和確定一種類型的行為,并獨(dú)立于任何實(shí)現(xiàn)該行為的代碼。不同的類可以有同名豹方法以各自的方式實(shí)現(xiàn)抽象操作。之所以使用“方法”一詞,是因?yàn)樵谟⑽闹兴暮x是“執(zhí)行一個(gè)操作的方式”。操作有時(shí)被稱為方法,雖然嚴(yán)格來(lái)說(shuō),方法被限定為操作
21、的實(shí)現(xiàn),并且不包括操作的特征。一個(gè)操佟的特征提供了名字、參數(shù)和返圈類型。操彳乍在某種意義上是特征加上方法,其中,方法是代碼部分,它描述達(dá)成操作期望的行為所需要的邏輯。如果運(yùn)行中的程序在每次調(diào)焉操作時(shí)都要確定究竟調(diào)用哪一個(gè)同名方法,就說(shuō)該操作是多態(tài)的。多態(tài)是面向?qū)ο蠓缎偷囊粋€(gè)基本特征。.謠南對(duì)象軟件的特征面向?qū)ο笳Z(yǔ)言有以下特征:標(biāo)識(shí)。標(biāo)識(shí)對(duì)象唯一性的符號(hào)。類。程序員能夠?qū)⒋a組織成類,每個(gè)類描述一組對(duì)象的結(jié)構(gòu)與功能。繼承。這種機(jī)制能將這些類構(gòu)造成繼承層次結(jié)構(gòu),子類可以從超類繼承特征。多態(tài)。通過(guò)這種機(jī)制,與類相關(guān)的幾個(gè)方法可以同名并實(shí)現(xiàn)同一個(gè)抽象操作。這就是最終的動(dòng)態(tài)綁定機(jī)制,即允許程序在執(zhí)行的過(guò)
22、程中決定調(diào)用哪個(gè)方法。抽象。建立一個(gè)抽象意味著建立對(duì)某個(gè)事物的簡(jiǎn)化表示,可以使用這種簡(jiǎn)純表示來(lái)代替原有的事物。抽象有助子處理復(fù)雜性。面向?qū)ο蟪绦蛑杏性S多抽象內(nèi)容,如:對(duì)象、類、超類等。模塊化。面向?qū)ο笙到y(tǒng)可以完全蔫一系列類來(lái)構(gòu)造,每個(gè)類負(fù)責(zé)特定的功能子集與特定數(shù)據(jù)類型相關(guān)聯(lián)的功能,而不是將這些功能散步于系統(tǒng)的許多部件之中。封裝。類就像一個(gè)容器,其中包含著它的特征變量和方法,它還定義了接口,使得只有一部分特征對(duì)外部可見(jiàn)。這就產(chǎn)生了信息隱藏。使用類的程序員不需要了解類的所有細(xì)節(jié)。德佛只需知道該類的用戶可以訪問(wèn)的特征。這簡(jiǎn)化了整個(gè)系統(tǒng),因?yàn)樵O(shè)計(jì)者和程序員需要了解的細(xì)節(jié)比使用其他方法少得多。.封裝性封
23、裝性就是將對(duì)象內(nèi)部的屬性或方法封裝在自己的對(duì)象內(nèi)部,在對(duì)象內(nèi)部可以被使用或訪問(wèn),但在對(duì)象的外部或者其它對(duì)象里不能使用封裝的成員。一般認(rèn)為對(duì)數(shù)據(jù)和過(guò)程的隱藏就是封裝。把數(shù)據(jù)和對(duì)數(shù)據(jù)操作的方法封裝在一起形成類。且類的封裝限制了對(duì)象屬性對(duì)外的透明性和辨賽對(duì)它的操作權(quán)限,這在一定程度上避免了不合理的操作并能有效地防止錯(cuò)誤的擴(kuò)散,從而改善和提高了軟件的可靠性。封裝是一種信息隱蔽技術(shù)。用戶只能見(jiàn)到對(duì)象封裝界面上的信息,對(duì)象內(nèi)部對(duì)用戶是隱蔽的。其目的在于將對(duì)象的使用者與設(shè)計(jì)者分開(kāi),使用者不必了解對(duì)象行為的具體實(shí)現(xiàn),只需用設(shè)計(jì)者提供的消息來(lái)訪闖該對(duì)象。封裝應(yīng)該具有如下幾個(gè)條件:具有一個(gè)清楚的邊界,對(duì)象私有數(shù)據(jù)
24、、內(nèi)部程序成員函數(shù)豫節(jié)都被限定在這個(gè)邊界內(nèi)。具有一個(gè)接髓,這個(gè)接口描述對(duì)象和其它對(duì)象之間的相互作用、請(qǐng)求和響應(yīng),即消息。對(duì)象內(nèi)部的實(shí)現(xiàn)細(xì)節(jié)受邊界保護(hù),其它對(duì)象不能直接修改對(duì)象所擁有的數(shù)據(jù)和代碼。另一方面,面向?qū)ο筌浖到y(tǒng)運(yùn)行時(shí)由一組協(xié)調(diào)工作的對(duì)象組成,對(duì)象具有一定的狀態(tài),測(cè)試應(yīng)涉及對(duì)象的初態(tài)、輸入、輸出、對(duì)象的終態(tài),信息隱蔽機(jī)制給對(duì)象狀態(tài)的觀察、測(cè)試用例的生成、測(cè)試點(diǎn)的選取等帶來(lái)了障礙,測(cè)試者往往要添加一些表明對(duì)象內(nèi)部狀態(tài)的函數(shù)。因此,信息隱蔽和封裝加大了測(cè)試瀚難度。.。繼承性在面向?qū)ο蟮某绦蛑?繼承性是一種概括對(duì)象共性和組織結(jié)構(gòu)的機(jī)制,使得面向?qū)ο笤O(shè)計(jì)更具自然性和直觀性,是一種有效的重用手段
25、。繼承是予類對(duì)超類特征的隱式占有。壺于繼系的作焉,一個(gè)丞數(shù)可麓被越裝在多個(gè)類幸,子類不但具有父類中的特征數(shù)據(jù)與方法,還可以對(duì)其進(jìn)行重定義。在面向?qū)ο笙到y(tǒng)中,良好的類層次結(jié)構(gòu)有助于提高軟件的可重用性。但多,一個(gè)子類有多個(gè)父類時(shí)和重復(fù)繼承重繼承,類層次圖中一個(gè)子類能通過(guò)多條路徑繼承同一父類的特征雖然使軟件的共享程度有所增加,德也顯著增加了予類的復(fù)雜性,并且會(huì)導(dǎo)致一些從功能角度很難發(fā)現(xiàn)的隱含錯(cuò)誤。總之,繼承性使測(cè)試更加復(fù)雜。繼承是逝向?qū)ο竺枋鲱愔g相似性的一個(gè)重要機(jī)制。在現(xiàn)實(shí)世界中大量的實(shí)體都存在一定程度的相似性。這種相似性可能表現(xiàn)在實(shí)體的外形上,也可能表現(xiàn)在實(shí)體的行為和內(nèi)在特性上。人們總是希望能夠
26、最大程度地利用種種相似性,不僅在管理系統(tǒng)的類的時(shí)候,在定義新熬類的時(shí)候也希望透過(guò)利用這種相似性來(lái)簡(jiǎn)化工作,并重用以前的工作。面向?qū)ο罄美^承來(lái)表達(dá)這種相似性,這使得可以剝用繼承來(lái)管理類,同時(shí)也使褥在定義一個(gè)與先前已經(jīng)定義的類相似的類時(shí)能簡(jiǎn)化類的定義工作。繼承也刻畫(huà)了類的一般性和特殊性,被繼承的類可稱為父類或超類,繼承的類可稱為子類??梢钥闯?繼承這種機(jī)制使得類的接述具有了層次結(jié)構(gòu),處于同一層次結(jié)構(gòu)中的類共享頂層類所定義的屬性和操作。因此繼承機(jī)制使類從一開(kāi)始就具有了繼承和被繼承的能力,簡(jiǎn)麗言之,就是具有了重月和被重用的能力。與繼承相對(duì)應(yīng)的是泛化這一概念。泛化是一個(gè)一般的事物稱為超類或父類和一種更
27、特殊的該類事物稱為予類或孩子之聞的關(guān)系。泛化一般用“是一種或“是一類規(guī)則來(lái)驗(yàn)證。當(dāng)一個(gè)子類多于一個(gè)類繼承時(shí),泛化關(guān)系會(huì)導(dǎo)致多繼承。.多態(tài)性多態(tài)性是指對(duì)象的某個(gè)行為具有多種形態(tài)的特性。或者說(shuō),囝一消息可以根據(jù)發(fā)送消息對(duì)象的不同采用多種不同的行為方式,就是多態(tài)的概念。運(yùn)行時(shí)系統(tǒng)能量動(dòng)必給定消息選擇合適的實(shí)現(xiàn)代碼,這給程序員提供了很多好處,如:柔性代碼、便于問(wèn)題抽象等。它的突出優(yōu)點(diǎn)是使程序具有良好的擴(kuò)展性。行為的多種形態(tài)封裝在對(duì)象內(nèi)部,外界并不知道。一個(gè)行為的多種形態(tài)從外界看來(lái)具有相同的行為名稱也繇相同的消息名,因此外界看到的只是一種行為。其體應(yīng)該執(zhí)行哪種形態(tài)由對(duì)象自己根據(jù)接收到消息里的相關(guān)參數(shù)決定
28、。僵多態(tài)性和動(dòng)態(tài)綁定所帶來(lái)麴不確定性,使褥傳統(tǒng)測(cè)試實(shí)踐中靜靜態(tài)分析方法遇到了很大的障礙。而且它們也增加了系統(tǒng)運(yùn)行中的執(zhí)行路經(jīng),加大了測(cè)試用例的選取難度和數(shù)量。多態(tài)性可以靠動(dòng)態(tài)綁定技術(shù)實(shí)現(xiàn)。當(dāng)試圖調(diào)用變量的操作時(shí),程序“即時(shí)地”決定運(yùn)行哪個(gè)方法,這個(gè)決定做出的過(guò)程稱為動(dòng)態(tài)綁定,或晚綁定。可以假定動(dòng)態(tài)綁定是按照以下過(guò)程完成豹:程序查看實(shí)際存儲(chǔ)在變量中的對(duì)象的類,如果該類含有操作的具體方法,則程序運(yùn)行這個(gè)方法。否則,它在直接超類中查看是否有方法存在。如果有,則運(yùn)行這個(gè)方法。程序重復(fù)第步,在相繼的高層超類中查找,魚(yú)到找到一個(gè)具體方法,并運(yùn)行它為止。如果沒(méi)有找到方法,則產(chǎn)生一個(gè)錯(cuò)誤。.關(guān)聯(lián)性關(guān)聯(lián)是類的實(shí)
29、例或?qū)ο笾g的一種關(guān)系,它可以是同一個(gè)類的對(duì)象之聞酶一種關(guān)系。盡管關(guān)聯(lián)是在對(duì)象酶層次上被認(rèn)知靜,但抽象表示將它顯示勢(shì)類之間的個(gè)鏈接。當(dāng)一個(gè)對(duì)象通過(guò)對(duì)另個(gè)對(duì)象的引用去使用另一個(gè)對(duì)象的服務(wù)戴操侔對(duì),兩個(gè)對(duì)象之闋便產(chǎn)生了關(guān)聯(lián)。關(guān)聯(lián)的一種更強(qiáng)的形式是聚合,也被稱為整體.部分關(guān)系。在聚合中,沒(méi)有部分整體就沒(méi)有意義,但是沒(méi)有整體時(shí),部分可能存在,也可能不存在。例如汽車與輪胎麴關(guān)系就是聚合關(guān)系。一種更強(qiáng)的聚合情況被稱為組合。在組合中,沒(méi)有部分時(shí)整體就沒(méi)有意義,沒(méi)有整體時(shí)部分也沒(méi)有意義。鍘魏久巍入鰱心臟就是綴合關(guān)系。.兩向?qū)ο筌浖枨蠓治鲭A段的變更處理需求分析是面向?qū)ο筌涽拈_(kāi)發(fā)最早開(kāi)始熬一個(gè)階段,其毯的是定義
30、清楚所要解決的問(wèn)題。因此這一階段與問(wèn)題域鄰接最緊,在這一階段出現(xiàn)的變更也最復(fù)雜。.需求變更的原因需求發(fā)生變更酶原因是多方匿的,有屬于開(kāi)發(fā)過(guò)程可激攘裁的范黧之肉熬內(nèi)部原因,也有超出需求相關(guān)者所能控制的范圍的外部原因。需求變更可能的外部騷霸包攢:首先,外部原因可能使悶題本身發(fā)生了變化。飪何軟件系統(tǒng)的開(kāi)發(fā)和部署都是有目的的,即期望它能解決軟件加強(qiáng)型系統(tǒng)中的某個(gè)或某些問(wèn)題。如果解決煞聞?lì)}發(fā)生了交傀,也就是系統(tǒng)熬霧的發(fā)生了變化,當(dāng)然需求提供者的期鋈也必然發(fā)生變化。問(wèn)題的變化可能是由于社會(huì)經(jīng)濟(jì)情況發(fā)生了變化,也可能是出于?;笠?guī)章發(fā)生了變化,還霹能惠予市場(chǎng)情況和客戶壤好發(fā)生了交純,等等。其次,需求提供者的意
31、圖可能發(fā)生了變化。即關(guān)于待開(kāi)發(fā)系統(tǒng)要做什么,需求提供者改變了原來(lái)的想法。發(fā)生這種情況,可能是因?yàn)樾枨蟊旧砭褪切枨筇峁┱叩南敕?麗想法總是易變的,也可能燕囂雋箍稍的觀念會(huì)隨著社會(huì)經(jīng)濟(jì)情況、政府規(guī)章、或者市場(chǎng)情況等的改變而改變。同時(shí),隨著對(duì)系統(tǒng)意圖的變能,霹畿涉及戇需求穗關(guān)者也發(fā)生了變能,囂來(lái)的需求提供者不褥是現(xiàn)在的需求相關(guān)者。而原來(lái)不屬于需求相關(guān)者范圍的人進(jìn)入了需求相關(guān)者的行列,前一組人和羼一組人很可能有截然不嘲的想法。第三,外部環(huán)境的變化繪待開(kāi)發(fā)系統(tǒng)帶來(lái)了新酶約束或新的視會(huì)。比如,環(huán)境變化的一個(gè)最明顯的例子就是硬件或軟件系統(tǒng)的升級(jí)。如果以后的計(jì)算機(jī)比如量子計(jì)算祝要遠(yuǎn)遠(yuǎn)超越現(xiàn)在計(jì)算視的計(jì)算筏力,
32、很多現(xiàn)在不能實(shí)現(xiàn)的算法或許就變得容易實(shí)現(xiàn),因此對(duì)什么是可滿足的需求就有另外的說(shuō)法。第四,在當(dāng)蘺系統(tǒng)的周圈鲞現(xiàn)了新的系統(tǒng)。因?yàn)楣胍粋€(gè)新系統(tǒng),會(huì)弓起對(duì)當(dāng)前系統(tǒng)本身的需求發(fā)生變化,這是因?yàn)橛谛孪到y(tǒng)的引入引起了組織行為的變化,舊的工作方式已經(jīng)不再適合,出現(xiàn)對(duì)新的信息類型的需要,因此對(duì)系統(tǒng)的新的需求不可避免地會(huì)出現(xiàn)。當(dāng)然,除了這些外部因素導(dǎo)致的需求變化之外,還有很多一些變化來(lái)源予系統(tǒng)開(kāi)發(fā)小組內(nèi)部和系統(tǒng)開(kāi)發(fā)過(guò)程之中。比如,在初始需求采集的過(guò)程中,沒(méi)有在正確的時(shí)間找到正確的人問(wèn)正確的問(wèn)題,因而導(dǎo)致需求描述本身禽有這樣那樣的問(wèn)題。例如,需求抽取時(shí)沒(méi)有囊括所有的需求相關(guān)者,提的問(wèn)題不全或者不正確,等等。這些問(wèn)
33、題都可以歸結(jié)為沒(méi)有理解關(guān)于系統(tǒng)的真正需求。要避免這種情況引起的需求變化,需要有一個(gè)合理的需求理解過(guò)程。又如,沒(méi)有采取有效的過(guò)程來(lái)幫助管理不斷增加的需求變化。鍘如,曾經(jīng)試圖“凍結(jié)攤需求,即不允許改,從而使得需求變化越積越多,直到給需求工程師和需求提供者帶來(lái)無(wú)法避免的需求崩潰的壓力,導(dǎo)致返工。即使一切都沒(méi)有問(wèn)題,設(shè)計(jì)的時(shí)候也會(huì)弓入新的需求,從而帶來(lái)需求的必要的變化。這對(duì)軟件開(kāi)發(fā)系統(tǒng)來(lái)說(shuō)是好的變化。避免這種變化的發(fā)生可能會(huì)喪失設(shè)計(jì)過(guò)程中由設(shè)計(jì)決策或技術(shù)變化帶來(lái)昀創(chuàng)新能力。.需求變更管理及追蹤實(shí)際項(xiàng)舀實(shí)施中一般有兩種常用的方法來(lái)管理變更。第一種方法包含一些變更管理的基本原則和策略,實(shí)施過(guò)程中則主要基于
34、需求工程師在需求管理中的經(jīng)驗(yàn)。第二種方法提供一定的手段來(lái)幫助需求工程師實(shí)施變更的管理。關(guān)于變更管理,中給出了有效進(jìn)行變更管理的過(guò)程啟發(fā)式,主要包括如下個(gè)步驟:步驟:認(rèn)識(shí)到特定需求的改變是不可避免的,為這個(gè)改變制定計(jì)劃。當(dāng)改變需求的請(qǐng)求出現(xiàn)時(shí),需求工程師必須首先站在改變是不可避免而且是必要的這個(gè)立場(chǎng)上來(lái)認(rèn)識(shí)這個(gè)改變,并置割定褶應(yīng)的汁劃來(lái)準(zhǔn)備管理這個(gè)改變。關(guān)于改變的合理性問(wèn)題,也要首先承認(rèn)任何來(lái)囪需求相關(guān)者的現(xiàn)實(shí)和潛在需要都是合理的,除毒有明顯和充分的否定理由。步驟:為需求文檔制定基線。在需求文檔的每次迭代周期中,都要為需求文檔建立基線,也就是說(shuō),固化需求文檔的版本,然后利用需求文檔版本控制手段去
35、管理需求文檔的發(fā)布及需求文檔中需求條款的增加、刪除和更新等。建立需求文檔的基線,使得更容易識(shí)別和管理新需求,對(duì)新需求的請(qǐng)求可以與現(xiàn)有的基線版本進(jìn)行琵較,從蒸找到新需求的位置,以及它可能弓起沖突的地方,這樣可以更好地幫助需求工程師判斷目前是否可以接受這個(gè)變更。這樣,可以使變更管理以一種有序、有效和及時(shí)響應(yīng)的方式進(jìn)行,讓需求提供者更愿意合作。當(dāng)然,能夠有序有效地進(jìn)行需求改變并不意味著我們可以隨意地接受任何的交曼請(qǐng)求。對(duì)飪俺項(xiàng)霹來(lái)說(shuō),需求赫變更數(shù)超過(guò)了一定盼限度,都會(huì)導(dǎo)致當(dāng)前系統(tǒng)開(kāi)發(fā)的失敗。步驟:建立單一的渠遭來(lái)控制需求艙變位。任簿對(duì)鬟求變更的請(qǐng)求都通過(guò)網(wǎng)一個(gè)渠道提交,經(jīng)過(guò)兩樣的影響分析,并統(tǒng)一做出
36、是否采納這個(gè)變化的決定。在任何情況下,系統(tǒng)需求的變更都要等到這個(gè)變更被變更管理機(jī)制確定為“富方靜的才起饞震。步驟:使用變更控制系統(tǒng)來(lái)捕捉變蔓。在某種意義上,外部的和客戶請(qǐng)隸的變更更容易獲褥,因?yàn)檫@種變傀斃較容易判別,黑頊墨警理或變更控鍘麓方法也比較好找到這些變更將影響的地方。僵在軟件開(kāi)發(fā)過(guò)程中,變更的類型是多種多樣的,有與需求相關(guān)的,也有針對(duì)代碼和設(shè)計(jì)方案的,很難制定統(tǒng)一的標(biāo)準(zhǔn)來(lái)判斷哪些變更需要考慮,哪些變更必綏忽略。步驟曾指密褥一個(gè)通道來(lái)接納變更將能更好地支持變更的管理,為了管理和捕獲這些變更,在這個(gè)通道上設(shè)置了一個(gè)交受控制系統(tǒng)來(lái)識(shí)捌、評(píng)佶翻決定最終需要采納的變曼,將是一種有效途徑。圖.示意
37、了這個(gè)變更控制系統(tǒng)的作用。被批圖變更控制和變更請(qǐng)求流變更控剿系統(tǒng)的功能包括:評(píng)吉變更對(duì)系統(tǒng)開(kāi)發(fā)酶開(kāi)銷積系統(tǒng)功麓性靜影響;分析變更對(duì)客戶和其他外部需求相關(guān)者的影響;研究變更對(duì)破壞系統(tǒng)的穩(wěn)定性的可能。步驟:層次訛遮管理變更。沒(méi)經(jīng)過(guò)分挺和管理麴變更可靛會(huì)帶寒閼題,因?yàn)槿绻枨笫窍嗷リP(guān)聯(lián)的話,需求的變更會(huì)引起連鎖反應(yīng)。層次化地管理需求變更,批臻變曼也需要扶最底層的需求變更開(kāi)始,將這些變更帶來(lái)戇對(duì)上一層的需求的影響結(jié)合到上一層的需求變化一起進(jìn)行分析和影響評(píng)估,直到所有的變更都考慮到。下面介紹的需求追蹤鏈可以用來(lái)支持這種層次的變更管理。必須說(shuō)明的是,需求翡變更開(kāi)銷是很大,焉且開(kāi)發(fā)越往前走,變更的開(kāi)錈越大。
38、因而在實(shí)際項(xiàng)目管理中,對(duì)每個(gè)變更請(qǐng)求都需要慎重對(duì)待,必須從技術(shù)可行性、對(duì)其他部分的影響以及開(kāi)銷上進(jìn)行綜合考慮。另外,變更管理涉及需要跟蹤大量跨越較長(zhǎng)時(shí)聞段的相互聯(lián)系的信息,沒(méi)有工具的支持,變更管理可能很難成功。這就需要對(duì)需求進(jìn)行跟蹤。讓需求之聞、需求和設(shè)計(jì)之闖具有可追蹤關(guān)系有兩個(gè)方面的含義:第一,開(kāi)發(fā)過(guò)程中的兩個(gè)或多個(gè)制晶之間能夠建立某種程度上的關(guān)系,特別是前件.后件關(guān)系、主.從關(guān)系等,從褥發(fā)現(xiàn)制品變更的影響;第二,可以建立軟件制品中各個(gè)元素與其存在理由之聞的關(guān)系。其中,第一方面定義是關(guān)于項(xiàng)目元素的后續(xù)關(guān)系,第二方面定義希望保證沒(méi)有多余的項(xiàng)譽(yù)元素存在。為了將這些元素關(guān)聯(lián)起來(lái),必須零入第三個(gè)元素
39、,用于將上述兩個(gè)元素關(guān)聯(lián)起來(lái),這個(gè)元素就是可追蹤關(guān)系,也就是說(shuō),可追蹤關(guān)系是兩個(gè)元素之聞的關(guān)系。值得聲唆的是,這里元素鮑說(shuō)法比較籠統(tǒng),它可以是軟件開(kāi)發(fā)過(guò)程中的中間制品,也可以是這些中間制品中的一部分或者一個(gè)條目。關(guān)系也有不同的類型,如由?滿足、是?部分、從?導(dǎo)出等。這些關(guān)系隱含了一種依賴關(guān)系,這個(gè)依賴關(guān)系說(shuō)明一個(gè)元素的變更可能會(huì)影響另一個(gè)元素。這種項(xiàng)霹元素之間的依賴關(guān)系有綴多種,表.繪出了常見(jiàn)的六種。表.可追蹤性信息的類型可追蹤性類型 描述需求.源可追蹤性 把需求和說(shuō)明需求入或文檔鏈接起來(lái),記錄需求源需求.理由可追蹤性把需求和為骨么說(shuō)驥該需求的描述鏈接起來(lái),記錄需求理由需求.需求可追蹤性 把需
40、求和其他要依賴于該需求的需求鏈接起來(lái),記錄需求之間的依賴關(guān)系需求.體系結(jié)構(gòu)可追蹤 把需求和實(shí)現(xiàn)該需求的子系統(tǒng)鏈接起來(lái),這對(duì)子性系統(tǒng)由不同的開(kāi)發(fā)奎組開(kāi)發(fā)來(lái)說(shuō)特別重要需求.設(shè)計(jì)可追蹤性 把需求和用來(lái)實(shí)現(xiàn)該需求的系統(tǒng)中的特定組件鏈接起來(lái),這些組件可熊是軟件或者硬牛組件,對(duì)于關(guān)鍵系統(tǒng)來(lái)說(shuō)維護(hù)這種類型的信息特別重要需求.界面可追蹤性 把需求和用于提供該需求的外部系統(tǒng)界面鏈接起來(lái),應(yīng)該維護(hù)對(duì)其他系統(tǒng)有很高依賴性的信息鼙前有三種基本的技術(shù),可以用予維護(hù)可追蹤性信息,它們是可追蹤性表、可追蹤性列表和自動(dòng)化可追蹤性鏈接。可追蹤性是一個(gè)頊量元素前后參照的矩陣,表中的條基表示在行項(xiàng)基和列項(xiàng)目之間的某種可追蹤性的鏈接
41、??勺粉櫺员砀耧@示了需求之間或者需求和設(shè)計(jì)組件之間的關(guān)系,需求在水平和垂直軸上列如,需求之間的關(guān)系標(biāo)在表格的單元中。例如,如栗行所代表的需求依賴予到、和所代表的需求,則應(yīng)該在表的,和,單元格上標(biāo)記記號(hào)。這樣順著一列讀,可以看到依賴于這一列所代表的需求的所有需求,順著一行讀,可以看翻這一行所代表的需求依賴的所有需求。表.顯示了一個(gè)簡(jiǎn)單的含六個(gè)需求的系統(tǒng)的可追蹤性表格的例子。表??勺粉櫺员硇?臻幸 幸臻 毒木可追蹤性列表是可追蹤性表的簡(jiǎn)化形式,對(duì)每個(gè)需求描述來(lái)說(shuō),維護(hù)一個(gè)或多個(gè)相關(guān)霈求的標(biāo)示符的捌表。表.給出了表示表.中的依賴性的哥追蹤性列表。表可追蹤性列表需求 依賴, 自動(dòng)化可追蹤性鏈接指相應(yīng)的
42、數(shù)據(jù)庫(kù)來(lái)包含可追蹤性信息,可追蹤性鏈接在數(shù)據(jù)庫(kù)記錄中作為一個(gè)字段。這樣可以管理大量的需求之聞的依賴關(guān)系,并可以利用數(shù)據(jù)庫(kù)系統(tǒng)來(lái)維護(hù)和操作這樣的需求依賴關(guān)系庫(kù),如快速查詢、提取相關(guān)的需求和需求依賴關(guān)系,自動(dòng)生成可追蹤性表和列表等。.面向?qū)ο筌浖O(shè)計(jì)階段的變更處理如果說(shuō)需求分析是與決定需要做什么相關(guān)的,那么設(shè)計(jì)就是與如何實(shí)現(xiàn)穗關(guān)。在軟件設(shè)計(jì)階段的變更主要包括:軟件運(yùn)行環(huán)境的變更、開(kāi)發(fā)工具的變更、要勰決的聞?lì)}的變更。這一階段應(yīng)對(duì)變受的焦度有兩種,即:利焉分層思想在體系結(jié)構(gòu)上隔離、封裝變更;利用設(shè)計(jì)模式對(duì)某一領(lǐng)域的具體問(wèn)題進(jìn)行設(shè)計(jì)。下西分別論述之。.分層體系結(jié)構(gòu)在一個(gè)分層或?qū)哟误w系結(jié)構(gòu)中,系統(tǒng)被分為層
43、,這樣每個(gè)層執(zhí)行特定的一種功能并通過(guò)接口與和它鄰接的層通信。給定的一個(gè)層只需要關(guān)心它自己的實(shí)現(xiàn),其他層的接口保證了它們的功能。常見(jiàn)的層次體系結(jié)構(gòu)有:兩層系統(tǒng)結(jié)構(gòu)、三層體系結(jié)構(gòu)和層體系結(jié)構(gòu)。兩層體系結(jié)構(gòu),或客戶一一服務(wù)器系統(tǒng)結(jié)構(gòu),包括兩個(gè)層:應(yīng)用層也稱前端和數(shù)據(jù)層也稱后端。應(yīng)用層有一個(gè)圖形純用戶界面和應(yīng)用邏輯,它篇本地驅(qū)動(dòng)程序或支持?jǐn)?shù)據(jù)訪問(wèn)的中間件和一個(gè)數(shù)據(jù)庫(kù)通信。數(shù)據(jù)庫(kù)安裝在服務(wù)器上,而且是被共享的。但是,應(yīng)用程序需要被單獨(dú)安裝在客戶機(jī)上。這秭體系結(jié)構(gòu)對(duì)簡(jiǎn)單應(yīng)用程序是足夠的,但是對(duì)復(fù)雜的應(yīng)用程序,有以下問(wèn)題:客戶端厚重。對(duì)應(yīng)用程序的任何修改都需要在各個(gè)客戶端重掰安裝。兩層應(yīng)蔫程序通常用專有的技
44、術(shù)實(shí)現(xiàn),麗專有的技術(shù)不能綴好的集成。兩層體系結(jié)構(gòu)只適合比較穩(wěn)定的系統(tǒng),不適合經(jīng)常變化的系統(tǒng)。三層體系結(jié)構(gòu)把兩層體系結(jié)構(gòu)的應(yīng)用層細(xì)分為表示層和業(yè)務(wù)規(guī)則層。表示層處理用戶界面,表示層可以用各種程序設(shè)計(jì)語(yǔ)言開(kāi)發(fā),如、等。業(yè)務(wù)規(guī)則層不僅包含業(yè)務(wù)邏輯,還包含與一端的表示層和另一端的數(shù)據(jù)庫(kù)層交互的類和構(gòu)件。褥這些類和構(gòu)俘可以采用一種非專有的標(biāo)準(zhǔn),斃如基于/的體系結(jié)構(gòu)。在三層體系結(jié)構(gòu)中,一些嵌入在存儲(chǔ)過(guò)程中的邏輯可以被轉(zhuǎn)移到中聞層并仍被共享,麗且可以用一種菲專有的語(yǔ)言編寫(xiě),以便最小化對(duì)一種特定技術(shù)的依賴。三層體系結(jié)構(gòu)具體以下優(yōu)點(diǎn):該體系結(jié)構(gòu)是松散耦含的??梢詫?duì)一個(gè)層進(jìn)行修改,只要接口結(jié)構(gòu)不變,變更就應(yīng)該引起
45、對(duì)系統(tǒng)中其它層的最少修改。該體系結(jié)構(gòu)導(dǎo)致的不僅是數(shù)據(jù)的復(fù)用,而且是業(yè)務(wù)規(guī)則的復(fù)用。處理負(fù)載遍布在多個(gè)計(jì)算機(jī)上,因此,系統(tǒng)更加可伸縮。三層體系結(jié)構(gòu)可以很好的應(yīng)對(duì)軟件環(huán)境的變更、舞發(fā)工具的變曼和數(shù)據(jù)庫(kù)的變更。下圖所示的應(yīng)用三層體系結(jié)構(gòu)就可以很好的處理這些變更。代碼數(shù)據(jù)庫(kù)圖三層體系結(jié)構(gòu)圖這里的表現(xiàn)層、業(yè)務(wù)邏輯層和數(shù)據(jù)連接層最終都會(huì)用代碼表示。每層都是獨(dú)立的,只要不改變接口,對(duì)某一層的改變不會(huì)影響到其他層。例如這里的表現(xiàn)層就可以用、.組合或、的組合來(lái)實(shí)現(xiàn),所要改變的只是表現(xiàn)層,而不會(huì)改變業(yè)務(wù)邏輯層,從而可以很好的應(yīng)對(duì)開(kāi)發(fā)工具的變更。如果把數(shù)據(jù)庫(kù)調(diào)整為數(shù)據(jù)庫(kù),那么,只要改變數(shù)據(jù)連接層,而不用改變業(yè)務(wù)邏輯
46、層。如果所要解決的問(wèn)題很復(fù)雜,本身就需要分層隔離變化,那么,可以把三層的原理擴(kuò)展到一種更松散耦合的層體系結(jié)構(gòu)的應(yīng)用中。這在現(xiàn)在更適宜,因?yàn)闉g覽器通常是第一層,而這個(gè)薄層的廣泛的可獲得性能夠提供在任何時(shí)候從任何地點(diǎn)對(duì)一個(gè)系統(tǒng)的訪問(wèn)。一般而言,更多的層將提供一種更可伸縮的應(yīng)用并最小化修改系統(tǒng)的一部分的所產(chǎn)生的漣漪效應(yīng)。.設(shè)計(jì)模式應(yīng)對(duì)變更的處理方法設(shè)計(jì)模式是在年代,由 等人,從建筑設(shè)計(jì)領(lǐng)域引入到計(jì)算機(jī)科學(xué)里去的。是對(duì)軟件設(shè)計(jì)中普遍存在的各種問(wèn)題所提的解決方案。設(shè)計(jì)模式并不是直接用來(lái)完成代碼編寫(xiě)的,而是描述在各種不同情況下,解決問(wèn)題的一種方案。模式是在特定上下文中遇到的一般性問(wèn)題的可重用解決方案的概要
47、。設(shè)計(jì)的許多部分在許多不同的系統(tǒng)或子系統(tǒng)中重復(fù)出現(xiàn),只是有些小的改動(dòng),設(shè)計(jì)的這些熏現(xiàn)方面稱為設(shè)計(jì)模式。表述一個(gè)軟件設(shè)計(jì)模式的格式各有不同,常用的描述模式的格式大致包含竣下部分;模式名:每一個(gè)模式都有自融的名字,模式的名字使得我們可以方便地討論設(shè)計(jì)。閶題:解釋耍克服主要困難的兩旬話。上下文:模式應(yīng)用的般環(huán)境。約束;解決閽題對(duì)要考慮豹關(guān)系或影響。其中毽括評(píng)嵇好熬解決方案熬標(biāo)準(zhǔn)。解決方案:在給定上下文串,建議使髑的解決溺題豹方法。解決方案被豫?!捌胶饧s束拜。換旬話說(shuō),解決方案具有良好的優(yōu)勢(shì)組合,同時(shí)很少有缺點(diǎn)。別名:一個(gè)模式可以有超過(guò)一個(gè)以上的名稱。動(dòng)撬;一個(gè)模式應(yīng)該應(yīng)震在哪些場(chǎng)合下的描述。參與者:
48、一個(gè)模式用到的類濺物件的清單和它們?cè)谠O(shè)計(jì)中扮演的角色。合作:攢述一個(gè)模式里類與物釋閹鶼互動(dòng)。相關(guān)模式:與本模式相似的解決方案。它們可能表示變異、擴(kuò)展或特殊情況。反模式:在此上下文孛很差或根本不起作蔫的模式。纛該解釋它被拒絕鼗原因。反模式在其他關(guān)聯(lián)環(huán)境中可能是有效的解決方案,也可能是永遠(yuǎn)無(wú)效的。駑的模式應(yīng)該盡可麓通耀,包含那些已經(jīng)被證黌夔夠有效察決指定上下文中問(wèn)題的解決方案。模式必須用易于理解的方式來(lái)描述,這樣人們能夠確定在什么時(shí)候使用以及如何使用它。模式通常應(yīng)該用麓單的圖來(lái)描述,并且使用敘述性的文字來(lái)書(shū)寫(xiě)。研究模式就是學(xué)習(xí)穩(wěn)入經(jīng)驗(yàn)昀一種有效途徑。設(shè)計(jì)模式主要思想是:使不穩(wěn)定依賴于相對(duì)穩(wěn)定、具體
49、依賴予相對(duì)抽鼠,避免緊藕合,以增強(qiáng)較彳孛設(shè)計(jì)應(yīng)對(duì)變更熬能力。設(shè)計(jì)模式處理變更的基本方法是:哪里有變化就在哪里隔離、封裝變化。.面向?qū)ο筌涶峋幋a除段的交受處理編碼是對(duì)設(shè)計(jì)的實(shí)現(xiàn)。由于設(shè)計(jì)階段已經(jīng)對(duì)可能出現(xiàn)的變更進(jìn)行了封裝、隔離,所璦,對(duì)編碼階段出現(xiàn)的變更愁理主要集中在變更影嗡夔追蹤上。這也是本文的重點(diǎn)。這里先介紹一些基本概念和分析變更影響的基本方法,詳細(xì)內(nèi)容在愛(ài)藉的章節(jié)再介紹。.變熙影響的基本概念及意義影響是一個(gè)事物對(duì)另一事物懿效果或者痍跡,影響可以被看作是一個(gè)變更結(jié)果。影響分析是用來(lái)確定變更范圍,它是制定進(jìn)度計(jì)劃和成本估算一個(gè)基礎(chǔ)。軟件變更影響分析是評(píng)估如果做了一個(gè)指定的變更,此變更將在軟件中
50、產(chǎn)生什么樣影嫡。軟搏交更影響分櫥瞧就是評(píng)徐一個(gè)變更黯系統(tǒng)箕德部籜熬影璃過(guò)程。它能確定變更的范圍和復(fù)雜性。對(duì)變更在系統(tǒng)中產(chǎn)生影響進(jìn)行定量和定性分析是變更影響分櫥涉及熬主要濾客。變蔓影響的概念提掇了很多年,值沒(méi)有形成一個(gè)統(tǒng)一的定義。關(guān)于變更影響分析有多種定義:“評(píng)估涉及變燮的多種風(fēng)險(xiǎn),包括資源,成本和進(jìn)度。、“評(píng)價(jià)一個(gè)攮凌孛添?xiàng)H锶锝桓到y(tǒng)中另一個(gè)摸塊翁影璃,它麓確定交囂蕊范圍和提供變更復(fù)雜性的度量。、“鑒別一個(gè)變更潛在的邏輯關(guān)系,或者評(píng)砉一個(gè)變更完成蘑還有哪些囂要變更。辨,毽饌都強(qiáng)讕薄影確的浮癸。變更對(duì)系統(tǒng)帶來(lái)的影響結(jié)采是多種的,它們可以分類成邏輯影響和執(zhí)行影響。變更影響分析也能用來(lái)鑒別程序代
51、碼的質(zhì)量。如果一個(gè)過(guò)程或這個(gè)類巾毒大量戇丞數(shù)被系統(tǒng)麓英毽大部分雩瘸,毽虢是諼系統(tǒng)萁毽鷯綴多部分依賴予它,那么它的變更就很可能影響到與它相關(guān)所有其他部分。這從一個(gè)層面反應(yīng)了模塊之聞煞褒侖毪霰強(qiáng),代羈震量并不好。變更影響分析的結(jié)果能用來(lái)做變疆計(jì)劃,變更執(zhí)行,確定軟件變更類型,跟蹤變更產(chǎn)生漿影嚷。在變更執(zhí)行翦,那些受到聞接影響的變更部分,使鼐燮更執(zhí)行惹來(lái)會(huì)更精確些。這樣一束,禿論是在較襻開(kāi)發(fā)階段或者燕軟件維護(hù)酚段,都能圈定變更影響的范豳。.原予變更及其關(guān)系原予變更【】楚在蕊向?qū)γ绍浖恼Z(yǔ)法層翅上必了追蹤源鶴的變更蕊定義鮑一綴便予分拼鰉、挺亞獨(dú)立熬、不霹再分熬操作麓集會(huì),詳冤表.。萁交菱對(duì)象就是原子變更的操作對(duì)象,即:組成類的各種元素,如類名、方法名等。定義漬楚暴子變更是分褥交雯禳戇關(guān)系蕊基磁,表.原子變更分類寢驥子變 燮更名囂 含義懿添加一個(gè)空類鑫 麟豫令空簧 添加一個(gè)空方法基棼 熬驟一令塞方法修改方法體修改方渡的簽褒囂 添黧一令溱鏈刪除一個(gè)屬性基垂 蘩致爨憨耪建琵定義修改靜態(tài)屬性柳始化定義添藤一個(gè)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 豆腐供貨合同2025年度版6篇
- 2025年高科技園區(qū)配套設(shè)施建設(shè)與運(yùn)營(yíng)合同4篇
- 二零二五年度玻璃鋼儲(chǔ)罐工程環(huán)保驗(yàn)收與評(píng)估合同3篇
- 二零二五版大宗商品居間合同交付與物權(quán)轉(zhuǎn)移詳細(xì)約定3篇
- 二零二五版兼職會(huì)計(jì)財(cái)務(wù)報(bào)表編制合同2篇
- 二零二五版保安人員勞務(wù)派遣及反恐演練服務(wù)合同3篇
- 2025年版旅游產(chǎn)品銷售合同模板
- 二零二五年現(xiàn)代農(nóng)業(yè)技術(shù)推廣聘用合同2篇
- 二零二五版國(guó)家重點(diǎn)水利項(xiàng)目電纜敷設(shè)與防汛保障合同3篇
- 二零二五年度游戲服務(wù)器租賃及性能優(yōu)化合同范本3篇
- 福建省福州市延安中學(xué)2023-2024學(xué)年八年級(jí)上學(xué)期期末物理模擬試卷+
- 2024年度醫(yī)院肝膽外科實(shí)習(xí)生帶教計(jì)劃課件
- 微機(jī)原理與接口技術(shù)考試試題及答案(綜合-必看)
- 勞務(wù)投標(biāo)技術(shù)標(biāo)
- 研發(fā)管理咨詢項(xiàng)目建議書(shū)
- 轉(zhuǎn)錢委托書(shū)授權(quán)書(shū)范本
- 一種配網(wǎng)高空作業(yè)智能安全帶及預(yù)警系統(tǒng)的制作方法
- 某墓園物業(yè)管理日常管護(hù)投標(biāo)方案
- 蘇教版六年級(jí)數(shù)學(xué)上冊(cè)集體備課記載表
- 內(nèi)蒙古匯能煤電集團(tuán)有限公司長(zhǎng)灘露天煤礦礦山地質(zhì)環(huán)境保護(hù)與土地復(fù)墾方案
- 22S702 室外排水設(shè)施設(shè)計(jì)與施工-鋼筋混凝土化糞池
評(píng)論
0/150
提交評(píng)論