版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第四章 課程設(shè)計(jì):面向?qū)ο笙到y(tǒng)分析與設(shè)計(jì)實(shí)踐,程序設(shè)計(jì)課程,應(yīng)該使大學(xué)生具有軟件工程的概念和軟件開(kāi)發(fā)的基礎(chǔ)知識(shí)。 本章介紹有關(guān)軟件工程、軟件生命期各階段的工作任務(wù)、軟件的質(zhì)量標(biāo)準(zhǔn)等內(nèi)容。介紹面向?qū)ο筌浖こ痰乃枷牒头椒?,使用UML進(jìn)行面向?qū)ο蟮南到y(tǒng)分析和設(shè)計(jì)。 課程設(shè)計(jì)采用研究型學(xué)習(xí)方法,由學(xué)生在教師指導(dǎo)下分組自選題目,調(diào)研并自定內(nèi)容。課程設(shè)計(jì)強(qiáng)調(diào)參與開(kāi)發(fā)的全過(guò)程,而不是最后的結(jié)果。,第四章 課程設(shè)計(jì):面向?qū)ο笙到y(tǒng)分析與設(shè)計(jì)實(shí)踐,4.1 軟件的定義,4.5 軟件測(cè)試,4.4 UML面向?qū)ο蟮南到y(tǒng)分析與設(shè)計(jì),4.3 UML面向?qū)ο笙到y(tǒng)的模型,4.2 軟件工程,4.6 研究型學(xué)習(xí)與實(shí)施方法,4.1
2、 軟件的定義,軟件是程序、相關(guān)文檔及保證程序正確執(zhí)行的配置數(shù)據(jù)的總稱。 軟件系統(tǒng)通常由一些各自獨(dú)立的程序、用于安裝程序的配置文件、描述系統(tǒng)結(jié)構(gòu)的系統(tǒng)文檔及說(shuō)明如何使用系統(tǒng)的用戶文檔等組成。,4.2 軟件工程,4.2.4 軟件開(kāi)發(fā)模型,4.2.3 軟件的質(zhì)量標(biāo)準(zhǔn),4.2.2 軟件生命期,4.2.1 軟件危機(jī)和軟件工程的提出,4.2.1 軟件危機(jī)和軟件工程的提出,1968年功能強(qiáng)大的第三代計(jì)算機(jī)硬件系統(tǒng)剛剛產(chǎn)生,之前被認(rèn)為不現(xiàn)實(shí)的計(jì)算機(jī)應(yīng)用突然變得切實(shí)可行,用戶提出的軟件要求比以往任何的軟件系統(tǒng)更大更復(fù)雜;采用傳統(tǒng)軟件開(kāi)發(fā)方法,開(kāi)發(fā)費(fèi)用遠(yuǎn)遠(yuǎn)超出預(yù)算,軟件性能和可靠性差,維護(hù)困難,硬件成本降低而軟件
3、成本快速上升,軟件開(kāi)發(fā)陷入了危機(jī),被稱為軟件危機(jī)。 1993年IEEE給了軟件工程一個(gè)科學(xué)的定義:將系統(tǒng)的、規(guī)范化的、可度量的工程化方法應(yīng)用于軟件開(kāi)發(fā)、運(yùn)行和維護(hù)的全過(guò)程以及所采用方法的研究。 軟件工程由方法、工具和過(guò)程三要素組成。 軟件工程方法是開(kāi)發(fā)軟件的技術(shù)手段,它支持軟件需求分析、軟件設(shè)計(jì)、編碼、測(cè)試和維護(hù),支持軟件開(kāi)發(fā)的組織管理及預(yù)算。,4.2.1 軟件危機(jī)和軟件工程的提出,軟件工具自動(dòng)或半自動(dòng)地支持軟件開(kāi)發(fā)和管理?,F(xiàn)在有很多種類繁多的軟件工具箱,支持不同類型的軟件項(xiàng)目開(kāi)發(fā)的全過(guò)程。近年來(lái),又出現(xiàn)了集成化的計(jì)算機(jī)輔助軟件工程(CASE)環(huán)境,包含了開(kāi)發(fā)軟件的軟、硬件工具和軟件工程數(shù)據(jù)庫(kù)
4、。 軟件工程必須有過(guò)程的管理與控制,這一過(guò)程是貫穿于軟件開(kāi)發(fā)的所有環(huán)節(jié),包括軟件開(kāi)發(fā)的質(zhì)量、進(jìn)度和成本的評(píng)估、管理和控制,包括人員組織、計(jì)劃完成情況的跟蹤、財(cái)務(wù)開(kāi)支的控制和質(zhì)量保證等等。 總之,軟件工程采用系統(tǒng)的、有組織的方法進(jìn)行工作,這是生產(chǎn)高質(zhì)量軟件的最有效方法。,4.2.2 軟件生命期,軟件生命期(Software Life Cycle)指在軟件開(kāi)發(fā)過(guò)程中進(jìn)行的各種活動(dòng)的序列。軟件生命期的活動(dòng)包括: (1) 可行性分析(Feasibility),決定所提出的軟件是否值得開(kāi)發(fā),軟件產(chǎn)品是否有潛在市場(chǎng); (2) 需求分析(Requirements),決定待開(kāi)發(fā)的軟件應(yīng)有的功能。需要與用戶交流
5、,啟發(fā)用戶描述他們的需要,得到軟件的用戶需求,然后進(jìn)行問(wèn)題范圍分析,決定當(dāng)前問(wèn)題所涉及的任務(wù)和結(jié)構(gòu); (3) 項(xiàng)目規(guī)劃(Project Planning),決定如何開(kāi)發(fā)軟件,如需要花費(fèi)的人力物力預(yù)算,為開(kāi)發(fā)過(guò)程制定一個(gè)時(shí)間計(jì)劃表,以及為保證軟件質(zhì)量所需采取的措施; (4) 軟件設(shè)計(jì)(Design),決定軟件如何實(shí)現(xiàn)它應(yīng)有的功能,如設(shè)計(jì)系統(tǒng)結(jié)構(gòu),系統(tǒng)內(nèi)各模塊間接口以及各模塊內(nèi)的算法設(shè)計(jì);,4.2.2 軟件生命期,(5) 軟件實(shí)現(xiàn)(Implementation),即在軟件設(shè)計(jì)基礎(chǔ)上,用特定語(yǔ)言實(shí)現(xiàn)設(shè)計(jì)結(jié)果,通常亦稱為編程階段; (6) 軟件測(cè)試(Testing),用設(shè)計(jì)好的測(cè)試數(shù)據(jù)執(zhí)行軟件,查找軟
6、件可能存在的問(wèn)題。軟件測(cè)試包括模塊測(cè)試,整體測(cè)試,系統(tǒng)測(cè)試,用戶測(cè)試,交付測(cè)試和回歸測(cè)試等。 (7) 交付使用(Delivery),向用戶提供有效的軟件解決方案,并負(fù)責(zé)軟件安裝,人員培訓(xùn),提供幫助等服務(wù); (8) 軟件維護(hù)(Maintenance),指不斷更新和改進(jìn)軟件,保證軟件的持續(xù)使用。 通常,軟件生命期可以分為需求分析、設(shè)計(jì)、編程、測(cè)試和運(yùn)行維護(hù)5個(gè)階段,每個(gè)階段完成特定任務(wù),產(chǎn)生特定文檔,作為下一階段或整個(gè)生命期的參考文檔。,4.2.3 軟件的質(zhì)量標(biāo)準(zhǔn),(1) 正確性。軟件的正確性是指軟件系統(tǒng)在正常條件下能夠正確工作,完成規(guī)定功能。這是軟件的首要指標(biāo)。 (2) 穩(wěn)健性。軟件的穩(wěn)健性是指
7、在意外情況下,如輸入數(shù)據(jù)不合理或某部分硬件出現(xiàn)故障,軟件系統(tǒng)仍能適當(dāng)?shù)毓ぷ鳎?duì)意外情況進(jìn)行適當(dāng)處理,而不致于導(dǎo)致錯(cuò)誤結(jié)果和系統(tǒng)的癱瘓或死機(jī)。 正確性與穩(wěn)健性合稱可靠性。 (3) 可維護(hù)性。軟件的維護(hù)包括發(fā)現(xiàn)并改正軟件的錯(cuò)誤,以及由于軟件運(yùn)行環(huán)境發(fā)生變化或軟件功能擴(kuò)充而對(duì)軟件進(jìn)行的改動(dòng)。維護(hù)必須基于對(duì)原來(lái)軟件設(shè)計(jì)情況全面、正確、細(xì)致的了解,修改后的軟件系統(tǒng)必須經(jīng)過(guò)測(cè)試、驗(yàn)證后才能重新使用。軟件的可維護(hù)性指的是軟件容易維護(hù)的程度。軟件的可讀性好,容易理解,維護(hù)起來(lái)也就比較容易。因此可讀性是可維護(hù)性的基礎(chǔ)。,4.2.3 軟件的質(zhì)量標(biāo)準(zhǔn),(4) 可用性。軟件的可用性是指軟件是否容易被用戶接受的程度。
8、包括是否容易學(xué)習(xí)、容易操作、容易準(zhǔn)備數(shù)據(jù)、容易理解和輸出結(jié)果等。 (5) 可重用性。軟件可重用性是指軟件中的模塊或由一組模塊組成的部件在多種應(yīng)用場(chǎng)合下是否可重新使用的程度??芍赜眯院脤?duì)提高軟件產(chǎn)品的質(zhì)量和開(kāi)發(fā)效率有十分重大的意義。 (6) 效率。軟件的效率是指軟件系統(tǒng)能否有效地使用計(jì)算機(jī)資源,包括執(zhí)行時(shí)間和占用內(nèi)存情況。一般地說(shuō),執(zhí)行時(shí)間和占用內(nèi)存量之間往往是矛盾的,需要根據(jù)具體情況和要求進(jìn)行取舍。 效率和可維護(hù)性通常是相互矛盾的。為了節(jié)省運(yùn)行時(shí)間和存儲(chǔ)空間,往往需要使用復(fù)雜的技術(shù),使程序變得復(fù)雜和難以理解。 而追求可靠性通常也要以一定的時(shí)間作為代價(jià)。在目前硬件價(jià)格下降而人工費(fèi)用上升的情況下,
9、采用的策略是,犧牲一些效率來(lái)保證較好的可靠性和可維護(hù)性。,4.2.4 軟件開(kāi)發(fā)模型,模型(Model)是一種對(duì)某個(gè)需求說(shuō)明(或設(shè)計(jì)或系統(tǒng))從某種特殊角度的抽象表示,通常用一個(gè)或多個(gè)圖表示,表示其基本內(nèi)容和相互關(guān)系,忽略一些不必要的細(xì)節(jié)。建立模型的目的在于幫助開(kāi)發(fā)人員在思考、討論及解決問(wèn)題時(shí)明確目的,抓住主要問(wèn)題,少走彎路。 軟件開(kāi)發(fā)模型(Software Process Model)是軟件開(kāi)發(fā)過(guò)程的抽象表示。每一個(gè)模型從一個(gè)特定的方面描述開(kāi)發(fā)過(guò)程,提供開(kāi)發(fā)過(guò)程的部分信息,是一個(gè)較低層次的抽象描述。 軟件開(kāi)發(fā)模型通常包括下列軟件開(kāi)發(fā)過(guò)程中涉及的內(nèi)容: (1) 任務(wù)(Tasks) (2) 需要的文
10、檔及產(chǎn)生的文檔(Artifacts) (3) 執(zhí)行者(Actors) (4) 決策(Decisions),4.2.4 軟件開(kāi)發(fā)模型,圖4.1 課堂上組織討論學(xué)習(xí)活動(dòng)過(guò)程的開(kāi)發(fā)模型,在標(biāo)準(zhǔn)軟件開(kāi)發(fā)模型中,使用橢圓表示任務(wù)和過(guò)程,長(zhǎng)方形表示文檔,棍形小人表示執(zhí)行者,菱形表示決策。數(shù)據(jù)流動(dòng)用弧線表示,方向從左到右,從上到下。使用標(biāo)準(zhǔn)符號(hào)加上簡(jiǎn)單文字說(shuō)明,能夠表達(dá)復(fù)雜的過(guò)程和關(guān)系。,*4.3 UML面向?qū)ο笙到y(tǒng)的模型,面向過(guò)程的程序設(shè)計(jì)語(yǔ)言提供的實(shí)體是變量、數(shù)組、結(jié)構(gòu)和文件等。這些實(shí)體構(gòu)成解決方案領(lǐng)域中的對(duì)象。通常問(wèn)題領(lǐng)域中的對(duì)象的行為是豐富多彩的,而解決方案領(lǐng)域中的對(duì)象的行為卻是單調(diào)刻板的。例如,存
11、儲(chǔ)單元只能做存取操作,文件只能做讀寫和定位操作。這樣,必須使用很復(fù)雜的方法去操縱解決方案領(lǐng)域的對(duì)象,才能得到問(wèn)題的解。這就是“語(yǔ)義斷層”。 面向?qū)ο蟮姆椒ㄍㄟ^(guò)提供對(duì)象和消息傳遞等語(yǔ)言機(jī)制讓分析員在解決方案領(lǐng)域中直接模擬問(wèn)題領(lǐng)域中的對(duì)象及其行為,從而削減了語(yǔ)義斷層,為建?;顒?dòng)提供了直觀的語(yǔ)言支持和方法學(xué)指導(dǎo)。,4.3.2 UML軟件開(kāi)發(fā)的常用模型,4.3.1 統(tǒng)一建模語(yǔ)言UML簡(jiǎn)介,4.3.1 統(tǒng)一建模語(yǔ)言UML簡(jiǎn)介,建模語(yǔ)言是一種表達(dá)開(kāi)發(fā)過(guò)程中產(chǎn)生的各種模型的方法,它定義一個(gè)模型元素的集合,模擬單詞,語(yǔ)句及劇本等自然元素,模型元素的有機(jī)組合構(gòu)成模型。 統(tǒng)一建模語(yǔ)言UML(Unified Mod
12、eling Language)稱為第三代面向?qū)ο笙到y(tǒng)開(kāi)發(fā)工具。 在“UML伙伴聯(lián)盟”的支持與推動(dòng)下,得到廣泛支持。1996年UML正式推出,版本號(hào)為0.9,1997年1月UML版本1.0提交OMG組織(Object Management Group),作為軟件建模語(yǔ)言標(biāo)準(zhǔn)化的侯選,其后Microsoft、IBM、HP等都成為“UML伙伴”,1997年11月成為業(yè)界標(biāo)準(zhǔn)。UML現(xiàn)已成為信息技術(shù)的國(guó)際標(biāo)準(zhǔn)。 UML已作為軟件開(kāi)發(fā)的工具應(yīng)用于軟件生命期的各個(gè)階段,本章結(jié)合實(shí)例介紹軟件開(kāi)發(fā)中常用的各種模型。,4.3.2 UML軟件開(kāi)發(fā)的常用模型,問(wèn)題領(lǐng)域和解決方案領(lǐng)域的概念。 問(wèn)題領(lǐng)域指提出問(wèn)題的現(xiàn)實(shí)
13、世界,例如圖書(shū)館管理問(wèn)題中的圖書(shū)館。 解決方案領(lǐng)域指將問(wèn)題程序化后的機(jī)器空間,如圖書(shū)館管理系統(tǒng)軟件。 兩者都用對(duì)象表示所涉及的實(shí)體。隨著軟件開(kāi)發(fā)的進(jìn)展,需求逐漸明確,設(shè)計(jì)方案日趨完善,對(duì)象由表示問(wèn)題領(lǐng)域的實(shí)體轉(zhuǎn)變?yōu)榻鉀Q方案領(lǐng)域的程序結(jié)構(gòu)(類)。,4.3.2 UML軟件開(kāi)發(fā)的常用模型,1. 對(duì)象(類)模型 面向?qū)ο蠓治龅幕痉椒ㄊ且⒁粋€(gè)描述問(wèn)題領(lǐng)域的對(duì)象模型,用來(lái)表示實(shí)體及實(shí)體之間的關(guān)系。UML用矩形框表示對(duì)象,矩形分三部分,頂部標(biāo)示對(duì)象名,中間標(biāo)示對(duì)象所具有的屬性名,底部標(biāo)示方法(操作)。參見(jiàn)圖4.8 4.11。連接兩個(gè)對(duì)象的一條弧線表示兩者之間的關(guān)系,關(guān)系名稱可在弧線的中間用文字標(biāo)出。
14、對(duì)不同訪問(wèn)權(quán)限標(biāo)示方法如下: 共有的:標(biāo)識(shí)符前加+號(hào); 私有的:標(biāo)識(shí)符前加-號(hào); 保護(hù)的:標(biāo)識(shí)符前加#號(hào)。 對(duì)參數(shù)化,對(duì)應(yīng)C+的模板,在右上角加一個(gè)小虛線框,框內(nèi)寫一T字母。,4.3.2 UML軟件開(kāi)發(fā)的常用模型,對(duì)象之間存在三種關(guān)系,即泛化,聚合和聯(lián)合。 (1) 泛化(generalization):泛化關(guān)系表示弧線底部的對(duì)象是上部對(duì)象的一個(gè)特例(在OOP中用繼承inheritance方法實(shí)現(xiàn)),如交通工具和轎車之間的關(guān)系;UML圖中,用空心三角形表示泛化關(guān)系,三角形在交通工具端;反向?qū)?yīng)C+的派生。 (2) 聚合(aggregation):聚合關(guān)系表示弧線底部的對(duì)象是上部對(duì)象的一部分,如交
15、通工具與引擎之間的關(guān)系;圖4.2中,用空心菱形表示聚合關(guān)系,菱形在整體一端,并用數(shù)字表示多重性:交通工具端為1,引擎端為0.*,表示有0個(gè)或若干個(gè), (3) 聯(lián)合(association):聯(lián)合關(guān)系表示弧線聯(lián)系的兩個(gè)對(duì)象以某種方式關(guān)聯(lián),聯(lián)合可以是單向的或雙向的,如兄弟關(guān)系,父子關(guān)系等。,4.3.2 UML軟件開(kāi)發(fā)的常用模型,圖4.2 交通工具、轎車和引擎之間的關(guān)系,4.3.2 UML軟件開(kāi)發(fā)的常用模型,對(duì)象模型是需求分析階段的基本工具,對(duì)于實(shí)現(xiàn)完整系統(tǒng)的細(xì)節(jié)可以在設(shè)計(jì)階段考慮,因此對(duì)象模型的基本要求如下: (1)對(duì)象模型應(yīng)該能反映問(wèn)題領(lǐng)域?qū)ο蟾拍畹恼鎸?shí)性; (2)對(duì)于理解問(wèn)題領(lǐng)域很重要的所有現(xiàn)
16、實(shí)世界的實(shí)體都應(yīng)該包括在模型中; (3)對(duì)于理解問(wèn)題領(lǐng)域很重要的所有方法和屬性都應(yīng)包括在模型中; (4)只對(duì)完成的系統(tǒng)有意義,不影響對(duì)系統(tǒng)理解的對(duì)象、屬性和方法不應(yīng)包括在模型中。,4.3.2 UML軟件開(kāi)發(fā)的常用模型,2. 數(shù)據(jù)流模型 數(shù)據(jù)流圖表示系統(tǒng)中數(shù)據(jù)在系統(tǒng)各個(gè)任務(wù)、軟件各組成部分或軟件某個(gè)功能之間的傳遞關(guān)系。用方塊表示處理過(guò)程,弧線表示數(shù)據(jù)及其流動(dòng)方向。,圖4.3 圖書(shū)館流通系統(tǒng)的數(shù)據(jù)流圖,數(shù)據(jù)流的重要性在于指明系統(tǒng)中某個(gè)成員可以得到哪些數(shù)據(jù),有助于理解該成員可以做什么及如何做。,4.3.2 UML軟件開(kāi)發(fā)的常用模型,3. 行為模型 行為模型是從用戶的角度來(lái)描述系統(tǒng)的行為。行為模型圖應(yīng)
17、該捕捉系統(tǒng)的各個(gè)基本功能并且能夠與用戶及開(kāi)發(fā)人員交流,保證系統(tǒng)具備用戶所希望的功能。 (1) 用例圖(use case diagram) 用例圖從用戶的角度表示系統(tǒng)的功能,重要的角色及功能都應(yīng)表示出來(lái)。一個(gè)用例表示系統(tǒng)實(shí)現(xiàn)的一個(gè)任務(wù)(task),執(zhí)行者(actor)表示系統(tǒng)中某一類用戶即與系統(tǒng)交互的所有外部實(shí)體,不一定是人。執(zhí)行者用棍形小人表示,用例用一個(gè)包含其名稱的橢圓表示,如果執(zhí)行者為完成任務(wù)可能與某個(gè)用例相關(guān),則在用例圖中將執(zhí)行者與用例用一條直線連接起來(lái)。,4.3.2 UML軟件開(kāi)發(fā)的常用模型,用例圖表示實(shí)體的集合和可能存在的交互,并不表示單個(gè)的實(shí)體和一定存在的交互,執(zhí)行者與用例之間存在
18、連線,表示執(zhí)行者可能執(zhí)行此項(xiàng)任務(wù)。 系統(tǒng)的某些功能可能在開(kāi)發(fā)的初期表現(xiàn)不出來(lái),可以在后期的文本說(shuō)明中對(duì)這些功能加以說(shuō)明。,圖4.4 課堂上組織討論學(xué)習(xí)活動(dòng)的用例圖,4.3.2 UML軟件開(kāi)發(fā)的常用模型,(2)狀態(tài)圖(state diagram) 機(jī)器或程序的狀態(tài)指所有變量、寄存器等的值的集合,狀態(tài)圖用于顯示系統(tǒng)的狀態(tài)及其可能發(fā)生的變化。顯然,機(jī)器或程序的狀態(tài)數(shù)目很大,但很多狀態(tài)是相似的,可以看成一個(gè)狀態(tài)。用圖形表示機(jī)器狀態(tài),可以顯示狀態(tài)之間的變化,很好地表現(xiàn)程序的行為。狀態(tài)圖用圓角矩形表示狀態(tài),用帶文字標(biāo)示的弧線表示引起狀態(tài)變化的操作。,注:黑色圓點(diǎn)表示初始狀態(tài)。,圖4.5 棧結(jié)構(gòu)操作狀態(tài)圖,
19、用棧結(jié)構(gòu)作為表示狀態(tài)變化的例子。棧有壓棧和出棧兩種操作,有空棧、正常和滿棧三種狀態(tài)。,4.3.2 UML軟件開(kāi)發(fā)的常用模型,4. 交互圖(interaction diagram) 交互圖表示對(duì)象之間如何通信以完成任務(wù),說(shuō)明如何實(shí)現(xiàn)一個(gè)用例(任務(wù))或用例的一部分,這里采用序列圖(sequence diagram)進(jìn)行介紹。,圖4.6 課堂上組織討論學(xué)習(xí)活動(dòng)-分類用例序列圖,圖中,theStudent對(duì)象的矩形框比theTeacher對(duì)象短,表示前者生命期比后者短。,4.3.2 UML軟件開(kāi)發(fā)的常用模型,序列圖用于在設(shè)計(jì)過(guò)程中描述系統(tǒng)的某些具體行為,通常是一個(gè)用例或用例中的一部分,表示對(duì)象之間消息
20、的傳遞及傳遞的順序。 序列圖繪制方法:用垂直的虛線表示執(zhí)行者和參與的對(duì)象,在頂部矩形框內(nèi)標(biāo)示類及對(duì)象名(如Teacher類的對(duì)象theTeacher),虛線從上到下表示時(shí)間的先后順序;水平的箭頭線表示對(duì)象之間的消息發(fā)送和接收,由發(fā)送者指向接收者,先發(fā)送的消息在上,后發(fā)送的在下。將先參與交互的對(duì)象放在靠近左邊的位置,使大多數(shù)消息從左向右流動(dòng),序列圖的可讀性更好;當(dāng)某個(gè)對(duì)象處于活動(dòng)狀態(tài)時(shí),用一個(gè)細(xì)長(zhǎng)的矩形標(biāo)示,處于非活動(dòng)狀態(tài)時(shí),矩形退化為虛線,能很好的表示對(duì)象的生存關(guān)系。 對(duì)于簡(jiǎn)單的用例可以不畫(huà)序列圖,但在消息傳遞復(fù)雜的情況下,序列圖有助于確定對(duì)象之間的訪問(wèn)關(guān)系。,4.3.2 UML軟件開(kāi)發(fā)的常用
21、模型,5. 詞典 數(shù)據(jù)詞典是有關(guān)系統(tǒng)中各數(shù)據(jù)項(xiàng)的信息表。在需求分析階段,數(shù)據(jù)詞典主要包括問(wèn)題領(lǐng)域的數(shù)據(jù)項(xiàng)。數(shù)據(jù)詞典中的內(nèi)容主要是:數(shù)據(jù)項(xiàng)名稱,所在類名,數(shù)據(jù)類型及數(shù)據(jù)項(xiàng)含義。,表4.1 圖書(shū)館流通管理系統(tǒng)數(shù)據(jù)詞典,*4.4 UML面向?qū)ο蟮南到y(tǒng)分析和設(shè)計(jì),面向?qū)ο蟮能浖_(kāi)發(fā)可以分為3個(gè)階段: 面向?qū)ο蟮姆治觯嫦驅(qū)ο蟮脑O(shè)計(jì)和面向?qū)ο缶幊?。本?shū)前面各章都是圍繞面向?qū)ο缶幊痰幕痉椒?,這里主要介紹面向?qū)ο蟮姆治龊驮O(shè)計(jì),用圖書(shū)館管理系統(tǒng)為例進(jìn)行說(shuō)明。,4.4.2 面向?qū)ο蟮脑O(shè)計(jì),4.4.1 面向?qū)ο蟮男枨蠓治?4.4.1 面向?qū)ο蟮男枨蠓治?需求分析階段的目標(biāo)是從用戶得到信息,闡明用戶需求。通常在與
22、用戶討論后,用圖形和需求文檔表示用戶的需求,完成后由用戶查看開(kāi)發(fā)人員是否已經(jīng)了解了需求情況。需求分析實(shí)際上是在開(kāi)發(fā)人員和用戶之間建立一個(gè)交流的文檔。 1. 系統(tǒng)功能的確定 簡(jiǎn)單的圖書(shū)館流通系統(tǒng)應(yīng)有借書(shū)、還書(shū)等功能,圖書(shū)館內(nèi)部還有分類、整理等管理工作,系統(tǒng)的用例圖表明系統(tǒng)主要功能。,圖4.7 圖書(shū)館系統(tǒng)用例圖,4.4.1 面向?qū)ο蟮男枨蠓治?2.類和對(duì)象識(shí)別的基本方法和要素 在面向?qū)ο蟮能浖枨蠓治鲋校粋€(gè)重要的方法是從問(wèn)題領(lǐng)域中識(shí)別對(duì)象及其屬性、操作。 (1) 對(duì)象的識(shí)別 對(duì)象通常是問(wèn)題領(lǐng)域中的名詞,可以采用上下文名詞的方法識(shí)別對(duì)象。一旦識(shí)別到一個(gè)對(duì)象,就能識(shí)別出相同類型的所有對(duì)象,把它們歸納
23、為類。 在需求分析的描述文檔中,標(biāo)識(shí)出所有的名詞并分類,把相關(guān)的名詞放在一組內(nèi),有些名詞與本系統(tǒng)聯(lián)系不大,可以刪除出去。在每個(gè)組內(nèi),選出表示對(duì)象的名詞,其它名詞可以作為屬性或刪除。,4.4.1 面向?qū)ο蟮男枨蠓治?在圖書(shū)館流通管理系統(tǒng)中,其需求可描述為: 讀者憑借書(shū)證在圖書(shū)館借閱書(shū)本、雜志或音像讀物,管理員接受請(qǐng)求,檢查讀者證件,查閱其借閱情況判斷是否可以繼續(xù)借閱,有無(wú)過(guò)期借閱、超過(guò)限定數(shù)目等。如果可以繼續(xù)借閱,修改其借閱記錄,借出讀物。 這里出現(xiàn)了讀者、借書(shū)證、圖書(shū)館、書(shū)本、雜志、音像讀物、管理員、證件、借閱情況、限定數(shù)目、過(guò)期、借閱記錄、讀物等名詞,都可能成為系統(tǒng)的對(duì)象類。借書(shū)證和證件應(yīng)該
24、是同一概念,而且借書(shū)證雖然是圖書(shū)館系統(tǒng)的重要對(duì)象,由于它與讀者是一一對(duì)應(yīng)關(guān)系,可以將其作為讀者的屬性之一;限定數(shù)目、過(guò)期、借閱記錄等都是針對(duì)讀者的,可以作為讀者屬性;讀物有多種,都可以成為系統(tǒng)的類。 借閱情況雖不是實(shí)在的對(duì)象,但它記錄每次借閱有關(guān)讀者、管理員及所借讀物的信息,是為了實(shí)現(xiàn)某種關(guān)聯(lián)而存在的類,在UML中稱為關(guān)聯(lián)類。 根據(jù)以上分析,圖書(shū)館(Library)、讀者(Reader)、書(shū)本(Book)、雜志(Magazine)、音像讀物(Recorded)、管理員(Librarian)、借閱情況(Loan)等名詞可作為系統(tǒng)的類。,4.4.1 面向?qū)ο蟮男枨蠓治?(2) 對(duì)象屬性的識(shí)別 每個(gè)
25、對(duì)象的情況稱為對(duì)象的屬性,同類型的對(duì)象具有共同的屬性,只是每個(gè)對(duì)象的屬性值不一定相同。屬性是對(duì)一個(gè)對(duì)象狀態(tài)的描述。 讀物類:從流通管理的角度來(lái)看,應(yīng)包含書(shū)名Title、作者名Author、分類號(hào)、副本數(shù)、條形碼號(hào)BarCode等屬性。 讀者類:包含姓名、職務(wù)、借書(shū)證編號(hào)等。一個(gè)讀者允許借閱若干冊(cè)書(shū),可以定義某種數(shù)據(jù)結(jié)構(gòu)保存相應(yīng)信息。另外對(duì)讀者所借書(shū)冊(cè)數(shù)要統(tǒng)計(jì),定義一個(gè)計(jì)數(shù)的成員; 圖書(shū)借閱信息類:包含所借書(shū)、借書(shū)人、借書(shū)管理員等信息; 管理員類: 包含姓名、工號(hào)等; 圖書(shū)館類: 封裝圖書(shū)館所有功能,包括所有讀物、讀者、管理員及借閱信息等。 同一個(gè)類(對(duì)象),從不同的角度分析,或根據(jù)要求的不同,
26、描述它的屬性也可能不一致。在需求分析階段,可能無(wú)法全面描述類的屬性,可以在隨后的各個(gè)階段再作修改。,4.4.1 面向?qū)ο蟮男枨蠓治?(3) 對(duì)象操作的識(shí)別 對(duì)象的操作指為了實(shí)現(xiàn)功能必須執(zhí)行的動(dòng)作,或是對(duì)象對(duì)所發(fā)生事件的反應(yīng)。 讀物類應(yīng)包含為各屬性賦值(Set)的操作、讀取條碼(GetCode)和顯示圖書(shū)基本信息(Show)的操作。 讀者類需定義為各屬性賦值(Set)的操作、讀取借書(shū)證號(hào)的操作,借書(shū)和還書(shū)需要向所借書(shū)數(shù)組中添加或減少書(shū)。 需求分析的目的是闡明需求,確定功能,如何實(shí)現(xiàn)功能是設(shè)計(jì)階段的任務(wù),對(duì)象的操作在這里不一定全面。,4.4.1 面向?qū)ο蟮男枨蠓治?3. 識(shí)別繼承關(guān)系 繼承表示“B
27、是A的一種”的關(guān)系,即B是A的特例,則A作為基類,B作為派生類。 識(shí)別繼承關(guān)系有從上到下和從下到上的兩種方法。從上到下的方法從已有類中找出在本系統(tǒng)中需要特殊操作或需要特別屬性的其它對(duì)象,可以產(chǎn)生新的派生類;從下到上方法將已有類中類似的放在一起尋找它們的共性(包括屬性和操作),所有共性的組合可以作為共同的基類。 在已識(shí)別出的圖書(shū)館系統(tǒng)類中,書(shū)本、雜志和音像讀物都是借閱對(duì)象,都有唯一的分類號(hào)(CataNum),價(jià)格(Cost),類型(Type),借閱狀態(tài)(Status)、副本數(shù)目(Copies)等屬性,很自然可以提取其共性建立讀物類(Item),在UML中稱泛化關(guān)系。,4.4.1 面向?qū)ο蟮男枨蠓?/p>
28、析,4. 識(shí)別關(guān)聯(lián) 問(wèn)題領(lǐng)域中的對(duì)象識(shí)別出來(lái)后,下一步尋找對(duì)象之間的關(guān)聯(lián)。存在關(guān)聯(lián)的對(duì)象意味著這些對(duì)象在最終開(kāi)發(fā)出來(lái)的系統(tǒng)中有聯(lián)系,因此關(guān)聯(lián)的重要性在于它決定了對(duì)象與其它對(duì)象之間的訪問(wèn)關(guān)系,這些訪問(wèn)關(guān)系對(duì)編程實(shí)現(xiàn)系統(tǒng)至關(guān)重要。 如果問(wèn)題領(lǐng)域中的對(duì)象之間存在關(guān)聯(lián),則在解決方案領(lǐng)域中的對(duì)象之間必然也存在關(guān)聯(lián); 如果實(shí)現(xiàn)對(duì)象的功能必須訪問(wèn)其它對(duì)象,則這些對(duì)象之間必然存在一個(gè)或一系列關(guān)聯(lián)。 在圖書(shū)館例子中,管理員有權(quán)查看讀者的借閱信息,它們之間存在關(guān)聯(lián)關(guān)系;讀者、管理員、讀物、借閱信息等都是圖書(shū)館不可缺少的組成,它們與圖書(shū)館類之間存在聚合關(guān)系。,4.4.1 面向?qū)ο蟮男枨蠓治?5. 識(shí)別一對(duì)多關(guān)系 一
29、對(duì)多關(guān)系指某類對(duì)象的實(shí)例可以和另一類對(duì)象的多少個(gè)實(shí)例存在關(guān)聯(lián)。在圖書(shū)館問(wèn)題中,如一個(gè)讀者可以借閱多少本圖書(shū)或其它讀物就是一對(duì)多關(guān)系。一對(duì)多關(guān)系在關(guān)聯(lián)圖用一個(gè)單值或一個(gè)數(shù)值范圍表示,當(dāng)用數(shù)值表示范圍時(shí),兩個(gè)數(shù)之間用兩個(gè)圓點(diǎn)分開(kāi)。 需求分析的目標(biāo)是得到系統(tǒng)的對(duì)象模型,經(jīng)過(guò)以上文字分析,可以得到圖4.8所示的對(duì)象類模型圖。進(jìn)一步細(xì)分可得到圖4.9-4.11。,4.4.1 面向?qū)ο蟮男枨蠓治?圖4.8 圖書(shū)館系統(tǒng)對(duì)象類模型圖,返回4.3.2節(jié),4.4.1 面向?qū)ο蟮男枨蠓治?圖4.9 圖書(shū)館系統(tǒng)各類的聚合關(guān)系,4.4.1 面向?qū)ο蟮男枨蠓治?圖4.10 圖書(shū)館讀物及其派生類的泛化關(guān)系,4.4.1 面向
30、對(duì)象的需求分析,圖4.11 關(guān)聯(lián)類Loan的關(guān)聯(lián)關(guān)系圖,4.4.2 面向?qū)ο蟮脑O(shè)計(jì),需求分析結(jié)束后進(jìn)入軟件設(shè)計(jì)階段,需要進(jìn)行系統(tǒng)結(jié)構(gòu)設(shè)計(jì),數(shù)據(jù)設(shè)計(jì),接口設(shè)計(jì)及借助設(shè)計(jì)模型分析進(jìn)行過(guò)程設(shè)計(jì)等。 1系統(tǒng)結(jié)構(gòu)設(shè)計(jì) 結(jié)構(gòu)設(shè)計(jì)需要將系統(tǒng)功能進(jìn)行分塊,考慮各個(gè)功能模塊之間的聯(lián)系,劃分為不同的子系統(tǒng)進(jìn)行設(shè)計(jì)。在圖書(shū)館系統(tǒng)中,主要有借書(shū)、還書(shū)和管理等模塊,可以作為圖書(shū)館類的操作函數(shù)實(shí)現(xiàn)。,4.4.2 面向?qū)ο蟮脑O(shè)計(jì),圖4.12 圖書(shū)館系統(tǒng)結(jié)構(gòu)圖,4.4.2 面向?qū)ο蟮脑O(shè)計(jì),2.數(shù)據(jù)設(shè)計(jì) 數(shù)據(jù)設(shè)計(jì)要完成數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)。在需求分析階段,只是在系統(tǒng)中進(jìn)行對(duì)象和類的識(shí)別,對(duì)象模型只包含很明顯的基本數(shù)據(jù)成員和接口。在設(shè)
31、計(jì)階段,需要完善類的結(jié)構(gòu),確定數(shù)據(jù)類型、大小及存儲(chǔ)方式,即類的數(shù)據(jù)成員設(shè)計(jì)。 3. 接口設(shè)計(jì) 接口實(shí)際上是各個(gè)類的操作函數(shù),接口確定后,系統(tǒng)中各個(gè)模塊設(shè)計(jì)可以由不同人員同時(shí)進(jìn)行,類之間的訪問(wèn)方式不會(huì)改變。在進(jìn)行接口設(shè)計(jì)時(shí)應(yīng)盡量避免使用類中的屬性,這意味著盡量使用不帶參數(shù)的接口函數(shù),在需要屬性值時(shí)通過(guò)函數(shù)訪問(wèn)實(shí)現(xiàn)。這樣做的優(yōu)勢(shì)是增加類的通用性和可移植性,也會(huì)減少由于系統(tǒng)中個(gè)別修改而導(dǎo)致的大量的改動(dòng)。,4.4.2 面向?qū)ο蟮脑O(shè)計(jì),如圖書(shū)館類的接口如下: class Library/封裝圖書(shū)館流通業(yè)務(wù) public: Library();/構(gòu)造函數(shù) void Run(); /運(yùn)行圖書(shū)館業(yè)務(wù)函數(shù) vo
32、id Manage();/管理 int ShowMainMenu();/顯示主菜單圖void Borrow(); /借書(shū)操作 void Return(); /還書(shū)操作 void Require(); /查詢操作 ;,4.4.2 面向?qū)ο蟮脑O(shè)計(jì),4. 過(guò)程設(shè)計(jì) 過(guò)程設(shè)計(jì)指在設(shè)計(jì)過(guò)程中需要借助設(shè)計(jì)模型分析來(lái)完成系統(tǒng)功能的構(gòu)造,即完成各個(gè)類中接口函數(shù)的設(shè)計(jì),包括所使用的算法等。 設(shè)計(jì)模型有序列圖,狀態(tài)圖等。序列圖針對(duì)某個(gè)用例或其中一部分的實(shí)現(xiàn)過(guò)程,狀態(tài)圖針對(duì)在執(zhí)行不同任務(wù)后系統(tǒng)狀態(tài)的改變,這些模型有助于了解各個(gè)類之間的訪問(wèn)關(guān)系,各函數(shù)的調(diào)用關(guān)系,以及各模塊的聯(lián)系。,4.4.2 面向?qū)ο蟮脑O(shè)計(jì),圖4.
33、13 借書(shū)用例的序列圖,圖4.13是對(duì)讀者借書(shū)過(guò)程的描述,因?yàn)榻钑?shū)行為影響到許多狀態(tài)的改變,要注意狀態(tài)的修改。,4.4.2 面向?qū)ο蟮脑O(shè)計(jì),圖4.14 讀者借閱狀態(tài)改變的狀態(tài)圖,圖4.14是讀者借閱狀態(tài)改變的狀態(tài)圖,有未借閱、可借閱和不可借閱三種狀態(tài),借書(shū)、還書(shū)、過(guò)期和罰款等行為會(huì)引起狀態(tài)的改變。 借助這些設(shè)計(jì)模型,可清楚、簡(jiǎn)潔地描述任務(wù),可以簡(jiǎn)化系統(tǒng)設(shè)計(jì)及編程階段的工作。,4.5 軟件測(cè)試,4.5.4 面向?qū)ο蟮能浖y(cè)試,4.5.3 軟件測(cè)試策略,4.5.2 軟件測(cè)試技術(shù),4.5.1 軟件測(cè)試概念,4.5.1 軟件測(cè)試概念,軟件測(cè)試指用實(shí)際的測(cè)試數(shù)據(jù)執(zhí)行軟件的過(guò)程。其目的是查出軟件的潛在錯(cuò)誤
34、,而不是證明軟件沒(méi)有錯(cuò)誤。測(cè)出盡可能多的錯(cuò)誤是軟件測(cè)試的目標(biāo)。 軟件測(cè)試關(guān)系到兩個(gè)基本問(wèn)題:1)什么樣的用例測(cè)試;2)需要多少測(cè)試用例。即測(cè)試用例選擇和測(cè)試終止標(biāo)準(zhǔn)的問(wèn)題。 測(cè)試用例選擇可以基于軟件的功能說(shuō)明、軟件結(jié)構(gòu)、數(shù)據(jù)流向,也可以隨機(jī)選擇測(cè)試用例。在輸入數(shù)據(jù)的可能范圍內(nèi)劃分子范圍,某些易于出現(xiàn)錯(cuò)誤的范圍可能需要更多測(cè)試次數(shù)。測(cè)試終止標(biāo)準(zhǔn)可以是基于覆蓋標(biāo)準(zhǔn),如在某個(gè)子范圍測(cè)試n次后終止;或者基于測(cè)試結(jié)果,如當(dāng)測(cè)試出錯(cuò)的比例低于某個(gè)極限值x時(shí)終止。,4.5.2 軟件測(cè)試技術(shù),測(cè)試覆蓋標(biāo)準(zhǔn),即關(guān)于如何選擇測(cè)試和何時(shí)終止測(cè)試的規(guī)則。如何判斷不同測(cè)試覆蓋標(biāo)準(zhǔn)的有效性,標(biāo)準(zhǔn)的方法是使用包容規(guī)則。 當(dāng)
35、滿足測(cè)試標(biāo)準(zhǔn)A的所有測(cè)試同時(shí)也滿足測(cè)試標(biāo)準(zhǔn)B時(shí),稱標(biāo)準(zhǔn)A包容標(biāo)準(zhǔn)B。那么當(dāng)所有測(cè)試都滿足標(biāo)準(zhǔn)A時(shí),也自動(dòng)滿足了標(biāo)準(zhǔn)B。 1. 功能測(cè)試 在軟件功能測(cè)試中,在需求分析階段產(chǎn)生的軟件的功能說(shuō)明可用于識(shí)別需要測(cè)試的子范圍。首先要為程序每種可能的輸出選擇一個(gè)測(cè)試用例,例如,每種出錯(cuò)信息都應(yīng)該在測(cè)試中出現(xiàn)。然后,針對(duì)所有特殊情況應(yīng)該有一個(gè)測(cè)試用例,普通的錯(cuò)誤、有疑惑及容易引起誤解的問(wèn)題都應(yīng)該被測(cè)試到。識(shí)別的結(jié)果是一個(gè)當(dāng)軟件完成后能夠完整測(cè)試程序的用例集。,4.5.2 軟件測(cè)試技術(shù),例:某個(gè)訂單輸入系統(tǒng)要求輸入客戶預(yù)訂的數(shù)目和基于這個(gè)數(shù)目的單價(jià)標(biāo)準(zhǔn),計(jì)算出應(yīng)付款數(shù)。同時(shí)規(guī)定,每個(gè)訂單預(yù)訂數(shù)目不得小于20,
36、單價(jià)不能少于40元,不能多于60元。,功能測(cè)試應(yīng)包括所有正常的訂單情況和不符合規(guī)定的數(shù)目過(guò)少、價(jià)格過(guò)高或過(guò)低等出錯(cuò)的用例。,4.5.2 軟件測(cè)試技術(shù),2. 結(jié)構(gòu)測(cè)試 結(jié)構(gòu)測(cè)試基于程序源代碼的結(jié)構(gòu)來(lái)選擇測(cè)試用例。最簡(jiǎn)單的結(jié)構(gòu)測(cè)試是每語(yǔ)句測(cè)試。 (1) 每語(yǔ)句測(cè)試(C0覆蓋標(biāo)準(zhǔn)) 該標(biāo)準(zhǔn)要求源代碼中的每條語(yǔ)句都被執(zhí)行到,根據(jù)這一規(guī)則選擇測(cè)試用例。一般方法是選擇不同用例測(cè)試直到所有語(yǔ)句被執(zhí)行到??梢圆捎昧斜砘蚓仃嚨确椒▉?lái)記錄是否所有語(yǔ)句都被執(zhí)行到。,4.5.2 軟件測(cè)試技術(shù),按順序輸出隨機(jī)輸入的三個(gè)數(shù): int a, b, c ,max, min; /A coutabc; if(ab) /B max
37、 = a; min = b; /C else max = b; min = a; /D if(cmax) /E coutctmaxtminn; /F else if(cmin) /G coutmaxtmintcn; /H else coutmaxtctminn;/I,4.5.2 軟件測(cè)試技術(shù),在這個(gè)例子中,每語(yǔ)句測(cè)試選擇不同測(cè)試用例,如最大數(shù)在最前面,在中間和在最后的三種輸入情況,測(cè)試輸出結(jié)果是否正確,用表格記錄是否每條語(yǔ)句都被執(zhí)行到。,4.5.2 軟件測(cè)試技術(shù),(2) 每分支Branch測(cè)試(C1覆蓋標(biāo)準(zhǔn)) 一種更完全的測(cè)試標(biāo)準(zhǔn)是每分支測(cè)試,要求每個(gè)決策(如if-else)所產(chǎn)生的兩個(gè)分支都
38、應(yīng)該被執(zhí)行到。 在上面的每語(yǔ)句測(cè)試?yán)?,每分支測(cè)試的控制流圖如圖4-15,測(cè)試用例記錄如表4.4。,圖4-15 每分支測(cè)試的控制流圖,4.5.2 軟件測(cè)試技術(shù),表4.4每分支測(cè)試用例分析,4.5.2 軟件測(cè)試技術(shù),(2) 每分支Branch測(cè)試(C1覆蓋標(biāo)準(zhǔn)) 一種更完全的測(cè)試標(biāo)準(zhǔn)是每分支測(cè)試,要求每個(gè)決策(如if-else)所產(chǎn)生的兩個(gè)分支都應(yīng)該被執(zhí)行到。 在上面的每語(yǔ)句測(cè)試?yán)?,每分支測(cè)試的控制流圖如圖4-15,測(cè)試用例記錄如表4.4。,圖4-15 每分支測(cè)試的控制流圖,4.5.2 軟件測(cè)試技術(shù),(3)每路徑Path測(cè)試 比每分支測(cè)試更完全的是每路徑測(cè)試,要求從入口到出口的每一種可能路徑都
39、被測(cè)試到。同一個(gè)例子的每路徑測(cè)試如表4.5。,表4.5 每路徑測(cè)試用例分析,4.5.2 軟件測(cè)試技術(shù),(4) 多條件測(cè)試 多條件測(cè)試指當(dāng)條件表達(dá)式中含有多個(gè)條件時(shí),要求所有原始關(guān)系的各種T/F組合都被測(cè)試到。例如在or關(guān)系中,當(dāng)?shù)谝粋€(gè)條件測(cè)試為true時(shí)第二個(gè)條件不會(huì)被判定,但在軟件測(cè)試中,第一個(gè)條件測(cè)試為true時(shí)第二個(gè)條件為true或false的用例都需要被測(cè)試。 可用與前3種結(jié)構(gòu)測(cè)試類似的方法用表格記錄測(cè)試情況。,4.5.2 軟件測(cè)試技術(shù),(5) 子范圍測(cè)試 子范圍測(cè)試指將輸入范圍劃分成互相排他的若干子范圍,每個(gè)子范圍要求相同數(shù)目的測(cè)試用例。由于子范圍測(cè)試對(duì)如何選取子范圍沒(méi)有嚴(yán)格限制,是
40、一種常用的測(cè)試方法。只要選取子范圍的理由是充分的,測(cè)試就應(yīng)該是有意義的。 注意每語(yǔ)句測(cè)試和每分支測(cè)試都不是子范圍測(cè)試,因?yàn)椴煌Z(yǔ)句和分支在執(zhí)行時(shí)并不是排他的,而每路徑測(cè)試是一種子范圍測(cè)試,因?yàn)橐坏y(cè)試用例確定,所執(zhí)行的程序路徑是一條排他的路徑。,4.5.3 軟件測(cè)試策略,1. 數(shù)據(jù)流向測(cè)試 數(shù)據(jù)流向測(cè)試基于程序中數(shù)據(jù)的流向。數(shù)據(jù)從被定義的地方流向被使用的地方。 定義下列名詞: 數(shù)據(jù)定義,或稱def,指變量被賦值。 計(jì)算使用,或稱c-use,指變量出現(xiàn)在賦值語(yǔ)句的右邊。 謂詞使用,或稱p-use,指變量出現(xiàn)在決策語(yǔ)句的條件表達(dá)式中。 無(wú)定義路徑, 或稱def-free,指從一個(gè)變量的定義到它的使
41、用之間的路徑上沒(méi)有出現(xiàn)該變量的重新定義。,4.5.3 軟件測(cè)試策略,數(shù)據(jù)流向測(cè)試的標(biāo)準(zhǔn)很多,最基本的有以下幾種: dcu,要求從每個(gè)數(shù)據(jù)定義到一個(gè)c-use之間是def-free路徑。 dpu,要求從每個(gè)數(shù)據(jù)定義到一個(gè)p-use之間是def-free路徑。 du,要求從每個(gè)數(shù)據(jù)定義到每個(gè)可能的使用之間是def-free路徑。 all-du-paths, 要求從所有數(shù)據(jù)定義到所有可能的使用之間是def-free路徑。,4.5.3 軟件測(cè)試策略,圖4-16 數(shù)據(jù)流向定義,4.5.3 軟件測(cè)試策略,表4.6 dcu路徑分析,4.5.3 軟件測(cè)試策略,表4.6 dcu路徑分析,從節(jié)點(diǎn)A到F,H,I的m
42、ax和min變量c-use的路徑就不是dcu路徑。因?yàn)樵诠?jié)點(diǎn)C,D中,出現(xiàn)了這兩個(gè)變量的又一次定義(賦值)。,4.5.3 軟件測(cè)試策略,表4.7 dpu路徑分析,du路徑:對(duì)于變量a,b,c,從定義節(jié)點(diǎn)A到任何一個(gè)使用都是def-free,都是du路徑,但對(duì)變量min和max,不是du路徑,因此,本程序也沒(méi)有一個(gè)all-du-paths路徑。,4.5.3 軟件測(cè)試策略,2. 隨機(jī)測(cè)試 隨機(jī)測(cè)試伴隨著隨機(jī)選擇測(cè)試用例,其優(yōu)勢(shì)是速度快且減少了測(cè)試者的偏見(jiàn),而且,隨機(jī)選擇的測(cè)試更易于得到統(tǒng)計(jì)性的推論。通常,測(cè)試用例是概況文檔中選取的。 (1) 運(yùn)行概況(Operational Profile)文檔
43、在開(kāi)發(fā)環(huán)境中的測(cè)試與在運(yùn)行環(huán)境中的執(zhí)行有很大差別,通常為了減少它們之間的差異,需要準(zhǔn)備一個(gè)對(duì)在實(shí)際運(yùn)行環(huán)境中可能遇到的各種類型及發(fā)生概率的說(shuō)明的文檔,稱為運(yùn)行概況文檔。從運(yùn)行概況文檔中選取測(cè)試用例,測(cè)試人員對(duì)程序在運(yùn)行環(huán)境中的表現(xiàn)更有預(yù)見(jiàn)性。 (2) 統(tǒng)計(jì)推論(Statistical Inference from Testing) 如果隨機(jī)測(cè)試的用例是從運(yùn)行概況中隨機(jī)選取的,那么軟件在測(cè)試中的表現(xiàn)應(yīng)該和在隨后的實(shí)際運(yùn)行是一致的。 例如,從運(yùn)行概況中隨機(jī)選取1000個(gè)測(cè)試用例,測(cè)試時(shí)發(fā)現(xiàn)三個(gè)錯(cuò)誤,可以預(yù)言,軟件運(yùn)行時(shí)出錯(cuò)概率會(huì)低于3,4.5.3 軟件測(cè)試策略,3. 邊界測(cè)試 錯(cuò)誤常常會(huì)在域的邊界
44、出現(xiàn)。在源代碼中,決策語(yǔ)句的條件確定邊界。 對(duì)于條件x=1,x=1為邊界,并且在結(jié)果為true的子區(qū)間內(nèi)。在邊界測(cè)試的術(shù)語(yǔ)中,on test表示在條件為true的區(qū)間,off test表示在條件為false的區(qū)間。 邊界測(cè)試的目的是確保實(shí)際的邊界盡可能靠近指定的邊界,測(cè)試用例選取在邊界上和盡可能靠近邊界的值。標(biāo)準(zhǔn)的邊界測(cè)試是做兩個(gè)盡可能分開(kāi)的on test和一個(gè)靠近邊界中間的off test。,4.5.4 面向?qū)ο筌浖y(cè)試,面向?qū)ο蟮某绦驗(yàn)檐浖y(cè)試增加了復(fù)雜程度,常規(guī)的測(cè)試方法應(yīng)該適用于類內(nèi)部各操作(函數(shù))的測(cè)試,功能測(cè)試方法仍然適用于面向?qū)ο蟮能浖y(cè)試,而結(jié)構(gòu)測(cè)試應(yīng)該是基于類結(jié)構(gòu),但至今沒(méi)有
45、一種有效的測(cè)試方法。類的操作之間的交互應(yīng)該是測(cè)試的重要內(nèi)容,可以采用MM測(cè)試方法進(jìn)行面向?qū)ο蟪绦驕y(cè)試。 1. MM測(cè)試 MM(Method-message)測(cè)試要求每個(gè)對(duì)操作的調(diào)用均被測(cè)試到。也就是說(shuō),在每個(gè)操作內(nèi),對(duì)其它操作的調(diào)用至少被測(cè)試一次。如果一個(gè)操作對(duì)另一個(gè)操作調(diào)用了多次,則每次調(diào)用都需要被測(cè)試一次。MM測(cè)試并不包容每語(yǔ)句測(cè)試標(biāo)準(zhǔn)。,4.5.4 面向?qū)ο筌浖y(cè)試,2. 函數(shù)對(duì)測(cè)試 函數(shù)對(duì)測(cè)試要求所有可能的操作執(zhí)行序列中,長(zhǎng)度為2的都必須被測(cè)試,即連續(xù)兩個(gè)函數(shù)調(diào)用的關(guān)系都應(yīng)被測(cè)試。為實(shí)現(xiàn)該方法,可通過(guò)常規(guī)的表達(dá)式序列發(fā)現(xiàn)可能的函數(shù)對(duì)調(diào)用。例如,在圖4-5所示的棧結(jié)構(gòu)操作的例子中,可能出
46、現(xiàn)的函數(shù)對(duì)測(cè)試包括:壓棧和出棧,表4.8 棧結(jié)構(gòu)操作的函數(shù)對(duì)分析,4.5.4 面向?qū)ο筌浖y(cè)試,3面向?qū)ο蟮能浖y(cè)試舉例 以下面程序?yàn)槔?,說(shuō)明面向?qū)ο筌浖y(cè)試的方法。 class Node int num; public: Node()num = 100; void SetNum(int x) num = x; int GetNum()return num; void Add() num+; void Minus()num-; void Show()coutnumendl; ;,4.5.4 面向?qū)ο筌浖y(cè)試,class List Node *pointer; int counter; publ
47、ic: List()poiner = new Node; counter=1; void Double()pointer-SetNum(2*pointerGetNum(); void Increase()pointer-Add(); pointer-Add(); void Decrease()pointer-Minus(); pointer-Minus(); void Show() pointer-Show(); ; void main() List list; list.Double();list.Decrease();list.Show(); ,4.5.4 面向?qū)ο筌浖y(cè)試,上面的程序段的
48、函數(shù)調(diào)用關(guān)系如下所示,列出了各類的成員函數(shù)及對(duì)其它類函數(shù)的調(diào)用。,class Node Node() SetNum() GetNum() Add() Minus() Show(),class List List() Node:Node Double() Node:GetNum() Node:SetNum() Increase() Node:Add() Node:Add() Decrease() Node:Minus() Node:Minus() Show() Node:Show(),main() List() Node() Double() GetNum() SetNum() Decrease
49、() Minus() Minus(),MM測(cè)試要求測(cè)試用例執(zhí)行所有的這些調(diào)用過(guò)程。,4.5.4 面向?qū)ο筌浖y(cè)試,函數(shù)對(duì)測(cè)試應(yīng)包括以下的函數(shù)對(duì): List(),Node() Double(),GetNum() Double(),SetNum() Increase(),Add() Decrease(),Minus() List:Show(),Node:Show(),4.6 研究型學(xué)習(xí)與實(shí)施方法,研究型學(xué)習(xí)指學(xué)生在教師指導(dǎo)下,從自然、社會(huì)、和生活中自行選定專題分組進(jìn)行研究,并在研究過(guò)程中主動(dòng)地獲取知識(shí)、運(yùn)用知識(shí)、解決問(wèn)題的學(xué)習(xí)活動(dòng)。它具有以下特點(diǎn): 創(chuàng)新性:研究型學(xué)習(xí)這一概念首先給長(zhǎng)期接受傳統(tǒng)灌輸式教育的學(xué)生以耳目一新的感覺(jué),它徹底解放學(xué)生受局限的思想,使其思維異?;钴S,靈感乍現(xiàn),有利于培養(yǎng)學(xué)生的創(chuàng)新能力和創(chuàng)新意識(shí)。 開(kāi)放性:研究型課程沒(méi)有事先預(yù)定的內(nèi)容,學(xué)生根據(jù)本身的興趣、愛(ài)好與特長(zhǎng),考慮已有資源的條件來(lái)確定研究的問(wèn)題,排除了很多人做同一個(gè)題目,答案千篇一律的弊病。另外,所研究的問(wèn)題本身具有開(kāi)發(fā)性,研究?jī)?nèi)容可以根據(jù)學(xué)習(xí)過(guò)程中的新發(fā)現(xiàn)、新體會(huì)而改變,問(wèn)題的答案往往也不是唯一的,評(píng)價(jià)的標(biāo)準(zhǔn)具有多元性。研究型學(xué)習(xí)內(nèi)容、過(guò)程和結(jié)果均具有開(kāi)放性。,4.6 研究型學(xué)習(xí)與實(shí)施方法,自主性:研究型學(xué)習(xí)將學(xué)生的需要、興趣和目的置于主導(dǎo)地位,以學(xué)生的親身體驗(yàn)為基礎(chǔ),對(duì)學(xué)科知識(shí)進(jìn)行綜合運(yùn)用。學(xué)生自己選
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 傳染病信息公布制度
- 人才代理制度
- 中國(guó)進(jìn)口大豆制度
- 涼州區(qū)高壩鎮(zhèn)人民政府2025年公開(kāi)招聘專業(yè)化管理大學(xué)生村文書(shū)(補(bǔ)充)備考題庫(kù)及答案詳解1套
- 2025-2030淄博硼氫化鈉行業(yè)市場(chǎng)現(xiàn)狀供需平衡分析評(píng)估投資規(guī)劃分析研究報(bào)告
- 2025-2030中國(guó)紅外隱身粘合劑行業(yè)銷售戰(zhàn)略規(guī)劃及投資效益分析研究報(bào)告
- 2025至2030中國(guó)再生塑料循環(huán)經(jīng)濟(jì)模式與政策支持研究報(bào)告
- 2025至2030中國(guó)污水處理膜技術(shù)應(yīng)用場(chǎng)景拓展與運(yùn)營(yíng)效率提升分析報(bào)告
- 2025至2030中國(guó)兒童教育市場(chǎng)細(xì)分領(lǐng)域與增長(zhǎng)動(dòng)力研究報(bào)告
- 南京醫(yī)科大學(xué)2026年招聘人事代理人員備考題庫(kù)及一套答案詳解
- 精密制造公司年度總結(jié)
- 修復(fù)承重柱地面施工方案
- 2026年全球美容與個(gè)人護(hù)理趨勢(shì)預(yù)測(cè)報(bào)告-英敏特-202510
- 2025內(nèi)蒙古通遼市扎魯特旗巨日合鎮(zhèn)人民政府招聘護(hù)林員9人考試參考試題及答案解析
- 林下經(jīng)濟(jì)培訓(xùn)課件
- 黃褐斑的中醫(yī)辨證分型及治療
- 安徽省2025年高二學(xué)業(yè)水平合格性考試英語(yǔ)試卷及答案
- 2025年?duì)I養(yǎng)指導(dǎo)員專業(yè)技能考試試題及答案
- 建筑施工人員入場(chǎng)安全生產(chǎn)教育培訓(xùn)考試試卷及答案
- 學(xué)習(xí)《水利水電工程生產(chǎn)安全重大事故隱患判定導(dǎo)則-SLT 842》課件
- 新生兒嘔吐教學(xué)課件
評(píng)論
0/150
提交評(píng)論