版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第3章軟件系統(tǒng)開發(fā)方法3.1軟件開發(fā)生命周期3.2軟件開發(fā)模型3.3傳統(tǒng)軟件開發(fā)方法3.4面向?qū)ο筌浖_發(fā)方法3.5RUP統(tǒng)一軟件開發(fā)過程3.6敏捷軟件開發(fā)技術(shù)7/26/20231在軟件開發(fā)的早期,人們常用的軟件開發(fā)方法是邊寫邊改法。這種開發(fā)方法在應(yīng)用開發(fā)中最為快捷,但由于其開發(fā)的隨意性,因而也最為低效。同時(shí),使用該方法的項(xiàng)目常常因?yàn)楣芾硎Э囟K結(jié)?;谶@種情況,業(yè)界人士借鑒其它工程領(lǐng)域的方法,提出了許多有規(guī)則可言的軟件系統(tǒng)開發(fā)方法。最著名的當(dāng)數(shù)“瀑布式”方法了,即把軟件開發(fā)過程分解成這樣一些階段:制定開發(fā)計(jì)劃、需求分析和定義、系統(tǒng)設(shè)計(jì)、編碼實(shí)現(xiàn)、測(cè)試驗(yàn)證。然而,在軟件開發(fā)實(shí)踐中完全遵循這種過程取得成功的案例并不多。其原因主要在于這種方法有一個(gè)前提條件,那就是系統(tǒng)需求必須明確、不變。但在現(xiàn)實(shí)應(yīng)用中,這幾乎是不可能的。需求通常模糊不清,并且在系統(tǒng)開發(fā)期間隨時(shí)都有可能發(fā)生變化。因此軟件開發(fā)要求采用的方法過程也必須能適應(yīng)這種變化,這就出現(xiàn)了其它一些軟件開發(fā)方法,如原型法、敏捷方法等。7/26/202323.1軟件開發(fā)生命周期正如任何事物一樣,軟件也有其孕育、誕生、成長(zhǎng)、成熟以及衰亡的生命過程,一般稱其為“軟件生命周期”。7/26/202333.1軟件開發(fā)生命周期根據(jù)這一思想,可以得到軟件生命周期的六個(gè)階段:制定計(jì)劃需求分析和定義設(shè)計(jì)編碼測(cè)試運(yùn)行及維護(hù)。7/26/202343.1軟件開發(fā)生命周期(1)制定計(jì)劃(Planning)團(tuán)隊(duì)人員:分析人員、領(lǐng)域?qū)<壹坝脩舻取_@個(gè)階段的任務(wù)是確定待開發(fā)軟件系統(tǒng)的總體目標(biāo),給出軟件系統(tǒng)的功能、性能及接口等方面的要求。由團(tuán)隊(duì)人員協(xié)作,共同研究完成該項(xiàng)軟件開發(fā)任務(wù)的技術(shù)、經(jīng)濟(jì)、社會(huì)可行性,探討解決問題的各種可能方案,并對(duì)現(xiàn)有可利用資源、成本、可取得的效益、開發(fā)進(jìn)度等做出估計(jì),制定出完成該項(xiàng)開發(fā)任務(wù)的實(shí)施計(jì)劃,并編寫可行性研究報(bào)告。7/26/202353.1軟件開發(fā)生命周期(2)需求分析和定義(RequirementAnalysisandDefinition)團(tuán)隊(duì)人員:分析人員、測(cè)試人員、領(lǐng)域?qū)<壹坝脩舻取T撾A段對(duì)于待開發(fā)軟件項(xiàng)目獲取的用戶需求進(jìn)行分析,并給出詳細(xì)定義。這個(gè)階段團(tuán)隊(duì)人員必須協(xié)同工作,讓軟件開發(fā)人員充分理解用戶的各項(xiàng)需求,并確定哪些需求是可以滿足的,哪些需求在現(xiàn)有技術(shù)下是不能滿足的,對(duì)能滿足的需求加以確切的描述。然后,編寫出軟件需求規(guī)格說明書(SRS)或系統(tǒng)功能說明書,以及初步的系統(tǒng)用戶手冊(cè)、測(cè)試用例等。為了團(tuán)隊(duì)人員之間能很好地溝通,從這個(gè)階段開始通常會(huì)采用一些標(biāo)準(zhǔn)的建模語言(如:統(tǒng)一建模語言,UnifiedModelingLanguage,簡(jiǎn)稱UML)對(duì)系統(tǒng)建模。7/26/202363.1軟件開發(fā)生命周期(3)軟件設(shè)計(jì)(SoftwareDesign)團(tuán)隊(duì)人員:架構(gòu)設(shè)計(jì)人員、軟件設(shè)計(jì)人員、數(shù)據(jù)庫設(shè)計(jì)員、用戶界面設(shè)計(jì)員、封裝體設(shè)計(jì)員和集成人員、測(cè)試人員等。這個(gè)階段通常分為兩部分:概要設(shè)計(jì)和詳細(xì)設(shè)計(jì)。在軟件設(shè)計(jì)階段,軟件開發(fā)人員把已經(jīng)經(jīng)過用戶和領(lǐng)域?qū)<掖_認(rèn)的各項(xiàng)需求轉(zhuǎn)換成相應(yīng)的軟件體系結(jié)構(gòu)。結(jié)構(gòu)中的每一成份都是意義明確的子系統(tǒng)、模塊或用例,每個(gè)部分都和某些需求相對(duì)應(yīng),進(jìn)行所謂的概要設(shè)計(jì)。然后對(duì)每個(gè)模塊或用例要完成的工作采用合適的技術(shù)進(jìn)行具體的描述,如畫出模塊的程序流程圖或描述類的屬性、操作等,為源程序的編寫工作打下基礎(chǔ),即所謂的詳細(xì)設(shè)計(jì)。7/26/202373.1軟件開發(fā)生命周期(4)編碼(Coding)團(tuán)隊(duì)人員:編程人員、測(cè)試人員等。將詳細(xì)設(shè)計(jì)階段所描述的模塊程序流程圖或類的設(shè)計(jì)轉(zhuǎn)換為計(jì)算機(jī)能處理的程序代碼,即使用特定的程序設(shè)計(jì)語言表示的源程序。目前,通常使用高級(jí)程序設(shè)計(jì)語言編寫程序,如C語言、Java語言等。7/26/202383.1軟件開發(fā)生命周期(5)軟件測(cè)試(SoftwareTesting)團(tuán)隊(duì)人員:測(cè)試人員、開發(fā)人員、用戶等。測(cè)試是保證軟件質(zhì)量的重要手段,其主要目的是通過軟件測(cè)試暴露出軟件中隱藏的錯(cuò)誤和缺陷。軟件測(cè)試的主要方式是在設(shè)計(jì)測(cè)試用例的基礎(chǔ)上檢驗(yàn)軟件的各個(gè)組成部分。軟件測(cè)試一般包括單元測(cè)試、集成測(cè)試、系統(tǒng)測(cè)試、驗(yàn)收測(cè)試等幾個(gè)階段。首先進(jìn)行單元測(cè)試,查找各模塊或類在功能和結(jié)構(gòu)上存在的問題并加以修改,這個(gè)過程會(huì)反復(fù)進(jìn)行;其次進(jìn)行集成測(cè)試,驗(yàn)證各軟件單元集成后形成的模塊能否達(dá)到概要設(shè)計(jì)規(guī)格說明中各模塊的設(shè)計(jì)目標(biāo);然后進(jìn)行系統(tǒng)測(cè)試,目的是對(duì)最終軟件系統(tǒng)進(jìn)行全面的測(cè)試,確保最終軟件系統(tǒng)滿足產(chǎn)品需求并且遵循系統(tǒng)設(shè)計(jì);最后進(jìn)行確認(rèn)測(cè)試,以檢查已實(shí)現(xiàn)的軟件是否滿足了需求規(guī)格說明書中確定的各種需求,包括功能需求和性能需求,決定已開發(fā)的軟件能否交付用戶使用。7/26/202393.1軟件開發(fā)生命周期(6)運(yùn)行/維護(hù)(Running/Maintenance)團(tuán)隊(duì)人員:系統(tǒng)支持人員等。已交付的軟件投入正式使用,軟件便進(jìn)入運(yùn)行階段。軟件在運(yùn)行過程中可能會(huì)因?yàn)榘l(fā)現(xiàn)了軟件中存在的錯(cuò)誤需要修改;或?yàn)榱诉m應(yīng)變化了的軟件工作環(huán)境,需做一些變更;或?yàn)榱嗽鰪?qiáng)軟件的功能需做變更等。這就稱為軟件維護(hù)。7/26/2023103.2軟件開發(fā)模型從上節(jié)的內(nèi)容中我們知道,一個(gè)軟件的生命周期包含了若干個(gè)活動(dòng),那么,這些活動(dòng)應(yīng)該如何組織呢?不同的組織方式可能會(huì)產(chǎn)生很大差別的結(jié)果。實(shí)際上,與其它工程項(xiàng)目中安排各道工序類似,為了反應(yīng)軟件開發(fā)生命周期內(nèi)的各種活動(dòng)應(yīng)如何組織,各活動(dòng)之間應(yīng)如何銜接,需要用軟件開發(fā)模型做出直觀的圖示來表達(dá)。7/26/2023113.2軟件開發(fā)模型軟件開發(fā)模型是從軟件項(xiàng)目需求定義到軟件經(jīng)使用后被廢棄為止,跨越整個(gè)軟件生命周期的系統(tǒng)開發(fā)、運(yùn)作和維護(hù)的全部過程、活動(dòng)和任務(wù)的結(jié)構(gòu)框架,它給出了軟件開發(fā)活動(dòng)各個(gè)階段之間的關(guān)系。每種軟件生命周期模型代表一種軟件開發(fā)與管理的組織過程。7/26/2023123.2軟件開發(fā)模型迄今為止,出現(xiàn)了多種軟件開發(fā)模型。如:瀑布模型螺旋模型演化模型噴泉模型智能模型增量模型原型化模型7/26/2023133.2.1瀑布模型瀑布模型將軟件生命周期劃分為制定開發(fā)計(jì)劃、需求分析和定義、軟件設(shè)計(jì)、程序編寫、軟件測(cè)試和運(yùn)行維護(hù)等六個(gè)基本活動(dòng),并且規(guī)定了它們自上而下、相互銜接的固定次序,如同瀑布流水,逐級(jí)下落。7/26/2023143.2.1瀑布模型瀑布模型是最早出現(xiàn)的軟件開發(fā)模型,在軟件工程中占有十分重要的地位,它提供了軟件開發(fā)的基本框架。瀑布模型規(guī)定了各項(xiàng)軟件工程活動(dòng),其核心思想是按工序?qū)栴}化簡(jiǎn),將功能的實(shí)現(xiàn)與設(shè)計(jì)分開,便于分工協(xié)作,即采用結(jié)構(gòu)化的分析與設(shè)計(jì)方法將邏輯實(shí)現(xiàn)與物理實(shí)現(xiàn)分開。7/26/2023153.2.1瀑布模型瀑布模型每項(xiàng)開發(fā)活動(dòng)均應(yīng)具有下述特征:(1)從上一項(xiàng)活動(dòng)接收本項(xiàng)活動(dòng)的工作對(duì)象,作為本項(xiàng)活動(dòng)的輸入;(2)利用這一輸入實(shí)施本項(xiàng)活動(dòng)應(yīng)完成的任務(wù);(3)給出本項(xiàng)活動(dòng)的工作成果,作為輸出傳遞給下一項(xiàng)活動(dòng);(4)對(duì)本項(xiàng)活動(dòng)實(shí)施的工作進(jìn)行評(píng)審。若得到確認(rèn),則繼續(xù)下一項(xiàng)活動(dòng);否則,返回到前項(xiàng)活動(dòng),或更前一項(xiàng)活動(dòng)進(jìn)行返工。7/26/2023163.2.1瀑布模型瀑布模型中軟件維護(hù)的特點(diǎn):(1)維護(hù)的具體要求是在軟件投入使用以后提出來的,經(jīng)過評(píng)價(jià),確定需求變更的必要性,才進(jìn)行維護(hù)工作。(2)維護(hù)中對(duì)軟件的變更仍然要經(jīng)歷軟件生命周期在開發(fā)中已經(jīng)歷過的各項(xiàng)活動(dòng)。7/26/2023173.2.1瀑布模型瀑布模型的優(yōu)點(diǎn):(1)為軟件項(xiàng)目提供了按階段劃分的檢查點(diǎn),強(qiáng)調(diào)開發(fā)的階段性。(2)強(qiáng)調(diào)早期計(jì)劃及需求調(diào)查。(3)強(qiáng)調(diào)產(chǎn)品測(cè)試和階段評(píng)審。(4)強(qiáng)調(diào)文檔的重要性。7/26/2023183.2.1瀑布模型瀑布模型的缺點(diǎn):(1)在項(xiàng)目各個(gè)階段之間極少有反饋,往往會(huì)將早期的錯(cuò)誤引入到后期各個(gè)階段。(2)依賴于早期進(jìn)行的唯一一次需求調(diào)查,用戶參與較少,不能適應(yīng)需求的變化。(3)只有在項(xiàng)目生命周期的后期才能看到結(jié)果,可能與用戶的需求出現(xiàn)很大的偏差,使風(fēng)險(xiǎn)推遲到項(xiàng)目開發(fā)的后期階段才顯露出來,因而失去及早糾正的機(jī)會(huì)。(4)通過過多的強(qiáng)制完成日期和里程碑來跟蹤各個(gè)項(xiàng)目階段,靈活性較差。7/26/2023193.2.1瀑布模型瀑布模型缺乏靈活性,無法通過開發(fā)活動(dòng)來理清本來不夠明確的需求,這將可能導(dǎo)致直到軟件開發(fā)完成時(shí)才發(fā)現(xiàn)所開發(fā)的軟件并非用戶所需要的,此時(shí)必將付出高額的代價(jià)才能糾正出現(xiàn)的偏差。瀑布模型一般適用于功能、性能明確、完整、無重大變化的軟件系統(tǒng)的開發(fā)。如操作系統(tǒng)、編譯系統(tǒng)等系統(tǒng)軟件的開發(fā)。當(dāng)用戶需求不明確或經(jīng)常變更時(shí),不宜采用瀑布模型,可以考慮其它的架構(gòu)來進(jìn)行項(xiàng)目管理,如:演化模型等。7/26/2023203.2.2演化模型演化模型主要針對(duì)事先不能完整定義需求的軟件開發(fā)。用戶可以給出待開發(fā)系統(tǒng)的核心需求,并且當(dāng)看到核心需求實(shí)現(xiàn)后,能夠有效地提出反饋,以支持系統(tǒng)的最終設(shè)計(jì)和實(shí)現(xiàn)。7/26/2023213.2.2演化模型該模型可以表示為:第一次迭代(需求→設(shè)計(jì)→編碼→測(cè)試→集成)→反饋→第二次迭代(需求→設(shè)計(jì)→編碼→測(cè)試→集成)→反饋→......7/26/2023223.2.2演化模型7/26/2023233.2.2演化模型演化模型的主要優(yōu)點(diǎn):(1)用戶能在開發(fā)過程中而不是開發(fā)接近尾聲時(shí)看到自己所需要的軟件產(chǎn)品。對(duì)發(fā)現(xiàn)的問題能夠提早解決。(2)在一定程度上減少了軟件開發(fā)活動(dòng)的盲目性。如果在某次迭代中,其需求沒有滿足用戶的要求,軟件開發(fā)人員可根據(jù)用戶的反饋信息在下一次迭代中予以修正。(3)將系統(tǒng)中難度較大、風(fēng)險(xiǎn)較高的部分安排在早期的迭代中,可增加項(xiàng)目的成功率。7/26/2023243.2.2演化模型演化模型的缺點(diǎn)(1)由于項(xiàng)目需求在開發(fā)初期不可能完全弄清楚,這樣會(huì)給系統(tǒng)總體設(shè)計(jì)帶來很大的困難,并影響系統(tǒng)設(shè)計(jì)的完整性。(2)如果在開發(fā)過程中缺乏嚴(yán)格的過程管理,演化模型很可能退化為邊寫邊改模式。(3)如果沒有一定的約束條件,可能永遠(yuǎn)無法得到一個(gè)最終的軟件產(chǎn)品。7/26/2023253.2.2演化模型采用演化模型的軟件開發(fā)過程,實(shí)際上是從最初的原型逐步演化成最終軟件產(chǎn)品的過程。在整個(gè)演化過程中,不斷修正缺陷,以開發(fā)出最終滿足用戶需要的軟件產(chǎn)品。演化模型特別適用于用戶需求不夠明確的軟件開發(fā)項(xiàng)目,但不適宜用于大而復(fù)雜的系統(tǒng)。7/26/2023263.2.3螺旋模型對(duì)于復(fù)雜的大型軟件系統(tǒng),開發(fā)一個(gè)原型往往很難達(dá)到要求,顯然用單一的演化模型很難開發(fā)出這樣的軟件系統(tǒng)。那么,究竟要使用什么樣的模型才適合用來開發(fā)大型而復(fù)雜的軟件系統(tǒng)呢?答案就是螺旋模型。7/26/2023273.2.3螺旋模型螺旋模型沿著螺線旋轉(zhuǎn),在笛卡爾坐標(biāo)的四個(gè)象限上分別表達(dá)了每個(gè)迭代周期的四個(gè)階段,從左象限按順時(shí)針方向依次為:7/26/2023283.2.3螺旋模型(1)制定計(jì)劃確定該階段的軟件目標(biāo),選定為完成這些目標(biāo)的實(shí)施方案,設(shè)定這些方案的約束條件。(2)風(fēng)險(xiǎn)分析分析所選方案,識(shí)別并努力消除各種潛在的風(fēng)險(xiǎn),通常用構(gòu)建原型的方法來消除風(fēng)險(xiǎn)。如果不能消除風(fēng)險(xiǎn),則停止開發(fā)工作或降低軟件項(xiàng)目規(guī)模。如果成功地消除了所有風(fēng)險(xiǎn),則轉(zhuǎn)向下一個(gè)階段。(3)實(shí)施工程實(shí)施軟件開發(fā)。這個(gè)階段相當(dāng)于一個(gè)純粹的瀑布模型。(4)用戶評(píng)估由用戶評(píng)價(jià)開發(fā)工作,提出修改建議。7/26/2023293.2.3螺旋模型螺旋模型將瀑布模型和演化模型結(jié)合起來,吸取了兩者的優(yōu)點(diǎn),并加入了兩種模型都忽略了的風(fēng)險(xiǎn)分析,彌補(bǔ)了兩種模型的不足。7/26/2023303.2.3螺旋模型軟件風(fēng)險(xiǎn)是任何軟件開發(fā)項(xiàng)目中普遍存在的實(shí)際問題,項(xiàng)目規(guī)模越大,問題越復(fù)雜,資源、成本、進(jìn)度等因素的不確定性就越大,承擔(dān)該項(xiàng)目所冒的風(fēng)險(xiǎn)也就越大。軟件風(fēng)險(xiǎn)可能在不同程度上損害軟件的開發(fā)過程和軟件產(chǎn)品的質(zhì)量。因此,在軟件開發(fā)過程中必須及時(shí)對(duì)風(fēng)險(xiǎn)進(jìn)行識(shí)別、分析,采取應(yīng)有的措施,以消除或較少風(fēng)險(xiǎn)的損害。7/26/2023313.2.3螺旋模型在螺旋模型中,沿著螺線由內(nèi)向外每旋轉(zhuǎn)一圈,也就是每完成一次迭代過程,軟件開發(fā)就前進(jìn)一個(gè)層次,開發(fā)出一個(gè)更加完善的軟件版本。在每一圈螺線上,風(fēng)險(xiǎn)分析作為開發(fā)是否能夠繼續(xù)下去的判斷點(diǎn)。假如風(fēng)險(xiǎn)太大,開發(fā)人員和用戶無法承受,開發(fā)項(xiàng)目有可能被終止。但多數(shù)情況下沿螺線的活動(dòng)會(huì)繼續(xù)下去,并由內(nèi)向外逐步延伸,最終得到用戶所期望的系統(tǒng)。7/26/2023323.2.3螺旋模型螺旋模型的優(yōu)點(diǎn):(1)設(shè)計(jì)上的靈活性,可以保證在項(xiàng)目的各個(gè)階段進(jìn)行變更。(2)以小的分段來構(gòu)建大型系統(tǒng),使資源、成本和進(jìn)度的估計(jì)變得更加簡(jiǎn)單容易。(3)用戶始終參與到每個(gè)階段的開發(fā)中,保證了項(xiàng)目的正確性與可控性。7/26/2023333.2.3螺旋模型螺旋模型的缺點(diǎn):(1)采用螺旋模型需要具有豐富的風(fēng)險(xiǎn)評(píng)估經(jīng)驗(yàn)和專門知識(shí),在風(fēng)險(xiǎn)較大的項(xiàng)目開發(fā)中,如果未能及時(shí)識(shí)別出潛在的風(fēng)險(xiǎn),或者消除風(fēng)險(xiǎn)的能力不足,都會(huì)造成極其重大的損失。(2)過多的迭代次數(shù)會(huì)增加軟件開發(fā)成本,延遲交付使用的時(shí)間。7/26/2023343.2.3螺旋模型螺旋模型支持需求不明確,特別是大型軟件系統(tǒng)的開發(fā),并支持面向規(guī)格說明、面向過程、面向?qū)ο蟮榷喾N軟件開發(fā)方法。由于螺旋模型是以風(fēng)險(xiǎn)分析驅(qū)動(dòng)的,一旦在開發(fā)過程中風(fēng)險(xiǎn)過大就要停止繼續(xù)開發(fā),因此,螺旋模型比較適合應(yīng)用于產(chǎn)品研發(fā)或機(jī)構(gòu)內(nèi)部大型的復(fù)雜系統(tǒng)的開發(fā),而不適合用于合同項(xiàng)目的開發(fā)。如果要將螺旋模型作為合同項(xiàng)目的開發(fā)模型,則必須在簽訂合同之前考慮清楚所有的開發(fā)風(fēng)險(xiǎn),否則,在開發(fā)過程中如果由于風(fēng)險(xiǎn)過大而中途停止開發(fā),就會(huì)賠償經(jīng)濟(jì)損失或者承擔(dān)法律責(zé)任。7/26/2023353.2.4增量模型采用瀑布模型或演化模型開發(fā)項(xiàng)目時(shí),目標(biāo)都是一次性就把一個(gè)滿足所有需求的產(chǎn)品提交給用戶。然而,增量模型則與之不同,它分批地逐步向用戶提交可操作的產(chǎn)品。7/26/2023363.2.4增量模型增量模型融合了瀑布模型的基本成分和快速原型模型的迭代特征。該模型采用隨著日程的進(jìn)展而交錯(cuò)進(jìn)行的線性序列,每一個(gè)線性序列產(chǎn)生軟件的一個(gè)可發(fā)布的“增量”。當(dāng)使用增量模型時(shí),第1個(gè)增量往往是核心產(chǎn)品,即第1個(gè)增量實(shí)現(xiàn)了基本的需求,但很多補(bǔ)充的特征還沒有發(fā)布??蛻魧?duì)每一個(gè)增量的使用和評(píng)估都作為下一個(gè)增量發(fā)布的新特征和功能,這個(gè)過程在每一個(gè)增量發(fā)布后不斷重復(fù),直到產(chǎn)生了最終的完善產(chǎn)品。增量模型強(qiáng)調(diào)每一個(gè)增量均發(fā)布一個(gè)可操作的產(chǎn)品。7/26/2023373.2.4增量模型7/26/2023383.2.4增量模型增量模型的優(yōu)點(diǎn):(1)人員分配靈活,剛開始不用投入大量人力資源,可以避免不必要的浪費(fèi)。(2)重要功能被首先交付,可以獲得最多的測(cè)試,保證軟件產(chǎn)品的質(zhì)量。(3)早期發(fā)布的可操作產(chǎn)品可以作為原型為后期增量開發(fā)提供需求。(4)在較短時(shí)間內(nèi)向用戶提交部分工作的產(chǎn)品,可以讓用戶對(duì)開發(fā)項(xiàng)目和開發(fā)團(tuán)隊(duì)有信心。(5)用戶能看到所開發(fā)軟件的中間版本,可以使最終產(chǎn)品不至于偏離用戶的需求。(6)可以將技術(shù)難度大的部分作為早期的增量,能夠有效地管理與控制技術(shù)風(fēng)險(xiǎn)。7/26/2023393.2.4增量模型增量模型的缺點(diǎn):(1)在開發(fā)過程中,需求的變化是不可避免的。如果不能有效地控制并管理好需求的變更,增量模型很容易退化為邊寫邊改模式,從而使軟件過程的控制失去整體性。(2)由于各個(gè)增量逐漸并入已有的結(jié)構(gòu),所以加入的增量部分不能破壞已構(gòu)造好的系統(tǒng)部分,這需要軟件具備開放式的體系結(jié)構(gòu),對(duì)開發(fā)團(tuán)隊(duì)的技術(shù)要求更高。(3)難以對(duì)所有增量進(jìn)行有效的集成。7/26/2023403.2.4增量模型增量模型與原型模型、演化模型一樣,本質(zhì)上是迭代的,都能應(yīng)用在需求不明確、需求變化大的軟件項(xiàng)目的開發(fā)中,但與其它迭代式的模型不一樣的是,增量模型強(qiáng)調(diào)每一個(gè)增量均發(fā)布一個(gè)可操作產(chǎn)品。早期的增量是最終產(chǎn)品的“可拆卸”版本。用戶可對(duì)每一個(gè)可操作產(chǎn)品進(jìn)行評(píng)估,能很好地滿足用戶需求,大大提高了項(xiàng)目的成功率。7/26/2023413.3傳統(tǒng)軟件開發(fā)方法在傳統(tǒng)的軟件開發(fā)過程中,最重要的是明確和分解系統(tǒng)功能。這種方法看起來很符合人們處理事務(wù)的流程,是實(shí)現(xiàn)預(yù)期目標(biāo)的最直接的途徑。然而,一旦系統(tǒng)的需求發(fā)生變化,這種基于功能分解的系統(tǒng)將會(huì)需要大量的修改工作。隨著計(jì)算機(jī)技術(shù)、網(wǎng)絡(luò)技術(shù)的不斷發(fā)展,計(jì)算機(jī)應(yīng)用范圍不斷擴(kuò)大,軟件系統(tǒng)的規(guī)模也變得越來越龐大?;趥鹘y(tǒng)生命周期的結(jié)構(gòu)化軟件開發(fā)方法逐漸暴露出了它自身的一些缺點(diǎn):難以理解和維護(hù)、可重用性差等。這些缺點(diǎn)是由什么原因引起的?7/26/2023423.3傳統(tǒng)軟件開發(fā)方法在結(jié)構(gòu)化軟件開發(fā)(傳統(tǒng)的面向過程的軟件開發(fā)方法)的整個(gè)過程中,重點(diǎn)放在了操作上。這些操作是通過函數(shù)、模塊或一條簡(jiǎn)單的指令來執(zhí)行的。在整個(gè)開發(fā)過程中,過程化程序設(shè)計(jì)方法完全將程序中的一個(gè)非常重要的方面——數(shù)據(jù),與操作分離開來,使得數(shù)據(jù)可以被所有函數(shù)或過程完全訪問。7/26/2023433.3傳統(tǒng)軟件開發(fā)方法傳統(tǒng)軟件開發(fā)方法遵循軟件生命周期,整個(gè)開發(fā)過程包括可行性研究、需求分析、總體設(shè)計(jì)、詳細(xì)設(shè)計(jì)、編碼、測(cè)試和維護(hù)等六個(gè)階段。7/26/2023443.3傳統(tǒng)軟件開發(fā)方法結(jié)構(gòu)化方法是傳統(tǒng)軟件開發(fā)方法的一個(gè)很好的例子,包括結(jié)構(gòu)化分析、結(jié)構(gòu)化設(shè)計(jì)、結(jié)構(gòu)化編程和結(jié)構(gòu)化測(cè)試等。7/26/2023453.3傳統(tǒng)軟件開發(fā)方法結(jié)構(gòu)化分析的工具是數(shù)據(jù)流圖和數(shù)據(jù)字典,用來表達(dá)和理解問題的數(shù)據(jù)域和功能域。數(shù)據(jù)域包括數(shù)據(jù)流、數(shù)據(jù)內(nèi)容和數(shù)據(jù)結(jié)構(gòu),而功能域則反映這三個(gè)方面的控制信息。通常將一個(gè)復(fù)雜問題按功能進(jìn)行分解并逐層細(xì)化。7/26/2023463.3傳統(tǒng)軟件開發(fā)方法結(jié)構(gòu)化設(shè)計(jì)的基本思想是模塊化思想。將數(shù)據(jù)流圖進(jìn)一步細(xì)化到每一個(gè)子功能都清晰易懂,每個(gè)模塊完成一個(gè)子功能,每層模塊合成一個(gè)高一級(jí)的功能??傮w設(shè)計(jì)階段包括數(shù)據(jù)庫結(jié)構(gòu)設(shè)計(jì)、用戶界面設(shè)計(jì)、功能模塊結(jié)構(gòu)設(shè)計(jì)等。詳細(xì)設(shè)計(jì)是根據(jù)每個(gè)模塊的功能設(shè)計(jì)實(shí)現(xiàn)算法以及實(shí)現(xiàn)這些算法的邏輯控制流程。詳細(xì)設(shè)計(jì)的表示工具有程序流程圖、PAD圖、N-S圖、判定表和判定樹、偽碼和PDL等。7/26/2023473.3傳統(tǒng)軟件開發(fā)方法編程是指把軟件設(shè)計(jì)的結(jié)果轉(zhuǎn)換為用某種程序設(shè)計(jì)語言所表示的程序代碼。結(jié)構(gòu)化的程序設(shè)計(jì)語言,例如,F(xiàn)ortran、Pascal、C等,是通過把程序劃分成函數(shù)和功能模塊來控制整個(gè)程序的執(zhí)行流程的。7/26/2023483.3傳統(tǒng)軟件開發(fā)方法傳統(tǒng)軟件開發(fā)方法有以下四個(gè)特點(diǎn):(1)以模塊作為基本的構(gòu)造單元。使得編程與現(xiàn)實(shí)世界之間存在理解鴻溝。(2)自頂向下逐步細(xì)分功能。系統(tǒng)重用性很差。(3)不同模塊之間的信息傳遞通過函數(shù)的調(diào)用來完成。其控制信息傳遞效率極其低下。(4)堅(jiān)持嚴(yán)格的階段性評(píng)審。雖然能夠保證軟件質(zhì)量,但整個(gè)開發(fā)過程缺少應(yīng)有的靈活性。7/26/2023493.3傳統(tǒng)軟件開發(fā)方法當(dāng)函數(shù)與被函數(shù)調(diào)用的數(shù)據(jù)分離時(shí),數(shù)據(jù)被破壞的可能性極大。另外,當(dāng)數(shù)據(jù)和函數(shù)相互獨(dú)立時(shí),總存在著用錯(cuò)誤的數(shù)據(jù)調(diào)用正確的程序模塊或用正確的數(shù)據(jù)調(diào)用了錯(cuò)誤的程序模塊的可能性。所以,需要有一種方法來約束所有函數(shù)對(duì)數(shù)據(jù)的訪問,即將這些數(shù)據(jù)有效地隱藏起來,這就是面向?qū)ο蟮男畔㈦[藏思想。7/26/2023503.3傳統(tǒng)軟件開發(fā)方法傳統(tǒng)的面向過程的結(jié)構(gòu)化開發(fā)方法的另一個(gè)問題是它不能很好地表示現(xiàn)實(shí)世界。這些現(xiàn)實(shí)世界中的事物可直接映射到面向?qū)ο蟮慕饪臻g,用面向?qū)ο蟮能浖_發(fā)方法能很好地解決現(xiàn)實(shí)世界的問題。7/26/2023513.3傳統(tǒng)軟件開發(fā)方法為了提高系統(tǒng)的可理解性、可維護(hù)性和可重用性,并能很好地表示現(xiàn)實(shí)世界,開發(fā)軟件項(xiàng)目時(shí),最好采用面向?qū)ο筌浖_發(fā)技術(shù)。7/26/2023523.4面向?qū)ο筌浖_發(fā)技術(shù)“對(duì)象”一詞在現(xiàn)實(shí)生活中經(jīng)常會(huì)遇到,它表示現(xiàn)實(shí)世界中的某個(gè)具體的事物,例如,一臺(tái)計(jì)算機(jī)。現(xiàn)實(shí)世界中的事物包含了物質(zhì)和意識(shí)兩大部分,物質(zhì)表達(dá)的是具體的事物,而意識(shí)則描述了某一個(gè)抽象的概念,是對(duì)客觀存在的事物的一種概括。對(duì)象的概念源于用計(jì)算機(jī)程序?qū)ΜF(xiàn)實(shí)世界的復(fù)雜事物進(jìn)行建模的過程。7/26/2023533.4.1面向?qū)ο蟮幕靖拍罡拍?-1:對(duì)象對(duì)象是指現(xiàn)實(shí)世界中各種各樣的實(shí)體。它既可以是具體的能觸及的事物,如一個(gè)人、一棟大樓、一架飛機(jī),甚至一個(gè)地球等;也可以是無法觸及的抽象事物,如一項(xiàng)計(jì)劃、一次約會(huì)、一場(chǎng)演出等。一個(gè)對(duì)象既可以非常簡(jiǎn)單,又可以非常復(fù)雜,復(fù)雜的對(duì)象往往可以由若干個(gè)簡(jiǎn)單的對(duì)象組合而成。7/26/2023543.4.1面向?qū)ο蟮幕靖拍顚?duì)象定義了狀態(tài)和行為。對(duì)象的狀態(tài)用數(shù)據(jù)值來表示,而對(duì)象的行為則用來改變對(duì)象的狀態(tài)。在面向?qū)ο蟮南到y(tǒng)中,對(duì)象是基本的運(yùn)行實(shí)體。7/26/2023553.4.1面向?qū)ο蟮幕靖拍钏羞@些對(duì)象,除去它們都是現(xiàn)實(shí)世界中所存在的事物之外,它們都還具有各自不同的特征:(1)有一個(gè)名字用來區(qū)別于其它對(duì)象。例如:張三、李四等。7/26/2023563.4.1面向?qū)ο蟮幕靖拍?2)有一個(gè)狀態(tài)用來描述對(duì)象的某些特征。例如:對(duì)象張三的狀態(tài):姓名:張三性別:男身高:179cm體重:71kg7/26/2023573.4.1面向?qū)ο蟮幕靖拍?3)有一組操作,每一個(gè)操作決定對(duì)象的一種功能或行為。對(duì)象的操作可分為兩類:一類是自身所承受的操作,使用setter、getter作為操作名;一類是施加于其它對(duì)象的操作。例如:對(duì)象張三的操作(可完成的功能):回答姓名回答性別回答身高回答體重打電話踢足球駕車屬于對(duì)象自身所承受的操作屬于施加于其它對(duì)象的操作7/26/2023583.4.1面向?qū)ο蟮幕靖拍罡拍?-2:類類是對(duì)一組客觀對(duì)象的抽象,它將該組對(duì)象所具有的共同特征(包括結(jié)構(gòu)特征和行為特征)集中起來,以說明該組對(duì)象的性質(zhì)和能力。例如:“人”這個(gè)詞就是抽象了所有人(單個(gè)的人,如張三、李四等,這些都是對(duì)象)的共同之處。7/26/2023593.4.1面向?qū)ο蟮幕靖拍钤诿嫦驅(qū)ο缶幊讨?,通常把類定義為抽象數(shù)據(jù)類型,而對(duì)象是類的類型變量。當(dāng)定義了一個(gè)類以后,就可以生成任意多個(gè)屬于這個(gè)類的對(duì)象,這個(gè)過程叫做實(shí)例化。例如,用Java語言定義一個(gè)類Car為:publicclassCar{……}這時(shí)可生成任意多個(gè)屬于Car類的對(duì)象:Carcar1=newCar();Carcar2=newCar();
7/26/2023603.4.1面向?qū)ο蟮幕靖拍罡拍?-3:類與對(duì)象的關(guān)系組成類的對(duì)象均為該類的實(shí)例。類與對(duì)象之間的關(guān)系就是抽象與具體的關(guān)系。例如,張三是一個(gè)學(xué)生,學(xué)生是一個(gè)類,而張三作為一個(gè)具體的對(duì)象,是學(xué)生類的一個(gè)實(shí)例。類是多個(gè)實(shí)例的綜合抽象,而實(shí)例又是類的個(gè)體事物。7/26/2023613.4.1面向?qū)ο蟮幕靖拍钤诿嫦驅(qū)ο缶幊讨校x一個(gè)類就定義了這個(gè)類的一系列屬性與操作,對(duì)于同一個(gè)類的不同實(shí)例之間,必定具有如下特點(diǎn):(1)相同的屬性集合;(2)相同的操作集合;(3)不同的對(duì)象名。7/26/2023623.4.1面向?qū)ο蟮幕靖拍钕嗤膶傩约吓c操作集合用于標(biāo)識(shí)這些對(duì)象屬于同一個(gè)類,用不同的對(duì)象名來區(qū)別不同的對(duì)象。7/26/2023633.4.1面向?qū)ο蟮幕靖拍罡拍?-4:面向?qū)ο竺嫦驅(qū)ο螅∣bject-Oriented,簡(jiǎn)稱OO)是指人們按照自然的思維方式認(rèn)識(shí)客觀世界,采用基于對(duì)象(實(shí)體)的概念建立模型,模擬客觀世界,從而用來分析、設(shè)計(jì)和實(shí)現(xiàn)軟件的方法。把軟件組織成一系列離散的、合并了數(shù)據(jù)結(jié)構(gòu)和行為的對(duì)象集。7/26/2023643.4.1面向?qū)ο蟮幕靖拍蠲嫦驅(qū)ο笫钱?dāng)前計(jì)算機(jī)界關(guān)注的重點(diǎn),它是90年代主流軟件開發(fā)方法。通過面向?qū)ο蟮睦砟钍褂?jì)算機(jī)軟件系統(tǒng)能與現(xiàn)實(shí)世界中的系統(tǒng)一一對(duì)應(yīng)。面向?qū)ο蟮母拍詈蛻?yīng)用已超越了程序設(shè)計(jì)和軟件開發(fā),擴(kuò)展到很寬的范圍。如數(shù)據(jù)庫系統(tǒng)、分布式系統(tǒng)、人工智能等領(lǐng)域。7/26/2023653.4.1面向?qū)ο蟮幕靖拍畈捎妹嫦驅(qū)ο蠹夹g(shù)開發(fā)軟件的方法,稱為面向?qū)ο筌浖_發(fā)方法。面向?qū)ο蠓椒ň哂幸韵聨讉€(gè)特性:(1)對(duì)象唯一性每個(gè)對(duì)象都有唯一的標(biāo)識(shí)(如同人們的身份證號(hào)碼),通過這個(gè)標(biāo)識(shí),可以找到相應(yīng)的對(duì)象。在對(duì)象的整個(gè)生命周期(從對(duì)象的創(chuàng)建到對(duì)象的消亡)中,它的標(biāo)識(shí)都不會(huì)改變。不同的對(duì)象(即使其它屬性完全相同,例如兩個(gè)完全一樣的球)必須具有不同的標(biāo)識(shí)。(2)封裝性具有一致的數(shù)據(jù)結(jié)構(gòu)(屬性)和行為(操作)的對(duì)象抽象成類。(3)繼承性子類自動(dòng)共享父類的數(shù)據(jù)結(jié)構(gòu)和行為的機(jī)制,這是類之間的一種關(guān)系。繼承性是面向?qū)ο蟪绦蛟O(shè)計(jì)語言不同于其它程序設(shè)計(jì)語言最重要的特點(diǎn),是其它語言所沒有的。(4)多態(tài)性它是面向?qū)ο笙到y(tǒng)中的又一個(gè)重要特性。多態(tài)性描述的是同一個(gè)消息可以根據(jù)發(fā)送消息對(duì)象的不同采用多種不同的行為方式。即是指相同的操作或函數(shù)可作用于多種類型的對(duì)象上并獲得不同的結(jié)果。不同的對(duì)象,收到同一消息可以產(chǎn)生不同的結(jié)果,這種現(xiàn)象就稱為多態(tài)性。7/26/2023663.4.1面向?qū)ο蟮幕靖拍罡拍?-5:封裝及面向?qū)ο笙到y(tǒng)的封裝性封裝也叫做信息隱藏。從字面上理解,封裝就是將某事物包裝起來,使外界不了解其實(shí)際內(nèi)容。從軟件開發(fā)的角度,封裝是指將一個(gè)數(shù)據(jù)和與這個(gè)數(shù)據(jù)有關(guān)的各種操作放在一起,形成一個(gè)能動(dòng)的實(shí)體——對(duì)象,使用者不必知道對(duì)象的內(nèi)部結(jié)構(gòu),只需根據(jù)對(duì)象提供的外部接口訪問對(duì)象。從使用者的角度看,這些對(duì)象就像一個(gè)“黑盒子”,其內(nèi)部數(shù)據(jù)和行為是被隱藏起來、看不見的。面向?qū)ο笙到y(tǒng)的封裝性是一種信息隱藏技術(shù),它隱藏了某一方法的具體執(zhí)行步驟,取而代之的是通過消息傳遞機(jī)制傳遞消息給它。7/26/2023673.4.1面向?qū)ο蟮幕靖拍罘庋b的意義在于保護(hù)或者防止數(shù)據(jù)或者程序代碼被我們無意中破壞,以提高系統(tǒng)的安全性。既然封裝了對(duì)象,那么,怎樣才能訪問對(duì)象呢?答案是通過對(duì)象提供的公共消息接口來訪問對(duì)象。下面是一個(gè)用Java語言所定義的類:7/26/2023683.4.1面向?qū)ο蟮幕靖拍頿ublicclassEmployee{privateStringname;privateintage;privatefloatsalary;privateStringrank;privatevoidcalculateSalary(floatsubtract){salary=salary–subtract;}protectedint
getAge(){returnage;}publicvoidsetSalary(floatsalary){
this.salary=salary;}publicfloatgetSalary(){returnsalary;}……}7/26/2023693.4.1面向?qū)ο蟮幕靖拍钤谏厦嫠x的職員(Employee)類中,包含的數(shù)據(jù)有職員姓名(name)、年齡(age)、工資(salary)、職位(rank)。這些數(shù)據(jù)被定義為私有數(shù)據(jù)(用private定義),就被隱藏起來,對(duì)于外部對(duì)象來說就不可以直接訪問了。它所包含的成員方法或成員函數(shù)(操作)有三種類型的可見性:7/26/2023703.4.1面向?qū)ο蟮幕靖拍?1)私有的用private關(guān)鍵字標(biāo)識(shí),如:calculateSalary,這樣的成員方法或函數(shù)不向外部公開,只供對(duì)象內(nèi)部自己使用。(2)受保護(hù)的用protected關(guān)鍵字標(biāo)識(shí),如:getAge,這樣的成員方法或函數(shù)只向部分外界公開,只對(duì)派生類對(duì)象提供服務(wù)。(3)公有的用public關(guān)鍵字標(biāo)識(shí),如:getSalary等,這樣的成員方法或函數(shù)向所有的外界公開,它可以響應(yīng)外界對(duì)象的請(qǐng)求。7/26/2023713.4.1面向?qū)ο蟮幕靖拍疃x為公有的成員方法或函數(shù),才是對(duì)象提供的公共消息接口。外部對(duì)象只有通過這些公共接口才能訪問到對(duì)象的內(nèi)部數(shù)據(jù),這就是所謂的信息隱藏技術(shù)。7/26/2023723.4.1面向?qū)ο蟮幕靖拍罡鶕?jù)對(duì)封裝的定義可以看出,封裝應(yīng)該具有下面幾個(gè)條件:(1)具有一個(gè)清晰的邊界。對(duì)象所有的私有數(shù)據(jù)、成員方法或函數(shù)的實(shí)現(xiàn)細(xì)節(jié)都被固定在這個(gè)邊界內(nèi)。(2)具有一個(gè)接口。這個(gè)接口描述了對(duì)象之間的交互作用,它就是消息。(3)對(duì)象內(nèi)部的實(shí)現(xiàn)代碼受到封裝體的保護(hù),其它對(duì)象不能直接修改本對(duì)象所擁有的數(shù)據(jù)和代碼。7/26/2023733.4.1面向?qū)ο蟮幕靖拍蠲嫦驅(qū)ο笙到y(tǒng)中的封裝以對(duì)象為單位,即主要是指對(duì)象的封裝,該對(duì)象的特性是由它所屬的類說明來描述,也就是說在類的定義中實(shí)現(xiàn)封裝。被封裝的對(duì)象通常被稱為抽象數(shù)據(jù)類型。封裝性提高了對(duì)象內(nèi)部數(shù)據(jù)的安全性。7/26/2023743.4.1面向?qū)ο蟮幕靖拍罡拍?-6:繼承及面向?qū)ο笙到y(tǒng)的繼承性繼承是指一個(gè)類能夠從另一個(gè)類那里獲得一些特性。在這個(gè)過程中,超類把它的特性賦給了子類。面向?qū)ο笙到y(tǒng)的繼承性是對(duì)具有層次關(guān)系的類的屬性和操作進(jìn)行共享的一種方式。在面向?qū)ο笙到y(tǒng)中,若沒有引入繼承的概念,所有的類就會(huì)變成一盤各自為政、彼此獨(dú)立的散沙,軟件重用級(jí)別較低,每次軟件開發(fā)就只能從“零”開始。7/26/2023753.4.1面向?qū)ο蟮幕靖拍罾^承是面向?qū)ο筌浖夹g(shù)中的一個(gè)概念。如果一個(gè)類A繼承自另一個(gè)類B,就把這個(gè)A稱為B的“子類”或“派生類”,而把B稱為A的“父類”或“超類”或“基類”。例如,在通常的信息管理應(yīng)用系統(tǒng)中,都會(huì)涉及到用戶權(quán)限管理,常常會(huì)有“一般用戶”和“系統(tǒng)管理員”兩種角色,而“一般用戶”和“系統(tǒng)管理員”都是“用戶”,所以,“一般用戶”類和“系統(tǒng)管理員”類都可以繼承自“用戶”類。在這里,“一般用戶”類和“系統(tǒng)管理員”類都是“用戶”類的子類,而“用戶”類則是“一般用戶”類和“系統(tǒng)管理員”類的父類。7/26/2023763.4.1面向?qū)ο蟮幕靖拍罾^承可以使得子類具有父類的各種屬性和方法,而不需要再次編寫相同的代碼。在子類繼承父類時(shí),既可以重新定義子類的某些屬性和方法,也可以重寫某些方法,來覆蓋父類的原有屬性和方法,使其獲得與父類不同的功能。7/26/2023773.4.1面向?qū)ο蟮幕靖拍罾^承有兩個(gè)方面的作用:①避免代碼冗余,提高可理解性和可維護(hù)性;②繼承是從老對(duì)象生成新對(duì)象的一種代碼重用機(jī)制,使系統(tǒng)更具靈活性和適應(yīng)性,它使得解釋多態(tài)性成為可能。7/26/2023783.4.1面向?qū)ο蟮幕靖拍罾^承有單繼承和多繼承之分。單繼承多繼承7/26/2023793.4.1面向?qū)ο蟮幕靖拍疃嘀乩^承的引入,使面向?qū)ο笙到y(tǒng)大大增加了模擬現(xiàn)實(shí)世界的能力,但是系統(tǒng)結(jié)構(gòu)變得非常復(fù)雜,增加了系統(tǒng)的理解與維護(hù)難度。在面向?qū)ο蟪绦蛟O(shè)計(jì)語言中,C++支持多繼承,而Java語言只支持單繼承,不支持多繼承。7/26/2023803.4.1面向?qū)ο蟮幕靖拍钤诿嫦驅(qū)ο箝_發(fā)中,繼承性不僅作用在對(duì)操作的繼承,還作用在對(duì)數(shù)據(jù)的繼承,也就是說,既具有結(jié)構(gòu)特性的繼承性,又具有行為特性的繼承性。子類是否可以訪問父類的所有成員變量和成員方法(或成員函數(shù))?在前面介紹封裝性時(shí)談到,定義類的數(shù)據(jù)成員與方法成員有三種訪問域(三種可見性),即公有訪問域(public)、受保護(hù)訪問域(protected)、私有訪問域(private)。父類的成員若定義為受保護(hù)訪問域和公有訪問域,子類是可以訪問的;若父類成員定義為私有訪問域,子類則無權(quán)訪問。7/26/2023813.4.1面向?qū)ο蟮幕靖拍罡拍?-7:重載及面向?qū)ο笙到y(tǒng)的多態(tài)性一個(gè)類中的操作具有相同的名稱和不同的參數(shù),這樣的操作被稱為“重載”。面向?qū)ο笙到y(tǒng)的多態(tài)性是指,當(dāng)不同的對(duì)象收到相同的消息時(shí)產(chǎn)生不同的動(dòng)作。常用在功能相同但參數(shù)的數(shù)據(jù)類型有微小差別的操作中。7/26/2023823.4.1面向?qū)ο蟮幕靖拍畈僮髅?shù)及其類型和操作的返回類型合在一起稱為操作的簽名(注:這里的操作就是方法或函數(shù))。一個(gè)類中的所有操作都必須具有唯一的簽名,即是說一個(gè)類中不能存在兩個(gè)相同簽名的操作。具有相同名稱和參數(shù)但是返回類型不同的操作不能稱為重載,因?yàn)樵谡{(diào)用操作時(shí)并沒有描述操作的返回類型,被調(diào)用的對(duì)象不能分辨出僅僅是返回類型不同的兩個(gè)操作,因此這樣的操作具有歧義性,是無效的。7/26/2023833.4.2面向?qū)ο蟮拈_發(fā)傳統(tǒng)的軟件開發(fā)生命周期包含了六個(gè)階段:制定計(jì)劃、需求分析和定義、設(shè)計(jì)、編碼、測(cè)試、運(yùn)行與維護(hù),面向?qū)ο蟮拈_發(fā)和傳統(tǒng)的軟件開發(fā)方法不同,它是一種基于現(xiàn)實(shí)世界抽象的新的軟件開發(fā)方法。那么,面向?qū)ο蟮能浖_發(fā)中,軟件生命周期又可分為哪幾個(gè)階段?各個(gè)階段主要完成哪些任務(wù)?7/26/2023843.4.2面向?qū)ο蟮拈_發(fā)在面向?qū)ο蟮能浖_發(fā)中,軟件生命周期可分為以下幾個(gè)階段:(1)系統(tǒng)分析階段在這個(gè)階段,需要建立一個(gè)反映現(xiàn)實(shí)客觀世界情形的模型。為了建立這個(gè)模型,需要分析員和需求人員共同明確現(xiàn)實(shí)世界中的問題。這個(gè)模型應(yīng)該解決系統(tǒng)必須做什么,而不是怎么做的問題。分析之后將得到分析模型:對(duì)象模型、動(dòng)態(tài)模型和功能模型。(2)系統(tǒng)設(shè)計(jì)階段這個(gè)階段需要給出怎樣解決問題的決策。包括將系統(tǒng)劃分成子系統(tǒng)和子系統(tǒng)軟硬件如何配置,確定系統(tǒng)的整體框架結(jié)構(gòu)。7/26/2023853.4.2面向?qū)ο蟮拈_發(fā)(3)對(duì)象設(shè)計(jì)階段該階段將應(yīng)用領(lǐng)域的概念轉(zhuǎn)換為計(jì)算機(jī)軟件領(lǐng)域的概念。在系統(tǒng)分析階段所定義的問題,在這個(gè)階段來確定解決問題的方法。將分析模型的邏輯結(jié)構(gòu)映射到一個(gè)程序的物理組織,得到設(shè)計(jì)模型。(4)實(shí)現(xiàn)階段在這個(gè)階段,將在對(duì)象設(shè)計(jì)階段開發(fā)的類轉(zhuǎn)換成用特定的程序設(shè)計(jì)語言編寫的代碼或數(shù)據(jù)庫。(5)測(cè)試階段傳統(tǒng)軟件開發(fā)的測(cè)試通常經(jīng)過單元測(cè)試、集成測(cè)試、系統(tǒng)測(cè)試三個(gè)環(huán)節(jié)。由于面向?qū)ο笥衅渥陨淼奶攸c(diǎn),參考面向?qū)ο筌浖_發(fā)模式,面向?qū)ο箝_發(fā)測(cè)試包括面向?qū)ο蠓治龅臏y(cè)試、面向?qū)ο笤O(shè)計(jì)的測(cè)試、面向?qū)ο缶幊痰臏y(cè)試、面向?qū)ο髥卧獪y(cè)試、面向?qū)ο蠹蓽y(cè)試和面向?qū)ο笙到y(tǒng)測(cè)試。7/26/2023863.4.2面向?qū)ο蟮拈_發(fā)面向?qū)ο箝_發(fā)同樣包含了傳統(tǒng)軟件開發(fā)的幾個(gè)階段:分析、設(shè)計(jì)、編碼、測(cè)試等,但面向?qū)ο箝_發(fā)是用“面向?qū)ο蟆钡挠^點(diǎn)去認(rèn)識(shí)客觀世界,用“面向?qū)ο蟆钡姆椒ㄈツM客觀世界,所以,在分析階段主要分析現(xiàn)實(shí)世界中的對(duì)象以及對(duì)象與對(duì)象之間的關(guān)系,在設(shè)計(jì)階段除了對(duì)整個(gè)系統(tǒng)的架構(gòu)設(shè)計(jì)外,主要針對(duì)對(duì)象(或類)以及對(duì)象(或類)與對(duì)象(或類)之間的關(guān)系進(jìn)行設(shè)計(jì),在編碼階段使用面向?qū)ο缶幊陶Z言實(shí)現(xiàn)類的各項(xiàng)功能,而在測(cè)試階段則使用面向?qū)ο蟮臏y(cè)試方法與技術(shù)。7/26/2023873.4.2面向?qū)ο蟮拈_發(fā)人們對(duì)客觀世界的認(rèn)識(shí)是一個(gè)從簡(jiǎn)單到復(fù)雜、從知之不多到知之甚多的反復(fù)的認(rèn)識(shí)過程,因此,面向?qū)ο蟮能浖_發(fā)也將是一個(gè)反復(fù)的迭代過程,但這種反復(fù)不是簡(jiǎn)單的重復(fù),而是在前一個(gè)迭代周期基礎(chǔ)上對(duì)于問題領(lǐng)域的認(rèn)識(shí)有所提高。7/26/2023883.4.2面向?qū)ο蟮拈_發(fā)面向?qū)ο箝_發(fā)生命周期是一個(gè)迭代的增量式過程,因此,使用面向?qū)ο筌浖_發(fā)技術(shù)能很好地適應(yīng)系統(tǒng)需求的變化,并能提高軟件的可理解性、可維護(hù)性和可重用性,以致于提高軟件企業(yè)的可持續(xù)發(fā)展性。7/26/2023893.4.2面向?qū)ο蟮拈_發(fā)面向?qū)ο蟮姆治雠c設(shè)計(jì)過程適合于使用UML來建模,同時(shí),使用UML建模工具可以將模型(對(duì)于嵌入式系統(tǒng),通常指狀態(tài)圖;而對(duì)于一般系統(tǒng),則是指類圖)映射為特定編程語言的程序代碼,也可以將永久類映射為關(guān)系數(shù)據(jù)庫結(jié)構(gòu),還能將分析模型中得到的邊界類的屬性與操作部分映射為用戶界面中的圖形元素。面向?qū)ο箝_發(fā)特別適合采用下一節(jié)將要介紹的RUP統(tǒng)一軟件開發(fā)過程。7/26/2023903.5RUP統(tǒng)一軟件開發(fā)過程RUP(RationalUnifiedProcess,統(tǒng)一軟件開發(fā)過程),是由IBMRational公司提出來的。它是一個(gè)通用的過程框架,適用面非常廣,可以適用于不同種類的軟件系統(tǒng)、應(yīng)用領(lǐng)域、組織類型、性能水平和項(xiàng)目規(guī)模。它是一個(gè)演化的開發(fā)過程。7/26/2023913.5RUP統(tǒng)一軟件開發(fā)過程RUP是基于構(gòu)件的開發(fā)過程,在開發(fā)過程中非常重視構(gòu)件的應(yīng)用。這意味著利用它開發(fā)的軟件系統(tǒng)是由構(gòu)件組成的,構(gòu)件之間通過定義良好的接口相互聯(lián)系。與其它軟件過程相比,RUP具有三個(gè)顯著的特點(diǎn):7/26/2023923.5RUP統(tǒng)一軟件開發(fā)過程(1)它是用例驅(qū)動(dòng)的過程。根據(jù)需求分析的用例來構(gòu)建需要的系統(tǒng)行為。用例定義了系統(tǒng)功能的使用環(huán)境和上下文,每個(gè)用例描述的是一個(gè)完整的系統(tǒng)服務(wù)。7/26/2023933.5RUP統(tǒng)一軟件開發(fā)過程(2)它是迭代和增量式的過程。每次迭代都產(chǎn)生一個(gè)可執(zhí)行的版本。每次迭代時(shí),都選用一組還沒有實(shí)現(xiàn)的用例來作為增量進(jìn)行開發(fā),優(yōu)先識(shí)別并著手實(shí)現(xiàn)風(fēng)險(xiǎn)較大的用例,例如,集中所有的技術(shù)力量?jī)?yōu)先解決技術(shù)難度最大的用例。7/26/2023943.5RUP統(tǒng)一軟件開發(fā)過程(3)它是以基本架構(gòu)為中心的過程。在開發(fā)之前,首先根據(jù)平臺(tái)而不考慮用例來設(shè)計(jì)系統(tǒng)架構(gòu),然后,選用其中幾個(gè)成熟的用例來修改或擴(kuò)展先前的架構(gòu),用系統(tǒng)架構(gòu)來概念化、建立管理和發(fā)展開發(fā)之中的系統(tǒng)。7/26/2023953.5.1
RUP生命周期RUP是一種軟件開發(fā)過程,包括開發(fā)過程、管理過程和支撐過程,它的生命周期是怎樣的呢?7/26/2023963.5.1
RUP生命周期與傳統(tǒng)的一維瀑布開發(fā)模型不同,RUP軟件開發(fā)生命周期是一個(gè)二維的開發(fā)模型。橫軸表示軟件過程的時(shí)間維,是過程展開的生命周期特征,體現(xiàn)開發(fā)過程的動(dòng)態(tài)結(jié)構(gòu),被分成四個(gè)順序階段,分別是:先啟階段(Inception),精化階段(Elaboration),構(gòu)造階段(Construction),移交階段(Transition)。每個(gè)階段以一個(gè)主要里程碑結(jié)束。每個(gè)階段結(jié)束時(shí)都要安排一次技術(shù)評(píng)審,以確定是否符合該階段的目標(biāo)。如果評(píng)審令人滿意,則允許項(xiàng)目進(jìn)入下一個(gè)階段??v軸表示內(nèi)容維,體現(xiàn)開發(fā)過程的靜態(tài)結(jié)構(gòu),描述按性質(zhì)將活動(dòng)邏輯地進(jìn)行分組的工作流程。7/26/2023973.5.1
RUP生命周期7/26/2023983.5.1
RUP生命周期(1)先啟階段這是開發(fā)生命周期的第一階段。其主要目標(biāo)是實(shí)現(xiàn)所有項(xiàng)目相關(guān)人員在項(xiàng)目的生命周期目標(biāo)上達(dá)成一致,把開發(fā)的主要思想確定為現(xiàn)實(shí)的目標(biāo)。其任務(wù)是為系統(tǒng)建立業(yè)務(wù)模型并確定項(xiàng)目的軟件范圍和邊界條件,識(shí)別出系統(tǒng)的關(guān)鍵用例,確定至少一個(gè)體系結(jié)構(gòu)方案,評(píng)估整個(gè)項(xiàng)目的整體成本和進(jìn)度安排、評(píng)估潛在風(fēng)險(xiǎn),準(zhǔn)備項(xiàng)目的支持環(huán)境。這個(gè)階段所關(guān)注的是整個(gè)項(xiàng)目的業(yè)務(wù)和需求方面的主要風(fēng)險(xiǎn)。主要包括以下幾個(gè)基本活動(dòng):7/26/2023993.5.1
RUP生命周期①明確項(xiàng)目規(guī)模建立項(xiàng)目的軟件規(guī)模和邊界條件,包括驗(yàn)收標(biāo)準(zhǔn),了解環(huán)境及重要的需求和約束,識(shí)別系統(tǒng)的關(guān)鍵用例。②評(píng)估項(xiàng)目風(fēng)險(xiǎn)針對(duì)軟件開發(fā)涉及到的風(fēng)險(xiǎn),包括在軟件開發(fā)中可能出現(xiàn)的風(fēng)險(xiǎn)和軟件實(shí)施過程中外部環(huán)境的變化可能引起的風(fēng)險(xiǎn)等進(jìn)行評(píng)估。③制定項(xiàng)目計(jì)劃綜合考慮備選構(gòu)架,評(píng)估設(shè)計(jì)和自制或外購或重用方面的方案,從而估算出項(xiàng)目成本、進(jìn)度和資源等。④準(zhǔn)備項(xiàng)目環(huán)境評(píng)估項(xiàng)目和組織,選擇開發(fā)工具,確定要改進(jìn)哪些流程部分。⑤階段技術(shù)評(píng)審在評(píng)審過程中,需要考慮項(xiàng)目的規(guī)模定義,成本和進(jìn)度估算是否適中,估算根據(jù)是否可靠,需求是否正確,開發(fā)方和用戶方對(duì)軟件需求的理解是否達(dá)成一致,是否已確定所有風(fēng)險(xiǎn),并且針對(duì)每個(gè)風(fēng)險(xiǎn)有相應(yīng)的風(fēng)險(xiǎn)回避措施等問題。7/26/20231003.5.1
RUP生命周期初始階段結(jié)束時(shí)是第一個(gè)重要的里程碑:生命周期目標(biāo)(LifecycleObjective)里程碑。用來評(píng)價(jià)項(xiàng)目基本的生存能力,決定是繼續(xù)該項(xiàng)目還是取消它。7/26/20231013.5.1
RUP生命周期(2)精化階段這是開發(fā)過程的第二階段。該階段的目標(biāo)是建立系統(tǒng)架構(gòu)的基線,為構(gòu)造階段中的大量設(shè)計(jì)和實(shí)施工作提供穩(wěn)固基礎(chǔ)。其主要任務(wù)是分析問題領(lǐng)域,建立健全的構(gòu)架基礎(chǔ),淘汰項(xiàng)目中的最高風(fēng)險(xiǎn)元素。主要有以下五個(gè)活動(dòng):7/26/20231023.5.1
RUP生命周期①確定構(gòu)架確保構(gòu)架、需求和計(jì)劃足夠穩(wěn)定,充分減少風(fēng)險(xiǎn),從而能夠有預(yù)見性地確定開發(fā)所需的成本和進(jìn)度安排。②制定構(gòu)造階段計(jì)劃為構(gòu)造階段制定詳細(xì)的迭代計(jì)劃并為其建立基線。③建立支持環(huán)境為項(xiàng)目建立支持環(huán)境,包括開發(fā)環(huán)境,開發(fā)流程,創(chuàng)建模板、準(zhǔn)則和準(zhǔn)備工具等。④選擇構(gòu)件綜合考慮備選構(gòu)件,評(píng)估自制或外購或重用構(gòu)件選擇方案,以確定構(gòu)造階段成本和進(jìn)度安排。⑤階段技術(shù)評(píng)審在評(píng)審過程中,需要確定產(chǎn)品的需求、體系結(jié)構(gòu)是穩(wěn)定的;使用的關(guān)鍵方法已得到證實(shí);已解決了主要的風(fēng)險(xiǎn)因素;已有足夠詳細(xì)和精確的構(gòu)造階段的迭代計(jì)劃;項(xiàng)目團(tuán)隊(duì)相關(guān)人員已在選用的體系結(jié)構(gòu)上達(dá)成共識(shí);確定實(shí)際的資源花費(fèi)與計(jì)劃的花費(fèi)相比是否可以接受。7/26/20231033.5.1
RUP生命周期精化階段結(jié)束時(shí)是第二個(gè)重要的里程碑:生命周期體系結(jié)構(gòu)(LifecycleArchitecture)里程碑。為系統(tǒng)的結(jié)構(gòu)建立了管理基準(zhǔn)并使項(xiàng)目小組能夠在構(gòu)造階段中進(jìn)行衡量。此時(shí),應(yīng)檢查詳細(xì)的系統(tǒng)目標(biāo)和范圍、結(jié)構(gòu)的選擇以及主要風(fēng)險(xiǎn)的解決方案。如果項(xiàng)目未能達(dá)到該里程碑,則可能應(yīng)放棄或應(yīng)該好好重新考慮該項(xiàng)目。7/26/20231043.5.1
RUP生命周期(3)構(gòu)造階段這是開發(fā)過程的第三階段。這個(gè)階段以構(gòu)架為基線,在此基礎(chǔ)上構(gòu)建軟件。該階段要開發(fā)所有剩余的構(gòu)件和應(yīng)用程序功能,把這些構(gòu)件集成為產(chǎn)品,并進(jìn)行詳細(xì)測(cè)試。其重點(diǎn)放在資源的管理和運(yùn)作的控制,以降低成本,同時(shí)優(yōu)化進(jìn)度和質(zhì)量,快速完成可用的版本。確定軟件、環(huán)境和用戶是否已經(jīng)為部署軟件做好準(zhǔn)備。盡可能快地完成有用的產(chǎn)品版本(“Alpha”版、“Beta”版或其它測(cè)試發(fā)行版)。7/26/20231053.5.1
RUP生命周期構(gòu)造階段結(jié)束時(shí)是第三個(gè)重要的里程碑:初始操作能力(InitialOperational)里程碑。在該里程碑,產(chǎn)品已準(zhǔn)備好交付給移交團(tuán)隊(duì)。已開發(fā)所有功能并已完成所有Alpha測(cè)試。除了軟件外,還已開發(fā)了用戶手冊(cè),并且有當(dāng)前發(fā)行版的描述。該里程碑決定了產(chǎn)品是否可以在Beta測(cè)試環(huán)境中進(jìn)行部署。7/26/20231063.5.1
RUP生命周期(4)移交階段這是開發(fā)過程的第四階段。確保軟件已準(zhǔn)備就緒,從而可以移交給最終用戶使用。當(dāng)基線已經(jīng)足夠完善,可以安裝到最終用戶實(shí)際環(huán)境中時(shí),則進(jìn)入交付階段。移交階段的重點(diǎn)是確保最終用戶可使用軟件。移交階段的主要任務(wù)是進(jìn)行Beta測(cè)試,按用戶的需求確認(rèn)新系統(tǒng);獲得用戶對(duì)當(dāng)前版本的反饋,基于反饋調(diào)整產(chǎn)品,如進(jìn)行調(diào)試,性能和可用性的增強(qiáng)等;最終用戶支持文檔定稿;制作產(chǎn)品發(fā)布版本;培訓(xùn)用戶和維護(hù)人員。7/26/20231073.5.1
RUP生命周期移交階段的終點(diǎn)是第四個(gè)里程碑:產(chǎn)品發(fā)行(ProductRelease)里程碑。但是,軟件開發(fā)生命周期并沒有結(jié)束。此時(shí),要確定軟件目標(biāo)是否實(shí)現(xiàn),是否應(yīng)該開始另一個(gè)開發(fā)周期。這是一個(gè)連續(xù)的過程,系統(tǒng)將不斷地被改進(jìn),消除錯(cuò)誤,添加新的功能或特性,進(jìn)而增強(qiáng)系統(tǒng)的性能。在某些情況下,該里程碑可與下一周期的先啟階段的結(jié)束點(diǎn)相重合。7/26/20231083.5.1
RUP生命周期在每個(gè)階段結(jié)束時(shí)都要進(jìn)行一次技術(shù)評(píng)審,以確定完成該階段的最終迭代后是否應(yīng)該讓項(xiàng)目進(jìn)入下一個(gè)階段。技術(shù)評(píng)審主要考慮的問題應(yīng)該與項(xiàng)目管理有關(guān),因?yàn)橹饕夹g(shù)問題應(yīng)該已經(jīng)在該階段的最終迭代以及隨后的活動(dòng)中得到解決。技術(shù)評(píng)審主要包含以下步驟:7/26/20231093.5.1
RUP生命周期(1)安排評(píng)審會(huì)議日程技術(shù)評(píng)審會(huì)議的參與者必須包括外部人員(用戶代表和領(lǐng)域?qū)<遥?、?xiàng)目管理團(tuán)隊(duì)和項(xiàng)目評(píng)審委員會(huì)。(2)分發(fā)會(huì)議材料在會(huì)議召開之前,應(yīng)當(dāng)及早將技術(shù)評(píng)審材料分發(fā)給評(píng)審人員,讓他們有時(shí)間進(jìn)行審閱并做好準(zhǔn)備。(3)召開評(píng)審會(huì)議在會(huì)議期間,評(píng)審人員主要關(guān)注狀態(tài)評(píng)估。在會(huì)議結(jié)束時(shí),評(píng)審人員應(yīng)作出是否批準(zhǔn)的決定。技術(shù)評(píng)審會(huì)議的可能結(jié)果如下:階段被接受有條件接受階段不被接受(4)記錄會(huì)議決定在會(huì)議結(jié)束時(shí)應(yīng)該完成評(píng)審記錄。其中包括重要的討論或活動(dòng)以及評(píng)審的結(jié)果。7/26/20231103.5.2RUP統(tǒng)一開發(fā)過程的核心工作流程RUP生命周期開發(fā)模型的縱軸描述了軟件項(xiàng)目開發(fā)和組織管理中的核心工作流程,包括兩部分內(nèi)容:核心過程工作流程核心過程工作流程指的是在項(xiàng)目開發(fā)中的流程。包括業(yè)務(wù)建模、需求、分析與設(shè)計(jì)、實(shí)現(xiàn)、測(cè)試和部署等6個(gè)工作流程。核心支持工作流程核心支持工作流程指的是在組織管理中的流程。包括環(huán)境、項(xiàng)目管理、配置和變更管理等3個(gè)工作流程。7/26/20231113.5.2RUP統(tǒng)一開發(fā)過程的核心工作流程(1)項(xiàng)目管理(ProjectManagement)項(xiàng)目管理工作流程的目的是為軟件密集型項(xiàng)目的管理提供框架,為項(xiàng)目的計(jì)劃、人員配備、執(zhí)行和監(jiān)測(cè)提供實(shí)用指南;為管理風(fēng)險(xiǎn)提供框架。通過提供一些項(xiàng)目管理的環(huán)境,使這個(gè)任務(wù)更加容易完成。該工作流程側(cè)重于迭代式開發(fā)流程的風(fēng)險(xiǎn)管理,貫穿整個(gè)生命周期,并針對(duì)特定的迭代計(jì)劃,迭代地開發(fā)項(xiàng)目、監(jiān)測(cè)項(xiàng)目的進(jìn)度和各項(xiàng)指標(biāo)。項(xiàng)目管理工作流程所提供的主要工作產(chǎn)品有:業(yè)務(wù)案例、風(fēng)險(xiǎn)管理計(jì)劃、工作計(jì)劃書、風(fēng)險(xiǎn)列表、迭代評(píng)估、迭代計(jì)劃、問題解決計(jì)劃、測(cè)試計(jì)劃書、系統(tǒng)集成計(jì)劃書、子系統(tǒng)集成計(jì)劃書、工作單、產(chǎn)品驗(yàn)收計(jì)劃、評(píng)估計(jì)劃、項(xiàng)目復(fù)審意見書和開發(fā)總結(jié)。7/26/20231123.5.2RUP統(tǒng)一開發(fā)過程的核心工作流程(2)環(huán)境(Environment)環(huán)境工作流程的目的是向軟件開發(fā)團(tuán)隊(duì)提供軟件開發(fā)環(huán)境,包括過程和工具。環(huán)境工作流程集中于配置項(xiàng)目過程中所需要的活動(dòng),同樣也支持開發(fā)項(xiàng)目規(guī)范的活動(dòng),提供了逐步的指導(dǎo)手冊(cè)并介紹了如何在組織中實(shí)現(xiàn)過程。環(huán)境工作流程提供的主要工作產(chǎn)品有:開發(fā)流程、開發(fā)案例、特定項(xiàng)目指南、特定項(xiàng)目模板、軟件開發(fā)使用的硬軟件工具、開發(fā)組織評(píng)估、用戶手冊(cè)指南等。7/26/20231133.5.2RUP統(tǒng)一開發(fā)過程的核心工作流程(3)需求(Requirements)需求工作流程反映用戶的需求,其目的是描述系統(tǒng)應(yīng)該做什么,并使開發(fā)團(tuán)隊(duì)和用戶就這一描述達(dá)成共識(shí)。為了達(dá)到這一目標(biāo),需要對(duì)系統(tǒng)需求和約束進(jìn)行提取、組織、歸納和文檔化。最重要的是要理解系統(tǒng)所要解決問題的定義和范圍。需求工作流程所提供的主要工作產(chǎn)品有:用例模型、軟件需求規(guī)約、用戶界面原型、詞匯表、補(bǔ)充規(guī)范、愿景文檔等。7/26/20231143.5.2RUP統(tǒng)一開發(fā)過程的核心工作流程(4)業(yè)務(wù)建模(BusinessModeling)其目的在于了解目標(biāo)組織(將要在其中部署系統(tǒng)的組織)的結(jié)構(gòu)及業(yè)務(wù)運(yùn)作機(jī)制,以及目標(biāo)組織中當(dāng)前存在的問題并確定改進(jìn)的可能性。確保客戶、最終用戶、領(lǐng)域?qū)<液烷_發(fā)人員等所有項(xiàng)目參與人員對(duì)開發(fā)系統(tǒng)達(dá)成共識(shí),導(dǎo)出支持目標(biāo)組織所需的軟件系統(tǒng)需求,建立業(yè)務(wù)用例模型、領(lǐng)域模型。業(yè)務(wù)建模工作流程所提供的主要工作產(chǎn)品有:業(yè)務(wù)用例模型、領(lǐng)域模型、業(yè)務(wù)需求說明書、業(yè)務(wù)詞匯表、補(bǔ)充業(yè)務(wù)規(guī)范、風(fēng)險(xiǎn)說明書、復(fù)審說明書等。7/26/20231153.5.2RUP統(tǒng)一開發(fā)過程的核心工作流程(5)測(cè)試(Testing)測(cè)試工作流程要驗(yàn)證對(duì)象間的交互作用;驗(yàn)證軟件中所有組件的正確集成;檢驗(yàn)所有的需求已被正確地實(shí)現(xiàn);識(shí)別缺陷,并確認(rèn)在軟件部署之前被發(fā)現(xiàn)并處理。RUP提出了迭代的方法,意味著在整個(gè)項(xiàng)目中進(jìn)行測(cè)試,從而盡可能早地發(fā)現(xiàn)缺陷,從根本上降低修改缺陷的成本。測(cè)試是針對(duì)系統(tǒng)的可靠性、功能和性能進(jìn)行的。測(cè)試工作流程的主要工作產(chǎn)品有:測(cè)試評(píng)估摘要、測(cè)試結(jié)果、測(cè)試套件(一組相關(guān)測(cè)試)、測(cè)試構(gòu)想列表、測(cè)試策略、測(cè)試計(jì)劃、測(cè)試腳本和測(cè)試數(shù)據(jù)、測(cè)試用例等。7/26/20231163.5.2RUP統(tǒng)一開發(fā)過程的核心工作流程(6)分析與設(shè)計(jì)(AnalysisandDesign)分析與設(shè)計(jì)工作流程將用戶需求轉(zhuǎn)換為未來系統(tǒng)的設(shè)計(jì),逐步開發(fā)健壯的系統(tǒng)構(gòu)架,使設(shè)計(jì)與實(shí)現(xiàn)環(huán)境相匹配,優(yōu)化其性能。分析與設(shè)計(jì)的結(jié)果是一個(gè)可選的分析模型和一個(gè)設(shè)計(jì)模型。設(shè)計(jì)模型是源代碼的抽象,由設(shè)計(jì)類和一些描述組成。設(shè)計(jì)類被組織成具有良好接口的包(Package)和子系統(tǒng)(Subsystem)。描述則體現(xiàn)了對(duì)象之間如何協(xié)同工作,以實(shí)現(xiàn)用例所包含的功能。分析與設(shè)計(jì)工作流程所提供的主要工作產(chǎn)品有:系統(tǒng)分析模型(分析類)、用戶界面原型、用例實(shí)現(xiàn)、設(shè)計(jì)類和設(shè)計(jì)包、軟件體系結(jié)構(gòu)文檔、系統(tǒng)總體設(shè)計(jì)報(bào)告、系統(tǒng)設(shè)計(jì)模型、部署模型、數(shù)據(jù)模型、系統(tǒng)詳細(xì)設(shè)計(jì)報(bào)告等。7/26/20231173.5.2RUP統(tǒng)一開發(fā)過程的核心工作流程(7)配置與變更管理(Configuration&ChangeManagement)配置和變更管理工作流程描述了如何在多個(gè)成員組成的項(xiàng)目團(tuán)隊(duì)中控制大量的工作產(chǎn)品。該工作流程提供了有效的準(zhǔn)則來管理演化軟件系統(tǒng)中的多個(gè)變體,跟蹤軟件創(chuàng)建過程中的版本,描述了如何管理并行開發(fā)、分布式開發(fā),如何自動(dòng)化創(chuàng)建工程。同時(shí)也闡述了對(duì)產(chǎn)品修改的原因、時(shí)間和人員,保持審計(jì)記錄。配置和變更管理工作流程所提供的主要工作產(chǎn)品有:變更請(qǐng)求、配置審計(jì)結(jié)果、配置管理計(jì)劃、項(xiàng)目存儲(chǔ)庫和工作空間等。7/26/20231183.5.2RUP統(tǒng)一開發(fā)過程的核心工作流程(8)實(shí)現(xiàn)(Implementation)實(shí)現(xiàn)工作流程的目的是實(shí)現(xiàn)子系統(tǒng)的分層結(jié)構(gòu),定義代碼結(jié)構(gòu),以構(gòu)件的方式實(shí)現(xiàn)類和對(duì)象,對(duì)已開發(fā)的構(gòu)件按單元來測(cè)試,并且將各實(shí)現(xiàn)團(tuán)隊(duì)完成的結(jié)果集成到可執(zhí)行系統(tǒng)中。實(shí)現(xiàn)工作流程所提供的工作產(chǎn)品有:實(shí)現(xiàn)總結(jié)書、實(shí)現(xiàn)模型、系統(tǒng)集成書、代碼審核意見書、源代碼、用戶使用手冊(cè)、錯(cuò)誤解決記錄手冊(cè)、構(gòu)件及其說明等。7/26/20231193.5.2RUP統(tǒng)一開發(fā)過程的核心工作流程(9)部署(Deployment)部署工作流程用來描述那些為確保最終用戶可以正常使用軟件產(chǎn)品而進(jìn)行的活動(dòng)。這些活動(dòng)包括軟件打包、生成軟件本身以外的產(chǎn)品、安裝軟件、為用戶提供幫助等。部署工作流程所提供的工作產(chǎn)品有:部署計(jì)劃、產(chǎn)品(部署單元)、用戶支持材料、培訓(xùn)材料、安裝文檔和發(fā)布說明。7/26/20231203.5.2RUP統(tǒng)一開發(fā)過程的核心工作流程RUP統(tǒng)一開發(fā)過程是一個(gè)迭代的增量式的開發(fā)過程,在RUP生命周期的每一個(gè)階段都包含了這九個(gè)核心工作流,只是側(cè)重的內(nèi)容有所不同。在每個(gè)階段所對(duì)應(yīng)的核心工作流都有工作流明細(xì)、活動(dòng)、以及輸出工件等。7/26/2023121對(duì)于大型而復(fù)雜的軟件項(xiàng)目而言,比較適合于使用RUP統(tǒng)一開發(fā)過程,同時(shí)應(yīng)用面向?qū)ο蟮能浖_發(fā)技術(shù),可以大大提高軟件項(xiàng)目的成功率。7/26/20231223.6敏捷軟件開發(fā)技術(shù)敏捷軟件開發(fā)(AgileSoftwareDevelopment),又稱敏捷開發(fā),是一種從1990年代開始逐漸引起廣泛關(guān)注的新型軟件開發(fā)方法,是一種應(yīng)對(duì)快速變化的用戶需求的一種軟件開發(fā)技術(shù)。它們的具體名稱、理念、過程、術(shù)語都不盡相同,相對(duì)于“非敏捷”方法,更強(qiáng)調(diào)開發(fā)團(tuán)隊(duì)與領(lǐng)域?qū)<摇⒆罱K用戶之間的緊密協(xié)作,面對(duì)面的溝通,頻繁交付新的軟件版本,緊湊而自我組織型的團(tuán)隊(duì)。能夠很好地適應(yīng)需求變化的軟件設(shè)計(jì)與代碼編寫、團(tuán)隊(duì)組織。更注重軟件開發(fā)主體中“人”的作用。7/26/20231233.6.1敏捷開發(fā)技術(shù)基本概念概念3-8:敏捷聯(lián)盟由于注意到許多軟件企業(yè)的開發(fā)團(tuán)隊(duì)陷入了不斷增長(zhǎng)的過程泥潭,一批業(yè)界專家于2001年初聚集在美國(guó)猶他州雪鳥滑雪勝地,共同概括出了一些可以讓軟件開發(fā)團(tuán)隊(duì)具有快速工作、迅速響應(yīng)變化的價(jià)值觀(Value)和原則(Principle)。這批業(yè)界專家自稱為敏捷聯(lián)盟(AgileAlliance)。7/26/2023124敏捷軟件開發(fā)宣言個(gè)體和交互勝過過程和工具可以工作的軟件勝過面面俱到的文檔客戶合作勝過合同談判響應(yīng)變化勝過遵循計(jì)劃雖然右項(xiàng)也有價(jià)值,但是我們認(rèn)為左項(xiàng)具有更大的價(jià)值。KentBeckJamesGrenningRobertC.MartinMikeBeedleJimHighsmithSteveMellorArievanBennekumAndrewHuntKenSchwaberAlistairCockburnRonJeffriesJeffSutherlandWardCunninghamJonKernDaveThomasMartinFowlerBrianMarick
敏捷軟件開發(fā)宣言簽名7/26/2023125敏捷軟件開發(fā)宣言(1)個(gè)體和交互勝過過程和工具人是獲得成功的最為重要的因素。合作、溝通以及交互能力要比單純的編程能力更為重要。一個(gè)由一般水平程序員組成的團(tuán)隊(duì),如果具有良好的溝通能力,將比那些雖然擁有一批高水平程序員,但是成員之間卻不能進(jìn)行很好交流的團(tuán)隊(duì)更有可能獲得成功。團(tuán)隊(duì)的構(gòu)建要比環(huán)境的構(gòu)建重要得多。選擇合適的工具而不是大而全的工具。使用過多的龐大、笨重的工具就像缺少工具一樣,都是不好的,嘗試使用一個(gè)工具,直到發(fā)現(xiàn)他無法適用時(shí)才去更換他。7/26/2023126敏捷軟件開發(fā)宣言(2)可以工作的軟件勝過面面俱到的文檔沒有文檔的軟件是一種災(zāi)難,過多的文檔比過少的文檔更加糟糕。對(duì)于一個(gè)團(tuán)隊(duì)來說,能編寫并維護(hù)一份系統(tǒng)原理和結(jié)構(gòu)方面的文檔是非常好的,文檔應(yīng)該短小并且能突出主題,文檔必須為程序服務(wù),不要為寫文檔而寫文檔。在給新的團(tuán)隊(duì)成員傳授知識(shí)的時(shí)候,最好的兩份文檔是代碼和團(tuán)隊(duì)。代碼最能真實(shí)地表達(dá)它所做的事情。人和人之間的交互是將內(nèi)容傳遞給他人的最快、最有效的方式。7/26/2023127敏捷軟件開發(fā)宣言(3)客戶合作勝過合同談判成功的項(xiàng)目需要有序、頻繁的客戶反饋。不是依賴于合同或者關(guān)于工作的陳述,而是讓軟件的客戶和開發(fā)團(tuán)隊(duì)密切的工作在一起,并盡量地提供反饋。一個(gè)指明了需求、進(jìn)度和項(xiàng)目成本的合同存在根本上的缺陷。在大多數(shù)情況下,合同中指明的條款在項(xiàng)目完成之前就已經(jīng)變得毫無意義。而那些為開發(fā)團(tuán)隊(duì)和客戶的協(xié)作提供指導(dǎo)的合同才是最有效的合同。7/26/2023128敏捷軟件開發(fā)宣言(4)響應(yīng)變化勝過遵循計(jì)劃響應(yīng)變化的能力常常決定著一個(gè)軟件項(xiàng)目的成敗。當(dāng)我們構(gòu)建計(jì)劃時(shí),應(yīng)該確保計(jì)劃是靈活的并且易于適應(yīng)商務(wù)和技術(shù)方面的變化。計(jì)劃一定要做,但是不能做過于長(zhǎng)遠(yuǎn)的詳細(xì)計(jì)劃。對(duì)短期任務(wù)作詳細(xì)計(jì)劃,而對(duì)長(zhǎng)期任務(wù)只能作粗略計(jì)劃。7/26/20231293.6.1敏捷開發(fā)技術(shù)基本概念概念3-9:原則從宣言的價(jià)值觀中引出了下面的十二條原則,它們是敏捷實(shí)踐與重型過程相區(qū)別的特征所在。7/26/20231303.6.1敏捷開發(fā)技術(shù)基本概念(1)盡早地、不斷地交付有價(jià)值的軟件來滿足客戶需要。努力在項(xiàng)目剛開始的幾周內(nèi)就交付一個(gè)具有基本功能的系統(tǒng),然后努力堅(jiān)持每?jī)芍芫徒桓兑粋€(gè)功能漸增的系統(tǒng)。7/26/20231313.6.1敏捷開發(fā)技術(shù)基本概念(2)團(tuán)隊(duì)努力保持軟件結(jié)構(gòu)的靈活性,敏捷過程能夠駕馭變化,保持客戶的競(jìng)爭(zhēng)優(yōu)勢(shì)。只有保持了軟件結(jié)構(gòu)的靈活性,當(dāng)需求變化時(shí),才不至于對(duì)系統(tǒng)造成太大的影響。因此,要學(xué)習(xí)面向?qū)ο笤O(shè)計(jì)的原則和模式,這會(huì)幫助我們實(shí)現(xiàn)這種靈活性。7/26/20231323.6.1敏捷開發(fā)技術(shù)基本概念(3)要經(jīng)常交付可以工作的軟件,周期越短越好,從幾星期到幾個(gè)月。交付的必須是可以工作的軟件,并且盡早地(項(xiàng)目剛開始很少的幾周后)、經(jīng)常性地(每隔很少的幾周)交付它。不贊成交付大量文檔或者計(jì)劃。7/26/20231333.6.1敏捷開發(fā)技術(shù)基本概念(4)業(yè)務(wù)人員和開發(fā)人員必須在整個(gè)項(xiàng)目過程中頻繁交互,并一起工作。為了能夠以敏捷的方式進(jìn)行項(xiàng)目的開發(fā),業(yè)務(wù)人員、開發(fā)人員以及涉眾之間必須進(jìn)行有意義、頻繁的交互。在整個(gè)軟件項(xiàng)目開發(fā)過程中,必須要對(duì)軟件項(xiàng)目進(jìn)行持續(xù)不斷的引導(dǎo)。7/26/20231343.6.1敏捷開發(fā)技術(shù)基本概念(5)圍繞被激勵(lì)起來的個(gè)人來構(gòu)建項(xiàng)目。給開發(fā)者提供適宜的環(huán)境和支持,滿足他們的需要,并信任他們能夠完成任務(wù)。敏捷開發(fā)中,人被認(rèn)為是項(xiàng)目取得成功的最重要因素。所有其他的因素,如過程、環(huán)境、管理等都被認(rèn)為是次要的,并且當(dāng)它們對(duì)于人有負(fù)面影響時(shí),就必須改變它們。7/26/20231353.6.1敏捷開發(fā)技術(shù)基本概念(6)在開發(fā)團(tuán)隊(duì)內(nèi)部,最有效率也最有效果的信息傳達(dá)方式是面對(duì)面的交談。敏捷開發(fā)中,人們首要的溝通方式就是交談。當(dāng)然也許會(huì)編寫文檔,但不會(huì)企圖在文檔中包含所有的項(xiàng)目信息。敏捷團(tuán)隊(duì)不需要書面的規(guī)范、計(jì)劃或者設(shè)計(jì)等。7/26/2023136(7)可以工作的軟件是進(jìn)度的主要度量標(biāo)準(zhǔn)。敏捷項(xiàng)目通過度量當(dāng)前軟件滿足客戶需求的數(shù)量來度量開發(fā)進(jìn)度,而不是根據(jù)所處的開發(fā)階段、已經(jīng)編寫的文檔數(shù)量、代碼數(shù)量來度量開發(fā)進(jìn)度。7/26/2023137(8)敏捷過程提倡可持續(xù)的開發(fā)速度。責(zé)任人、開發(fā)人員和用戶應(yīng)該總是維持不變的節(jié)奏。跑得過快會(huì)導(dǎo)致團(tuán)隊(duì)精力耗盡、出現(xiàn)短期行為以致于崩潰。敏捷團(tuán)隊(duì)會(huì)測(cè)量自己的速度,他們不允許自己過于疲憊。他們工作在一個(gè)可以使在整個(gè)項(xiàng)目開發(fā)期間保持最高質(zhì)量標(biāo)準(zhǔn)的速度上。7/26/20231383.6.1敏捷開發(fā)技術(shù)基本概念(9)不斷追求卓越技術(shù)與良好設(shè)計(jì)將有助于提高敏捷性。高的開發(fā)質(zhì)量是獲得高的開發(fā)速度的關(guān)鍵。保持軟件盡可能的簡(jiǎn)潔、健壯是快速開發(fā)軟件的途徑。編寫高質(zhì)量的代碼。如果今天制造了混亂,不要拖到明天去清理,要對(duì)代碼進(jìn)行重構(gòu)。7/26/20231393.6.1敏捷開發(fā)技術(shù)基本概念(10)簡(jiǎn)單。敏捷團(tuán)隊(duì)不會(huì)試圖去構(gòu)建那些華而不實(shí)的系統(tǒng),他們總是更愿意采用和目標(biāo)一致的最簡(jiǎn)單的方法。不會(huì)預(yù)測(cè)明天的問題。高質(zhì)量完成今天的工作,深信如果明天發(fā)生了問題,也會(huì)很容易處理。7/26/20231403.6.1敏捷開發(fā)技術(shù)基本概念(11)最好的架構(gòu)、需求和設(shè)計(jì)都源自于自組織的團(tuán)隊(duì)。敏捷團(tuán)隊(duì)是自組織的團(tuán)隊(duì)。任務(wù)不是從外部分配給單個(gè)團(tuán)隊(duì)成員,而是分配給整個(gè)團(tuán)隊(duì),然后再由團(tuán)隊(duì)來確定完成任務(wù)的最好方法。團(tuán)隊(duì)成員共同解決項(xiàng)目中所有方面的問題,每一個(gè)成員都具有項(xiàng)目中所有方面的參與權(quán)。不存在單個(gè)成員對(duì)系統(tǒng)架構(gòu)、需求、設(shè)計(jì)或測(cè)試負(fù)責(zé)的情況,整個(gè)團(tuán)隊(duì)共同承擔(dān)責(zé)任。7/26/20231413.6.1敏捷開發(fā)技術(shù)基本概念(12)每隔一段時(shí)間,團(tuán)隊(duì)會(huì)總結(jié)如何才能更有效率,然后相應(yīng)地調(diào)整自己的行為。敏捷團(tuán)隊(duì)會(huì)不斷地對(duì)團(tuán)隊(duì)的組織方式、規(guī)則、規(guī)范等進(jìn)行調(diào)整。為了保持團(tuán)隊(duì)的敏捷性,敏捷團(tuán)隊(duì)會(huì)隨其所處的環(huán)境的不斷變化而變化。7/26/20231423.6.1敏捷開發(fā)技術(shù)基本概念概念3-10:敏捷開發(fā)與其他方法的比較敏捷方法有時(shí)候被誤認(rèn)為是無計(jì)劃性和紀(jì)律性的方法,實(shí)際上敏捷方法更強(qiáng)調(diào)適應(yīng)性而非預(yù)見性。適應(yīng)性的方法集中在快速適應(yīng)現(xiàn)實(shí)的變化。當(dāng)項(xiàng)目的需求發(fā)生變化,團(tuán)隊(duì)?wèi)?yīng)該迅速響應(yīng),但這個(gè)團(tuán)隊(duì)可能很難確切描述未來將會(huì)如何變化。7/26/20231433.6.1敏捷開發(fā)技術(shù)基本概念(1)與迭代、增量式方法的比較相比迭代、增量式開發(fā),兩者都強(qiáng)調(diào)在較短的開發(fā)周期提交可工作的軟件,但敏捷方法的周期可能更短,并且更加強(qiáng)調(diào)人的作用,強(qiáng)調(diào)開發(fā)團(tuán)隊(duì)的高度協(xié)作7/26/20231443.6.1敏捷開發(fā)技術(shù)基本概念(2)與瀑布式開發(fā)的比較兩者沒有太多的共同點(diǎn),瀑布模型是最典型的預(yù)見性的方法,嚴(yán)格遵循預(yù)先的計(jì)劃,按需求、分析、設(shè)計(jì)、編碼、測(cè)試的步驟順序進(jìn)行。階段成果作為衡量進(jìn)度的唯一方法,例如需求規(guī)格說明書、設(shè)計(jì)文檔、測(cè)試計(jì)劃和代碼審閱等。強(qiáng)調(diào)的是文檔,前一階段的輸出就是下一階段的輸入,文檔是階段銜接的唯一信息。瀑布式開發(fā)的主要問題是它的嚴(yán)格分級(jí)導(dǎo)致的自由度降低,沒有迭代與反饋。項(xiàng)目早期即作出承諾導(dǎo)致對(duì)后期需求的變化難以調(diào)整,代價(jià)高昂。瀑布式方法在需求不明并且在項(xiàng)目進(jìn)行過程中可能變化的情況下基本是不可行的。相對(duì)來講,敏捷方法則在幾周或者幾個(gè)月的時(shí)間內(nèi)完成相對(duì)較小的功能,強(qiáng)調(diào)的是能盡早將盡量小的可用功能交付使用,并在整個(gè)項(xiàng)目周期中持續(xù)改善和增強(qiáng)。7/26/20231453.6.1敏捷開發(fā)技術(shù)基本概念敏捷方法強(qiáng)調(diào)溝通,當(dāng)項(xiàng)目規(guī)模較大、參與人員較多時(shí),團(tuán)隊(duì)成員面對(duì)面的溝通就變得非常困難,因此,敏捷方法適用于輕量級(jí)開發(fā),更適合20人以下團(tuán)隊(duì)工作;另一方面,敏捷方法對(duì)開發(fā)人員要求更高,它認(rèn)為“代碼即是設(shè)計(jì),代碼即是文檔”,因此要求程序員必須具備相當(dāng)強(qiáng)的設(shè)計(jì)能力與經(jīng)驗(yàn)。在小規(guī)模組織中應(yīng)用敏捷方法,效果相當(dāng)顯著。7/26/20231463.6.2極限編程極限編程(ExtremeProgramming,簡(jiǎn)稱XP)被列入敏捷開發(fā)方法。7/26/20231473.6.2極限編程概念3-11:極限編程的起源極限編程是由KentBeck、WardCunningham和RonJeffries在1996年提出的。KentBeck一直倡導(dǎo)軟件開發(fā)的模式定義。早在1993年,他就和GradyBooch(UML之父)發(fā)起了一個(gè)團(tuán)隊(duì)進(jìn)行這方面的研究,希望能使軟件開發(fā)更加簡(jiǎn)單而有效。Kent仔細(xì)觀察和分析了各種簡(jiǎn)化軟件開發(fā)的前提條件、可行性以及面臨的困難。1996年三月,Kent終于在為DaimlerChrysler所做的一個(gè)項(xiàng)目中引入了新的軟件開發(fā)觀念——XP。7/26/20231483.6.2極限編程概念3-12:什么是極限編程?極限編程是一種開發(fā)管理模式,是一種軟件工程方法學(xué),是敏捷軟件開發(fā)中最富有成效的幾種方法學(xué)之一。7/26/20231493.6.2極限編程極限編程強(qiáng)調(diào)的重點(diǎn)是:(1
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 石河子大學(xué)《食品工程原理二》2021-2022學(xué)年第一學(xué)期期末試卷
- 石河子大學(xué)《現(xiàn)代人工智能技術(shù)》2023-2024學(xué)年期末試卷
- 石河子大學(xué)《家畜繁殖學(xué)》2022-2023學(xué)年第一學(xué)期期末試卷
- 沈陽理工大學(xué)《自動(dòng)控制理論》2021-2022學(xué)年期末試卷
- 沈陽理工大學(xué)《建筑模型制作與工藝》2021-2022學(xué)年第一學(xué)期期末試卷
- 沈陽理工大學(xué)《電工與電子技術(shù)實(shí)驗(yàn)》2023-2024學(xué)年期末試卷
- 光伏代理商合同范本
- 沈陽理工大學(xué)《環(huán)境設(shè)計(jì)》2021-2022學(xué)年第一學(xué)期期末試卷
- 海事法院 合同解除 典型案例
- 合同到期的續(xù)簽申請(qǐng)書
- MT-T 1201.1-2023 煤礦感知數(shù)據(jù)聯(lián)網(wǎng)接入規(guī)范 第1部分:安全監(jiān)控
- 胎盤早剝應(yīng)急預(yù)案演練腳本
- 四川省綿陽市某中學(xué)自主招生物理試卷(含答案)
- 2023年湖南省中小學(xué)教師系列專業(yè)技術(shù)職稱職務(wù)評(píng)審表
- 我要的是葫蘆教學(xué)設(shè)計(jì)萬冬霞(五篇)
- 常見地質(zhì)災(zāi)害及其自救方法演示文稿
- 臨戰(zhàn)轉(zhuǎn)換措施
- 氧化還原反應(yīng)電化學(xué)基礎(chǔ)
- GB/T 5269-1999傳動(dòng)及輸送用雙節(jié)距精密滾子鏈和鏈輪
- GB/T 30790.8-2014色漆和清漆防護(hù)涂料體系對(duì)鋼結(jié)構(gòu)的防腐蝕保護(hù)第8部分:新建和維護(hù)技術(shù)規(guī)格書的制定
- GB/T 25217.4-2019沖擊地壓測(cè)定、監(jiān)測(cè)與防治方法第4部分:微震監(jiān)測(cè)方法
評(píng)論
0/150
提交評(píng)論