版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第3章軟件系統(tǒng)開發(fā)方法在軟件開發(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)、測試驗(yàn)證。然而,在軟件開發(fā)實(shí)踐中完全遵循這種過程取得成功的案例并不多。其原因主要在于這種方法有一個(gè)前提條件,那就是系統(tǒng)需求必須明確、不變。但在現(xiàn)實(shí)應(yīng)用中,這幾乎是不可能的。需求通常模糊不清,并且在系統(tǒng)開發(fā)期間隨時(shí)都有可能發(fā)生變化。因此軟件開發(fā)要求采用的方法過程也必須能適應(yīng)這種變化,這就出現(xiàn)了其它一些軟件開發(fā)方法,如原型法、敏捷方法等。4/12/20241第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ù)總結(jié)4/12/202423.1軟件開發(fā)生命周期1.問題引入正如任何事物一樣,軟件也有其孕育、誕生、成長、成熟以及衰亡的生命過程,一般稱其為“軟件生命周期”。根據(jù)這一思想,可以得到軟件生命周期的六個(gè)階段,即制定計(jì)劃、需求分析和定義、設(shè)計(jì)、編碼、測試、運(yùn)行及維護(hù)。然而,在正式開發(fā)軟件之前,我們必需了解軟件生命周期各個(gè)階段需要完成哪些任務(wù)?這些任務(wù)由哪些人員來完成?4/12/202433.1軟件開發(fā)生命周期2.解答問題(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ì)、社會可行性,探討解決問題的各種可能方案,并對現(xiàn)有可利用資源、成本、可取得的效益、開發(fā)進(jìn)度等做出估計(jì),制定出完成該項(xiàng)開發(fā)任務(wù)的實(shí)施計(jì)劃,并編寫可行性研究報(bào)告。4/12/202443.1軟件開發(fā)生命周期(2)需求分析和定義(RequirementAnalysisandDefinition)團(tuán)隊(duì)人員:分析人員、測試人員、領(lǐng)域?qū)<壹坝脩舻?。該階段對于待開發(fā)軟件項(xiàng)目獲取的用戶需求進(jìn)行分析,并給出詳細(xì)定義。這個(gè)階段團(tuán)隊(duì)人員必須協(xié)同工作,讓軟件開發(fā)人員充分理解用戶的各項(xiàng)需求,并確定哪些需求是可以滿足的,哪些需求在現(xiàn)有技術(shù)下是不能滿足的,對能滿足的需求加以確切的描述。然后,編寫出軟件需求規(guī)格說明書(SRS)或系統(tǒng)功能說明書,以及初步的系統(tǒng)用戶手冊、測試用例等。為了團(tuán)隊(duì)人員之間能很好地溝通,從這個(gè)階段開始通常會采用一些標(biāo)準(zhǔn)的建模語言(如:統(tǒng)一建模語言,UnifiedModelingLanguage,簡稱UML)對系統(tǒng)建模。4/12/202453.1軟件開發(fā)生命周期(3)軟件設(shè)計(jì)(SoftwareDesign)團(tuán)隊(duì)人員:架構(gòu)設(shè)計(jì)人員、軟件設(shè)計(jì)人員、數(shù)據(jù)庫設(shè)計(jì)員、用戶界面設(shè)計(jì)員、封裝體設(shè)計(jì)員和集成人員、測試人員等。這個(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è)部分都和某些需求相對應(yīng),進(jìn)行所謂的概要設(shè)計(jì)。然后對每個(gè)模塊或用例要完成的工作采用合適的技術(shù)進(jìn)行具體的描述,如畫出模塊的程序流程圖或描述類的屬性、操作等,為源程序的編寫工作打下基礎(chǔ),即所謂的詳細(xì)設(shè)計(jì)。4/12/202463.1軟件開發(fā)生命周期(4)編碼(Coding)團(tuán)隊(duì)人員:編程人員、測試人員等。將詳細(xì)設(shè)計(jì)階段所描述的模塊程序流程圖或類的設(shè)計(jì)轉(zhuǎn)換為計(jì)算機(jī)能處理的程序代碼,即使用特定的程序設(shè)計(jì)語言表示的源程序。目前,通常使用高級程序設(shè)計(jì)語言編寫程序,如C語言、Java語言等。4/12/202473.1軟件開發(fā)生命周期(5)軟件測試(SoftwareTesting)團(tuán)隊(duì)人員:測試人員、開發(fā)人員、用戶等。測試是保證軟件質(zhì)量的重要手段,其主要目的是通過軟件測試暴露出軟件中隱藏的錯誤和缺陷。軟件測試的主要方式是在設(shè)計(jì)測試用例的基礎(chǔ)上檢驗(yàn)軟件的各個(gè)組成部分。軟件測試一般包括單元測試、集成測試、系統(tǒng)測試、驗(yàn)收測試等幾個(gè)階段。首先進(jìn)行單元測試,查找各模塊或類在功能和結(jié)構(gòu)上存在的問題并加以修改,這個(gè)過程會反復(fù)進(jìn)行;其次進(jìn)行集成測試,驗(yàn)證各軟件單元集成后形成的模塊能否達(dá)到概要設(shè)計(jì)規(guī)格說明中各模塊的設(shè)計(jì)目標(biāo);然后進(jìn)行系統(tǒng)測試,目的是對最終軟件系統(tǒng)進(jìn)行全面的測試,確保最終軟件系統(tǒng)滿足產(chǎn)品需求并且遵循系統(tǒng)設(shè)計(jì);最后進(jìn)行確認(rèn)測試,以檢查已實(shí)現(xiàn)的軟件是否滿足了需求規(guī)格說明書中確定的各種需求,包括功能需求和性能需求,決定已開發(fā)的軟件能否交付用戶使用。4/12/202483.1軟件開發(fā)生命周期(6)運(yùn)行/維護(hù)(Running/Maintenance)團(tuán)隊(duì)人員:系統(tǒng)支持人員等。已交付的軟件投入正式使用,軟件便進(jìn)入運(yùn)行階段。軟件在運(yùn)行過程中可能會因?yàn)榘l(fā)現(xiàn)了軟件中存在的錯誤需要修改;或?yàn)榱诉m應(yīng)變化了的軟件工作環(huán)境,需做一些變更;或?yàn)榱嗽鰪?qiáng)軟件的功能需做變更等。這就稱為軟件維護(hù)。4/12/202493.2軟件開發(fā)模型一個(gè)軟件的生命周期包含了若干個(gè)活動,那么,這些活動應(yīng)該如何組織呢?不同的組織方式可能會產(chǎn)生很大差別的結(jié)果。與其它工程項(xiàng)目中安排各道工序類似,為了反應(yīng)軟件開發(fā)生命周期內(nèi)的各種活動應(yīng)如何組織,各活動之間應(yīng)如何銜接,需要用軟件開發(fā)模型做出直觀的圖示來表達(dá)。4/12/2024103.2軟件開發(fā)模型軟件開發(fā)模型是從軟件項(xiàng)目需求定義到軟件經(jīng)使用后被廢棄為止,跨越整個(gè)軟件生命周期的系統(tǒng)開發(fā)、運(yùn)作和維護(hù)的全部過程、活動和任務(wù)的結(jié)構(gòu)框架,它給出了軟件開發(fā)活動各個(gè)階段之間的關(guān)系。每種軟件生命周期模型代表一種軟件開發(fā)與管理的組織過程。4/12/2024113.2軟件開發(fā)模型迄今為止,出現(xiàn)了多種軟件開發(fā)模型。如:瀑布模型螺旋模型演化模型噴泉模型智能模型增量模型原型化模型4/12/2024123.2軟件開發(fā)模型3.2.1瀑布模型3.2.2演化模型3.2.3螺旋模型3.2.4增量模型4/12/2024133.2.1瀑布模型1.問題引入為了解決邊寫邊改方法給軟件開發(fā)帶來的困擾,業(yè)界人士借鑒其它工程方法率先提出了“瀑布式”開發(fā)過程,給出了瀑布模型的定義。那么,什么是瀑布模型?4/12/2024143.2.1瀑布模型2.解答問題瀑布模型將軟件生命周期劃分為制定開發(fā)計(jì)劃、需求分析和定義、軟件設(shè)計(jì)、程序編寫、軟件測試和運(yùn)行維護(hù)等六個(gè)基本活動,并且規(guī)定了它們自上而下、相互銜接的固定次序,如同瀑布流水,逐級下落。采用瀑布模型的軟件過程如下頁圖所示。4/12/2024153.2.1瀑布模型4/12/2024163.2.1瀑布模型3.分析問題瀑布模型每項(xiàng)開發(fā)活動均應(yīng)具有下述特征:(1)從上一項(xiàng)活動接收本項(xiàng)活動的工作對象,作為本項(xiàng)活動的輸入;(2)利用這一輸入實(shí)施本項(xiàng)活動應(yīng)完成的任務(wù);(3)給出本項(xiàng)活動的工作成果,作為輸出傳遞給下一項(xiàng)活動;(4)對本項(xiàng)活動實(shí)施的工作進(jìn)行評審。若得到確認(rèn),則繼續(xù)下一項(xiàng)活動;否則,返回到前項(xiàng)活動,或更前一項(xiàng)活動進(jìn)行返工。4/12/2024173.2.1瀑布模型瀑布模型中軟件維護(hù)的特點(diǎn):(1)維護(hù)的具體要求是在軟件投入使用以后提出來的,經(jīng)過評價(jià),確定需求變更的必要性,才進(jìn)行維護(hù)工作。(2)維護(hù)中對軟件的變更仍然要經(jīng)歷軟件生命周期在開發(fā)中已經(jīng)歷過的各項(xiàng)活動。4/12/2024183.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)品測試和階段評審。(4)強(qiáng)調(diào)文檔的重要性。4/12/2024193.2.1瀑布模型瀑布模型的缺點(diǎn):(1)在項(xiàng)目各個(gè)階段之間極少有反饋,往往會將早期的錯誤引入到后期各個(gè)階段。(2)依賴于早期進(jìn)行的唯一一次需求調(diào)查,用戶參與較少,不能適應(yīng)需求的變化。(3)只有在項(xiàng)目生命周期的后期才能看到結(jié)果,可能與用戶的需求出現(xiàn)很大的偏差,使風(fēng)險(xiǎn)推遲到項(xiàng)目開發(fā)的后期階段才顯露出來,因而失去及早糾正的機(jī)會。(4)通過過多的強(qiáng)制完成日期和里程碑來跟蹤各個(gè)項(xiàng)目階段,靈活性較差。4/12/2024203.2.1瀑布模型瀑布模型的應(yīng)用場合瀑布模型一般適用于功能、性能明確、完整、無重大變化的軟件系統(tǒng)的開發(fā)。如操作系統(tǒng)、編譯系統(tǒng)等系統(tǒng)軟件的開發(fā)。當(dāng)用戶需求不明確或經(jīng)常變更時(shí),不宜采用瀑布模型,可以考慮其它的架構(gòu)來進(jìn)行項(xiàng)目管理,如:演化模型等。4/12/2024213.2.2演化模型1.問題引入前面談到瀑布模型不宜用在用戶需求不明確或經(jīng)常變更需求的項(xiàng)目中。為了適應(yīng)用戶需求的變化,建議采用演化模型。那么,什么是演化模型?4/12/2024223.2.2演化模型2.解答問題演化模型主要針對事先不能完整定義需求的軟件開發(fā)。用戶可以給出待開發(fā)系統(tǒng)的核心需求,并且當(dāng)看到核心需求實(shí)現(xiàn)后,能夠有效地提出反饋,以支持系統(tǒng)的最終設(shè)計(jì)和實(shí)現(xiàn)。4/12/2024233.2.2演化模型該模型可以表示為:第一次迭代(需求→設(shè)計(jì)→編碼→測試→集成)→反饋→第二次迭代(需求→設(shè)計(jì)→編碼→測試→集成)→反饋→......如下頁圖所示。4/12/2024243.2.2演化模型4/12/2024253.2.2演化模型演化模型的主要優(yōu)點(diǎn):(1)用戶能在開發(fā)過程中而不是開發(fā)接近尾聲時(shí)看到自己所需要的軟件產(chǎn)品。對發(fā)現(xiàn)的問題能夠提早解決。(2)在一定程度上減少了軟件開發(fā)活動的盲目性。如果在某次迭代中,其需求沒有滿足用戶的要求,軟件開發(fā)人員可根據(jù)用戶的反饋信息在下一次迭代中予以修正。(3)將系統(tǒng)中難度較大、風(fēng)險(xiǎn)較高的部分安排在早期的迭代中,可增加項(xiàng)目的成功率。4/12/2024263.2.2演化模型演化模型的缺點(diǎn)(1)由于項(xiàng)目需求在開發(fā)初期不可能完全弄清楚,這樣會給系統(tǒng)總體設(shè)計(jì)帶來很大的困難,并影響系統(tǒng)設(shè)計(jì)的完整性。(2)如果在開發(fā)過程中缺乏嚴(yán)格的過程管理,演化模型很可能退化為邊寫邊改模式。(3)如果沒有一定的約束條件,可能永遠(yuǎn)無法得到一個(gè)最終的軟件產(chǎn)品。4/12/2024273.2.2演化模型演化模型的適應(yīng)場合演化模型特別適用于用戶需求不夠明確的軟件開發(fā)項(xiàng)目,但不適宜用于大而復(fù)雜的系統(tǒng)。4/12/2024283.2.3螺旋模型1.問題引入對于復(fù)雜的大型軟件系統(tǒng),開發(fā)一個(gè)原型往往很難達(dá)到要求,顯然用單一的演化模型很難開發(fā)出這樣的軟件系統(tǒng)。那么,究竟要使用什么樣的模型才適合用來開發(fā)大型而復(fù)雜的軟件系統(tǒng)呢?答案就是螺旋模型。然而,什么是螺旋模型?4/12/2024293.2.3螺旋模型2.解答問題螺旋模型沿著螺線旋轉(zhuǎn),在笛卡爾坐標(biāo)的四個(gè)象限上分別表達(dá)了每個(gè)迭代周期的四個(gè)階段,從左象限按順時(shí)針方向依次為:4/12/2024303.2.3螺旋模型(1)制定計(jì)劃確定該階段的軟件目標(biāo),選定為完成這些目標(biāo)的實(shí)施方案,設(shè)定這些方案的約束條件。(2)風(fēng)險(xiǎn)分析分析所選方案,識別并努力消除各種潛在的風(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)用戶評估由用戶評價(jià)開發(fā)工作,提出修改建議。4/12/2024313.2.3螺旋模型3.分析問題螺旋模型將瀑布模型和演化模型結(jié)合起來,吸取了兩者的優(yōu)點(diǎn),并加入了兩種模型都忽略了的風(fēng)險(xiǎn)分析,彌補(bǔ)了兩種模型的不足。4/12/2024323.2.3螺旋模型軟件風(fēng)險(xiǎn)分析軟件風(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í)對風(fēng)險(xiǎn)進(jìn)行識別、分析,采取應(yīng)有的措施,以消除或較少風(fēng)險(xiǎn)的損害。4/12/2024333.2.3螺旋模型采用螺旋模型的軟件開發(fā)過程在螺旋模型中,沿著螺線由內(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ù)情況下沿螺線的活動會繼續(xù)下去,并由內(nèi)向外逐步延伸,最終得到用戶所期望的系統(tǒng)。4/12/2024343.2.3螺旋模型螺旋模型的優(yōu)點(diǎn):(1)設(shè)計(jì)上的靈活性,可以保證在項(xiàng)目的各個(gè)階段進(jìn)行變更。(2)以小的分段來構(gòu)建大型系統(tǒng),使資源、成本和進(jìn)度的估計(jì)變得更加簡單容易。(3)用戶始終參與到每個(gè)階段的開發(fā)中,保證了項(xiàng)目的正確性與可控性。4/12/2024353.2.3螺旋模型螺旋模型的缺點(diǎn):(1)采用螺旋模型需要具有豐富的風(fēng)險(xiǎn)評估經(jīng)驗(yàn)和專門知識,在風(fēng)險(xiǎn)較大的項(xiàng)目開發(fā)中,如果未能及時(shí)識別出潛在的風(fēng)險(xiǎn),或者消除風(fēng)險(xiǎn)的能力不足,都會造成極其重大的損失。(2)過多的迭代次數(shù)會增加軟件開發(fā)成本,延遲交付使用的時(shí)間。4/12/2024363.2.3螺旋模型螺旋模型的應(yīng)用場合螺旋模型支持需求不明確,特別是大型軟件系統(tǒng)的開發(fā),并支持面向規(guī)格說明、面向過程、面向?qū)ο蟮榷喾N軟件開發(fā)方法。由于螺旋模型是以風(fēng)險(xiǎn)分析驅(qū)動的,一旦在開發(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ā),就會賠償經(jīng)濟(jì)損失或者承擔(dān)法律責(zé)任。4/12/2024373.2.4增量模型1.問題引入采用瀑布模型或演化模型開發(fā)項(xiàng)目時(shí),目標(biāo)都是一次性就把一個(gè)滿足所有需求的產(chǎn)品提交給用戶。然而,增量模型則與之不同,它分批地逐步向用戶提交可操作的產(chǎn)品。那么,增量模型的原理是怎樣的?4/12/2024383.2.4增量模型2.解答問題增量模型融合了瀑布模型的基本成分和快速原型模型的迭代特征。該模型采用隨著日程的進(jìn)展而交錯進(jìn)行的線性序列,每一個(gè)線性序列產(chǎn)生軟件的一個(gè)可發(fā)布的“增量”。當(dāng)使用增量模型時(shí),第1個(gè)增量往往是核心產(chǎn)品,即第1個(gè)增量實(shí)現(xiàn)了基本的需求,但很多補(bǔ)充的特征還沒有發(fā)布。客戶對每一個(gè)增量的使用和評估都作為下一個(gè)增量發(fā)布的新特征和功能,這個(gè)過程在每一個(gè)增量發(fā)布后不斷重復(fù),直到產(chǎn)生了最終的完善產(chǎn)品。增量模型強(qiáng)調(diào)每一個(gè)增量均發(fā)布一個(gè)可操作的產(chǎn)品。采用增量模型的軟件過程如下頁圖所示。4/12/2024393.2.4增量模型4/12/2024403.2.4增量模型3.分析問題和所有其它生命周期模型一樣,增量模型并不是完美無缺的,在具有一些優(yōu)點(diǎn)的同時(shí),同樣也具有一些缺點(diǎn)。4/12/2024413.2.4增量模型增量模型的優(yōu)點(diǎn):(1)人員分配靈活,剛開始不用投入大量人力資源,可以避免不必要的浪費(fèi)。(2)重要功能被首先交付,可以獲得最多的測試,保證軟件產(chǎn)品的質(zhì)量。(3)早期發(fā)布的可操作產(chǎn)品可以作為原型為后期增量開發(fā)提供需求。(4)在較短時(shí)間內(nèi)向用戶提交部分工作的產(chǎn)品,可以讓用戶對開發(fā)項(xiàng)目和開發(fā)團(tuán)隊(duì)有信心。(5)用戶能看到所開發(fā)軟件的中間版本,可以使最終產(chǎn)品不至于偏離用戶的需求。(6)可以將技術(shù)難度大的部分作為早期的增量,能夠有效地管理與控制技術(shù)風(fēng)險(xiǎn)。4/12/2024423.2.4增量模型增量模型的缺點(diǎn):(1)在開發(fā)過程中,需求的變化是不可避免的。如果不能有效地控制并管理好需求的變更,增量模型很容易退化為邊寫邊改模式,從而使軟件過程的控制失去整體性。(2)由于各個(gè)增量逐漸并入已有的結(jié)構(gòu),所以加入的增量部分不能破壞已構(gòu)造好的系統(tǒng)部分,這需要軟件具備開放式的體系結(jié)構(gòu),對開發(fā)團(tuán)隊(duì)的技術(shù)要求更高。(3)難以對所有增量進(jìn)行有效的集成。4/12/2024433.2.4增量模型增量模型的應(yīng)用場合增量模型與原型模型、演化模型一樣,本質(zhì)上是迭代的,都能應(yīng)用在需求不明確、需求變化大的軟件項(xiàng)目的開發(fā)中,但與其它迭代式的模型不一樣的是,增量模型強(qiáng)調(diào)每一個(gè)增量均發(fā)布一個(gè)可操作產(chǎn)品。早期的增量是最終產(chǎn)品的“可拆卸”版本。用戶可對每一個(gè)可操作產(chǎn)品進(jìn)行評估,能很好地滿足用戶需求,大大提高了項(xiàng)目的成功率。4/12/2024443.3傳統(tǒng)軟件開發(fā)方法1.問題引入在傳統(tǒng)的軟件開發(fā)過程中,最重要的是明確和分解系統(tǒng)功能?;趥鹘y(tǒng)生命周期的結(jié)構(gòu)化軟件開發(fā)方法逐漸暴露出了它自身的一些缺點(diǎn):難以理解和維護(hù)、可重用性差等。這些缺點(diǎn)是由什么原因引起的?4/12/2024453.3傳統(tǒng)軟件開發(fā)方法2.問題解答在結(jié)構(gòu)化軟件開發(fā)(傳統(tǒng)的面向過程的軟件開發(fā)方法)的整個(gè)過程中,重點(diǎn)放在了操作上。在整個(gè)開發(fā)過程中,過程化程序設(shè)計(jì)方法完全將程序中的一個(gè)非常重要的方面——數(shù)據(jù),與操作分離開來,使得數(shù)據(jù)可以被所有函數(shù)或過程完全訪問。4/12/2024463.3傳統(tǒng)軟件開發(fā)方法3.分析問題傳統(tǒng)軟件開發(fā)方法遵循軟件生命周期,整個(gè)開發(fā)過程包括可行性研究、需求分析、總體設(shè)計(jì)、詳細(xì)設(shè)計(jì)、編碼、測試和維護(hù)等六個(gè)階段。結(jié)構(gòu)化方法是傳統(tǒng)軟件開發(fā)方法的一個(gè)很好的例子,包括結(jié)構(gòu)化分析、結(jié)構(gòu)化設(shè)計(jì)、結(jié)構(gòu)化編程和結(jié)構(gòu)化測試等。4/12/2024473.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ì)化。4/12/2024483.3傳統(tǒng)軟件開發(fā)方法結(jié)構(gòu)化設(shè)計(jì)的基本思想是模塊化思想。將數(shù)據(jù)流圖進(jìn)一步細(xì)化到每一個(gè)子功能都清晰易懂,每個(gè)模塊完成一個(gè)子功能,每層模塊合成一個(gè)高一級的功能??傮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等。4/12/2024493.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í)行流程的。4/12/2024503.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)格的階段性評審。雖然能夠保證軟件質(zhì)量,但整個(gè)開發(fā)過程缺少應(yīng)有的靈活性。4/12/2024513.3傳統(tǒng)軟件開發(fā)方法傳統(tǒng)的面向過程的結(jié)構(gòu)化開發(fā)方法的另一個(gè)問題是它不能很好地表示現(xiàn)實(shí)世界。4/12/2024523.3傳統(tǒng)軟件開發(fā)方法為了提高系統(tǒng)的可理解性、可維護(hù)性和可重用性,并能很好地表示現(xiàn)實(shí)世界,開發(fā)軟件項(xiàng)目時(shí),最好采用面向?qū)ο筌浖_發(fā)技術(shù)。4/12/2024533.4面向?qū)ο筌浖_發(fā)技術(shù)3.4.1面向?qū)ο蟮幕靖拍?.4.2面向?qū)ο蟮拈_發(fā)4/12/2024543.4.1面向?qū)ο蟮幕靖拍罡拍?-1:對象解答:對象是指現(xiàn)實(shí)世界中各種各樣的實(shí)體。它既可以是具體的能觸及的事物,如一個(gè)人、一棟大樓、一架飛機(jī),甚至一個(gè)地球等;也可以是無法觸及的抽象事物,如一項(xiàng)計(jì)劃、一次約會、一場演出等。一個(gè)對象既可以非常簡單,又可以非常復(fù)雜,復(fù)雜的對象往往可以由若干個(gè)簡單的對象組合而成。4/12/2024553.4.1面向?qū)ο蟮幕靖拍顚ο蠖x了狀態(tài)和行為。對象的狀態(tài)用數(shù)據(jù)值來表示,而對象的行為則用來改變對象的狀態(tài)。在面向?qū)ο蟮南到y(tǒng)中,對象是基本的運(yùn)行實(shí)體。4/12/2024563.4.1面向?qū)ο蟮幕靖拍钏羞@些對象,除去它們都是現(xiàn)實(shí)世界中所存在的事物之外,它們都還具有各自不同的特征:(1)有一個(gè)名字用來區(qū)別于其它對象。例如:張三、李四等。4/12/2024573.4.1面向?qū)ο蟮幕靖拍?2)有一個(gè)狀態(tài)用來描述對象的某些特征。例如:對象張三的狀態(tài):姓名:張三性別:男身高:179cm體重:71kg4/12/2024583.4.1面向?qū)ο蟮幕靖拍?3)有一組操作,每一個(gè)操作決定對象的一種功能或行為。對象的操作可分為兩類:一類是自身所承受的操作,使用setter、getter作為操作名;一類是施加于其它對象的操作。例如:對象張三的操作(可完成的功能):回答姓名回答性別回答身高回答體重打電話踢足球駕車屬于對象自身所承受的操作屬于施加于其它對象的操作4/12/2024593.4.1面向?qū)ο蟮幕靖拍罡拍?-2:類解答:類是對一組客觀對象的抽象,它將該組對象所具有的共同特征(包括結(jié)構(gòu)特征和行為特征)集中起來,以說明該組對象的性質(zhì)和能力。例如:“人”這個(gè)詞就是抽象了所有人(單個(gè)的人,如張三、李四等,這些都是對象)的共同之處。4/12/2024603.4.1面向?qū)ο蟮幕靖拍钤诿嫦驅(qū)ο缶幊讨?,通常把類定義為抽象數(shù)據(jù)類型,而對象是類的類型變量。當(dāng)定義了一個(gè)類以后,就可以生成任意多個(gè)屬于這個(gè)類的對象,這個(gè)過程叫做實(shí)例化。例如,用Java語言定義一個(gè)類Car為:publicclassCar{……}這時(shí)可生成任意多個(gè)屬于Car類的對象:Carcar1=newCar();Carcar2=newCar();
4/12/2024613.4.1面向?qū)ο蟮幕靖拍罡拍?-3:類與對象的關(guān)系解答:組成類的對象均為該類的實(shí)例。類與對象之間的關(guān)系就是抽象與具體的關(guān)系。例如,張三是一個(gè)學(xué)生,學(xué)生是一個(gè)類,而張三作為一個(gè)具體的對象,是學(xué)生類的一個(gè)實(shí)例。類是多個(gè)實(shí)例的綜合抽象,而實(shí)例又是類的個(gè)體事物。4/12/2024623.4.1面向?qū)ο蟮幕靖拍钤诿嫦驅(qū)ο缶幊讨校x一個(gè)類就定義了這個(gè)類的一系列屬性與操作,對于同一個(gè)類的不同實(shí)例之間,必定具有如下特點(diǎn):(1)相同的屬性集合;(2)相同的操作集合;(3)不同的對象名。相同的屬性集合與操作集合用于標(biāo)識這些對象屬于同一個(gè)類,用不同的對象名來區(qū)別不同的對象。4/12/2024633.4.1面向?qū)ο蟮幕靖拍罡拍?-4:面向?qū)ο蠼獯穑好嫦驅(qū)ο螅∣bject-Oriented,簡稱OO)是指人們按照自然的思維方式認(rèn)識客觀世界,采用基于對象(實(shí)體)的概念建立模型,模擬客觀世界,從而用來分析、設(shè)計(jì)和實(shí)現(xiàn)軟件的方法。把軟件組織成一系列離散的、合并了數(shù)據(jù)結(jié)構(gòu)和行為的對象集。4/12/2024643.4.1面向?qū)ο蟮幕靖拍畈捎妹嫦驅(qū)ο蠹夹g(shù)開發(fā)軟件的方法,稱為面向?qū)ο筌浖_發(fā)方法。面向?qū)ο蠓椒ň哂幸韵聨讉€(gè)特性:(1)對象唯一性每個(gè)對象都有唯一的標(biāo)識(如同人們的身份證號碼),通過這個(gè)標(biāo)識,可以找到相應(yīng)的對象。在對象的整個(gè)生命周期(從對象的創(chuàng)建到對象的消亡)中,它的標(biāo)識都不會改變。不同的對象(即使其它屬性完全相同,例如兩個(gè)完全一樣的球)必須具有不同的標(biāo)識。(2)封裝性具有一致的數(shù)據(jù)結(jié)構(gòu)(屬性)和行為(操作)的對象抽象成類。(3)繼承性子類自動共享父類的數(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ā)送消息對象的不同采用多種不同的行為方式。即是指相同的操作或函數(shù)可作用于多種類型的對象上并獲得不同的結(jié)果。不同的對象,收到同一消息可以產(chǎn)生不同的結(jié)果,這種現(xiàn)象就稱為多態(tài)性。4/12/2024653.4.1面向?qū)ο蟮幕靖拍罡拍?-5:封裝及面向?qū)ο笙到y(tǒng)的封裝性解答:封裝也叫做信息隱藏。從字面上理解,封裝就是將某事物包裝起來,使外界不了解其實(shí)際內(nèi)容。從軟件開發(fā)的角度,封裝是指將一個(gè)數(shù)據(jù)和與這個(gè)數(shù)據(jù)有關(guān)的各種操作放在一起,形成一個(gè)能動的實(shí)體——對象,使用者不必知道對象的內(nèi)部結(jié)構(gòu),只需根據(jù)對象提供的外部接口訪問對象。從使用者的角度看,這些對象就像一個(gè)“黑盒子”,其內(nèi)部數(shù)據(jù)和行為是被隱藏起來、看不見的。面向?qū)ο笙到y(tǒng)的封裝性是一種信息隱藏技術(shù),它隱藏了某一方法的具體執(zhí)行步驟,取而代之的是通過消息傳遞機(jī)制傳遞消息給它。4/12/2024663.4.1面向?qū)ο蟮幕靖拍疃x為公有的成員方法或函數(shù),才是對象提供的公共消息接口。外部對象只有通過這些公共接口才能訪問到對象的內(nèi)部數(shù)據(jù),這就是所謂的信息隱藏技術(shù)。4/12/2024673.4.1面向?qū)ο蟮幕靖拍罡鶕?jù)對封裝的定義可以看出,封裝應(yīng)該具有下面幾個(gè)條件:(1)具有一個(gè)清晰的邊界。對象所有的私有數(shù)據(jù)、成員方法或函數(shù)的實(shí)現(xiàn)細(xì)節(jié)都被固定在這個(gè)邊界內(nèi)。(2)具有一個(gè)接口。這個(gè)接口描述了對象之間的交互作用,它就是消息。(3)對象內(nèi)部的實(shí)現(xiàn)代碼受到封裝體的保護(hù),其它對象不能直接修改本對象所擁有的數(shù)據(jù)和代碼。4/12/2024683.4.1面向?qū)ο蟮幕靖拍罡拍?-6:繼承及面向?qū)ο笙到y(tǒng)的繼承性解答:繼承是指一個(gè)類能夠從另一個(gè)類那里獲得一些特性。在這個(gè)過程中,超類把它的特性賦給了子類。面向?qū)ο笙到y(tǒng)的繼承性是對具有層次關(guān)系的類的屬性和操作進(jìn)行共享的一種方式。4/12/2024693.4.1面向?qū)ο蟮幕靖拍罾^承是面向?qū)ο筌浖夹g(shù)中的一個(gè)概念。如果一個(gè)類A繼承自另一個(gè)類B,就把這個(gè)A稱為B的“子類”或“派生類”,而把B稱為A的“父類”或“超類”或“基類”。4/12/2024703.4.1面向?qū)ο蟮幕靖拍罾^承可以使得子類具有父類的各種屬性和方法,而不需要再次編寫相同的代碼。在子類繼承父類時(shí),既可以重新定義子類的某些屬性和方法,也可以重寫某些方法,來覆蓋父類的原有屬性和方法,使其獲得與父類不同的功能。4/12/2024713.4.1面向?qū)ο蟮幕靖拍罾^承有兩個(gè)方面的作用:①避免代碼冗余,提高可理解性和可維護(hù)性;②繼承是從老對象生成新對象的一種代碼重用機(jī)制,使系統(tǒng)更具靈活性和適應(yīng)性,它使得解釋多態(tài)性成為可能。4/12/2024723.4.1面向?qū)ο蟮幕靖拍罾^承有單繼承和多繼承之分。單繼承多繼承4/12/2024733.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語言只支持單繼承,不支持多繼承。4/12/2024743.4.1面向?qū)ο蟮幕靖拍钭宇愂欠窨梢栽L問父類的所有成員變量和成員方法(或成員函數(shù))?在前面介紹封裝性時(shí)談到,定義類的數(shù)據(jù)成員與方法成員有三種訪問域(三種可見性),即公有訪問域(public)、受保護(hù)訪問域(protected)、私有訪問域(private)。父類的成員若定義為受保護(hù)訪問域和公有訪問域,子類是可以訪問的;若父類成員定義為私有訪問域,子類則無權(quán)訪問。4/12/2024753.4.1面向?qū)ο蟮幕靖拍罡拍?-7:重載及面向?qū)ο笙到y(tǒng)的多態(tài)性解答:一個(gè)類中的操作具有相同的名稱和不同的參數(shù),這樣的操作被稱為“重載”。面向?qū)ο笙到y(tǒng)的多態(tài)性是指,當(dāng)不同的對象收到相同的消息時(shí)產(chǎn)生不同的動作。常用在功能相同但參數(shù)的數(shù)據(jù)類型有微小差別的操作中。4/12/2024763.4.1面向?qū)ο蟮幕靖拍畈僮髅?、參?shù)及其類型和操作的返回類型合在一起稱為操作的簽名(注:這里的操作就是方法或函數(shù))。一個(gè)類中的所有操作都必須具有唯一的簽名,即是說一個(gè)類中不能存在兩個(gè)相同簽名的操作。具有相同名稱和參數(shù)但是返回類型不同的操作不能稱為重載,因?yàn)樵谡{(diào)用操作時(shí)并沒有描述操作的返回類型,被調(diào)用的對象不能分辨出僅僅是返回類型不同的兩個(gè)操作,因此這樣的操作具有歧義性,是無效的。4/12/2024773.4.2面向?qū)ο蟮拈_發(fā)1.問題引入傳統(tǒng)的軟件開發(fā)生命周期包含了六個(gè)階段:制定計(jì)劃、需求分析和定義、設(shè)計(jì)、編碼、測試、運(yùn)行與維護(hù),面向?qū)ο蟮拈_發(fā)和傳統(tǒng)的軟件開發(fā)方法不同,它是一種基于現(xiàn)實(shí)世界抽象的新的軟件開發(fā)方法。那么,面向?qū)ο蟮能浖_發(fā)中,軟件生命周期又可分為哪幾個(gè)階段?各個(gè)階段主要完成哪些任務(wù)?4/12/2024783.4.2面向?qū)ο蟮拈_發(fā)2.問題解答在面向?qū)ο蟮能浖_發(fā)中,軟件生命周期可分為以下幾個(gè)階段:(1)系統(tǒng)分析階段在這個(gè)階段,需要建立一個(gè)反映現(xiàn)實(shí)客觀世界情形的模型。為了建立這個(gè)模型,需要分析員和需求人員共同明確現(xiàn)實(shí)世界中的問題。這個(gè)模型應(yīng)該解決系統(tǒng)必須做什么,而不是怎么做的問題。分析之后將得到分析模型:對象模型、動態(tài)模型和功能模型。(2)系統(tǒng)設(shè)計(jì)階段這個(gè)階段需要給出怎樣解決問題的決策。包括將系統(tǒng)劃分成子系統(tǒng)和子系統(tǒng)軟硬件如何配置,確定系統(tǒng)的整體框架結(jié)構(gòu)。4/12/2024793.4.2面向?qū)ο蟮拈_發(fā)(3)對象設(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è)階段,將在對象設(shè)計(jì)階段開發(fā)的類轉(zhuǎn)換成用特定的程序設(shè)計(jì)語言編寫的代碼或數(shù)據(jù)庫。(5)測試階段傳統(tǒng)軟件開發(fā)的測試通常經(jīng)過單元測試、集成測試、系統(tǒng)測試三個(gè)環(huán)節(jié)。由于面向?qū)ο笥衅渥陨淼奶攸c(diǎn),參考面向?qū)ο筌浖_發(fā)模式,面向?qū)ο箝_發(fā)測試包括面向?qū)ο蠓治龅臏y試、面向?qū)ο笤O(shè)計(jì)的測試、面向?qū)ο缶幊痰臏y試、面向?qū)ο髥卧獪y試、面向?qū)ο蠹蓽y試和面向?qū)ο笙到y(tǒng)測試。4/12/2024803.4.2面向?qū)ο蟮拈_發(fā)面向?qū)ο箝_發(fā)生命周期是一個(gè)迭代的增量式過程,因此,使用面向?qū)ο筌浖_發(fā)技術(shù)能很好地適應(yīng)系統(tǒng)需求的變化,并能提高軟件的可理解性、可維護(hù)性和可重用性,以致于提高軟件企業(yè)的可持續(xù)發(fā)展性。4/12/2024813.4.2面向?qū)ο蟮拈_發(fā)面向?qū)ο蟮姆治雠c設(shè)計(jì)過程適合于使用UML來建模,同時(shí),使用UML建模工具可以將模型(對于嵌入式系統(tǒng),通常指狀態(tài)圖;而對于一般系統(tǒng),則是指類圖)映射為特定編程語言的程序代碼,也可以將永久類映射為關(guān)系數(shù)據(jù)庫結(jié)構(gòu),還能將分析模型中得到的邊界類的屬性與操作部分映射為用戶界面中的圖形元素。面向?qū)ο箝_發(fā)特別適合采用下一節(jié)將要介紹的RUP統(tǒng)一軟件開發(fā)過程。4/12/2024823.5RUP統(tǒng)一軟件開發(fā)過程RUP(RationalUnifiedProcess,統(tǒng)一軟件開發(fā)過程),是由IBMRational公司提出來的。它是一個(gè)通用的過程框架,適用面非常廣,可以適用于不同種類的軟件系統(tǒng)、應(yīng)用領(lǐng)域、組織類型、性能水平和項(xiàng)目規(guī)模。它是一個(gè)演化的開發(fā)過程。4/12/2024833.5RUP統(tǒng)一軟件開發(fā)過程RUP是基于構(gòu)件的開發(fā)過程,與其它軟件過程相比,RUP具有三個(gè)顯著的特點(diǎn):(1)它是用例驅(qū)動的過程。(2)它是迭代和增量式的過程。(3)它是以基本架構(gòu)為中心的過程。4/12/2024843.5.1RUP生命周期1.問題引入RUP是一種軟件開發(fā)過程,包括開發(fā)過程、管理過程和支撐過程,它的生命周期是怎樣的呢?4/12/2024853.5.1RUP生命周期2.問題解答與傳統(tǒng)的一維瀑布開發(fā)模型不同,RUP軟件開發(fā)生命周期是一個(gè)二維的開發(fā)模型。橫軸表示軟件過程的時(shí)間維,是過程展開的生命周期特征,體現(xiàn)開發(fā)過程的動態(tài)結(jié)構(gòu),被分成四個(gè)順序階段,分別是:先啟階段(Inception),精化階段(Elaboration),構(gòu)造階段(Construction),移交階段(Transition)。4/12/2024863.5.1RUP生命周期4/12/2024873.5.2RUP統(tǒng)一開發(fā)過程的核心工作流程RUP生命周期開發(fā)模型的縱軸描述了軟件項(xiàng)目開發(fā)和組織管理中的核心工作流程,包括兩部分內(nèi)容:核心過程工作流程核心過程工作流程指的是在項(xiàng)目開發(fā)中的流程。包括業(yè)務(wù)建模、需求、分析與設(shè)計(jì)、實(shí)現(xiàn)、測試和部署等6個(gè)工作流程。核心支持工作流程核心支持工作流程指的是在組織管理中的流程。包括環(huán)境、項(xiàng)目管理、配置和變更管理等3個(gè)工作流程。4/12/2024883.5.2RUP統(tǒng)一開發(fā)過程的核心工作流程RUP統(tǒng)一開發(fā)過程是一個(gè)迭代的增量式的開發(fā)過程,在RUP生命周期的每一個(gè)階段都包含了這九個(gè)核心工作流,只是側(cè)重的內(nèi)容有所不同。在每個(gè)階段所對應(yīng)的核心工作流都有工作流明細(xì)、活動、以及輸出工件等。4/12/202489對于大型而復(fù)雜的軟件項(xiàng)目而言,比較適合于使用RUP統(tǒng)一開發(fā)過程,同時(shí)應(yīng)用面向?qū)ο蟮能浖_發(fā)技術(shù),可以大大提高軟件項(xiàng)目的成功率。4/12/2024903.6敏捷軟件開發(fā)技術(shù)敏捷軟件開發(fā)(AgileSoftwareDevelopment),又稱敏捷開發(fā),是一種從1990年代開始逐漸引起廣泛關(guān)注的新型軟件開發(fā)方法,是一種應(yīng)對快速變化的用戶需求的一種軟件開發(fā)技術(shù)。它們的具體名稱、理念、過程、術(shù)語都不盡相同,相對于“非敏捷”方法,更強(qiáng)調(diào)開發(fā)團(tuán)隊(duì)與領(lǐng)域?qū)<?、最終用戶之間的緊密協(xié)作,面對面的溝通,頻繁交付新的軟件版本,緊湊而自我組織型的團(tuán)隊(duì)。能夠很好地適應(yīng)需求變化的軟件設(shè)計(jì)與代碼編寫、團(tuán)隊(duì)組織。更注重軟件開發(fā)主體中“人”的作用。4/12/2024913.6.1敏捷開發(fā)技術(shù)基本概念概念3-8:敏捷聯(lián)盟由于注意到許多軟件企業(yè)的開發(fā)團(tuán)隊(duì)陷入了不斷增長的過程泥潭,一批業(yè)界專家于2001年初聚集在美國猶他州雪鳥滑雪勝地,共同概括出了一些可以讓軟件開發(fā)團(tuán)隊(duì)具有快速工作、迅速響應(yīng)變化的價(jià)值觀(Value)和原則(Principle)。這批業(yè)界專家自稱為敏捷聯(lián)盟(AgileAlliance)。4/12/202492敏捷軟件開發(fā)宣言個(gè)體和交互勝過過程和工具可以工作的軟件勝過面面俱到的文檔客戶合作勝過合同談判響應(yīng)變化勝過遵循計(jì)劃雖然右項(xiàng)也有價(jià)值,但是我們認(rèn)為左項(xiàng)具有更大的價(jià)值。4/12/2024933.6.1敏捷開發(fā)技術(shù)基本概念概念3-9:原則從宣言的價(jià)值觀中引出了下面的十二條原則,它們是敏捷實(shí)踐與重型過程相區(qū)別的特征所在。4/12/2024943.6.1敏捷開發(fā)技術(shù)基本概念(1)盡早地、不斷地交付有價(jià)值的軟件來滿足客戶需要。(2)團(tuán)隊(duì)努力保持軟件結(jié)構(gòu)的靈活性,敏捷過程能夠駕馭變化,保持客戶的競爭優(yōu)勢。(3)要經(jīng)常交付可以工作的軟件,周期越短越好,從幾星期到幾個(gè)月。(4)業(yè)務(wù)人員和開發(fā)人員必須在整個(gè)項(xiàng)目過程中頻繁交互,并一起工作。4/12/2024953.6.1敏捷開發(fā)技術(shù)基本概念(5)圍繞被激勵起來的個(gè)人來構(gòu)建項(xiàng)目。給開發(fā)者提供適宜的環(huán)境和支持,滿足他們的需要,并信任他們能夠完成任務(wù)。(6)在開發(fā)團(tuán)隊(duì)內(nèi)部,最有效率也最有效果的信息傳達(dá)方式是面對面的交談。(7)可以工作的軟件是進(jìn)度的主要度量標(biāo)準(zhǔn)。(8)敏捷過程提倡可持續(xù)的開發(fā)速度。責(zé)任人、開發(fā)人員和用戶應(yīng)該總是維持不變的節(jié)奏。4/12/2024963.6.1敏捷開發(fā)技術(shù)基本概念(9)不斷追求卓越技術(shù)與良好設(shè)計(jì)將有助于提高敏捷性。(10)簡單。(11)最好的架構(gòu)、需求和設(shè)計(jì)都源自于自組織的團(tuán)隊(duì)。(12)每隔一段時(shí)間,團(tuán)隊(duì)會總結(jié)如何才能更有效率,然后相應(yīng)地調(diào)整自己的行為。4/12/2024973.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ì)可能很難確切描述未來將會如何變化。4/12/2024983.6.1敏捷開發(fā)技術(shù)基本概念(1)與迭代、增量式方法的比較(2)與瀑布式開發(fā)的比較4/12/2024993.6.1敏捷開發(fā)技術(shù)基本概念敏捷方法強(qiáng)調(diào)溝通,當(dāng)項(xiàng)目規(guī)模較大、參與人員較多時(shí),團(tuán)隊(duì)成員面對面的溝通就變得非常困難,因此,敏捷方法適用于輕量級開發(fā),更適合20人以下團(tuán)隊(duì)工作;另一方面,敏捷方法對開發(fā)人員要求更高,它認(rèn)為“代碼即是設(shè)計(jì),代碼即是文檔”,因此要求程序員必須具備相當(dāng)強(qiáng)的設(shè)計(jì)能力與經(jīng)驗(yàn)。在小規(guī)模組織中應(yīng)用敏捷方法,效果相當(dāng)顯著。4/12/20241003.6.2極限編程極限編程(ExtremeProgramming,簡稱XP)被列入敏捷開發(fā)方法。4/12/20241013.6.2極限編程概念3-11:極限編程的起源極限編程是由KentBeck、WardCunningham和RonJeffries在1996年提出的。KentBeck一直倡導(dǎo)軟件開發(fā)的模式定義。早在1993年,他就和GradyBooch(UML之父)發(fā)起了一個(gè)團(tuán)隊(duì)進(jìn)行這方面的研究,希望能使軟件開發(fā)更加簡單而有效。Kent仔細(xì)觀察和分析了各種簡化軟件開發(fā)的前提條件、可行性以及面臨的困難。1996年三月,Kent終于在為DaimlerChrysler所做的一個(gè)項(xiàng)目中引入了新的軟件開發(fā)觀念——XP。4/12/20241023.6.2極限編程概念3-12:什么是極限編程?極限編程是一種開發(fā)管理模式,是一種軟件工程方法學(xué),是敏捷軟件開發(fā)中最富有成效的幾種方法學(xué)之一。4/12/20241033.6.2極限編程極限編程強(qiáng)調(diào)的重點(diǎn)是:(1)角色定位(2)敏捷開發(fā)(3)追求價(jià)值4/12/20241043.6.2極限編程概念3-13:極限編程的目標(biāo)極限編程的主要目標(biāo)在于降低因需求變更而帶來的成本增加。極限編程透過引入基本價(jià)值、原則、方法等概念來降低變更成本的目的。與傳統(tǒng)的在項(xiàng)目起始階段就定義好所有需求再費(fèi)盡心思地控制變化的方法相比,極限編程希望有能力在項(xiàng)目周期的任何階段去適應(yīng)變化。4/12/20241053.6.2極限編程概念3-14:極限編程的極致思維極限編程的“極致”思維體現(xiàn)在以下7個(gè)方面:(1)如果程序代碼檢查對我們有好處,我們應(yīng)反復(fù)地檢查(結(jié)對編程,PairProgramming);(2)如果測試對我們有好處,每
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度糧食儲備與市場調(diào)撥合同3篇
- 2025年度門禁系統(tǒng)數(shù)據(jù)統(tǒng)計(jì)分析及優(yōu)化合同4篇
- 2025年度足浴店全面承包運(yùn)營管理合同4篇
- 2025年度公務(wù)員借調(diào)期間培訓(xùn)與技能提升合同4篇
- 二零二五年度城市綜合防災(zāi)減災(zāi)工程內(nèi)部施工合同4篇
- 家庭互聯(lián)網(wǎng)經(jīng)濟(jì)背景下的智能家居發(fā)展
- 二零二五年度智慧撬裝加油站運(yùn)營管理服務(wù)合同范本3篇
- 構(gòu)建小學(xué)學(xué)校文化體系提升教育品質(zhì)
- 二零二五年度汽車玻璃定制生產(chǎn)及安裝服務(wù)合同范本3篇
- 2025年度特種門窗安全性能檢測服務(wù)合同4篇
- 項(xiàng)目前期選址分析報(bào)告
- 急性肺栓塞搶救流程
- 《統(tǒng)計(jì)學(xué)-基于Python》 課件全套 第1-11章 數(shù)據(jù)與Python語言-時(shí)間序列分析和預(yù)測
- 《形象價(jià)值百萬》課件
- 紅色文化教育國內(nèi)外研究現(xiàn)狀范文十
- 中醫(yī)基礎(chǔ)理論-肝
- 小學(xué)外來人員出入校門登記表
- 《土地利用規(guī)劃學(xué)》完整課件
- GB/T 25283-2023礦產(chǎn)資源綜合勘查評價(jià)規(guī)范
- 《汽車衡全自動智能稱重系統(tǒng)》設(shè)計(jì)方案
- 義務(wù)教育歷史課程標(biāo)準(zhǔn)(2022年版)
評論
0/150
提交評論