版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
軟件工程概念企業(yè)級(jí)卓越人才培養(yǎng)第一章學(xué)習(xí)目標(biāo)了解軟件工程的概念理解軟件工程的分類(lèi)理解軟件的生命周期理解UML的作用、組成軟件的概述、特點(diǎn)軟件的特點(diǎn)是:(1)軟件具有抽象性。(2)軟件沒(méi)有明顯的制造過(guò)程。(3)軟件沒(méi)有老化問(wèn)題。(4)軟件對(duì)計(jì)算機(jī)系統(tǒng)有依賴性。(5)軟件的開(kāi)發(fā)至今手工。(6)軟件本身是復(fù)雜的。(7)軟件成本相當(dāng)昂貴。(8)相當(dāng)多的軟件工作涉及到社會(huì)因素。軟件的分類(lèi)按功能劃分:按規(guī)模劃分:按工作方式劃分:按服務(wù)對(duì)象的范圍劃分:軟件發(fā)展和軟件危機(jī)計(jì)算機(jī)軟件經(jīng)歷了三個(gè)發(fā)展階段:程序設(shè)計(jì)階段,約為50至60年代程序系統(tǒng)階段,約為60至70年代軟件工程階段,約為70年代以后幾十年來(lái)最根本的變化體現(xiàn)在:人們改變了對(duì)軟件的看法。軟件的需求是軟件發(fā)展的動(dòng)力。軟件工作的范圍從只考慮程序的編寫(xiě)擴(kuò)展到涉及整個(gè)軟件生存周期。軟件發(fā)展和軟件危機(jī)軟件危機(jī)歸結(jié)起來(lái)有:缺乏軟件開(kāi)發(fā)的經(jīng)驗(yàn)和有關(guān)軟件開(kāi)發(fā)數(shù)據(jù)的積累,使得開(kāi)發(fā)工作的計(jì)劃很難制定。軟件需求在開(kāi)發(fā)的初期階段提得不夠明確,或是未能得到確切的表達(dá)。開(kāi)發(fā)過(guò)程沒(méi)有統(tǒng)一的、公認(rèn)的方法論和規(guī)范指導(dǎo),參加的人員各行其事。未能在測(cè)試階段充分做好檢測(cè)工作,提交用戶的軟件質(zhì)量差,在運(yùn)行中暴露出大量的問(wèn)題。軟件開(kāi)發(fā)中的方法
對(duì)于開(kāi)發(fā)中小型系統(tǒng)的人員來(lái)說(shuō),理解優(yōu)秀方法學(xué)的基礎(chǔ)是非常必要的。我們可以從以下幾個(gè)方面得知:方法學(xué)有助于對(duì)編碼設(shè)置規(guī)則即使是了解方法學(xué)的基本步驟,也能增進(jìn)對(duì)問(wèn)題的理解,提高解決方案的質(zhì)量。在每個(gè)階段,方法學(xué)指定了下一步的工作,我們不會(huì)為下一步要干什么而煩惱方法學(xué)有助于編寫(xiě)出擴(kuò)展性更高、可靠性更高、更容易調(diào)試的代碼。一個(gè)優(yōu)秀的方法能夠解決如下問(wèn)題:規(guī)劃、調(diào)度、分配資源、工作流、活動(dòng)、任務(wù)等等。軟件開(kāi)發(fā)的幾個(gè)階段軟件生存周期的六個(gè)步驟。制定計(jì)劃。需求分析。軟件設(shè)計(jì)。程序編寫(xiě)。軟件測(cè)試。運(yùn)行/維護(hù)。軟件的生命周期瀑布模型軟件的生命周期螺旋模型軟件的生命周期噴泉模式軟件工程的目標(biāo)付出較低的開(kāi)發(fā)成本;達(dá)到要求的軟件功能;取得較好的軟件性能;開(kāi)發(fā)的軟件易于移植;需要較低的維護(hù)費(fèi)用;能按時(shí)完成開(kāi)發(fā)工作,及時(shí)交付使用。軟件工程的原則抽象。信息隱蔽。模塊化。局部化。確定性。一致性。完備性。可驗(yàn)證性。面向?qū)ο蠓椒▽W(xué)統(tǒng)一建模語(yǔ)言/統(tǒng)一過(guò)程(UML/UP)UML是一種用于描述、可視化和構(gòu)架軟件系統(tǒng)以及商業(yè)建模的語(yǔ)言。UP代表了在大型、復(fù)雜系統(tǒng)的建模領(lǐng)域得到認(rèn)可的"優(yōu)秀的軟件工程方法"。
什么是UMLUML是一種標(biāo)準(zhǔn)的圖形化建模語(yǔ)言,它是面向?qū)ο蠓治雠c設(shè)計(jì)的一種標(biāo)準(zhǔn)表示。它具有以下一些特點(diǎn):不是一種可視化的程序設(shè)計(jì)語(yǔ)言,而是一種可視化的建模語(yǔ)言。不是工具或知識(shí)庫(kù)的規(guī)格說(shuō)明,而是一種建模語(yǔ)言規(guī)格說(shuō)明是一種表示的標(biāo)準(zhǔn)。不是過(guò)程也不是方法,但允許任何一種過(guò)程和方法使用它。什么是UML
所以我們可以說(shuō):UML是一種語(yǔ)言。UML是一種可視化的建模語(yǔ)言。UML是一種可用于詳細(xì)描述的語(yǔ)言。UML是一種構(gòu)造語(yǔ)言。UML是一種文檔化語(yǔ)言。為什么需要UML
易于使用,表達(dá)能力強(qiáng)。與具體的實(shí)現(xiàn)無(wú)關(guān)。與具體的過(guò)程無(wú)關(guān)。簡(jiǎn)單并且可擴(kuò)展。為OOA/D中涌現(xiàn)出的高級(jí)概念提供支持。與最好的軟件工程實(shí)踐經(jīng)驗(yàn)集成。可升級(jí)具有廣闊的適用性和可用性。有利于面對(duì)對(duì)象工具的市場(chǎng)成長(zhǎng)。UML的發(fā)展探索階段:Booch、Rumbaugh和Jacobson聯(lián)合行動(dòng)。UML的標(biāo)準(zhǔn)化:對(duì)象管理小組(OMG)在1997年1月提交UML1.0版的文檔及其他資料。
工業(yè)化:繼續(xù)促進(jìn)統(tǒng)一建模語(yǔ)言的推廣。
UML的組成
UML在軟件開(kāi)發(fā)中的應(yīng)用
需求分析
UML的用例視圖可以表示客戶的需求。UML在軟件開(kāi)發(fā)中的應(yīng)用
分析分析階段主要考慮所要解決的問(wèn)題,可用UML的邏輯視圖和動(dòng)態(tài)視圖來(lái)描述。UML在軟件開(kāi)發(fā)中的應(yīng)用
構(gòu)造在構(gòu)造或程序設(shè)計(jì)階段,把設(shè)計(jì)階段的類(lèi)轉(zhuǎn)換成某種面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言的代碼。UML在軟件開(kāi)發(fā)中的應(yīng)用
測(cè)試對(duì)系統(tǒng)的測(cè)試通常分為單元測(cè)試、集成測(cè)試、系統(tǒng)測(cè)試和接受測(cè)試幾個(gè)不同級(jí)別??偨Y(jié)
軟件的概念、特點(diǎn)。軟件生存周期的六個(gè)階段。瀑布模型及其優(yōu)缺點(diǎn)。軟件工程的原則。UML的構(gòu)成。用例視圖、靜態(tài)視圖的概念和用途。靜態(tài)視圖企業(yè)級(jí)卓越人才培養(yǎng)第二章學(xué)習(xí)目標(biāo)了解靜態(tài)視圖的作用理解靜態(tài)視圖包含哪些元素掌握類(lèi)圖、類(lèi)關(guān)系類(lèi)類(lèi)元用來(lái)描述結(jié)構(gòu)和行為特性的機(jī)制,它包括類(lèi)、接口、數(shù)據(jù)類(lèi)型、信號(hào)、組件、節(jié)點(diǎn)等等。關(guān)系在進(jìn)行系統(tǒng)建模時(shí),不僅要抽象出形成系統(tǒng)詞匯的事物,還必須對(duì)這些事物間的關(guān)系進(jìn)行建模。關(guān)系是事物間的聯(lián)系。關(guān)系在類(lèi)的關(guān)系中,最常用的有以下4種。依賴(Dependency)泛化(Generalization)關(guān)聯(lián)(Association)實(shí)現(xiàn)(Realization)依賴依賴是按兩個(gè)元素之間的關(guān)系,對(duì)一個(gè)元素(提供者)的改變可能會(huì)影響或提供消息給其他元素(客戶)。
依賴關(guān)系依賴UML建模過(guò)程中,常用依賴指明一個(gè)類(lèi)把另一個(gè)類(lèi)作為它的操作的特征標(biāo)記中的參數(shù)。當(dāng)被使用的類(lèi)發(fā)生變化時(shí),那么另一個(gè)類(lèi)的操作也會(huì)受到影響,因此這個(gè)被使用類(lèi)此時(shí)已經(jīng)有了不同的接口行為。
泛化泛化是一般事物(稱(chēng)為超類(lèi)或父類(lèi))和該事物的較為特殊的種類(lèi)(稱(chēng)為子類(lèi))之間的關(guān)系。子類(lèi)繼承父類(lèi)的屬性和操作,除此之外通常子類(lèi)還添加新的屬性和操作,或者修改了父類(lèi)的某些操作。
泛化關(guān)系泛化泛化有兩個(gè)主要的用途:定義多態(tài)、描述繼承。關(guān)聯(lián)關(guān)聯(lián)是一種結(jié)構(gòu)關(guān)系,它指明一個(gè)事物的對(duì)象與另一個(gè)事物的對(duì)象間的聯(lián)系。
關(guān)聯(lián)關(guān)聯(lián)在實(shí)際建模過(guò)程中,在關(guān)聯(lián)實(shí)例中說(shuō)明兩個(gè)類(lèi)間存在多少個(gè)相互連接是很重要的。修飾語(yǔ)意0…10或11為10…*或0…n0或更多1…*或1…n1或更多*或n0或更多實(shí)現(xiàn)實(shí)現(xiàn)是規(guī)格說(shuō)明和其現(xiàn)實(shí)間的關(guān)系。它表示不繼承結(jié)構(gòu)而只繼承行為。實(shí)現(xiàn)關(guān)系將一種模型元素(如類(lèi))與另一種模型元素(如接口)連接起來(lái),其中接口只是行為的說(shuō)明而不是結(jié)構(gòu)或者實(shí)現(xiàn)。
對(duì)照?qǐng)D在某一時(shí)刻一個(gè)系統(tǒng)特定的靜態(tài)配置叫做快照??煺盏膱D包含對(duì)象的圖像,因此也叫對(duì)象圖。實(shí)例在建立系統(tǒng)的靜態(tài)視圖的過(guò)程是對(duì)系統(tǒng)領(lǐng)域問(wèn)題及其解決方案的分析和設(shè)計(jì)的過(guò)程。以“圖書(shū)館管理系統(tǒng)”為例來(lái)建立相應(yīng)的靜態(tài)視圖。建立類(lèi)圖步驟建立類(lèi)圖的步驟如下:研究分析問(wèn)題領(lǐng)域,確定系統(tǒng)的需求發(fā)現(xiàn)對(duì)象和對(duì)象類(lèi),明確類(lèi)的屬性和操作發(fā)現(xiàn)類(lèi)之間的靜態(tài)關(guān)系,一般與特殊關(guān)系,部分和整體關(guān)系,研究類(lèi)之間的繼承性和多態(tài)性設(shè)計(jì)類(lèi)和聯(lián)系繪制對(duì)象類(lèi)圖并繪制相應(yīng)得說(shuō)明類(lèi)的生成讀者類(lèi)的基本信息名字郵編地址城市省份借書(shū)預(yù)留書(shū)籍書(shū)籍類(lèi)的基本信息書(shū)名作者序列號(hào)類(lèi)型
使用RationalRose繪制類(lèi)圖開(kāi)始菜單打開(kāi)“RationalRoseEnterpriseEdition”使用RationalRose繪制類(lèi)圖建立工程點(diǎn)擊“SaveAs”,彈出如下對(duì)話框,輸入項(xiàng)目名及其保存路徑。
使用RationalRose繪制類(lèi)圖建立工程然后就可以看到如下圖所示界面使用RationalRose繪制類(lèi)圖建立工程我們先創(chuàng)建一個(gè)類(lèi)視圖如下圖所示:
使用RationalRose繪制類(lèi)圖建立工程
類(lèi)視圖名稱(chēng)修改為“Test”,并雙擊類(lèi)視圖,可以看到工具箱如下圖所示:使用RationalRose繪制類(lèi)圖建立工程
點(diǎn)擊工具箱中的類(lèi),在編輯區(qū)畫(huà)出一個(gè)類(lèi),把NewClass改成BrowserInformation如下圖所示:
使用RationalRose繪制類(lèi)圖建立工程
雙擊并添加方法getBrowerInformation():使用RationalRose繪制類(lèi)圖畫(huà)UML圖
用同樣的方法創(chuàng)建Persistent類(lèi),然后單擊工具欄上的“”圖標(biāo),接著點(diǎn)擊Persistent類(lèi),并延伸到BrowserInformation,表明相互繼承的關(guān)系:
使用Visio2013繪制類(lèi)圖從開(kāi)始菜單打開(kāi)“MicrisoftVisio2013”使用Visio2013繪制類(lèi)圖在搜索欄中搜索“uml”,出現(xiàn)對(duì)話框使用Visio2013繪制類(lèi)圖點(diǎn)擊“UML靜態(tài)結(jié)構(gòu)圖”使用Visio2013繪制類(lèi)圖點(diǎn)擊創(chuàng)建使用Visio2013繪制類(lèi)圖開(kāi)始制作類(lèi)圖,把左邊的類(lèi)拖到右邊使用Visio2013繪制類(lèi)圖雙擊里面的類(lèi)名并更改為BrowerInformation,并用同樣的方法創(chuàng)建Persistent類(lèi)。然后把左邊工具欄中的繼承圖標(biāo),這是兩個(gè)類(lèi)實(shí)現(xiàn)了繼承總結(jié)靜態(tài)視圖的關(guān)鍵元素。類(lèi)的定義及其在UML中的圖形表示。最常用的4種類(lèi)的關(guān)系:依賴(Dependency)、泛化(Generalization)、關(guān)聯(lián)(Association)、實(shí)現(xiàn)(Realization)。
用例視圖企業(yè)級(jí)卓越人才培養(yǎng)第二章學(xué)習(xí)目標(biāo)了解用例視圖的作用理解如何識(shí)別用例理解用例間的關(guān)系概述UML中的用例視圖描述了一組用例、參與者以及它們之間的關(guān)系,因此用例圖包括以下3個(gè)方面內(nèi)容:用例參與者用例之間的關(guān)系參與者參與者(Actor,也稱(chēng)角色)是系統(tǒng)外部的一個(gè)實(shí)體,它以某種方式參與了用例的執(zhí)行過(guò)程。參與者可以是人、另一個(gè)計(jì)算機(jī)系統(tǒng)或一些可運(yùn)行的進(jìn)程。
角色
參與者參與者是一個(gè)群體概念,代表的是一類(lèi)能使用某個(gè)功能的人或事,不是指某個(gè)個(gè)體。參與者與系統(tǒng)進(jìn)行通信的收、發(fā)消息機(jī)制,與面向?qū)ο缶幊讨械南C(jī)制很像。參與者可以分成主要參與者和次要參與者,也可以分成主動(dòng)參與者和被動(dòng)參與者。參與者在獲取用例前要先確定系統(tǒng)的參與者,可以根據(jù)以下一些問(wèn)題來(lái)尋找系統(tǒng)的參與者:誰(shuí)或什么使用該系統(tǒng)交互時(shí),它們扮演什么角色誰(shuí)安裝系統(tǒng)誰(shuí)啟動(dòng)和關(guān)閉系統(tǒng)誰(shuí)維護(hù)系統(tǒng)參與者在獲取用例前要先確定系統(tǒng)的參與者,可以根據(jù)以下一些問(wèn)題來(lái)尋找系統(tǒng)的參與者:與該系統(tǒng)交互的是什么系統(tǒng)誰(shuí)從系統(tǒng)獲取信息誰(shuí)提供信息給系統(tǒng)有什么事情發(fā)生在固定的事件參與者在建模參與者過(guò)程中,記住以下要點(diǎn):參與者對(duì)于系統(tǒng)而言總是外部的,因此它們?cè)谀愕目刂浦鈪⑴c者直接同系統(tǒng)交互,這可以幫助定義系統(tǒng)邊界參與者表示人和事物與系統(tǒng)發(fā)生交互時(shí)所扮演的角色,而不是特定的人或者特定的事物。一個(gè)人或事物在與系統(tǒng)發(fā)生交互時(shí),可以同時(shí)或不同時(shí)扮演多個(gè)角色。例如,某研究生擔(dān)任某教授的助教,同職業(yè)的角度看,它扮演了兩個(gè)角色——學(xué)生和助教。參與者在建模參與者過(guò)程中,記住以下要點(diǎn):每一個(gè)參與者需要有一個(gè)具有業(yè)務(wù)一樣的名字,在建模中,不推薦使用諸如NewActor這樣的名字。每個(gè)參與者必須有簡(jiǎn)短的描述,從業(yè)務(wù)角度描述參與者是什么。像類(lèi)一樣,參與者可以具有分欄,表示參與者屬性和它可接受的事件。一般情況下,這種分欄使用的并不多,很少顯示在用例圖中。
用例圖用例是一個(gè)敘述型的文檔,用來(lái)描述參與者使用系統(tǒng)完成某個(gè)事件使的事情發(fā)生順序。圖形上的用例用一個(gè)橢圓來(lái)表示,用例的名字可以書(shū)寫(xiě)在橢圓的內(nèi)部或下方。識(shí)別用例用例是一個(gè)敘述型的文檔,用來(lái)描述參與者使用系統(tǒng)完成某個(gè)事件使的事情發(fā)生順序。圖形上的用例用一個(gè)橢圓來(lái)表示,用例的名字可以書(shū)寫(xiě)在橢圓的內(nèi)部或下方。用例間的關(guān)系用例除了與其參與者發(fā)生關(guān)聯(lián)外,還可以參與系統(tǒng)中的多個(gè)關(guān)系,這些關(guān)系包括:泛化關(guān)系、包含關(guān)系和擴(kuò)充關(guān)系。
關(guān)系功能表示法關(guān)聯(lián)參與者與其參與執(zhí)行的用例之間的通信途徑擴(kuò)展在基礎(chǔ)用例上插入基礎(chǔ)用例不能說(shuō)明的擴(kuò)展部分用例泛化用例之間的一般和特殊關(guān)系,其中特殊用例繼承了一般用例的特性并增加了新的特性包括在基礎(chǔ)用例上插入附加的行為,并且具有明確的描述實(shí)例購(gòu)買(mǎi)的商品入庫(kù);將積壓的商品退給供應(yīng)商;將商品移送到銷(xiāo)售部門(mén);銷(xiāo)售部門(mén)將商品移送到倉(cāng)庫(kù);實(shí)例管理員盤(pán)點(diǎn)倉(cāng)庫(kù);供應(yīng)商提供各種貨物;用戶查詢銷(xiāo)售部門(mén)的營(yíng)銷(xiāo)記錄;用戶查詢倉(cāng)庫(kù)中所有變動(dòng)記錄。實(shí)例創(chuàng)建以下參與者。操作員管理員供應(yīng)商商品領(lǐng)料人商品退料人實(shí)例建立如下用例:倉(cāng)庫(kù)進(jìn)貨倉(cāng)庫(kù)退貨倉(cāng)庫(kù)領(lǐng)料倉(cāng)庫(kù)退料商品調(diào)撥倉(cāng)庫(kù)盤(pán)點(diǎn)實(shí)例建立如下用例:庫(kù)存查詢業(yè)務(wù)分析倉(cāng)庫(kù)歷史記錄查詢供應(yīng)商信息維護(hù)倉(cāng)庫(kù)信息維護(hù)用戶管理實(shí)例對(duì)用例進(jìn)行分類(lèi):操作員:倉(cāng)庫(kù)進(jìn)貨、倉(cāng)庫(kù)退貨、倉(cāng)庫(kù)領(lǐng)料、倉(cāng)庫(kù)退料、商品調(diào)撥、用戶管理。管理員:倉(cāng)庫(kù)進(jìn)貨、倉(cāng)庫(kù)退貨、倉(cāng)庫(kù)盤(pán)點(diǎn)、商品調(diào)撥、庫(kù)存查詢、業(yè)務(wù)分析、倉(cāng)庫(kù)歷史記錄查詢、供應(yīng)商信息維護(hù)、倉(cāng)庫(kù)信息維護(hù)、用戶管理。實(shí)例對(duì)用例進(jìn)行分類(lèi):供應(yīng)商:倉(cāng)庫(kù)進(jìn)貨、倉(cāng)庫(kù)退貨。領(lǐng)料人:倉(cāng)庫(kù)領(lǐng)料。退料人:倉(cāng)庫(kù)退料。實(shí)例倉(cāng)庫(kù)信息系統(tǒng)的用例圖總結(jié)在UML中用例圖的用途。參與者的定義。用例的圖形表示。用例的多個(gè)關(guān)系:泛化、包含、擴(kuò)充。動(dòng)態(tài)視圖企業(yè)級(jí)卓越人才培養(yǎng)第四章學(xué)習(xí)目標(biāo)了解動(dòng)態(tài)視圖包含哪些內(nèi)容理解時(shí)序圖的作用掌握活動(dòng)圖的作用時(shí)序圖時(shí)序圖描述類(lèi)系統(tǒng)中類(lèi)和類(lèi)之間的交互,它將這些交互建模成消息交換時(shí)序圖描述了類(lèi)與類(lèi)之間相互交換,以完成期望行為的消息。時(shí)序圖的概念和內(nèi)容我們可以看到時(shí)序圖中包括如下元素:類(lèi)角色、生命線、激活期和消息。時(shí)序圖的用途在用例腳本的語(yǔ)境中將動(dòng)態(tài)行為有效地可視化。用來(lái)表示用例中的行為順序。時(shí)序圖的用途時(shí)序圖有別于協(xié)作圖的特性。時(shí)序圖有生命線時(shí)序圖有激活期
時(shí)序圖的建模技術(shù)
使用時(shí)序圖對(duì)系統(tǒng)建模時(shí),可以遵循如下策略。設(shè)置交互的語(yǔ)境,這些語(yǔ)境可以是系統(tǒng)、子系統(tǒng)、操作、用例和協(xié)作的一個(gè)腳本。通知識(shí)別對(duì)象在交互中扮演的角色,根據(jù)對(duì)象的重要性,將其從左向右的方向放在時(shí)序圖中。設(shè)置每個(gè)對(duì)象的生命線。一般情況下,對(duì)象存在于交互的整個(gè)過(guò)程,但它也可以交互過(guò)程中創(chuàng)建和撤銷(xiāo)。時(shí)序圖的建模技術(shù)從引發(fā)某個(gè)交互的信息開(kāi)始,在生命線之間按從上向下的順序畫(huà)出隨后的消息。設(shè)置對(duì)象的激活期,這可以可視化實(shí)際計(jì)算發(fā)生時(shí)的時(shí)間點(diǎn)、可視化消息的嵌套。如果需要設(shè)置時(shí)間或空間的約束,可以為每個(gè)消息附上合適的時(shí)間和空間約束。給某控制流的每個(gè)消息附上前置或后置條件,這可以更詳細(xì)地控制這個(gè)控制流。
協(xié)作圖協(xié)作圖對(duì)在一次交互中有意義的對(duì)象和對(duì)象間的鏈建模。協(xié)作圖的一個(gè)用途是表示一個(gè)類(lèi)操作的實(shí)現(xiàn)。協(xié)作圖用各個(gè)角色的幾何排列圖形來(lái)表示角色之間的關(guān)系,并用消息來(lái)說(shuō)明這些關(guān)系?;顒?dòng)圖活動(dòng)圖是UML中描述系統(tǒng)動(dòng)態(tài)行為的圖之一,它用于展現(xiàn)參與行為的類(lèi)的活動(dòng)或動(dòng)作。動(dòng)作狀態(tài)UML里,動(dòng)作狀態(tài)是以執(zhí)行指定動(dòng)作,并在此動(dòng)作完成后通過(guò)完成變遷轉(zhuǎn)向另一個(gè)障礙而設(shè)置的狀態(tài)。這里所指出的動(dòng)作有3個(gè)特點(diǎn):原子性的、不可中斷的、瞬時(shí)的。
活動(dòng)狀態(tài)活動(dòng)狀態(tài)的特點(diǎn)是:它可以被分解成其他子活動(dòng)或動(dòng)作狀態(tài)。它能夠被中斷,占有有限的事件?;顒?dòng)狀態(tài)如果某活動(dòng)狀態(tài)是只包括一個(gè)動(dòng)作的活動(dòng)狀態(tài),那它就是動(dòng)作狀態(tài)。動(dòng)作狀態(tài)是活動(dòng)狀態(tài)的一個(gè)特例?;顒?dòng)狀態(tài)在UML中,動(dòng)作狀態(tài)和活動(dòng)狀態(tài)的圖標(biāo)沒(méi)有什么區(qū)別,都是圓端的方框。只是活動(dòng)狀態(tài)可以有附加的部分,例如可以指定入口動(dòng)作、出口動(dòng)作、狀態(tài)動(dòng)作以及內(nèi)嵌狀態(tài)機(jī)。轉(zhuǎn)移當(dāng)一個(gè)動(dòng)作狀態(tài)或活動(dòng)狀態(tài)結(jié)束時(shí),該狀態(tài)就會(huì)轉(zhuǎn)換到下一個(gè)狀態(tài),這就是無(wú)觸發(fā)轉(zhuǎn)移或稱(chēng)為自動(dòng)轉(zhuǎn)移。無(wú)觸發(fā)轉(zhuǎn)移實(shí)際上是沒(méi)有任何特定的事件觸發(fā)的轉(zhuǎn)移,即當(dāng)狀態(tài)結(jié)束工作時(shí)就自動(dòng)的發(fā)生轉(zhuǎn)移。分支
活動(dòng)圖中的分支用來(lái)描述其他的程序結(jié)構(gòu) 活動(dòng)圖中的分支用一個(gè)菱形表示,可以有一個(gè)進(jìn)入轉(zhuǎn)換和兩個(gè)或多個(gè)輸出轉(zhuǎn)換。分叉和匯合建模過(guò)程中,可能會(huì)遇到對(duì)象在運(yùn)行時(shí)存在兩個(gè)或多個(gè)并發(fā)運(yùn)行的控制流。在UML中,可以使用分叉把路徑分成兩個(gè)或多個(gè)并發(fā)流,然后使用結(jié)合,同步這些并發(fā)流。泳道
泳道將活動(dòng)圖的活動(dòng)狀態(tài)分組,每一組表示負(fù)責(zé)那些或的業(yè)務(wù)組織 在活動(dòng)圖里泳道區(qū)分了活動(dòng)的不同職責(zé),在泳道活動(dòng)中,每一個(gè)活動(dòng)都只能明確地屬于一個(gè)泳道。
泳道活動(dòng)圖的用途活動(dòng)圖用于動(dòng)系統(tǒng)的動(dòng)態(tài)行為建模?;顒?dòng)圖描述了從活動(dòng)到活動(dòng)的流。活動(dòng)圖實(shí)際上是狀態(tài)圖的特殊形式。在UML中,可以把活動(dòng)圖作為流程圖來(lái)使用,用于對(duì)系統(tǒng)的操作建模?;顒?dòng)圖的建模技術(shù)在活動(dòng)圖建模過(guò)程中,參照以下步驟進(jìn)行:(1)識(shí)別要對(duì)其工作流進(jìn)行描述的類(lèi);(2)對(duì)動(dòng)態(tài)狀態(tài)建模(3)對(duì)動(dòng)作流建模(4)對(duì)對(duì)象流建模(5)對(duì)建模結(jié)果進(jìn)行凈化和細(xì)化??偨Y(jié)動(dòng)態(tài)模型主要是建立系統(tǒng)的交互圖和行為圖。交互圖包括時(shí)序圖和協(xié)作圖行為圖則包括狀態(tài)圖和活動(dòng)圖時(shí)序圖(SequenceDiagram)是強(qiáng)調(diào)消息時(shí)間順序的交互圖。時(shí)序圖描述類(lèi)系統(tǒng)中類(lèi)和類(lèi)之間的交互,它將這些交互建模成消息交換時(shí)序圖中包括:類(lèi)角色、生命線、激活期和消息等元素協(xié)作圖對(duì)在一次交互中有意義的對(duì)象和對(duì)象間的鏈建模活動(dòng)圖是UML中描述系統(tǒng)動(dòng)態(tài)行為的圖之一,它用于展現(xiàn)參與行為的類(lèi)的活動(dòng)或動(dòng)作泳道將活動(dòng)圖的活動(dòng)狀態(tài)分組,每一組表示負(fù)責(zé)那些或的業(yè)務(wù)組織項(xiàng)目管理企業(yè)級(jí)卓越人才培養(yǎng)第五章學(xué)習(xí)目標(biāo)了解管理的意義理解管理中的多個(gè)過(guò)程理解計(jì)劃和控制在項(xiàng)目管理中的重要性管理的意義軟件公司中核心員工需要擁有兩類(lèi)知識(shí):管理知識(shí)和技術(shù)知識(shí)。程序員應(yīng)該既懂技術(shù)又懂一部分管理。管理的定義管理可以有很多角度的定義,一般而言,我們可以把管理理解成領(lǐng)導(dǎo)、也可以理解為決策、還可以理解為協(xié)調(diào)組織。管理是通過(guò)有效地計(jì)劃、組織、控制和激勵(lì)、領(lǐng)導(dǎo)等活動(dòng)來(lái)協(xié)調(diào)人、財(cái)、物的配置以達(dá)到更好地組織目標(biāo)的過(guò)程。管理的作用管理是一門(mén)軟科學(xué),它同時(shí)具有科學(xué)和藝術(shù)兩方面的特點(diǎn)??茖W(xué)的一面表現(xiàn)為它真實(shí)的反映了客觀規(guī)律。藝術(shù)的一面表現(xiàn)在背熟了管理規(guī)則不一定能夠進(jìn)行有效地管理。
管理的作用培養(yǎng)一種管理理念,對(duì)于技術(shù)人員而言能有效地促進(jìn)技術(shù)人員理解企業(yè)制度、崗位規(guī)范;能理解專(zhuān)業(yè)分工協(xié)作的前提條件和重要性;能在大的項(xiàng)目中有序地展開(kāi)工作;時(shí)刻用時(shí)間、成本、質(zhì)量來(lái)衡量自己的工作,改進(jìn)不足,提高團(tuán)隊(duì)工作效率。讓軟件開(kāi)發(fā)在和諧的環(huán)境高效率的組織中順利的開(kāi)展。
管理的原則統(tǒng)一領(lǐng)導(dǎo)和指揮。制度與紀(jì)律。權(quán)利與責(zé)任。公平原則。一般化管理一般化管理在這里是管理中一般都要涉及的一個(gè)基本活動(dòng)。管理的基本流程。管理的基本流程要素分組。項(xiàng)目項(xiàng)目的定義。項(xiàng)目的特征。項(xiàng)目與運(yùn)作的對(duì)比。項(xiàng)目與戰(zhàn)略的關(guān)系。項(xiàng)目管理項(xiàng)目管理的定義。項(xiàng)目管理的過(guò)程。項(xiàng)目管理三角形。項(xiàng)目管理過(guò)程為了更好地管理項(xiàng)目我們把項(xiàng)目過(guò)程分為若干階段:初始化階段,計(jì)劃階段,執(zhí)行階段、監(jiān)督與控制、收尾階段。簡(jiǎn)單過(guò)程管理是:計(jì)劃、執(zhí)行、檢查、總結(jié)。
初始階段初始階段主要任務(wù)是正式的啟動(dòng)一個(gè)新的項(xiàng)目。許多工作在項(xiàng)目正式啟動(dòng)之前已經(jīng)完成了。這些工作不在項(xiàng)目過(guò)程之內(nèi)。初始階段計(jì)劃階段計(jì)劃階段主要任務(wù)確定項(xiàng)目范圍,開(kāi)發(fā)項(xiàng)目管理計(jì)劃,安排項(xiàng)目活動(dòng)。計(jì)劃階段主要任務(wù)列表:開(kāi)發(fā)項(xiàng)目計(jì)劃;開(kāi)發(fā)范圍管理計(jì)劃;創(chuàng)建WBS;定義活動(dòng);為活動(dòng)分配資源;制定成本預(yù)算方案;確定質(zhì)量計(jì)劃;創(chuàng)建溝通計(jì)劃;開(kāi)發(fā)風(fēng)險(xiǎn)管理計(jì)劃;
執(zhí)行階段計(jì)劃階段主要任務(wù)確定項(xiàng)目范圍,開(kāi)發(fā)項(xiàng)目管理計(jì)劃,安排項(xiàng)目活動(dòng)。計(jì)劃階段主要任務(wù)列表:開(kāi)發(fā)項(xiàng)目計(jì)劃;開(kāi)發(fā)范圍管理計(jì)劃;創(chuàng)建WBS;定義活動(dòng);為活動(dòng)分配資源;制定成本預(yù)算方案;確定質(zhì)量計(jì)劃;創(chuàng)建溝通計(jì)劃;開(kāi)發(fā)風(fēng)險(xiǎn)管理計(jì)劃;
監(jiān)督和控制計(jì)劃階段主要任務(wù)確定項(xiàng)目范圍,開(kāi)發(fā)項(xiàng)目管理計(jì)劃,安排項(xiàng)目活動(dòng)。計(jì)劃階段主要任務(wù)列表:開(kāi)發(fā)項(xiàng)目計(jì)劃;開(kāi)發(fā)范圍管理計(jì)劃;創(chuàng)建WBS;定義活動(dòng);為活動(dòng)分配資源;制定成本預(yù)算方案;確定質(zhì)量計(jì)劃;創(chuàng)建溝通計(jì)劃;開(kāi)發(fā)風(fēng)險(xiǎn)管理計(jì)劃;
收尾階段收尾階段主要是有序結(jié)束各項(xiàng)工作。主要任務(wù)列表:結(jié)束項(xiàng)目;了結(jié)合同;
計(jì)劃和控制
從項(xiàng)目管理(PMI)試題的分布可以看出,計(jì)劃和監(jiān)控都是重要的過(guò)程。
考試內(nèi)容問(wèn)題的比率項(xiàng)目初始過(guò)程8.5%項(xiàng)目計(jì)劃過(guò)程23.5%項(xiàng)目執(zhí)行過(guò)程23.5%項(xiàng)目監(jiān)控過(guò)程23%項(xiàng)目收尾過(guò)程7%職業(yè)道德方面14.5%計(jì)劃的重要性第一、通過(guò)制定計(jì)劃,使得小組和有關(guān)管理人員對(duì)項(xiàng)目有關(guān)事項(xiàng)形成共識(shí)和事先約定。第二、通過(guò)計(jì)劃,可以使得一些支持性工作以及并行工作及時(shí)得到安排,避免因計(jì)劃不周造成各子流程之間的相互牽掣。第三、可以使項(xiàng)目實(shí)施人員明確自己的職責(zé),便于自我管理和自我激勵(lì)。計(jì)劃的重要性第四、計(jì)劃可以有效的支持管理,作為經(jīng)理們對(duì)開(kāi)發(fā)工作跟蹤和檢查的依據(jù)。第五、做好事先計(jì)劃,就可以使注意力專(zhuān)心于解決問(wèn)題,而不用再去想下一步做什么?第六、計(jì)劃是項(xiàng)目總結(jié),項(xiàng)目總結(jié)是把實(shí)際運(yùn)行情況與項(xiàng)目計(jì)劃不斷比較以提煉經(jīng)驗(yàn)教訓(xùn)的過(guò)程。制定項(xiàng)目計(jì)劃制定項(xiàng)目計(jì)劃的過(guò)程被稱(chēng)為項(xiàng)目策劃。使用MicrosoftProject編制的文件可以稱(chēng)為計(jì)劃進(jìn)度表,可以用來(lái)規(guī)劃項(xiàng)目時(shí)間進(jìn)度,輔助項(xiàng)目跟蹤。計(jì)劃進(jìn)度表的制定步驟是:工作分解和定義(WBS)、任務(wù)排序、活動(dòng)歷史估算、編制。制定項(xiàng)目計(jì)劃制定項(xiàng)目計(jì)劃的過(guò)程被稱(chēng)為項(xiàng)目策劃。使用MicrosoftProject編制的文件可以稱(chēng)為計(jì)劃進(jìn)度表,可以用來(lái)規(guī)劃項(xiàng)目時(shí)間進(jìn)度,輔助項(xiàng)目跟蹤。計(jì)劃進(jìn)度表的制定步驟是:工作分解和定義(WBS)、任務(wù)排序、活動(dòng)歷史估算、編制。控制控制的主要任務(wù):設(shè)定控制標(biāo)準(zhǔn)確定檢查時(shí)間安排合適人員選擇適當(dāng)方式控制的方式:檢查抽查評(píng)審控制的內(nèi)容:成本質(zhì)量進(jìn)度范圍總結(jié)項(xiàng)目的定義項(xiàng)目的特征項(xiàng)目管理的定義和過(guò)程項(xiàng)目管理三角的構(gòu)成項(xiàng)目過(guò)程的階段項(xiàng)目實(shí)戰(zhàn)——廣告管理系統(tǒng)企業(yè)級(jí)卓越人才培養(yǎng)第六章學(xué)習(xí)目標(biāo)掌握UML解決實(shí)際問(wèn)題引言
這里通過(guò)一個(gè)廣告管理系統(tǒng)的分析與設(shè)計(jì),闡述如何通過(guò)UML降低開(kāi)發(fā)難度和提高開(kāi)發(fā)效率?;咎卣骱凸δ苣K該系統(tǒng)具有以下一些特征:充分適應(yīng)原有廣告工作流程并進(jìn)行合理的改進(jìn),通過(guò)系統(tǒng)提供的靈活的人員權(quán)限設(shè)置和全面的財(cái)務(wù)核算方式,實(shí)現(xiàn)真正的集團(tuán)多報(bào)管理;基本特征和功能模塊該系統(tǒng)具有以下一些特征:在實(shí)現(xiàn)廣告訂單的電子化、工作流程的數(shù)字化同時(shí),幫助集團(tuán)領(lǐng)導(dǎo)提高決策的科學(xué)化水平;基本特征和功能模塊該系統(tǒng)具有以下一些特征:多套廣告價(jià)目表的支持,使廣告管理部門(mén)能在當(dāng)前激烈的市場(chǎng)競(jìng)爭(zhēng)中能采取更為靈活的價(jià)格策略;基本特征和功能模塊該系統(tǒng)具有以下一些特征:通過(guò)對(duì)客戶信息的管理,實(shí)現(xiàn)對(duì)客戶廣告走勢(shì)和重要客戶情況統(tǒng)計(jì)和分析。
基本特征和功能模塊總體結(jié)構(gòu)及功能模塊:UML分析與實(shí)現(xiàn)UML是一種編制系統(tǒng)藍(lán)圖的標(biāo)準(zhǔn)化語(yǔ)言UML可以對(duì)大型復(fù)雜系統(tǒng)的各種成分可視化說(shuō)明并構(gòu)造系統(tǒng)模型UML還可以建立各種必要的文檔UML分析與實(shí)現(xiàn)下面通過(guò)UML來(lái)分析并構(gòu)造廣告管理系統(tǒng)模型,并結(jié)合Rational統(tǒng)一過(guò)程加以描述。圖形使用RationalRose工具軟件繪制。業(yè)務(wù)建模和需求分析下圖是廣告管理系統(tǒng)層次的用例模型,只包含了最基本的UseCase模型,是系統(tǒng)的高層抽象。廣告管理系統(tǒng)設(shè)計(jì)系統(tǒng)分析與設(shè)計(jì)是研究欲采用的實(shí)現(xiàn)環(huán)境和系統(tǒng)結(jié)構(gòu),結(jié)果是產(chǎn)生一個(gè)對(duì)象模型,也就是設(shè)計(jì)模型。系統(tǒng)結(jié)構(gòu)設(shè)計(jì)系統(tǒng)主要有以下四個(gè)包:用戶接口包(UserInterfacePackage)業(yè)務(wù)邏輯包(BusinessRulePackage)數(shù)據(jù)持久訪問(wèn)包(DataPersistencePackage)通用工具包(UserPackage)系統(tǒng)架構(gòu)設(shè)計(jì)用戶接口包(UserInterfacePackage)用戶接口包在其他包的頂層次,為系統(tǒng)用戶提供訪問(wèn)信息和服務(wù)。系統(tǒng)架構(gòu)設(shè)計(jì)業(yè)務(wù)邏輯包(BusinessRulePackage)
該包是廣告管理系統(tǒng)業(yè)務(wù)的核心實(shí)現(xiàn)部分,包括廣告、合同、客戶等。系統(tǒng)架構(gòu)設(shè)計(jì)數(shù)據(jù)持久訪問(wèn)包(DataPersistencePackage)
該包實(shí)現(xiàn)數(shù)據(jù)的持久化,也就是與數(shù)據(jù)庫(kù)交互,實(shí)現(xiàn)數(shù)據(jù)的存取、修改等操作。系統(tǒng)架構(gòu)設(shè)計(jì)通用工具包(UserPackage)該包主要包括應(yīng)用程序安全檢查的類(lèi),可以為上面三個(gè)包提供安全檢查。引言預(yù)訂業(yè)務(wù)對(duì)普通客戶的順序框圖系統(tǒng)詳細(xì)設(shè)計(jì)財(cái)務(wù)業(yè)務(wù)對(duì)代理客戶的協(xié)作框圖系統(tǒng)詳細(xì)設(shè)計(jì)劃版業(yè)務(wù)的順序框圖系統(tǒng)詳細(xì)設(shè)計(jì)財(cái)務(wù)業(yè)務(wù)對(duì)代理客戶的協(xié)作框圖系統(tǒng)詳細(xì)設(shè)計(jì)部署圖實(shí)現(xiàn)、測(cè)試和系統(tǒng)配置在系統(tǒng)編碼前,需要考慮系統(tǒng)的實(shí)際部署情況,可以利用Rose的部署視圖。系統(tǒng)采用三層邏輯結(jié)構(gòu):界面與業(yè)務(wù)邏輯分開(kāi),業(yè)務(wù)邏輯又與數(shù)據(jù)庫(kù)訪問(wèn)邏輯分開(kāi)。同時(shí),部署視圖還需要處理一些其他問(wèn)題,如系統(tǒng)容錯(cuò)、網(wǎng)絡(luò)帶寬、故障恢復(fù)和響應(yīng)時(shí)間。實(shí)現(xiàn)、測(cè)試和系統(tǒng)配置經(jīng)過(guò)系統(tǒng)分析和設(shè)計(jì)后,就可以根據(jù)設(shè)計(jì)模型在具體的環(huán)境中實(shí)現(xiàn)系統(tǒng);進(jìn)而需要對(duì)系統(tǒng)進(jìn)行測(cè)試和排錯(cuò),保證系統(tǒng)符合預(yù)定的要求。測(cè)試結(jié)果將確認(rèn)所完成的系統(tǒng)可以真正使用;最后完成系統(tǒng)配置,其任務(wù)是在真實(shí)的運(yùn)行環(huán)境中配置、調(diào)試系統(tǒng),解決系統(tǒng)正式使用前可能存在的任何問(wèn)題??偨Y(jié)將UML應(yīng)用于廣告管理系統(tǒng)的建設(shè),可以加速開(kāi)發(fā)進(jìn)程,提高代碼質(zhì)量,支持動(dòng)態(tài)的業(yè)務(wù)需求。測(cè)試驅(qū)動(dòng)開(kāi)發(fā)簡(jiǎn)介企業(yè)級(jí)卓越人才培養(yǎng)第一章學(xué)習(xí)目標(biāo)了解測(cè)試驅(qū)動(dòng)開(kāi)發(fā)的原理理解單元測(cè)試的作用和原理掌握J(rèn)Unit框架什么是高質(zhì)量的軟件一個(gè)優(yōu)秀軟件一般要具備如下特性:滿足用戶的需求。合理進(jìn)度、成本、功能關(guān)系。具備擴(kuò)展性和靈活性。能夠有效的處理例外的情況。保持成本和性能的平衡。能夠可持續(xù)的發(fā)展。測(cè)試驅(qū)動(dòng)開(kāi)發(fā)測(cè)試為導(dǎo)向在成本上更經(jīng)濟(jì)。其原因有四:節(jié)約了設(shè)計(jì)的成本。減輕了測(cè)試的工作量。可以節(jié)省設(shè)計(jì)上的工作量。避免代碼出現(xiàn)回歸。優(yōu)勢(shì)測(cè)試驅(qū)動(dòng)開(kāi)發(fā)先考慮代碼的使用需求。
對(duì)代碼的內(nèi)聚性的提高和復(fù)用都非常有益。測(cè)試用例代碼就是對(duì)代碼的最好的解釋。測(cè)試驅(qū)動(dòng)開(kāi)發(fā)提供的測(cè)試集是信心的來(lái)源。保障代碼的正確性,迅速發(fā)現(xiàn)、定位bug。原理
測(cè)試驅(qū)動(dòng)開(kāi)發(fā)的基本思想就是在開(kāi)發(fā)功能代碼之前,先編寫(xiě)測(cè)試代碼。傳統(tǒng)的V模型測(cè)試驅(qū)動(dòng)的X模型過(guò)程測(cè)試驅(qū)動(dòng)開(kāi)發(fā)的基本過(guò)程如下:明確當(dāng)前要完成的功能??梢杂涗洺梢粋€(gè)TODO列表。快速完成針對(duì)此功能的測(cè)試用例編寫(xiě)。測(cè)試代碼編譯不通過(guò)。編寫(xiě)對(duì)應(yīng)的功能代碼。測(cè)試通過(guò)。對(duì)代碼進(jìn)行重構(gòu),并保證測(cè)試通過(guò)。循環(huán)完成所有功能的開(kāi)發(fā)。原則測(cè)試列表。測(cè)試驅(qū)動(dòng)。先寫(xiě)斷言??蓽y(cè)試性。及時(shí)重構(gòu)。測(cè)試范圍、粒度那些重要或復(fù)雜的功能、核心的代碼就應(yīng)該編寫(xiě)更全面、細(xì)致的測(cè)試用例重點(diǎn)測(cè)試。測(cè)試范圍沒(méi)有靜態(tài)的標(biāo)準(zhǔn),應(yīng)該可以隨著時(shí)間改變。小步前進(jìn)。怎么編寫(xiě)測(cè)試用例操作過(guò)程盡量模擬正常使用的過(guò)程。全面的測(cè)試用例應(yīng)該盡量做到分支覆蓋,核心代碼盡量做到路徑覆蓋。測(cè)試數(shù)據(jù)盡量包括:真實(shí)數(shù)據(jù)、邊界數(shù)據(jù)。測(cè)試語(yǔ)句和測(cè)試數(shù)據(jù)應(yīng)該盡量簡(jiǎn)單,容易理解。為了避免對(duì)其他代碼過(guò)多的依賴,可以實(shí)現(xiàn)簡(jiǎn)單的樁函數(shù)或樁類(lèi)(MockObject)。如果內(nèi)部狀態(tài)非常復(fù)雜或者應(yīng)該判斷流程而不是狀態(tài),可以通過(guò)記錄日志字符串的方式進(jìn)行驗(yàn)證。
需要注意的一些問(wèn)題測(cè)試必須自動(dòng)化自動(dòng)化測(cè)試的范圍測(cè)試的分類(lèi)測(cè)試的成本測(cè)試文化測(cè)試必須是自動(dòng)化的手動(dòng)測(cè)試可能引入錯(cuò)誤。大量重復(fù)性的手動(dòng)測(cè)試可能成本較高。手動(dòng)測(cè)試的覆蓋面不廣。沒(méi)有辦法對(duì)組件進(jìn)行隔離的測(cè)試。自動(dòng)化測(cè)試的范圍哪些應(yīng)該進(jìn)行自動(dòng)化測(cè)試呢?最理想的情況是全部。測(cè)試一切可能是測(cè)試的基本原則,讓一切測(cè)試都變成自動(dòng)化則是測(cè)試驅(qū)動(dòng)開(kāi)發(fā)的準(zhǔn)則。測(cè)試的分類(lèi)單元測(cè)試集成測(cè)試系統(tǒng)測(cè)試驗(yàn)收測(cè)試測(cè)試的成本工作量估算方式的改變。項(xiàng)目進(jìn)度。人員的主動(dòng)性和勇氣。建立測(cè)試文化測(cè)試文化測(cè)試同樣需要重構(gòu),以及必須的文檔。固定測(cè)試的目錄組織和包組織。使測(cè)試成為日創(chuàng)建的核心步驟。測(cè)試是所有人的事情,而不僅是QA的事。單元測(cè)試單元測(cè)試是我們編寫(xiě)的一小段代碼,用于檢驗(yàn)被測(cè)代碼的一個(gè)很小的、很明確的功能是否正確。單元測(cè)試的核心內(nèi)涵:為了令代碼變得更加完美。Junit歷史在1997年,ErichGamma和KentBeck為Java語(yǔ)言創(chuàng)建了一個(gè)簡(jiǎn)單但有效的單元測(cè)試框架,稱(chēng)作JUnit。JUnit(www.J)是一個(gè)開(kāi)源軟件。所以,JUnit很快成了Java中開(kāi)發(fā)單元測(cè)試的框架的事實(shí)標(biāo)準(zhǔn)。手寫(xiě)單元測(cè)試我們先寫(xiě)一個(gè)簡(jiǎn)單的類(lèi)Calculator。我們可以編寫(xiě)一個(gè)小的命令行程序來(lái)判斷返回值是否我們期望。我們把測(cè)試獨(dú)立成一個(gè)方法。
了解單元測(cè)試框架所有單元測(cè)試框架都應(yīng)當(dāng)遵守的3條規(guī)則:每個(gè)單元測(cè)試必須獨(dú)立于其他單元測(cè)試而運(yùn)行。必須以單項(xiàng)測(cè)試為單位來(lái)檢測(cè)和報(bào)告錯(cuò)誤。必須易于定義要運(yùn)行哪些單元測(cè)試。使用Junit測(cè)試在JUnit中的設(shè)計(jì)目標(biāo)是:框架必須可以幫助我們編寫(xiě)有用的測(cè)試??蚣鼙仨殠椭覀儎?chuàng)建隨著時(shí)間的過(guò)去依然保持有用的測(cè)試??蚣鼙仨毻ㄟ^(guò)復(fù)用代碼降低我們編寫(xiě)測(cè)試的成本。總結(jié)測(cè)試驅(qū)動(dòng)開(kāi)發(fā)起源于XP法中提倡的測(cè)試優(yōu)先實(shí)踐。測(cè)試優(yōu)先實(shí)踐重視單元測(cè)試,強(qiáng)調(diào)程序員除了編寫(xiě)代碼,還應(yīng)該編寫(xiě)單元測(cè)試代碼。測(cè)試驅(qū)動(dòng)開(kāi)發(fā)的基本思路就是通過(guò)測(cè)試來(lái)推動(dòng)整個(gè)開(kāi)發(fā)的進(jìn)行。測(cè)試驅(qū)動(dòng)開(kāi)發(fā)的基本思想就是在開(kāi)發(fā)代碼之前,先編寫(xiě)測(cè)試代碼測(cè)試驅(qū)動(dòng)開(kāi)發(fā)簡(jiǎn)介企業(yè)級(jí)卓越人才培養(yǎng)第二章學(xué)習(xí)目標(biāo)掌握J(rèn)Unit的框架組成掌握J(rèn)Unit中的幾個(gè)核心類(lèi)的作用掌握利用JUnit框架編寫(xiě)測(cè)試類(lèi)探索Junit核心若需編寫(xiě)更多的testcase時(shí),我們要?jiǎng)?chuàng)建更多的TestCase對(duì)象。執(zhí)行這些TestCase對(duì)象的時(shí)候,可以創(chuàng)建一個(gè)TestSuite的對(duì)象。由TestRunner來(lái)執(zhí)行TestSuite。探索Junit核心TestCase(測(cè)試用例):擴(kuò)展了JUnit的TestCase類(lèi)的類(lèi)。TestSuite(測(cè)試集合):一組測(cè)試。BaseTestRunner(測(cè)試運(yùn)行器):執(zhí)行testsuite的程序。探索Junit核心以上3個(gè)元素是JUnit框架的骨干。在正常情況下,只需要編寫(xiě)testcase,其它類(lèi)會(huì)在幕后完成測(cè)試。
探索Junit核心testrunner可以執(zhí)行測(cè)試并提供關(guān)于結(jié)果的統(tǒng)計(jì)信息。在JUnit中還提供了其他的TestRunner類(lèi),比如提供圖形界面的junit.swingui.TestRunner類(lèi)TestCase當(dāng)創(chuàng)建一個(gè)測(cè)試類(lèi)的時(shí)候,會(huì)先創(chuàng)建一個(gè)類(lèi),該類(lèi)從TestCase類(lèi)繼承而來(lái)。其聲明如下:publicabstractclassTestCase extendsAssert implementsTest
AssertAssert類(lèi)提供了許多函數(shù),幫助確定某個(gè)被測(cè)試的函數(shù)是否正常工作。通常,所有這些函數(shù)統(tǒng)統(tǒng)稱(chēng)為斷言。它確定:某條件是否為真;兩個(gè)數(shù)據(jù)是否相等或者不等,以及其他情況。下面將逐個(gè)介紹JUnit提供的每一個(gè)斷言(assert)方法。Assert當(dāng)斷言為假,或者有錯(cuò)誤了(遇到一個(gè)意料外的異常)的情況,通過(guò)JUnit的一些類(lèi)來(lái)報(bào)告這些結(jié)果。當(dāng)一個(gè)失敗或者錯(cuò)誤出現(xiàn)的時(shí)候,當(dāng)前測(cè)試將會(huì)被終止,但是(位于同一個(gè)測(cè)試類(lèi)中的)其他測(cè)試將會(huì)繼續(xù)運(yùn)行。斷言是單元測(cè)試最基本的組成部分。assertEquals用來(lái)做相等性測(cè)試。這是使用的最多的斷言形式,該方法有很多重載函數(shù)。任何對(duì)象都可以拿來(lái)做相等性測(cè)試:適當(dāng)?shù)南嗟刃耘袛喾椒〞?huì)被用來(lái)做這樣的比較。對(duì)于原生類(lèi)型(boolean,int,short等)和object類(lèi)型也提供了不同的函數(shù)簽名。
assertNull
驗(yàn)證一個(gè)給定的對(duì)象是否為Null(或者為非null),如果答案為否,則將會(huì)失敗。assertSame
驗(yàn)證expected參數(shù)和actual參數(shù)所引用的是否為同一個(gè)對(duì)象,如果不是,將會(huì)失敗。assertTrue
驗(yàn)證給定的二元條件是否為真,如果為假,將會(huì)失敗。fail
上面的斷言將會(huì)使測(cè)試立即失敗,這種斷言通常被用于標(biāo)記某個(gè)不因該被到達(dá)的分支。使用斷言在繼續(xù)測(cè)試之前先修復(fù)失敗的測(cè)試。
把問(wèn)題分離出來(lái)。需要一種能夠運(yùn)行所有測(cè)試(或者一組測(cè)試、某個(gè)特殊子系統(tǒng)等等)的輔助方法。TestCase成員方法描述countTestCases計(jì)算run(TestResultresult)所執(zhí)行的TestCase的數(shù)目(由Test接口規(guī)定)createResult創(chuàng)建默認(rèn)的TestResult對(duì)象getName獲得TestCase的名字Run運(yùn)行TestCase并收集TestResult中的結(jié)果(由Test接口規(guī)定)runBare運(yùn)行測(cè)試序列,但不執(zhí)行任何特殊功能,比如自動(dòng)發(fā)現(xiàn)test方法runTest重載以運(yùn)行測(cè)試并斷言其狀態(tài)setName設(shè)置TestCase的名字setUp初始化,例如打開(kāi)網(wǎng)絡(luò)連接。這個(gè)方法會(huì)在測(cè)試執(zhí)行之前被調(diào)用(由Test接口規(guī)定)teardown銷(xiāo)毀,例如關(guān)閉網(wǎng)絡(luò)連接。這個(gè)方法會(huì)在測(cè)試執(zhí)行之后被調(diào)用(由Test接口規(guī)定)toString返回TestCase字符串表示TestCase成員JUnit的TestCase基類(lèi)提供兩個(gè)方法供你改寫(xiě),分別用于環(huán)境的建立和清理:
protectedvoidsetUp();protectedvoidtearDown();testCase會(huì)在運(yùn)行每個(gè)測(cè)試之前調(diào)用setUp,并且在每個(gè)測(cè)試完成之后調(diào)用tearDown。TestCase成員
把不止一個(gè)測(cè)試方法放進(jìn)同一個(gè)TestCase可以共享這些代碼。執(zhí)行過(guò)程如下圖所示:TestCaseTestSuite被可以運(yùn)行一個(gè)或多個(gè)testcase,testrunner負(fù)責(zé)啟動(dòng)TestSuite,而要運(yùn)行哪些testcase則由TestSuite來(lái)決定。任何測(cè)試類(lèi)都會(huì)包含一個(gè)名為suite的靜態(tài)方法。
publicstaticTestsuite()
;
TestSuite若我們沒(méi)有提供自己的TestSuite,testrunner會(huì)自動(dòng)創(chuàng)建一個(gè)。缺省的TestSuite會(huì)掃描你的測(cè)試類(lèi),找出所有以test開(kāi)頭的方法。缺省的TestSuite在內(nèi)部為每個(gè)testXXX方法都創(chuàng)建一個(gè)TestCase的實(shí)例。TestSuiteJUnit框架執(zhí)行了如下動(dòng)作:創(chuàng)建一個(gè)TestSuite。創(chuàng)建一個(gè)TestResult。執(zhí)行測(cè)試方法。
TestSuite
TestRunner先尋找TestCalculator類(lèi)中的suite方法。若有則調(diào)用它,若沒(méi)有則創(chuàng)建一個(gè)默認(rèn)的TestSuite對(duì)象。其UML圖如下:
TestSuite
如果我們?cè)跍y(cè)試代碼中顯式定義了suite方法,那么,測(cè)試會(huì)調(diào)用改suite方法,其UML圖如下:
TestResultTestResult負(fù)責(zé)收集TestCase的執(zhí)行結(jié)果。
JUnit區(qū)分失敗和錯(cuò)誤。失敗是測(cè)試時(shí)可預(yù)期的,錯(cuò)誤則是不可預(yù)料的。當(dāng)遇到錯(cuò)誤,好的分析步驟是:檢查環(huán)境檢查測(cè)試檢查代碼總結(jié)JUnit的核心類(lèi)。測(cè)試類(lèi)繼承自TestCase類(lèi)。Assert是TestCase的基類(lèi)。斷言是單元測(cè)試最基本的組成部分。setUp和tearDown方法的用途。TestSuite的用途。suite的靜態(tài)方法。TestResult的用途。JUnit自動(dòng)化企業(yè)級(jí)卓越人才培養(yǎng)第三章學(xué)習(xí)目標(biāo)了解自動(dòng)化測(cè)試的原理理解Ant的作用和功能掌握buildfile的編寫(xiě)Ant簡(jiǎn)介Ant是構(gòu)建Java程序的事實(shí)標(biāo)準(zhǔn)
Ant是管理及自動(dòng)化的卓越工具Ant的概念
Apache的Ant是一個(gè)自動(dòng)化編譯和測(cè)試程序構(gòu)建工具,是構(gòu)建java程序的事實(shí)標(biāo)準(zhǔn)。
Ant是個(gè)運(yùn)行工具的構(gòu)架,可以用來(lái)配置制和啟動(dòng)編譯器、生成代碼、執(zhí)行JDBC查詢、自動(dòng)化整套測(cè)試。Ant的概念A(yù)nt的優(yōu)點(diǎn)跨平臺(tái)性。操作簡(jiǎn)單。Ant可以集成到開(kāi)發(fā)環(huán)境中。Ant的概念
Ant是一個(gè)開(kāi)源軟件,安裝于配置都非常簡(jiǎn)單。在Ant的主頁(yè)http:///中可下載最新的Ant版本。
Ant在Windows系統(tǒng)中配置過(guò)程如下。(1)右擊我的電腦圖標(biāo),"屬性"|"高級(jí)",如下圖所示。Ant的概念
(2)單擊環(huán)境變量按鈕,出現(xiàn)環(huán)境變量對(duì)話框,單擊系統(tǒng)變量選項(xiàng)框的新建按鈕,出現(xiàn)新建系統(tǒng)變量的對(duì)話框。(3)在變量名和變量值文本礦中分別填上"ANT_HOME"和Ant的根目錄,然后單擊確定按鈕。如下圖所示。
(4)在環(huán)境變量對(duì)話框中雙擊PATH變量名,在變量值后面加上C:\apache-ant-1.5.4\bin,最后單擊確定按鈕。當(dāng)然,我們還要設(shè)置好JAVA_HOME變量。Ant的目標(biāo)、項(xiàng)目、屬性、及任務(wù)Ant允許你為每個(gè)項(xiàng)目建立一個(gè)構(gòu)建文件以幫助你管理構(gòu)建過(guò)程。下面是一個(gè)典型的項(xiàng)目層次結(jié)構(gòu)。src存放源文件class存放編譯后的文件lib存放第三方j(luò)ar包Ant的目標(biāo)、項(xiàng)目、屬性、及任務(wù)Ant的要素如下:構(gòu)建文件(buildfile)目標(biāo)(target)屬性要素(propertyelement)
Ant的目標(biāo)、項(xiàng)目、屬性、及任務(wù)在buildfile中的標(biāo)記<project>標(biāo)簽<target>標(biāo)簽<delete>標(biāo)簽<mkdir>標(biāo)簽<javac>標(biāo)簽<jar>標(biāo)簽<java>標(biāo)簽Ant的目標(biāo)、項(xiàng)目、屬性、及任務(wù)<project>標(biāo)簽<?xmlversion="1.0"encoding="ISO-8859-1"?><projectname="MyTask"basedir="."default="jar">…</project>
每個(gè)構(gòu)建文件對(duì)應(yīng)一個(gè)項(xiàng)目。<project>標(biāo)簽是構(gòu)建文件的根標(biāo)簽。每個(gè)構(gòu)建文件對(duì)應(yīng)于一個(gè)項(xiàng)目,但是大型項(xiàng)目經(jīng)常包含大量的子項(xiàng)目,每一個(gè)子項(xiàng)目都可以有自己的構(gòu)建文件。Ant的目標(biāo)、項(xiàng)目、屬性、及任務(wù)<target>標(biāo)簽<?xmlversion="1.0"><project> <targetname="clean"description="Deleteallgeneratedfiles"> … </target> … <targetname="compile"description="CompiletheTask"> … </target> …</project>
一個(gè)項(xiàng)目標(biāo)簽下可以有一個(gè)或多個(gè)target標(biāo)簽。一個(gè)target標(biāo)簽可以依賴其他的target標(biāo)簽。Ant的目標(biāo)、項(xiàng)目、屬性、及任務(wù)<delete>標(biāo)簽<target> <deletedir="${class
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 養(yǎng)老院老人康復(fù)理療師考核獎(jiǎng)懲制度
- 【地球課件】地基基礎(chǔ)設(shè)計(jì)理論與荷載
- 九年級(jí)歷史期末試卷答題卡-教案課件-初中歷史九年級(jí)上冊(cè)部編版
- 房屋租賃的合同(2篇)
- 《食品安全和營(yíng)養(yǎng)》課件
- 2025年拉薩貨運(yùn)從業(yè)資格證模擬試題題庫(kù)及答案大全
- 2025年揚(yáng)州貨運(yùn)從業(yè)資格證考些什么內(nèi)容
- 2024年土地承包合同終止后的土地經(jīng)營(yíng)權(quán)租賃協(xié)議6篇
- 中國(guó)古代禮儀文明課件-婚禮
- 2025年沈陽(yáng)經(jīng)營(yíng)性道路客貨運(yùn)輸駕駛員從業(yè)資格考試
- 2024年軍事理論知識(shí)全冊(cè)復(fù)習(xí)題庫(kù)及答案
- 2024年度事業(yè)單位招聘考試計(jì)算機(jī)基礎(chǔ)知識(shí)復(fù)習(xí)題庫(kù)及答案(共800題)
- 第十一屆“大唐杯”新一代信息通信技術(shù)大賽(省賽)考試題及答案
- 基坑工程安全風(fēng)險(xiǎn)辨識(shí)
- 中國(guó)文化交流英語(yǔ)(大連理工大學(xué))智慧樹(shù)知到期末考試答案章節(jié)答案2024年大連理工大學(xué)
- MOOC 數(shù)據(jù)庫(kù)原理與應(yīng)用-北京林業(yè)大學(xué) 中國(guó)大學(xué)慕課答案
- 2023年基層衛(wèi)生崗位練兵和技能競(jìng)賽試題及答案全科醫(yī)療組
- 辦公設(shè)備維修工考試試題庫(kù)與答案
- 霍曼門(mén)限位設(shè)定
- (完整版)小學(xué)五年級(jí)英語(yǔ)語(yǔ)法知識(shí)匯總
- 企業(yè)級(jí)統(tǒng)一開(kāi)發(fā)平臺(tái)解決方案.ppt
評(píng)論
0/150
提交評(píng)論