軟件工程理論與實(shí)踐 課件 第1章 軟件工程概述-1_第1頁
軟件工程理論與實(shí)踐 課件 第1章 軟件工程概述-1_第2頁
軟件工程理論與實(shí)踐 課件 第1章 軟件工程概述-1_第3頁
軟件工程理論與實(shí)踐 課件 第1章 軟件工程概述-1_第4頁
軟件工程理論與實(shí)踐 課件 第1章 軟件工程概述-1_第5頁
已閱讀5頁,還剩55頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第1章軟件工程概述目錄2第一節(jié)軟件的概念及特點(diǎn)第二節(jié)

軟件危機(jī)第四節(jié)

軟件工程第五節(jié)

軟件開發(fā)方法第六節(jié)

軟件工程工具第七節(jié)

職業(yè)道德第三節(jié)

軟件工程軟件的概念及特點(diǎn)軟件的概念

計(jì)算機(jī)軟件是由專業(yè)人員開發(fā)并長期維護(hù)的軟件產(chǎn)品。完整的軟件產(chǎn)品包括了在各種不同容量和體系結(jié)構(gòu)計(jì)算機(jī)上的可執(zhí)行的程序,運(yùn)行過程中產(chǎn)生的各種結(jié)果,以及以硬復(fù)制和電子表格等多種方式存在的軟件文檔。4軟件的特點(diǎn)51)具有抽象性2)無明顯的制造過程3)存在退化問題4)對計(jì)算機(jī)系統(tǒng)有著不同程度的依賴性5)尚未完全擺脫人工的開發(fā)方式6)軟件本身是復(fù)雜的7)成本相當(dāng)昂貴8)相當(dāng)多的軟件工作涉及社會因素第二節(jié)軟件危機(jī)1.2.1軟件危機(jī)的表現(xiàn)與原因1.2.2軟件危機(jī)的啟示1.2軟件危機(jī)1.2.1軟件危機(jī)的表現(xiàn)與原因在軟件開發(fā)的過程中,會經(jīng)常出現(xiàn)一些不能按時完成任務(wù)、產(chǎn)品質(zhì)量得不到保證、工作效率低下和開發(fā)經(jīng)費(fèi)嚴(yán)重超支等現(xiàn)象。計(jì)算機(jī)軟件的開發(fā)、維護(hù)和應(yīng)用過程中普遍出現(xiàn)的這一些嚴(yán)重的問題便是軟件危機(jī)。主要表現(xiàn)1)產(chǎn)品的功能或特性與需求不符2)相比硬件,軟件代價過高3)質(zhì)量難以保證,難以發(fā)揮硬件潛能4)難以準(zhǔn)確估計(jì)開發(fā)、維護(hù)的費(fèi)用和開發(fā)周期5)難以控制開發(fā)風(fēng)險,開發(fā)速度趕不上市場變化6)軟件產(chǎn)品修改、維護(hù)困難7)軟件文檔不完備,存在內(nèi)容與產(chǎn)品不符的情況71.2軟件危機(jī)1.2.2軟件危機(jī)的啟示

軟件危機(jī)給我們的最大啟示,是使我們更加深刻的認(rèn)識到軟件的特性以及軟件產(chǎn)品開發(fā)的內(nèi)在規(guī)律。軟件產(chǎn)品是復(fù)雜的人造系統(tǒng),具有復(fù)雜性、不可見性和易變性,難以處理。個人或小組在開發(fā)小型軟件時使用到的非常有效的編程技術(shù)和過程,在開發(fā)大型、復(fù)雜系統(tǒng)時難以發(fā)揮同樣的作用。從本質(zhì)上講,軟件開發(fā)的創(chuàng)造性成分很大、發(fā)揮的余地也很大,很接近于藝術(shù)。它介于藝術(shù)與工程之間的某一點(diǎn),并逐步向工程一段漂移,但很難發(fā)展到完全的工程。81.2軟件危機(jī)1.2.2軟件危機(jī)的啟示計(jì)算機(jī)和軟件技術(shù)的快速發(fā)展,提高了用戶對軟件的期望,促進(jìn)了軟件產(chǎn)品的演化,對軟件產(chǎn)品提出了新的、更多的需求,難以在可接受的開發(fā)進(jìn)度內(nèi)保證軟件的質(zhì)量。幾乎所有的軟件項(xiàng)目都是新的,而且是不斷變化的。項(xiàng)目需求在開發(fā)過程中會發(fā)生變化,而且很多原來預(yù)想不到的問題會出現(xiàn),對設(shè)計(jì)和實(shí)現(xiàn)手段進(jìn)行適當(dāng)?shù)恼{(diào)整是不可避免的?!叭嗽律裨挕爆F(xiàn)象——生產(chǎn)力與人數(shù)并不成正比。9第三節(jié)軟件工程1.3.1軟件工程的概念1.3.2軟件工程的基本目標(biāo)和原則1.3.3軟件過程1.3軟件工程1.3.1軟件工程的概念I(lǐng)EEE對軟件工程的定義為:1)將系統(tǒng)化、嚴(yán)格約束的、可量化的方法應(yīng)用于軟件的開發(fā)、運(yùn)

行和維護(hù),即將工程化應(yīng)用于軟件2)對1)中所述方法的研究具體說來,軟件工程是以借鑒傳統(tǒng)工程的原則、方法,以提高質(zhì)量,降低成本為目的指導(dǎo)計(jì)算機(jī)軟件開發(fā)和維護(hù)的工程學(xué)科。它是一種層次化的技術(shù)111.3軟件工程工具層方法層過程層質(zhì)量保證層12工程學(xué)計(jì)算機(jī)科學(xué)管理學(xué)經(jīng)濟(jì)學(xué)心理學(xué)數(shù)學(xué)1.3軟件工程1.3.1軟件工程的概念軟件工程的根基在于對質(zhì)量的關(guān)注;軟件工程的基礎(chǔ)是過程層,它定義了一組關(guān)鍵過程區(qū)域的框架,使得軟件能夠被合理和及時地開發(fā);軟件工程的方法提供了建造軟件在技術(shù)上需要“做什么”,它覆蓋了一系列的任務(wù),包括需求分析、設(shè)計(jì)、編程、測試和支持等;軟件工程的工具對過程和方法提供了自動的或半自動的支持。而軟件工程本身是一個交叉學(xué)科,涉及多種學(xué)科領(lǐng)域的相關(guān)知識,包括工程學(xué)、數(shù)學(xué)、計(jì)算機(jī)科學(xué)、經(jīng)濟(jì)學(xué)、管理學(xué)、心理學(xué)等。1.3軟件工程1.3.1軟件工程的14關(guān)注質(zhì)量過程方法工具軟件工程1.3.2軟件工程研究的內(nèi)容

軟件工程研究的內(nèi)容主要包括以下兩個部分:軟件開發(fā)技術(shù):主要研究軟件開發(fā)方法、軟件開發(fā)過程、軟件開發(fā)工具和環(huán)境。軟件開發(fā)過程管理:主要研究軟件工程經(jīng)濟(jì)學(xué)和軟件管理學(xué)。三要素

目標(biāo)1.3軟件工程1.3.2軟件工程的基本目標(biāo)和原則軟件工程要達(dá)到的基本目標(biāo)包括:達(dá)到要求的軟件功能取得較好的軟件性能開發(fā)出高質(zhì)量的軟件付出較低的開發(fā)成本需要較低的維護(hù)費(fèi)用能按時完成開發(fā)工作,及時交付使用軟件工程的7條基本原則:用分階段的生命周期計(jì)劃進(jìn)行嚴(yán)格的管理堅(jiān)持進(jìn)行階段評審實(shí)行嚴(yán)格的版本控制采用現(xiàn)代程序設(shè)計(jì)技術(shù)軟件工程結(jié)果應(yīng)能清楚的審查開發(fā)小組的人員應(yīng)該少而精承認(rèn)不斷改進(jìn)軟件工程實(shí)踐的必要性151.3軟件工程1.3.1軟件過程軟件的誕生和生命周期是一個過程,我們總體上稱這個過程為軟件過程。軟件過程是為了開發(fā)出軟件產(chǎn)品,或者是為了完成軟件工程項(xiàng)目而需要完成的有關(guān)軟件工程的活動,每一項(xiàng)活動又可以分為一系列的工程任務(wù)。任何一個軟件開發(fā)組織,都可以規(guī)定自己的軟件過程,所有這些過程共同構(gòu)成了軟件過程。過程定義了運(yùn)用方法的順序,應(yīng)該交付的文檔資料,為保證軟件質(zhì)量和協(xié)調(diào)變化所需要采取的管理措施,以及標(biāo)志軟件開發(fā)各個階段任務(wù)完成的里程碑。通常,使用生命周期模型簡潔地描述軟件過程。生命周期模型規(guī)定了把生命周期劃分為哪些階段及各個階段的執(zhí)行順序,因此也稱為過程模型。16第四節(jié)軟件過程模型瀑布模型快速原型模型增量模型螺旋模型噴泉模型基于組件的開發(fā)模型統(tǒng)一軟件開發(fā)過程模型幾種模型的對比幾種模型之間的關(guān)系選擇軟件過程模型FourThreeTwoOne在軟件工程中,人們通過建立抽象的軟件過程模型,把軟件生命周期中的各個活動或步驟安排到一個框架中,將軟件開發(fā)的全過程清晰且直觀地表達(dá)出來。軟件過程模型的特點(diǎn):描述了主要的開發(fā)階段定義了每個階段要完成的主要任務(wù)和活動規(guī)范了每個階段的輸入和輸出提供了一個框架,把必要的活動映射到這個框架中18軟件過程模型瀑布模型瀑布模型是一種線性的開發(fā)模型,具有不可回溯性。開發(fā)人員必須等前一階段的任務(wù)完成后,才能開始進(jìn)行后一階段的工作,并且前一階段的輸出往往就是后一階段的輸入。由于其不可回溯性,如果在軟件生命周期的后期發(fā)現(xiàn)并要改正前期的錯誤,那么需要付出很高的代價。傳統(tǒng)的瀑布模型是文檔驅(qū)動的。如圖所示。19瀑布模型的優(yōu)點(diǎn)是過程模型簡單,執(zhí)行容易;缺點(diǎn)是無法適應(yīng)變更。瀑布模型適應(yīng)于具有以下特征的軟件開發(fā)項(xiàng)目。在軟件開發(fā)的過程中,需求不發(fā)生或發(fā)生很少變化,并且開發(fā)人員可以一次性獲取到全部需求。否則,由于瀑布模型較差的可回溯性,在后續(xù)階段中需求經(jīng)常性的變更需要付出高昂的代價。軟件開發(fā)人員具有豐富的經(jīng)驗(yàn),對軟件應(yīng)用領(lǐng)域很熟悉。軟件項(xiàng)目的風(fēng)險較低。瀑布模型不具有完善的風(fēng)險控制機(jī)制。20瀑布模型快速原型模型快速原型的基本思想是快速建立一個能反映用戶主要需求的原型系統(tǒng),讓用戶在計(jì)算機(jī)上試用它,通過實(shí)踐來了解目標(biāo)系統(tǒng)的概貌。通常,用戶試用原型系統(tǒng)之后會提出許多修改意見,開發(fā)人員按照用戶的意見快速地修改原型系統(tǒng),然后再次請用戶試用……反反復(fù)復(fù)地改進(jìn),直到原型系統(tǒng)滿足用戶的要求。21快速原型模型適用于具有以下特征的軟件開發(fā)項(xiàng)目。已有產(chǎn)品或產(chǎn)品的原型(樣品),只需客戶化的工程項(xiàng)目簡單而熟悉的行業(yè)或領(lǐng)域有快速原型開發(fā)工具進(jìn)行產(chǎn)品移植或升級22快速原型模型01020304增量模型是把待開發(fā)的軟件系統(tǒng)模塊化,將每個模塊作為一個增量組件,從而分批次地分析、設(shè)計(jì)、編碼和測試這些增量組件。運(yùn)用增量模型的軟件開發(fā)過程是遞增式的過程。相對于瀑布模型而言,采用增量模型進(jìn)行開發(fā),開發(fā)人員不需要一次性地把整個軟件產(chǎn)品提交給用戶,而是可以分批次進(jìn)行提交。23增量模型增量模型的最大特點(diǎn)就是將待開發(fā)的軟件系統(tǒng)模塊化和組件化。基于這個特點(diǎn),增量模型具有以下優(yōu)點(diǎn)。將待開發(fā)的軟件系統(tǒng)模塊化,可以分批次地提交軟件產(chǎn)品,使用戶可以及時了解軟件項(xiàng)目的進(jìn)展。以組件為單位進(jìn)行開發(fā)降低了軟件開發(fā)的風(fēng)險。一個開發(fā)周期內(nèi)的錯誤不會影響到整個軟件系統(tǒng)。開發(fā)順序靈活。開發(fā)人員可以對構(gòu)件的實(shí)現(xiàn)順序進(jìn)行優(yōu)先級排序,先完成需求穩(wěn)定的核心組件。當(dāng)組件的優(yōu)先級發(fā)生變化時,還能及時地對實(shí)現(xiàn)順序進(jìn)行調(diào)整。增量模型的缺點(diǎn)是要求待開發(fā)的軟件系統(tǒng)可以被模塊化。如果待開發(fā)的軟件系統(tǒng)很難被模塊化,那么將會給增量開發(fā)帶來很多麻煩。24增量模型增量模型適用于具有以下特征的軟件開發(fā)項(xiàng)目。軟件產(chǎn)品可以分批次地進(jìn)行交付待開發(fā)的軟件系統(tǒng)能夠被模塊化軟件開發(fā)人員對應(yīng)用領(lǐng)域不熟悉,難以一次性地進(jìn)行系統(tǒng)開發(fā)項(xiàng)目管理人員把握全局的水平較高25增量模型螺旋模型26螺旋模型螺旋模型是一種用于風(fēng)險較大的大型軟件項(xiàng)目開發(fā)的過程模型。該模型將瀑布模型與快速原型模型結(jié)合起來,并且加入了這兩種模型忽略了的風(fēng)險分析。它把開發(fā)過程分為制定計(jì)劃、風(fēng)險分析、實(shí)施工程和客戶評估4種活動。螺旋模型適應(yīng)于風(fēng)險較大的大型軟件項(xiàng)目的開發(fā)。它的優(yōu)點(diǎn)是將風(fēng)險分析擴(kuò)展到各個階段中,大幅度降低了軟件開發(fā)的風(fēng)險。但是這種模型的控制和管理較為復(fù)雜,可操作性不強(qiáng),對項(xiàng)目管理人員的要求較高。27噴泉模型是一種過程模型,同時也支持面向?qū)ο箝_發(fā)。在面向?qū)ο蟮姆椒ㄖ校治瞿P秃驮O(shè)計(jì)模型采用相同的符號標(biāo)示體系,各階段之間沒有明顯的界限,而且常常重復(fù)、迭代地進(jìn)行?!皣娙币辉~體現(xiàn)了面向?qū)ο蠓椒ǖ牡蜔o間隙性。迭代是指各階段需要多次重復(fù),例如,分析和設(shè)計(jì)階段常常需要多次、重復(fù)進(jìn)行,以更好的實(shí)現(xiàn)需求。無間隙性是指各個階段之間沒有明顯的界限,并常常在時間上互相交叉,并行進(jìn)行。噴泉模型主要用于面向?qū)ο蟮能浖?xiàng)目,軟件的某個部分通常被重復(fù)多次,相關(guān)對象在每次迭代中隨之加入漸進(jìn)的軟件成分。噴泉模型28基于組件的開發(fā)模型基于組件的開發(fā)模型使用現(xiàn)有的組件以及系統(tǒng)框架進(jìn)行產(chǎn)品開發(fā)。在確定需求之后,開發(fā)人員開始從現(xiàn)有的組件庫中篩選合適的組件,并對組件功能進(jìn)行分析。在對組件分析之后,開發(fā)人員可能適當(dāng)修改需求來適應(yīng)現(xiàn)有組件,也可能修改組件或?qū)ふ倚碌慕M件。組件篩選完成之后,開發(fā)人員需要根據(jù)需求設(shè)計(jì)或使用現(xiàn)有的成熟開發(fā)框架復(fù)用這些組件,一些無法利用現(xiàn)有組件的地方,則需要進(jìn)行單獨(dú)的開發(fā),新開發(fā)的組件在經(jīng)歷時間考驗(yàn)之后也會加入到組件庫中。最后將所有組件集成在一起,進(jìn)行系統(tǒng)測試。29基于組件的開發(fā)模型充分的體現(xiàn)了軟件復(fù)用的思想,降低了開發(fā)成本和風(fēng)險,并加快了產(chǎn)品開發(fā)。統(tǒng)一軟件開發(fā)過程模型統(tǒng)一軟件開發(fā)過程(RationalUnifiedProcess,RUP)模型是基于UML(統(tǒng)一建模語言)的一種面向?qū)ο筌浖_發(fā)模型。它解決了螺旋模型的可操作性問題,采用迭代和增量遞進(jìn)的開發(fā)策略,并以用例驅(qū)動為特點(diǎn),集中了多個軟件開發(fā)模型的優(yōu)點(diǎn)。RUP模型是迭代模型的一種。RUP模型的示意圖如圖所示。30圖1中的縱軸以工作的內(nèi)容為組織方式,表現(xiàn)了軟件開發(fā)的工作流程。工作流程可以分為核心工作流程和核心支持工作流程。圖1中的橫軸以時間為組織方式,表現(xiàn)了軟件開發(fā)的4個階段:先啟、細(xì)化、構(gòu)建和產(chǎn)品化,每個階段中都可能包含若干次迭代。這4個階段按照順序依次進(jìn)行,每個階段結(jié)束時都有一個主要里程碑。階段與里程碑的關(guān)系如圖2所示。

圖1統(tǒng)一軟件開發(fā)過程模型圖2階段與里程碑的關(guān)系統(tǒng)一軟件開發(fā)過程模型統(tǒng)一軟件開發(fā)過程模型是基于迭代思想的軟件開發(fā)模型。采用迭代的軟件工程思想可以多次執(zhí)行各個工作流程,有利于更好地理解需求、設(shè)計(jì)出合理的系統(tǒng)架構(gòu),并最終交付一系列漸趨完善的成果??梢哉f,迭代是一次完整地經(jīng)過所有工作流程的過程?;诮y(tǒng)一軟件開發(fā)過程模型所構(gòu)造的軟件系統(tǒng),是由軟件構(gòu)件建造而成的。這些軟件構(gòu)件定義了明確的接口,相互連接成整個系統(tǒng)。在構(gòu)造軟件系統(tǒng)時,RUP采用架構(gòu)優(yōu)先的策略。軟件架構(gòu)概念包含了系統(tǒng)中最重要的靜態(tài)結(jié)構(gòu)和動態(tài)特征,架構(gòu)體現(xiàn)了系統(tǒng)的總體設(shè)計(jì)。架構(gòu)優(yōu)先開發(fā)的原則是RUP開發(fā)過程中至關(guān)重要的主題。統(tǒng)一軟件開發(fā)過程模型適用的范圍極為廣泛,但是對開發(fā)人員的素質(zhì)要求較高。32統(tǒng)一軟件開發(fā)過程模型幾種過程模型的對比序號模型名稱優(yōu)點(diǎn)缺點(diǎn)適用范圍1瀑布模型

簡單好學(xué)逆轉(zhuǎn)性差

需求不發(fā)生或發(fā)生很小變化2快速原型模型

開發(fā)速度快不利于創(chuàng)新

已有產(chǎn)品的原型3增量模型

可以分階段提交有時用戶不同意

系統(tǒng)可拆卸和組裝4螺旋模型將風(fēng)險分析拓展到各個階段中建設(shè)周期長龐大、復(fù)雜、高風(fēng)險項(xiàng)目5噴泉模型提高開發(fā)效率不利于項(xiàng)目的管理面向?qū)ο箝_發(fā)6統(tǒng)一軟件開發(fā)過程模型

需求可變風(fēng)險大

有高素質(zhì)軟件團(tuán)隊(duì)7基于組件的開發(fā)模型提高開發(fā)效率封裝的過程需要編寫大量代碼可組裝構(gòu)件的系統(tǒng)8敏捷模型提高開發(fā)效率不適合大團(tuán)隊(duì)、大項(xiàng)目小團(tuán)隊(duì),小項(xiàng)目331.瀑布模型與RUP模型之間的關(guān)系在宏觀上,瀑布模型是靜態(tài)模型,RUP模型是動態(tài)模型。RUP模型的每一次迭代,實(shí)際上都需要執(zhí)行一次瀑布模型,都要經(jīng)歷先啟、細(xì)化、構(gòu)建、產(chǎn)品化這4個階段,完成瀑布模型的整個過程。在微觀上,瀑布模型與RUP模型都是動態(tài)模型。瀑布模型與RUP模型在每一個開發(fā)階段(先啟、細(xì)化、構(gòu)建、產(chǎn)品化)的內(nèi)部,都需要有一個小小的迭代過程,只有進(jìn)行這樣的迭代,開發(fā)階段才能做得更好。瀑布模型中有RUP模型,反過來,RUP模型中也有瀑布模型。34幾種過程模型之間的關(guān)系2.瀑布模型與增量模型之間的關(guān)系增量模型是把待開發(fā)的軟件系統(tǒng)模塊化,將每個模塊作為一個增量組件,一個模塊接著一個模塊地進(jìn)行開發(fā),直到開發(fā)完所有的模塊。在開發(fā)每個模塊時,通常都是采用瀑布模型,從分析、設(shè)計(jì)、編碼和測試這幾個階段進(jìn)行開發(fā)。所以,增量模型中有瀑布模型,即宏觀上是增量模型,微觀上是瀑布模型。增量模型也體現(xiàn)了迭代思想,每增加一個模塊,就進(jìn)行一次迭代,執(zhí)行一次瀑布模型,所以,增量模型本質(zhì)上是迭代的。35幾種模型之間的關(guān)系3.瀑布模型與快速原型模型之間的關(guān)系快速原型的基本思想是快速建立一個能反映用戶主要需求的原型系統(tǒng),在此基礎(chǔ)上之后的每一次迭代,都可能會用到瀑布模型??焖僭湍P椭胁坏说P偷乃枷耄野似俨寄P偷乃枷?。36幾種模型之間的關(guān)系4.瀑布模型與螺旋模型之間的關(guān)系螺旋模型是瀑布模型和快速原型模型的結(jié)合,快速原型模型是原型模型的簡化,原型模型又是迭代模型和瀑布模型的組合,這些模型之間是相互依存的、彼此有關(guān)的。螺旋模型每一次順時針方向旋轉(zhuǎn),相當(dāng)于順時針方向迭代一次,都是走完一次瀑布模型,這就是瀑布模型與螺旋模型之間的關(guān)系。實(shí)際上,瀑布模型與噴泉模型也有關(guān)系。37幾種模型之間的關(guān)系

各種軟件過程模型反映了軟件生命周期表現(xiàn)形式的多樣性。在生命周期的不同階段也可采用不同的軟件過程模型。在具體的軟件開發(fā)過程中,可以選擇某種軟件過程模型,按照某種開發(fā)方法,使用相應(yīng)的工具進(jìn)行軟件開發(fā)。在選擇軟件過程模型時需要考慮以下幾點(diǎn)。符合軟件自身的特性,如規(guī)模、成本和復(fù)雜性等滿足軟件開發(fā)進(jìn)度的要求對軟件開發(fā)的風(fēng)險進(jìn)行預(yù)防和控制具有計(jì)算機(jī)輔助工具的支持與用戶和軟件開發(fā)人員的知識和技能相匹配有利于軟件開發(fā)的管理和控制38選擇軟件過程模型一般來說,結(jié)構(gòu)化方法和面向數(shù)據(jù)結(jié)構(gòu)方法可采用瀑布模型或增量模型進(jìn)行軟件開發(fā);而面向?qū)ο蠓椒刹捎每焖僭湍P汀娙P突騌UP模型進(jìn)行軟件開發(fā)。在實(shí)際的軟件開發(fā)過程中,選擇軟件過程模型并非是一成不變的,有時還需要針對具體的目標(biāo)要求進(jìn)行裁剪、修改等,從而構(gòu)成完全適合開發(fā)目標(biāo)要求的軟件過程模型?,F(xiàn)實(shí)中的軟件系統(tǒng)有各種各樣,軟件開發(fā)方式也千差萬別。對同一個問題,不同的開發(fā)組織可能選擇不同的開發(fā)模型(過程模型)去解決,開發(fā)出的軟件系統(tǒng)也不可能完全一樣,但是其基本目標(biāo)都是一致的,即應(yīng)該滿足用戶的基本功能需求,否則,再好的軟件系統(tǒng)也是沒有意義的。39選擇軟件過程模型40軟件過程模型實(shí)例第五節(jié)軟件開發(fā)方法1.5.1基本的軟件開發(fā)方法1.5.2開源軟件開發(fā)方法1.5.3群體化軟件開發(fā)方法1.5軟件開發(fā)方法1.5.1基本的軟件開發(fā)方法軟件開發(fā)方法是一種使用定義好的技術(shù)集及符號表示組織軟件生產(chǎn)的過程,它的目標(biāo)是在規(guī)定的時間和成本內(nèi),開發(fā)出符合用戶需求的高質(zhì)量的軟件。常見的軟件開發(fā)方法包括:1)結(jié)構(gòu)化方法2)面向數(shù)據(jù)結(jié)構(gòu)方法3)面向?qū)ο蠓椒?)形式化方法此外,軟件開發(fā)方法還有問題分析法、可視化開發(fā)方法等。421.5軟件開發(fā)方法1.5.2開源軟件開發(fā)方法開源軟件開發(fā)指的是由開源軟件項(xiàng)目開發(fā)開源軟件或類似原件的過程,其中,開源軟件的源代碼是公開可用的。這些軟件產(chǎn)品及其源代碼在開源許可下可用,它們常常被用于研究、更改和改進(jìn)其設(shè)計(jì)。開源項(xiàng)目可分為以下4類:1)各種各樣的軟件程序和庫2)發(fā)行版3)其他開源項(xiàng)目4)書籍或獨(dú)立文檔項(xiàng)目431.5軟件開發(fā)方法1.5.2開源軟件開發(fā)方法開源項(xiàng)目的工作方式:1)意識到項(xiàng)目需求的個人宣布了公開開發(fā)項(xiàng)目的意圖2)開發(fā)人員在代碼庫上工作,將其作為開源程序的第一個版本發(fā)布3)到期項(xiàng)目的源代碼向公眾發(fā)布4)一個完善的開源項(xiàng)目可以由感興趣的外部用戶派生441.5軟件開發(fā)方法1.5.3群體化軟件開發(fā)方法群體化軟件開發(fā)方法最大的特點(diǎn)是面向公眾。核心原則:1)開放2)平等3)共享4)全局行動相關(guān)模型:1)代碼與證據(jù)緊密耦合的可信軟件演化模型2)創(chuàng)作與生產(chǎn)緊密耦合的軟件開發(fā)過程模型3)協(xié)同、共享、監(jiān)控與分析緊密耦合的服務(wù)支撐模型451.5軟件開發(fā)方法1.5.3群體化軟件開發(fā)方法群體化軟件開發(fā)方法將軟件開發(fā)過程全面開放并快速迭代,不斷發(fā)布系統(tǒng)原型,吸引互聯(lián)網(wǎng)大眾體驗(yàn),借助互聯(lián)網(wǎng)平臺開展各種形式的交流、協(xié)同和共享,實(shí)現(xiàn)群體需求及創(chuàng)意的匯聚。軟件開發(fā)團(tuán)隊(duì)對大眾需求創(chuàng)意進(jìn)行識別審查,借助工業(yè)化生產(chǎn)的強(qiáng)組織模式來組織軟件開發(fā)過程,實(shí)現(xiàn)高質(zhì)量軟件產(chǎn)品的輸出。群體化軟件方法將大眾群體的軟件創(chuàng)作過程有機(jī)融入開發(fā)團(tuán)隊(duì)的軟件產(chǎn)品的輸出。群體化軟件方法將大眾群體的軟件創(chuàng)作過程有機(jī)融入開發(fā)團(tuán)隊(duì)的軟件生產(chǎn)流程中,能夠充分發(fā)揮大眾群體和開發(fā)團(tuán)隊(duì)在軟件開發(fā)過程中各自的優(yōu)勢,有效地支持網(wǎng)絡(luò)環(huán)境下的軟件開發(fā)。46基本的軟件開發(fā)方法對比471.5軟件開發(fā)方法序號方法名稱優(yōu)點(diǎn)缺點(diǎn)適用范圍1面向過程的方法

簡單好學(xué)不適應(yīng)窗口界面,維護(hù)困難

大型工程計(jì)算,實(shí)時數(shù)據(jù)跟蹤處理,各種自動化控制系統(tǒng),以及系統(tǒng)軟件實(shí)現(xiàn)等領(lǐng)域2面向?qū)ο蟮姆椒?/p>

功能強(qiáng)大,易于維護(hù)不易掌握

互聯(lián)網(wǎng)絡(luò)時代,完全由用戶交互控制程序執(zhí)行過程的應(yīng)用軟件和系統(tǒng)軟件的開發(fā)3面向數(shù)據(jù)的方法

通俗易懂不適于窗口界面

以關(guān)系數(shù)據(jù)庫管理系統(tǒng)為支撐環(huán)境的信息系統(tǒng)建設(shè)4形式化方法準(zhǔn)確、嚴(yán)謹(jǐn)難于上手和應(yīng)用對安全性要求極高,不容許出錯的軟件系統(tǒng),如軍事、醫(yī)藥、交通等領(lǐng)域第六節(jié)軟件工程工具1.6軟件工程工具軟件工程的工具對軟件工程中的過程和方法提供自動的或半自動的支持??梢詭椭浖_發(fā)人員方便、簡捷、高效地進(jìn)行軟件的分析、設(shè)計(jì)、開發(fā)、測試、和管理等工作。有效地利用工具軟維護(hù)件可以提高軟件開發(fā)的質(zhì)量,減少成本,縮短工期,方便軟件項(xiàng)目的管理。軟件工程工具通常有3種分類標(biāo)準(zhǔn):按照功能劃分按照支持的過程劃分按照支持的范圍劃分491.6軟件工程工具按功能劃分可視化建模工具程序開發(fā)工具自動化測試工具文檔編輯工具配置管理工具項(xiàng)目管理工具50按支持的過程劃分設(shè)計(jì)工具維護(hù)工具編程工具1.6軟件工程工具按支持的范圍劃分可以分為窄支持、較寬支持和一般支持工具。窄支持工具支持軟件工程過程中的特定任務(wù),一般將其稱之為工具。較寬支持支持特定的過程階段,一般由多個工具集合而成,稱之為工作臺較寬支持支持特定的過程階段,一般由多個工具集合而成,稱之為工作臺一般支持支持覆蓋軟件過程的全部或大部分階段,包含多個不同的工作臺,稱之為環(huán)境。511.6軟件工程工具在需求分析與系統(tǒng)設(shè)計(jì)階段,常用的CASE(計(jì)算機(jī)輔助軟件工程)工具有面向通用軟件設(shè)計(jì)的MicrosoftVisio、用于面向?qū)ο筌浖O(shè)計(jì)的RationalRose、用于數(shù)據(jù)庫設(shè)計(jì)的PowerDesigner,除此之外近幾年還出現(xiàn)了更加集成化的工具,如EnterpriseArchitect、RationalSoftwareArchitect和StarUML等。這些工具通過簡化UML圖的繪制工作,以及強(qiáng)大的模型轉(zhuǎn)換功能(諸如正向工程、反向工程、數(shù)據(jù)庫模型轉(zhuǎn)化等),大大簡化了設(shè)計(jì)以及從設(shè)計(jì)向編碼轉(zhuǎn)化的工作。521.6軟件工程工具名稱編程語言TurboPascalPascalDevC++C/C++CodeblocksC/C++CLionC/C++/C#VisualStudioC++/VB/C#/JavaScript等VisualStudioCodeC++/VB/C#/JavaScript等GoLandGoRubymineRubyWebstormJavasciptPHPstormPHPPycharmPythonEclipseJavaIntelliJIdeaJavaXCodeObjective-C/Swift在編碼階段,集成開發(fā)環(huán)境(IDE)通過提供代碼高亮、補(bǔ)全,內(nèi)置調(diào)試工具等功能,大大提高了效率。IDE主流的實(shí)例如表所示。531.6軟件工程工具名稱編程語言CUnitCCppUnitC++JUnitJAVANUit.NETPerlTestingPerlMocha/Should.jsNode,js內(nèi)置unittest模塊/pytestPythonPHPUnitPHP內(nèi)置Test::Unit模塊Ruby在測試階段,通常會使用自動化測試工具進(jìn)行測試。除單元測試工具外,較為流行的自動化測試工具包括C/S功能測試工具WinRunner,性能測試工具LoadRunner、Jmeter,測試管理工具TestDi

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論