




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
軟件項目開發(fā)綜合實踐主講人黃鋼
chapter__12教材:《軟件工程案例教程第2版》韓萬江等編著機(jī)械工業(yè)出版社參考書籍:《Java項目開發(fā)案例全程實錄》明日科技清華大學(xué)出版社《A項目開發(fā)案例全程實錄》明日科技清華大學(xué)出版社1.考核方式:大作業(yè)2.成績評定:總評成績構(gòu)成:平時考核(50)%;期中考核(0)%;期末考核(50)%平時成績構(gòu)成:考勤考紀(jì)(20)%;作業(yè)(20)%;實踐環(huán)節(jié)(60)%CompanyLogo07二月2023物電學(xué)院4第1章概論
§1軟件工程學(xué)的幾個基本概念一、軟件與特點主要介紹軟件與軟件工程的概念、軟件工程產(chǎn)生的背景
1.軟件及其組成軟件是計算機(jī)系統(tǒng)中與硬件對等的一部分,是程序及相關(guān)文檔資料的集合。因此,軟件有兩大組成要素:07二月2023物電學(xué)院5第1章概論
一是存儲介質(zhì)上的程序,它們是可執(zhí)行的并可產(chǎn)生用戶需要的結(jié)果;二是相關(guān)的文檔資料,它們既是軟件開發(fā)過程中的質(zhì)量保證,又是軟件使用與維護(hù)的依據(jù)。兩大組成要素詳述如下。07二月2023物電學(xué)院6第1章概論
(1)可執(zhí)行部分
應(yīng)用程序——是面向用戶的解決各種特定實際問題的程序。如工程管理或科學(xué)計算程序、信息管理程序及實時監(jiān)控程序等。
系統(tǒng)程序——是面向計算機(jī)系統(tǒng)的為應(yīng)用程序服務(wù)的程序的綜合,它們支撐應(yīng)用程序的運(yùn)行。如操作系統(tǒng)。07二月2023物電學(xué)院7第1章概論
(2)不可執(zhí)行部分
面向用戶的文檔——告訴用戶如何使用、維護(hù)和修改程序。如用戶手冊、操作手冊及程序維護(hù)手冊等。
面向開發(fā)方的文檔——提供軟件開發(fā)過程的質(zhì)量保證。如系統(tǒng)可行性論證報告、軟件計劃說明書、需求規(guī)格說明書、數(shù)據(jù)庫設(shè)計說明書,以及側(cè)試計劃、測試分析報告等。
項目越大,與其相關(guān)的文檔資料也越重要,從以后的介紹中可以看出,程序編寫在整個項目的開發(fā)過程中只占很少的一部分。07二月2023物電學(xué)院8第1章概論
2.軟件的特點(1)軟件是一種邏輯產(chǎn)品,它與物質(zhì)產(chǎn)品有很大的區(qū)別。軟件產(chǎn)品是看不見摸不著的,因而具有無形性。它是腦力勞動的結(jié)晶,總以程序和文檔的形式出現(xiàn),保存在計算機(jī)存儲器的磁盤和光盤介質(zhì)上,通過計算機(jī)的運(yùn)行才能體現(xiàn)它的功能和作用。07二月2023物電學(xué)院9第1章概論
(2)軟件產(chǎn)品的生產(chǎn)主要是研制。其成本主要體現(xiàn)在軟件的開發(fā)和研制上,軟件開發(fā)研究完成后,通過復(fù)制就產(chǎn)生了大量軟件產(chǎn)品。(3)軟件產(chǎn)品不會用壞,不存在磨損、消耗問題。(4)軟件產(chǎn)品的生產(chǎn)主要是腦力勞動,還未完全擺脫手工開發(fā)方式,大部分產(chǎn)品是“定做”的。07二月2023物電學(xué)院10第1章概論
(5)軟件的維護(hù)與硬件不同軟件從被提交給用戶使用開始。只存在維護(hù)問題,而不存在使用過程中被“用壞”的問題。而硬件則不同,用戶購買到硬件并開始使用硬件后,隨著時間的過去,硬件會因為各種原因(如灰塵、振動、高溫、磨損等)造成某些部件的失效,從而導(dǎo)致硬件被“用壞”了。軟件的使用過程中出錯的可能性與硬件不同。如圖是軟件使用過程中隨時間變化的錯誤率曲線的示意圖。07二月2023物電學(xué)院11第1章概論
(6)軟件的開發(fā)和運(yùn)行常常受到計算機(jī)系統(tǒng)的限制軟件的開發(fā)和運(yùn)行對計算機(jī)系統(tǒng)有著不同程度的依賴性,軟件不能完全擺脫硬件單獨活動。有的軟件這種依賴性大些,常常為某個型號的計算機(jī)所專用。有的軟件依賴某個操作系統(tǒng)。為了解除這種依賴性,在軟件開發(fā)中提出了軟件移植的問題。07二月2023物電學(xué)院12第1章概論
(7)軟件費用不斷增加,軟件成本相當(dāng)昂貴。軟件的研制工作需要投放大量的、復(fù)雜的、高強(qiáng)度的腦力勞動,它的成本非常高。在基于計算機(jī)的系統(tǒng)中,軟件的開銷大大超過硬件的開銷,如圖所示。
澄清:認(rèn)為“軟件開發(fā)就是寫程序并設(shè)法使之運(yùn)行”的錯誤的認(rèn)識07二月2023物電學(xué)院13第1章概論
軟件在開發(fā)時期首先需要對軟件進(jìn)行設(shè)計(通常又分為概要設(shè)計和詳細(xì)設(shè)計兩個階段),然后才能進(jìn)入編寫程序的階段,程序編寫完之后還必須經(jīng)過大量的測試工作(需要的工作量通常占軟件開發(fā)全部工作量的40%~50%)才能最終交付使用。所以,編寫程序只是軟件開發(fā)過程中的一個階段,而且在典型的軟件開發(fā)工程中,編寫程序所需的工作量只占軟件開發(fā)全部工作量的10%~20%。07二月2023物電學(xué)院14第1章概論二、軟件危機(jī)1.軟件的發(fā)展
自從20世紀(jì)40年代第一臺計算機(jī)誕生以來,隨著計算機(jī)科學(xué)與工程的發(fā)展,計算機(jī)軟件技術(shù)的發(fā)展大體可以分為程序設(shè)計,軟件系統(tǒng)與軟件工程三個階段。07二月2023物電學(xué)院15第1章概論2.軟件危機(jī)
20世紀(jì)60年代,伴隨著計算機(jī)系統(tǒng)制造技術(shù)的進(jìn)步,計算機(jī)應(yīng)用對于軟件的需求劇增。軟件規(guī)模功能日益復(fù)雜,需求急劇增大。計算機(jī)軟件開發(fā)從早期以個人活動為主的手〕作坊方式逐步轉(zhuǎn)到以程序員組形式為代表的集體開發(fā)為主:在這—’轉(zhuǎn)換過程中,出現(xiàn)了軟件小產(chǎn)與市場需求極不適應(yīng)的嚴(yán)重現(xiàn)象——軟件危機(jī)。07二月2023物電學(xué)院16第1章概論
軟件危機(jī)是指在計算機(jī)軟件的開發(fā)和維護(hù)過程中所遇到的一系列嚴(yán)重問題。這些問題絕不僅僅是不能正常運(yùn)行的軟件才具有的,實際上,幾乎所有軟件都不同程度地存在這些問題。
軟件危機(jī)主要有以下一些典型表現(xiàn)。P207二月2023物電學(xué)院17第1章概論
(1)軟件生產(chǎn)不能滿足日益增長的軟件需求,軟件生產(chǎn)率遠(yuǎn)低于硬件生產(chǎn)率和計算機(jī)應(yīng)用的增長,出現(xiàn)丁軟件供不匝求的局面。更為嚴(yán)重的是軟件生產(chǎn)效率隨軟件規(guī)模的增加和軟件復(fù)雜性的提高而急劇下降;軟件產(chǎn)品的“供不應(yīng)求”使得計算機(jī)硬件的巨大潛力遠(yuǎn)未發(fā)揮。07二月2023物電學(xué)院18第1章概論
(2)軟件生產(chǎn)率隨軟件規(guī)模與復(fù)雜性提高而下降,智力密集造成的人力成本增加,導(dǎo)致軟件成本在計算機(jī)系統(tǒng)成本構(gòu)成中比例急劇上升。早期的計算機(jī)系統(tǒng)中軟件成本通常不超過系統(tǒng)總成本的20%。到70年代約占40%一60%,80年代中以來,發(fā)達(dá)國家許多軟件產(chǎn)品成本占11算機(jī)系統(tǒng)總成本構(gòu)成的90%以上。07二月2023物電學(xué)院19第1章概論
(3)軟件開發(fā)進(jìn)度與成本失控,很難估計軟件開發(fā)的成本與進(jìn)度,通常是預(yù)算成倍突破,項目計劃進(jìn)度一再延期。軟件開發(fā)單位為趕進(jìn)度,控制成本往往只有降低軟件質(zhì)量:軟件開發(fā)陷入成本居高不下,軟件質(zhì)量無保證,用戶不滿,開發(fā)單位信譽(yù)降低的怪圈中。07二月2023物電學(xué)院20第1章概論
(4)軟件系統(tǒng)實現(xiàn)的功能與實際需求不符。軟件開發(fā)人員對用戶需求缺乏深入的理解往往急于編程。閉門造車,最后實現(xiàn)的系統(tǒng)與用戶需求相去太遠(yuǎn)。07二月2023物電學(xué)院21第1章概論
(5)交付的軟件難以維護(hù)。程序中的錯誤很難改正,要想使軟件適應(yīng)新的運(yùn)行環(huán)境幾乎不可能,軟件使用過程中不能增加用戶需要的新功能?!翱芍貜?fù)使用的軟件”還是‘個人們努力追求的目標(biāo),大量的軟件人員在重復(fù)開發(fā)基本類似的軟件。07二月2023物電學(xué)院22第1章概論
(6)軟件文檔配置沒有受到足夠的重視。軟件文檔包括開發(fā)過程各階段的說明書,數(shù)據(jù)詞典,程序清單,軟件使用、維護(hù)手冊,軟件測試報告及測試用例。這些軟件文檔的不規(guī)范,不健全是造成軟件開發(fā)進(jìn)程成本不可控制,軟件維護(hù)、管理、交流困難的重要原因。軟件質(zhì)量缺乏度量依據(jù)。07二月2023物電學(xué)院23第1章概論
軟件危機(jī)的表現(xiàn)實際上是軟件開發(fā)與維護(hù)中存在的具有共性的種種問題。近30年來,為解決這些問題,計算機(jī)科學(xué)家和軟件產(chǎn)業(yè)從業(yè)者已經(jīng)做出了巨大的努力。但許多問題遠(yuǎn)未解決,有些問題的嚴(yán)重性得到部分緩解,新的問題又不斷出現(xiàn)。07二月2023物電學(xué)院24第1章概論
3.產(chǎn)生軟件危機(jī)的原因軟件危機(jī)產(chǎn)生的原因可以從兩個方面加以認(rèn)識:一是軟件產(chǎn)品的固有特性;二是軟件專業(yè)人員自身的缺陷。07二月2023物電學(xué)院25第1章概論
軟件的不可見性是軟件產(chǎn)品的固有特點之一。與硬件產(chǎn)品不同,軟件是計算機(jī)系統(tǒng)中的邏輯部件。軟件開發(fā)過程中,在程序代碼運(yùn)行之前,開發(fā)工作的質(zhì)量、進(jìn)度難以度量。最終軟件產(chǎn)品的使用價值是在軟件運(yùn)行過程中體現(xiàn)出來的。而且軟件運(yùn)行沒有“磨損”,這使得軟件產(chǎn)品可靠性難以度量,故障隱蔽性強(qiáng)。對原有故障的修改可能導(dǎo)致新的錯誤。07二月2023物電學(xué)院26第1章概論
軟件產(chǎn)品的固有特點之二是軟件的規(guī)模與邏輯復(fù)雜性?,F(xiàn)代軟件產(chǎn)品往往規(guī)模龐大,邏輯結(jié)構(gòu)十分復(fù)雜:隨著計算機(jī)應(yīng)用的日益廣泛,需要開發(fā)的軟件規(guī)模日益龐大,軟件結(jié)構(gòu)也日益復(fù)雜。1968年美國航空公司訂票系統(tǒng)達(dá)到30萬條指令;IBM360OS第16版達(dá)到100萬條指令,花了5000個人年;1973年美國阿波羅計劃達(dá)到1千萬條指令。07二月2023物電學(xué)院27第1章概論從軟件開發(fā)管理角度看,軟件生產(chǎn)率常隨軟件規(guī)模和復(fù)雜性的增大而下降。也就是說,如果—個程序員一年可以開發(fā)1萬條代碼,則一個400萬條代碼的軟件系統(tǒng)絕對不是集中400個人在一年內(nèi)可以完成的,軟件規(guī)模與其邏輯復(fù)雜度通常并不是線性比關(guān)系。07二月2023物電學(xué)院28第1章概論
當(dāng)多人合作完成一個系統(tǒng)時,作為一個工程項目,參與人員的組織與信息交流、工作質(zhì)量與進(jìn)度控制等更是一個極復(fù)雜的問題。就目前的軟件技術(shù)水平而言,軟件開發(fā)工作量隨軟件規(guī)模呈幾何級數(shù)上升。07二月2023物電學(xué)院29
開發(fā)工具落后,生產(chǎn)率提高緩慢。軟件開發(fā)工具過于原始,沒有出現(xiàn)高效率的開發(fā)工具,因而軟件生產(chǎn)率低下。在1960~1980年期間,計算機(jī)硬件的生產(chǎn)由于采用計算機(jī)輔助設(shè)計、自動生產(chǎn)線等先進(jìn)工具,使硬件生產(chǎn)率提高了100萬倍,而軟件生產(chǎn)率只提高了2倍,相差十分懸殊。07二月2023物電學(xué)院30第1章概論
軟件開發(fā)人員自身的缺陷主要包括:相當(dāng)數(shù)量的軟件開發(fā)人員沒有掌握正確的軟件開發(fā)方法學(xué),對于軟件開發(fā)與維護(hù)存在許多模糊、錯誤認(rèn)識。對于軟件開發(fā)的典型錯誤隊識有:只要初步了解總目標(biāo),就可以編寫程序.細(xì)節(jié)在編程中解決;軟件更改容易,因此用戶需求可以在程序設(shè)計過程中逐步補(bǔ)充;程序是軟件的主要部分,文檔是可有可無的;07二月2023物電學(xué)院31第1章概論
軟件開發(fā)依賴于開發(fā)人員的創(chuàng)造力與想象力,程序設(shè)計是一門藝術(shù),因此軟件設(shè)計無章可循;一旦軟件能夠運(yùn)行,維護(hù)是不需要的,或者說是極少的。07二月2023物電學(xué)院32第1章概論
這些錯誤認(rèn)識與方法的形成可以歸于軟件人員沒有掌握恰當(dāng)?shù)墓こ袒椒?,忽視問題定義與分析,急于求成,閉門造車。一個軟件錯誤修改的代價隨該錯誤發(fā)生與修改滯后的時間關(guān)系極大。一個早期發(fā)生的錯誤修改越晚,代價越大(如圖1所示)。事實上,許多軟件工程項目失敗的主要原因就是對問題定義、用戶要求沒有認(rèn)真的分析、在沒有弄清用戶到底要求什么時便開始編程。這如同一個大廈的建立沒有地基,最終必然垮臺。07二月2023物電學(xué)院33第1章概論
4.消除軟件危機(jī)的途徑P4為了消除軟件危機(jī),首先應(yīng)該對計算機(jī)軟件有一個正確的認(rèn)識。應(yīng)該徹底消除在計算機(jī)系統(tǒng)早期發(fā)展階段形成的“軟件就是程序”的錯誤觀念。一個軟件必須由一個完整的配置組成,事實上,軟件是程序、數(shù)據(jù)及相關(guān)文檔的完整集合。其中,程序是能夠完成預(yù)定功能和性能的可執(zhí)行的指令序列;數(shù)據(jù)是使程序能夠適當(dāng)?shù)靥幚硇畔⒌臄?shù)據(jù)結(jié)構(gòu);文檔是開發(fā)、使用和維護(hù)程序所需要的圖文資料。07二月2023物電學(xué)院34第1章概論三、軟件工程
為了克服軟件危機(jī),人們從其他產(chǎn)業(yè)的工程化生產(chǎn)得到啟示,于是在1968年北大西洋公約組織的工作會議上首先提出“軟件工程”的概念,提出要用工程化的思想來開發(fā)軟件。從此,軟件生產(chǎn)進(jìn)入了軟件工程時代。07二月2023物電學(xué)院35第1章概論
1.軟件工程的定義
軟件工程是用科學(xué)知識和技術(shù)原理來定義、開發(fā)、維護(hù)軟件的一門學(xué)科。該定義說明了軟件工程是計算機(jī)科學(xué)中的一個分支,其主要思想是在軟件生產(chǎn)中用工程化的方法代替?zhèn)鹘y(tǒng)手工方法。工程化的方法借用了傳統(tǒng)的工程設(shè)計原理的基本思想,采用了若干科學(xué)的、現(xiàn)代化的方法技術(shù)來開發(fā)軟件。這種工程化的思想(軟件工程的基本原理)貫穿到需求分析、設(shè)計、實現(xiàn),直到維護(hù)的整個過程。07二月2023物電學(xué)院36第1章概論2.軟件工程的性質(zhì)軟件工程是涉及計算機(jī)科學(xué)、工程科學(xué)、管理科學(xué)、數(shù)學(xué)等領(lǐng)域的一門綜合性的交叉學(xué)科計算機(jī)科學(xué)中的研究成果均可用于軟件工程,但計算機(jī)科學(xué)著重于原理和理論,而軟件工程著重于如何建造一個軟件系統(tǒng)。07二月2023物電學(xué)院37第1章概論軟件工程要用工程科學(xué)中的觀點來進(jìn)行費用估算、制定進(jìn)度、制定計劃和方案;要用管理科學(xué)中的方法和原理進(jìn)行軟件生產(chǎn)的管理;要用數(shù)學(xué)的方法建立軟件開發(fā)中的各種模型和各種算法,如可靠性模型,明用戶需求的形式化模型等。07二月2023物電學(xué)院38第1章概論
3.軟件工程的目標(biāo)軟件工程是一門工程性學(xué)科,目的是成功地建造一個大型軟件系統(tǒng)。所謂成功,是要達(dá)到以下幾個目標(biāo):付出較低的開發(fā)成本;達(dá)到要求的軟件功能;取得較好的軟件性能;開發(fā)的軟件易于移植;需要較低的維護(hù)費用;能按進(jìn)完成開發(fā)任務(wù),及進(jìn)交付使用;開發(fā)的軟件可靠性高。07二月2023物電學(xué)院39第1章概論
4.軟件工程的內(nèi)容軟件工程研究的主要內(nèi)容是指軟件開發(fā)技術(shù)和軟件開發(fā)管理兩個方面。在軟件開發(fā)技術(shù)中,它主要研究軟件開發(fā)方法、軟件開發(fā)過程、軟件開發(fā)工具和環(huán)境。在軟件開發(fā)管理中,它主要是研究軟件管理學(xué)、軟件經(jīng)濟(jì)學(xué)和軟件心理學(xué)等。07二月2023物電學(xué)院40第1章概論
5.軟件工程面臨的問題軟件工程有許多需要解決的棘手問題,如軟件費用、軟件可靠性、軟件可維護(hù)性、軟件生產(chǎn)率和軟件重用等。chapter__141軟件項目過程顧客
顧客需求滿意產(chǎn)品輸入
輸出產(chǎn)品實現(xiàn)?chapter__142軟件工程三段論軟件開發(fā)項目管理過程改進(jìn)chapter__143軟件開發(fā)路線圖chapter__144軟件項目管理
管理過程是項目管理者規(guī)劃軟件開發(fā)、控制軟件開發(fā)的過程,相當(dāng)于生產(chǎn)線上的管理過程,管理過程是伴隨開發(fā)過程進(jìn)行的過程。
chapter__145軟件項目管理路線圖
配置管理計劃
合同計劃
風(fēng)險計劃
溝通計劃
質(zhì)量計劃
成本計劃
時間計劃
集成計劃
范圍計劃
項目結(jié)束
項目執(zhí)行控制
項目計劃
項目初始
人力計劃
chapter__146軟件過程改進(jìn)
過程改進(jìn)相當(dāng)于對軟件開發(fā)過程和軟件管理過程的“工藝流程”進(jìn)行管理和改進(jìn),如果沒有好的工藝生產(chǎn)不出好的產(chǎn)品,它包括對開發(fā)過程和管理過程的定義和改進(jìn)。chapter__147軟件過程改進(jìn)路線圖啟動診斷建立實施評估07二月2023物電學(xué)院48第1章概論§2軟件生命(生存)周期
軟件生存周期是借用工程中產(chǎn)品生存周期的概念而得來的。引入軟件生存周期概念,對于軟件生產(chǎn)的管理、進(jìn)度控制有著非常重要的意義,可使軟件生產(chǎn)有相應(yīng)的模式、相應(yīng)的流程、相應(yīng)的工序和步驟。07二月2023物電學(xué)院49第1章概論軟件生存周期是指一個軟件從提出開發(fā)要求開始直到該軟件報廢為止的整個時期。把整個生存周期劃分為若干階段,使得每個階段有明確的任務(wù),把規(guī)模大、結(jié)構(gòu)復(fù)雜和管理復(fù)雜的軟件開發(fā)變得容易控制和管理。07二月2023物電學(xué)院50第1章概論
軟件生存周期的各階段有不同的劃分。軟件規(guī)模、種類、開發(fā)方式、開發(fā)環(huán)境以及開發(fā)使用的方法都影響軟件生存周期的劃分。在劃分軟件生存周期的階段時,應(yīng)遵循的基本原則是各階段的任務(wù)應(yīng)盡可能相對獨立,同一階段各項任務(wù)的性質(zhì)盡可能相同,從而降低每個階段任務(wù)的復(fù)雜程度,簡化不同階段之間的聯(lián)系,有利于軟件項目開發(fā)的組織管理。07二月2023物電學(xué)院51第1章概論
通常,軟件生存周期包括問題定義、可行性分析和項目開發(fā)計劃、需求分析、概要(總體)設(shè)計、詳細(xì)設(shè)計、編碼、測試(單元和綜合)、維護(hù)等活動(P12-14),可以將這些活動以適當(dāng)方式分配到不同階段去完成。07二月2023物電學(xué)院52第1章概論
§3軟件生存周期模型根據(jù)軟件生產(chǎn)工程化的需要,生存周期的劃分也有所不同,從而形成了不同的軟件生存周期模型,或稱軟件開發(fā)模型。目前有若干種軟件生存周期模型,如瀑布模型、快速原型模型、增量模型、螺旋模型、噴泉模型、變換模型和基于知識的模型等。07二月2023物電學(xué)院53第1章概論一、瀑布模型瀑布模型遵循軟件生存周期的劃分,明確規(guī)定每個階段的任務(wù)。各階段的工作順序展開:恰如奔流不息逐級而下的瀑布,如圖1—2所示。07二月2023物電學(xué)院54第1章概論瀑布模型的特點
(1)軟件生存周期的順序性。只有前一階段工作完成以后,后一階段的工作才能開始,前一階段的輸出文檔,就是后一階段的輸入文檔。只有前一階段有正確的輸出,后一階段才可能有正確的結(jié)果。如果在生存周期的某一階段出現(xiàn)了錯誤,往往要追溯到在它之前的一些階段。瀑布模型開發(fā)適合于在軟件需求比較明確,開發(fā)技術(shù)比較成熟,工程管理比較嚴(yán)格的場合下使用。07二月2023物電學(xué)院55第1章概論
(2)盡可能推遲軟件的編碼。程序設(shè)計也稱為編碼。實踐表明,大、中型軟件編碼開始得越早,完成所需的時間反而越長。瀑布模型在編碼之前安排了需求分析、總體設(shè)計、詳細(xì)設(shè)計等階段,從而把邏輯設(shè)計和編碼清楚地劃分開來,盡可能推遲程序編碼階段。07二月2023物電學(xué)院56第1章概論
(3)保證質(zhì)量。為了保證質(zhì)量,瀑布模型軟件開發(fā)在每個階段都要完成規(guī)定的文檔,每個階段都要對已完成的文檔進(jìn)行復(fù)審,以便及早發(fā)現(xiàn)隱患,排除故障。本書以瀑布模型為典型開發(fā)模型,介紹各階段工作的具體方法、步驟和工具,其他模型可以參照執(zhí)行。chapter__157WaterFallmodel適合的項目在項目開始前,項目的需求很明確在項目開始前,解決方案也很明確類似的項目如:公司的財務(wù)系統(tǒng)庫存管理系統(tǒng)短期項目07二月2023物電學(xué)院58第1章概論瀑布模型的局限性對于當(dāng)前的大型軟件項目,特別是應(yīng)用軟件項目,在開發(fā)前期用戶常常對系統(tǒng)只有一個模糊的想法,很難明確確定和表達(dá)對系統(tǒng)的全面要求。經(jīng)過詳細(xì)的要求定義,盡管可得到一份較好的需求說明,但卻很難期望該需求說明能將系統(tǒng)的一切都描述得完整、準(zhǔn)確、一致并與實際環(huán)境相符,07二月2023物電學(xué)院59第1章概論
很難通過它在邏輯上推斷出系統(tǒng)的運(yùn)行效果,并以此達(dá)到各類人員對系統(tǒng)的共同理解。因此,要保證每個階段特別是定義階段是正確的、完整的。這是屬于理想情況,實際上是做不到或很難做到的。07二月2023物電學(xué)院60第1章概論作為整體開發(fā)的瀑布模型,由于不支持軟件產(chǎn)品的演化,對開發(fā)過程中的一些很難發(fā)現(xiàn)的錯誤只有在最終產(chǎn)品運(yùn)行時才能發(fā)現(xiàn)。瀑布模型缺乏對付變化的機(jī)制,所以最終產(chǎn)品將難以維護(hù)。20多年來瀑布模型得到了廣泛的應(yīng)用。它在消除非結(jié)構(gòu)化軟件、軟件的復(fù)雜性、促進(jìn)軟件開發(fā)工程化方面起了很大作用。07二月2023物電學(xué)院61第1章概論但是,瀑布模型在大量的軟件開發(fā)實踐中也逐漸暴露出它的嚴(yán)重缺點。它是一種理想的線性開發(fā)模式,缺乏靈活性,特別是無法解決軟件需求不明確或不準(zhǔn)確的問題。這些缺點對軟件開發(fā)帶來了嚴(yán)重影響,最終可能導(dǎo)致開發(fā)出的軟件并不是用戶真正需要的軟件,并且這一點在開發(fā)過程完成后才能發(fā)現(xiàn),已為時太晚。07二月2023物電學(xué)院62第1章概論二、快速原型模型所謂快速原型是快速建立起來的可以在計算機(jī)上運(yùn)行的程序,它所能完成的功能往往是最終產(chǎn)品能完成的功能的一個子集。如圖1.4所示chapter__163Prototype模型適合的項目在項目開始前,項目的需求不明確需要減少項目需求的不確定性類似的項目如:確定顯示界面第一次開發(fā)的產(chǎn)品,驗證可行性07二月2023物電學(xué)院64第1章概論三、增量模型瀑布模型是一種整體開發(fā)模型。在開發(fā)過程中,用戶看不到軟件是什么樣子,只有開發(fā)完成后,整個軟件才全部展現(xiàn)現(xiàn)在用戶面前。這時如果用戶發(fā)現(xiàn)有不滿意的地方,為時已晚。07二月2023物電學(xué)院65第1章概論增量模型是一種非整體開發(fā)的模型。軟件在該模型中是“逐漸”開發(fā)出來的,開發(fā)出一部分,向用戶展示一部分,可讓用戶及早看到部分軟件,及早發(fā)現(xiàn)問題?;蛘呦乳_發(fā)一個“原型”軟件,完成部分主要功能,展示給用戶并征求意見,然后逐步完善,最終獲得滿意的軟件產(chǎn)品。該模型具有較大的靈活性,適合于軟件需求不明確、設(shè)計方案有一定風(fēng)險的軟件項目。增量模型如圖所示。chapter__166IncrementalModel適合的項目項目開始,明確了需求的大部分,但是需求可能會發(fā)生變化對于市場和用戶把握不是很準(zhǔn),需要逐步了解對于有龐大和復(fù)雜功能的系統(tǒng)進(jìn)行功能改進(jìn),就需要一步一步實施的。增量模型實例07二月2023物電學(xué)院67第1章概論四、螺旋模型(SpiralModel,SM)
瀑布模型要求在軟件開發(fā)的初期就完全確定軟件的需求,這在很多情況下往往是做不到的。螺旋模型試圖克服瀑布模型的這一不足。SM把軟件開發(fā)過程安排為逐步細(xì)化的螺旋周期序列,每經(jīng)歷一個周期,系統(tǒng)就細(xì)化和完善一些。SM每一蛹旋周期由下列6個步驟組成(見圖1—5)。chapter__168SpiralModel螺旋模型沿著螺線旋轉(zhuǎn),在四個象限上分別表達(dá)了四個方面的活動,即:制定計劃──確定軟件目標(biāo),需求和選定實施方案,弄清項目開發(fā)的限制條件風(fēng)險分析──評估所選方案,考慮如何識別和消除風(fēng)險實施工程──實施軟件開發(fā),編碼,測試等客戶評估──評價開發(fā)工作,提出修正建議,規(guī)劃下期任務(wù)chapter__169SpiralModel適合的項目風(fēng)險是主要的制約因素不確定因素和風(fēng)險限制了項目進(jìn)度用戶對自己的需求也不是很明確需要對一些基本的概念進(jìn)行驗證可能發(fā)生一些重大的變更項目規(guī)模很大項目中采用了新技術(shù)
實例07二月2023物電學(xué)院70第1章概論07二月2023物電學(xué)院71第1章概論07二月2023物電學(xué)院72第1章概論07二月2023物電學(xué)院73第1章概論07二月2023物電學(xué)院74第1章概論07二月2023物電學(xué)院75第1章概論07二月2023物電學(xué)院76第1章概論07二月2023物電學(xué)院77第1章概論07二月2023物電學(xué)院78第1章概論07二月2023物電學(xué)院79第1章概論07二月2023物電學(xué)院80第1章概論07二月2023物電學(xué)院81第1章概論07二月2023物電學(xué)院82第1章概論07二月2023物電學(xué)院83第1章概論07二月2023物電學(xué)院84第1章概論07二月2023物電學(xué)院85第1章概論07二月2023物電學(xué)院86第1章概論07二月2023物電學(xué)院87第1章概論07二月2023物電學(xué)院88第1章概論07二月2023物電學(xué)院89第1章概論07二月2023物電學(xué)院90第1章概論07二月2023物電學(xué)院91第1章概論07二月2023物電學(xué)院92第1章概論07二月2023物電學(xué)院93第1章概論07二月2023物電學(xué)院94軟件使用過程中隨時間變化的錯誤率曲線07二月2023物電學(xué)院95軟件和硬件成本對比07二月2023物電學(xué)院96程序設(shè)計階段
程序設(shè)N階段:60年代初以前,計算機(jī)軟件是計算機(jī)系統(tǒng)硬件的附屬物。那時人們認(rèn)為軟件就是系統(tǒng)或者用戶程序。所謂系統(tǒng)程序主要指附著于硬件的輸人輸出例程庫和程序調(diào)試器等簡單的系統(tǒng)維護(hù)工具程序。所謂用戶程序通常是為求解某個特定科學(xué)、工程計算或者某個具體數(shù)據(jù)處理要求的單一程序。這些程序規(guī)模不大,結(jié)構(gòu)簡單,功能單一,許多情況下是誰編制誰使用.程序設(shè)計活動高度個人化、技藝化。07二月2023物電學(xué)院97軟件系統(tǒng)階段
軟件系統(tǒng)階段:從60年代到70年代初,計算機(jī)經(jīng)歷了從電子管到晶體管,到集成電路的躍遷;為計算機(jī)技術(shù)能夠在經(jīng)濟(jì)、軍事發(fā)展的關(guān)鍵領(lǐng)域中應(yīng)用提供了堅實的物質(zhì)基礎(chǔ)。隨著硬件技術(shù)的發(fā)展,計算機(jī)軟件規(guī)模日益增大,其結(jié)構(gòu)、功能越來越復(fù)雜。計算機(jī)高級語言大量出現(xiàn);操作系統(tǒng)引人了多道程序、多用戶分時與實時處理概念;數(shù)據(jù)庫系統(tǒng)開始出現(xiàn)。大型商業(yè)金融數(shù)據(jù)處理.大型企業(yè)生產(chǎn)管理與過程控制,以軍備競賽、空間科學(xué)為代表所要求的數(shù)據(jù)處理、復(fù)雜計算、控制系統(tǒng),這些都要求裝備大型復(fù)雜的計算機(jī)系統(tǒng)。這些計算機(jī)系統(tǒng)不僅要求最新的計算機(jī)硬件配置,同時也要求“大程序系統(tǒng)”為特征的軟件支持。07二月2023物電學(xué)院98軟件系統(tǒng)階段
“大程序系統(tǒng)”需求的急劇增長使軟件技術(shù)從方法、開發(fā)效串等方面遠(yuǎn)不能適應(yīng)。隨著軟件需求的規(guī)模、數(shù)量劇增和交付要求迫切,“大程序系統(tǒng)設(shè)計”已經(jīng)成為工程項目,其開發(fā)過程要求多人參與,分工協(xié)作,嚴(yán)密組織。同時程序設(shè)計與使用逐步分離,軟件開發(fā)開始專業(yè)化,“大程序設(shè)計”再也不是個人的技藝活動了。軟件開發(fā)的組織要求,應(yīng)用需求對軟件系統(tǒng)質(zhì)量、可靠性的要求與程序設(shè)計個體化,非物化特征形成尖銳矛盾,出現(xiàn)了嚴(yán)重的”軟件危機(jī)”。07二月2023物電學(xué)院99軟件系統(tǒng)階段整個60年代,計算機(jī)科學(xué)家圍繞著程序設(shè)計方法,軟件開發(fā)模型,軟件開發(fā)支持工具與環(huán)境,軟件開發(fā)方法學(xué)開展了范圍廣泛的研究。為克服軟件危機(jī),就若干問題進(jìn)行了深入討論并取得如下主要成果:07二月2023物電學(xué)院100軟件系統(tǒng)階段提出了結(jié)構(gòu)化設(shè)計方法學(xué)并設(shè)計了以PMd語言為代表的一批結(jié)構(gòu)化程序設(shè)計語言;提出了軟件生命周期概念和軟件開發(fā)的瀑布型模型;明確了文檔是軟件產(chǎn)品的組成部分,對軟件開發(fā)各階段的文檔規(guī)格進(jìn)行了初步規(guī)范;提出了軟件可靠性模型,質(zhì)量控制的基本概念;開發(fā)了一些支持工具軟件。1968年北大西洋公約組織有關(guān)計算機(jī)科學(xué)的一次國際會議上正式使用了“軟件工程”這個名詞,正式宣告軟件工程這一新興工程學(xué)科的誕生。07二月2023物電學(xué)院101軟件工程階段從70年代初至今,隨著超人規(guī)模集成電路技術(shù)的迅猛發(fā)展,微型計算機(jī)的出現(xiàn),計算機(jī)應(yīng)用技術(shù)已經(jīng)深入到社會生活的各個領(lǐng)域。在這階段,軟件開發(fā)逐漸專業(yè)化。以軟件產(chǎn)品系列化.工程化,標(biāo)淮化為特征的軟件產(chǎn)業(yè)正在發(fā)展為2l世紀(jì)知識經(jīng)濟(jì)的支柱產(chǎn)業(yè)之一??鐕笮蛙浖镜某霈F(xiàn),軟件產(chǎn)品不再依附于硬件,軟件工程規(guī)范的標(biāo)準(zhǔn)化趨勢,軟件復(fù)用與軟件生產(chǎn)管理技術(shù)的研究與實踐.面向?qū)ο蠓椒▽W(xué)的發(fā)展等,使得軟件工程學(xué)在解決軟件危機(jī)問題的過程中不斷地發(fā)展、成熟,共主要成果包括實現(xiàn)丁以C++為代表的面向?qū)ο蟮恼Z言和軟件開發(fā)環(huán)境系統(tǒng),計算機(jī)輔助軟件工程(CASE)的研究與實踐,各類只有一定自動化程度的CASE產(chǎn)品的出現(xiàn)等。07二月2023物電學(xué)院102圖1錯誤修改的代價07二月2023物電學(xué)院103軟件工程的基本原理用分階段的生命周期計劃嚴(yán)格管理堅持進(jìn)行階段評審實行嚴(yán)格的產(chǎn)品控制采用現(xiàn)代程序設(shè)計技術(shù)結(jié)果應(yīng)能清楚地審查開發(fā)小組的人員應(yīng)該少而精承認(rèn)不斷改進(jìn)軟件工程實踐的必要性07二月2023物電學(xué)院104軟件費用由于軟件生產(chǎn)基本上仍處于手工狀態(tài),軟件是知識高度密集的技術(shù)的綜合產(chǎn)物,人力資源遠(yuǎn)遠(yuǎn)不能適應(yīng)這種迅速增長的軟件社會要求,所以軟件費用上升的勢頭必然還將繼續(xù)下去。07二月2023物電學(xué)院105軟件可靠性軟件可靠性是指軟件系統(tǒng)能否在既定的環(huán)境條件下運(yùn)行燕實現(xiàn)所期望的結(jié)果。在軟件開發(fā)中,通常要花費40%的代價進(jìn)行測試和排錯,即使這樣還不能保證以后不再發(fā)生錯誤,為了提高軟件可靠性,就要付出足夠的代價。07二月2023物電學(xué)院106軟件可維護(hù)性統(tǒng)計數(shù)據(jù)表明,軟件的維護(hù)費用占整個軟件系統(tǒng)費用的2/3,而軟件開發(fā)費用只占1/3。軟件維護(hù)之所以有如此大的花費,是因為已經(jīng)運(yùn)行的軟件還需排除隱含的錯誤,新增加的功能要加入進(jìn)去,維護(hù)工作又是非常困難的,效率又是非常低下的。因此,如何提高軟件的可維護(hù)性,減少軟件維護(hù)的工作量,也是軟件工程面臨的主要問題之一。07二月2023物電學(xué)院107軟件生產(chǎn)率計算機(jī)的廣泛應(yīng)用使得軟件的需求量大幅度上升,而軟件的生產(chǎn)又處于手工開發(fā)的狀態(tài),軟件生產(chǎn)率低下,使得各國都感到軟件開發(fā)人員不足。這種趨勢將仍舊繼續(xù)下去。所以,如何提高軟件生產(chǎn)率,是軟件工程又一重要問題。07二月2023物電學(xué)院108軟件重用提高軟件的重用性,對于提高軟件生產(chǎn)率、降低軟件成本有著重要意義。當(dāng)前的軟件開發(fā)存在著大量的、重復(fù)的勞動,耗費了不少的人力資源。軟件的重用有各種級別,軟件規(guī)格說明、軟件模塊、軟件代碼、軟件文檔等都可以是軟件重用的單位。軟件重用是軟件工程中的一個重要研究課題,軟件重用的理論和技術(shù)至今尚未徹底解決。07二月2023物電學(xué)院109問題定義問題定義階段必須回答的關(guān)鍵問題是:“要解決的問題是什么?”如果不知道問題是什么就試圖解決這個問題,顯然是盲目的,只會白白浪費時間和金錢,最終得出的結(jié)果很可能是毫無意義的。07二月2023物電學(xué)院110可行性研究可行性分析和項目開發(fā)計劃階段必須要回答的問題是“要解決的問題是什么”。該問題有行得通的解決辦法碼?若有解決問題的辦法,則需要多少費用?需要多少資源?需要多少時間?要回答這些問題,就要進(jìn)行問題定義、可行性分析,制定項目開發(fā)計劃。07二月2023物電學(xué)院111可行性研究用戶提出一個軟件開發(fā)要求后,系統(tǒng)分析員首先要解決該軟件項目的性質(zhì)是什么,它是數(shù)據(jù)處理問題還是實時控制問題,它是科學(xué)計算問題還是人工智能問題等。還要明確該項目的目標(biāo)是什么,該項目的規(guī)模如何等。07二月2023物電學(xué)院112可行性研究通過系統(tǒng)分析員對用戶和使用部門負(fù)責(zé)人的訪問和調(diào)查、開會討論,就可解決這些問題。在清楚了問題的性質(zhì)、目標(biāo)、規(guī)模后,還要確定該問題有沒有行得通的解決辦法。最后要提交可行性研究報告。經(jīng)過可行性分析后,確定該問題值得去解決,然后制定項目開發(fā)計劃。07二月2023物電學(xué)院113需求分析需求分析階段的任務(wù)不是具體地解決問題,而是準(zhǔn)確地確定“軟件系統(tǒng)必須做什么?,確定軟件系統(tǒng)必須具備哪些功能。并寫出軟件需求規(guī)格說明書。這份文件資料是軟件工程中最重要的文件,是用戶和軟件研制人員之間相互共同約定和開發(fā)的基礎(chǔ)。07二月2023物電學(xué)院114軟件總體設(shè)計
這一階段的主要任務(wù)是解決系統(tǒng)“怎么做”的問題??傮w設(shè)計決定軟件系統(tǒng)的總體結(jié)構(gòu)即模塊結(jié)構(gòu),并給出模塊的相互調(diào)用關(guān)系、模塊問傳遞的數(shù)據(jù)及每個模塊的功能說明。這個階段的文件資料是軟件結(jié)構(gòu)圖和模塊功能說明。07二月2023物電學(xué)院115軟件總體設(shè)計首先,應(yīng)該設(shè)計出實現(xiàn)目標(biāo)系統(tǒng)的幾種可能的方案。通常至少應(yīng)該設(shè)計出低成本、中等成本和高成本等3種方案。軟件工程師應(yīng)該用適當(dāng)?shù)谋磉_(dá)工具描述每種方案,分析每種方案的優(yōu)缺點,并在充分權(quán)衡各種方案的利弊的基礎(chǔ)上,推薦一個最佳方案。此外,還應(yīng)該制定出實現(xiàn)最佳方案的詳細(xì)計劃。如果客戶接受所推薦的方案,則應(yīng)該進(jìn)一步完成下述的另一項主要任務(wù)。07二月2023物電學(xué)院116詳細(xì)設(shè)計總體設(shè)計階段以比較抽象概括的方式提出了解決問題的辦法。詳細(xì)設(shè)計階段的任務(wù)就是把解法具體化,也就是回答下面這個關(guān)鍵問題:“應(yīng)該怎樣具體地實現(xiàn)這個系統(tǒng)呢?”詳細(xì)設(shè)計也稱為模塊設(shè)計,在這個階段將詳細(xì)地設(shè)計每個模塊,確定實現(xiàn)模塊功能所需要的算法和數(shù)據(jù)結(jié)構(gòu)。07二月2023物電學(xué)院117詳細(xì)設(shè)計這個階段的任務(wù)還不是編寫程序,而是設(shè)計出程序的詳細(xì)規(guī)格說明。這種規(guī)格說明的作用很類似于其他工程領(lǐng)域中工程師經(jīng)常使用的工程藍(lán)圖,它們應(yīng)該包含必要的細(xì)節(jié),程序員可以根據(jù)它們寫出實際的程序代碼。07二月2023物電學(xué)院118軟件編碼編碼編碼階段就是把每個模塊的控制結(jié)構(gòu)轉(zhuǎn)換成計算機(jī)可接受的程序代碼,即寫成以某特定程序設(shè)計語言表示的“源程序清單”。當(dāng)然,寫出的程序應(yīng)是結(jié)構(gòu)好,清晰易讀,并且與設(shè)計相一致。07二月2023物電學(xué)院119軟件測試測試是保證軟件質(zhì)理的重要手段,其主要方式是在設(shè)計測試用例的基礎(chǔ)上檢驗軟件的各個組成部分。測試分為模塊測試、組裝測試、確認(rèn)測試。07二月2023物電學(xué)院120軟件維護(hù)
由于經(jīng)過測試的軟件仍然可能有錯,用戶的需求和軟件的操作環(huán)境也可能發(fā)生變化。因此,交付運(yùn)行的軟件系統(tǒng)仍然需要維護(hù),所以軟件維護(hù)的實質(zhì)是對軟件繼續(xù)進(jìn)行查錯、糾錯和修改。一般維護(hù)分為以下幾方面。
(1)改正性維護(hù)。對軟件性能、功能、處理和實現(xiàn)中出現(xiàn)的錯誤進(jìn)行糾正。07二月2023物電學(xué)院121軟件維護(hù)
(2)適應(yīng)性維護(hù)。當(dāng)軟件處理對象或數(shù)據(jù)環(huán)境變化時,依某些適應(yīng)性進(jìn)行修改,
(3)完善性維護(hù),為了提高軟件的性能或者對可維護(hù)性方面所做的某些修改。(4)預(yù)防性維護(hù)。為了改善將來的可靠性或可維護(hù)性,而對軟件進(jìn)行的修改或補(bǔ)充。07二月2023物電學(xué)院122圖1—2典型的瀑布模型問題定義可行性研究計劃時期概要設(shè)計詳細(xì)設(shè)計編碼測試運(yùn)行維護(hù)開發(fā)時期運(yùn)行可行性研究報告需求分析報告系統(tǒng)功能結(jié)構(gòu)圖需求分析系統(tǒng)詳細(xì)設(shè)計流程源程序+文檔測試記錄+用戶手冊評價報告+維修記錄07二月2023物電學(xué)院123快速原型模型圖中實線箭頭表示開發(fā)過程,虛線箭頭表示維護(hù)過程,快速原型模型的第一步是快速建立一個能反映用戶主要需求的原型系統(tǒng),讓用戶在計算機(jī)上試用它,通過實踐來了解目標(biāo)系統(tǒng)的概貌。07二月2023物電學(xué)院124增量模型應(yīng)用舉例見P17螺旋模型
(2)選擇對象。對各種軟硬件設(shè)備、開發(fā)方法、技術(shù)、開發(fā)工具、人員、開發(fā)管理等對象進(jìn)行選擇,并決定軟件是進(jìn)行研制、購買還是利用現(xiàn)有的。(1)確定任務(wù)目標(biāo)。根據(jù)初始需求分析項目計劃,確定任務(wù)目標(biāo)、可選方案和限制。
(3)分析約束條件。軟件開發(fā)的時間、經(jīng)費等限制條件。
(4)風(fēng)險分析。評估目標(biāo)、對象、約束條件三者之間的聯(lián)系,列出可能出現(xiàn)的問題及問題的嚴(yán)重程度等,把最重要的問題列為尚未解決的關(guān)鏈問題的風(fēng)險。
(5)制定消除風(fēng)險的方法。應(yīng)有詳盡的說明和周密的計劃,并估計可能產(chǎn)生的后果。依此來開發(fā)軟件,為制定下一周期的計劃打下基礎(chǔ)。(6)制定下一周期的工作計劃。
在第一個螺旋周期,初步開發(fā)原型1,制定系統(tǒng)生存周期計劃。在第二個螺旋周期,在原形1的基礎(chǔ)上開發(fā)原形2。在第三個螺旋周期,在原形2的基礎(chǔ)上開發(fā)原形3。在第四個螺旋周期,開發(fā)出可運(yùn)行的原形。此時對產(chǎn)品進(jìn)行詳細(xì)設(shè)計—實現(xiàn)。軟件復(fù)用與構(gòu)件技術(shù)軟件復(fù)用的基本概念
軟件復(fù)用就是將已有的軟件成分用于構(gòu)造新的軟件系統(tǒng),以達(dá)到提高軟件系統(tǒng)的開發(fā)質(zhì)量與效率、開發(fā)成本的目的。可復(fù)用的軟件成分稱為可復(fù)用構(gòu)件(ReusableComponent)或組件,可從舊軟件中提取,也可以專門為復(fù)用而開發(fā)。軟件復(fù)用不僅是對程序的復(fù)用,它包括對軟件生產(chǎn)過程中任何活動所產(chǎn)生的制成品的復(fù)用。如:項目計劃、可行性報告、需求定義、分析模型、詳細(xì)說明、源程序和測試用例等。
軟件生產(chǎn)過程主要是正向過程,即軟件產(chǎn)品從抽象級別較高的形態(tài)向抽象級別較低的形態(tài)演化,所以較高級別的復(fù)用容易帶動較低級別的復(fù)用,反之則不然。復(fù)用級別越高,可得到的回報也越大,因此分析軟件(AnalysisWare)和設(shè)計軟件(DesignWare)的復(fù)用備受重視。軟件復(fù)用的優(yōu)點:
(1)提高軟件生產(chǎn)率,降低軟件生產(chǎn)成本;
(2)提高軟件質(zhì)量;
(3)提高互操作性;
(4)推動標(biāo)準(zhǔn)化;
(5)支持原型開發(fā)。代碼的復(fù)用設(shè)計結(jié)果的復(fù)用分析結(jié)果的復(fù)用測試信息的復(fù)用
高抽象程度
低軟件復(fù)用的級別包括目標(biāo)代碼,也包括文本形式的源代碼。受實際環(huán)境影響小,可復(fù)用機(jī)會多,所需修改少??杀粡?fù)用的分析結(jié)果是針對問題域的某些事物或某些問題的抽象程度更高的解法。主要包括測試用例(testcase)的復(fù)用和測試過程信息的復(fù)用。三種復(fù)用方式:從現(xiàn)有系統(tǒng)的分析結(jié)果中提取可復(fù)用構(gòu)件用于新系統(tǒng)的分析;用一份完整的分析文檔作為輸入,生成針對不通軟硬件平臺和其他實現(xiàn)條件的多項設(shè)計;獨立于具體應(yīng)用,專門開發(fā)一些可復(fù)用的分析構(gòu)件。軟件復(fù)用的形式一、按照重用活動所跨越的應(yīng)用領(lǐng)域的類型分
1.橫向復(fù)用(horizontalreuse)也稱為水平復(fù)用,是指復(fù)用活動的范圍跨越了幾個不同的應(yīng)用領(lǐng)域,復(fù)用的軟件產(chǎn)品主要包括數(shù)據(jù)結(jié)構(gòu)、通用算法、人機(jī)界面等軟件元素。
2.縱向復(fù)用(verticalreuse)也稱為垂直復(fù)用,是指復(fù)用活動的范圍限制在同一個應(yīng)用領(lǐng)域或者是一類具有較多共性的應(yīng)用領(lǐng)域內(nèi)。二、基于軟件復(fù)用的軟件開發(fā)過程的角度分1.生產(chǎn)者復(fù)用(productreuse)
指建立、獲取或者重新設(shè)計可復(fù)用構(gòu)件的活動。涉及的活動包括:復(fù)用的規(guī)劃、領(lǐng)域分析、構(gòu)件的開發(fā)、構(gòu)件庫的組織和管理。2.消費者復(fù)用(consumerreuse)
指使用可復(fù)用的構(gòu)件建立新的系統(tǒng)的活動。涉及的活動包括:應(yīng)用系統(tǒng)的規(guī)劃、構(gòu)件的檢索和選擇、應(yīng)用系統(tǒng)中非復(fù)用部分的開發(fā)、應(yīng)用系統(tǒng)的組裝。建立構(gòu)件組裝應(yīng)用
生產(chǎn)者復(fù)用消費者復(fù)用(為復(fù)用開發(fā)構(gòu)件)(使用構(gòu)件開發(fā)應(yīng)用)生產(chǎn)者復(fù)用與消費者復(fù)用
復(fù)用具有許多明顯的優(yōu)點,但目前應(yīng)用不廣泛的主要原因是:
(1)技術(shù)因素構(gòu)件與應(yīng)用系統(tǒng)之間的差異;構(gòu)件要達(dá)到一定的規(guī)模,才能支持有效的復(fù)用;發(fā)現(xiàn)合用構(gòu)件的困難;基于復(fù)用的軟件開發(fā)方法和軟件過程需要一些新的理論、技術(shù)及支持環(huán)境。軟件復(fù)用的困難(2)人的因素喜歡自己創(chuàng)造而不喜歡使用別人的東西。(4)教育因素軟件科學(xué)技術(shù)的教育與培訓(xùn)中,缺乏關(guān)于軟件復(fù)用的內(nèi)容,缺少專門教材和課程。(3)管理因素把復(fù)用構(gòu)件和一般軟件構(gòu)件同等看待,把復(fù)用看作可有可無的事。7.2軟件構(gòu)件與構(gòu)件工程
基于軟件構(gòu)件的軟件工程也稱為構(gòu)件工程,是以面向?qū)ο蟮姆椒榛A(chǔ),實現(xiàn)軟件重用,構(gòu)造新系統(tǒng)的過程。為了實現(xiàn)軟件重用,基于軟件構(gòu)件的軟件工程強(qiáng)調(diào)領(lǐng)域工程與軟件工程同時進(jìn)行。領(lǐng)域工程創(chuàng)建應(yīng)用領(lǐng)域的模型,標(biāo)識、構(gòu)造、分類和傳播一組可重用的軟件。軟件工程師則在軟件開發(fā)過程中重用它們。下圖給出了一個典型的重用的過程模型,描述了領(lǐng)域工程與軟件工程的關(guān)系。圖2領(lǐng)域分析設(shè)計軟件體系結(jié)構(gòu)開發(fā)可重用的軟件成分中心庫可重用軟件成分/構(gòu)件領(lǐng)域模型結(jié)構(gòu)模型系統(tǒng)分析規(guī)格說明與設(shè)計建造系統(tǒng)規(guī)格說明分析與設(shè)計模型應(yīng)用軟件用戶需求軟件工程領(lǐng)域工程重用的過程模型
一個軟件只有在多個系統(tǒng)中被使用才可稱為“可復(fù)用構(gòu)件”,必須具備的條件:
(1)獨立性
(2)完整性
(3)可標(biāo)識性
(4)
通用性
(5)適應(yīng)性
(6)可靠性
(7)標(biāo)準(zhǔn)化可復(fù)用構(gòu)件
解決一個相對獨立的問題,或大問題中某個相對獨立的部分。
一個軟件只有在多個系統(tǒng)中被使用才可稱為“可復(fù)用構(gòu)件”,必須具備的條件:
(1)獨立性
(2)完整性
(3)可標(biāo)識性
(4)
通用性
(5)適應(yīng)性
(6)可靠性
(7)標(biāo)準(zhǔn)化可復(fù)用構(gòu)件
提供較完整的解決,不要遺留很多缺口,讓復(fù)用者做大量補(bǔ)充。
一個軟件只有在多個系統(tǒng)中被使用才可稱為“可復(fù)用構(gòu)件”,必須具備的條件:
(1)獨立性
(2)完整性
(3)可標(biāo)識性
(4)
通用性
(5)適應(yīng)性
(6)可靠性
(7)標(biāo)準(zhǔn)化可復(fù)用構(gòu)件
構(gòu)件所解決的問題應(yīng)該是可標(biāo)識的,可命名,有簡要介紹,便于理解和使用。
一個軟件只有在多個系統(tǒng)中被使用才可稱為“可復(fù)用構(gòu)件”,必須具備的條件:
(1)獨立性
(2)完整性
(3)可標(biāo)識性
(4)通用性
(5)適應(yīng)性
(6)可靠性
(7)標(biāo)準(zhǔn)化可復(fù)用構(gòu)件
構(gòu)件解決的問題,應(yīng)在同類應(yīng)用中具有一般性。
一個軟件只有在多個系統(tǒng)中被使用才可稱為“可復(fù)用構(gòu)件”,必須具備的條件:
(1)獨立性
(2)完整性
(3)可標(biāo)識性
(4)
通用性
(5)適應(yīng)性
(6)可靠性
(7)標(biāo)準(zhǔn)化可復(fù)用構(gòu)件
應(yīng)用場合有某些變化時,構(gòu)件仍是可用的,使構(gòu)件的某些數(shù)據(jù)參數(shù)化和數(shù)據(jù)類型參數(shù)化。
一個軟件只有在多個系統(tǒng)中被使用才可稱為“可復(fù)用構(gòu)件”,必須具備的條件:
(1)獨立性
(2)完整性
(3)可標(biāo)識性
(4)
通用性
(5)適應(yīng)性
(6)可靠性
(7)標(biāo)準(zhǔn)化可復(fù)用構(gòu)件
要求構(gòu)件對預(yù)計將要使用它的系統(tǒng)是可靠的。
一個軟件只有在多個系統(tǒng)中被使用才可稱為“可復(fù)用構(gòu)件”,必須具備的條件:
(1)獨立性
(2)完整性
(3)可標(biāo)識性
(4)
通用性
(5)適應(yīng)性
(6)可靠性
(7)標(biāo)準(zhǔn)化可復(fù)用構(gòu)件
可復(fù)用構(gòu)件的標(biāo)準(zhǔn)化對于軟件復(fù)用是至關(guān)重要的。基于構(gòu)件的軟件工程
基于構(gòu)件的軟件工程與傳統(tǒng)的或面向?qū)ο蟮能浖こ滔啾?,有顯著的差異。
它不是針對某個特定的軟件系統(tǒng),而是針對一類軟件系統(tǒng)的共同的特征、知識和需求。基于構(gòu)件的軟件的開發(fā)過程包括兩個并發(fā)的子過程,一個是領(lǐng)域工程,另一個是基于構(gòu)件的開發(fā)。領(lǐng)域工程完成一組可復(fù)用構(gòu)件的標(biāo)示、構(gòu)造、分類和傳播;基于構(gòu)件的開發(fā)完成使用可復(fù)用構(gòu)件構(gòu)造新的軟件系統(tǒng)。領(lǐng)域分析(DomainAnalysis)是針對一類軟件系統(tǒng)的應(yīng)用領(lǐng)域,進(jìn)行系統(tǒng)化分析,以發(fā)現(xiàn)其共同的特征、知識和需求和規(guī)約。領(lǐng)域分析是特定類領(lǐng)域軟件重用的基礎(chǔ),領(lǐng)域分析又稱作領(lǐng)域工程(DomainEngineering),是軟件工程的發(fā)展與延伸。其目標(biāo)是:發(fā)現(xiàn)和挖掘在特定領(lǐng)域內(nèi)可以被復(fù)用的構(gòu)件。領(lǐng)域分析活動中輸入和輸出如圖所示:領(lǐng)域分析領(lǐng)域分析輸入信息技術(shù)文獻(xiàn)已有應(yīng)用專家經(jīng)驗/建議當(dāng)前與未來的需求輸出信息
領(lǐng)域語言復(fù)用標(biāo)準(zhǔn)分類方法功能/行為模型領(lǐng)域分析的輸入和輸出
領(lǐng)域分析是一項比系統(tǒng)分析更難的工作。領(lǐng)域分析方法可采用結(jié)構(gòu)化方法和面向?qū)ο蠓椒?,而后者將成為主流。領(lǐng)域分析輸入信息技術(shù)文獻(xiàn)已有應(yīng)用專家經(jīng)驗/建議當(dāng)前與未來的需求輸出信息
領(lǐng)域語言復(fù)用標(biāo)準(zhǔn)分類方法功能/行為模型領(lǐng)域分析的輸入和輸出構(gòu)件的開發(fā)與構(gòu)件庫構(gòu)件的開發(fā)
領(lǐng)域分析的結(jié)果為構(gòu)件的選取和開發(fā)提供了指導(dǎo)性的原則。此外,構(gòu)件開發(fā)還需要遵循一定的設(shè)計概念和原則。
構(gòu)件應(yīng)該具有相當(dāng)?shù)囊话阈院统橄笮?。能夠用于滿足一類相似的需求,一個過于特殊的構(gòu)件是很難被重復(fù)使用的。
為用戶對構(gòu)件的調(diào)整和修改留出余地。
即使一個通用性很高的構(gòu)件也不可能完全適應(yīng)用戶的需求和運(yùn)行環(huán)境,所以一個構(gòu)件被不同的應(yīng)用復(fù)用時,對它的某些部分進(jìn)行修改是不可避免的。例如,繼承、參數(shù)化、模板和宏都是典型的提高構(gòu)件靈活性和可調(diào)整性的機(jī)制。構(gòu)件庫
構(gòu)件庫(ComponentLibrary)用于對可復(fù)用構(gòu)件進(jìn)行存儲和管理。它是支持軟件復(fù)用的必要設(shè)施。構(gòu)件庫必須有大量的可復(fù)用構(gòu)件。構(gòu)件庫系統(tǒng)應(yīng)提供的主要功能:構(gòu)件的存儲、管理、檢索以及庫的瀏覽與維護(hù)等。關(guān)鍵是支持使用者高效而準(zhǔn)確地發(fā)現(xiàn)所需的可復(fù)用構(gòu)件。相關(guān)的主要技術(shù)是分類方法和檢索方法。支持方便的、友好的用戶管理和使用界面。構(gòu)件分類構(gòu)件檢索涉及兩個基本問題:
大多數(shù)構(gòu)件按枚舉、刻面和屬性-值分為三類:(1)枚舉分類通過定義一個層次結(jié)構(gòu)來對構(gòu)件進(jìn)行分類。構(gòu)件庫中的可復(fù)用構(gòu)件按照某種標(biāo)準(zhǔn)被分成了若干個大類,每個大類中的構(gòu)件再分成若干個小類,這樣就形成了一個構(gòu)件分類的層次結(jié)構(gòu)。圖形用戶界面類窗口類菜單類圖形窗口構(gòu)件文字窗口構(gòu)件系統(tǒng)菜單構(gòu)件彈出式菜單構(gòu)件普通菜單構(gòu)件枚舉分類的層次結(jié)構(gòu)構(gòu)件的分類(2)刻面分類一個刻面描述構(gòu)件某一個方面的特征。刻面分類則是從不同的側(cè)面對構(gòu)件進(jìn)行分類,每一種分類方式稱為一個刻面。不同的刻面根據(jù)其重要性可以設(shè)置不同的優(yōu)先級??堂鎽?yīng)用領(lǐng)域?qū)ο蠊δ芫幊陶Z言刻面值圖形用戶界面編程菜單動態(tài)修改菜單項Java對構(gòu)件的每個刻面賦予相應(yīng)的值,用以描述該構(gòu)件??堂娣诸惥哂休^好的靈活性,易于加入新的刻面值,因此刻面分類比枚舉分類更易于擴(kuò)展和修改??堂娣诸惙ㄖС侄嘀赜^點對構(gòu)件進(jìn)行分類,例如從構(gòu)件的應(yīng)用領(lǐng)域、構(gòu)件所描述的對象、構(gòu)件的觀點和編程語言等不同的方式來分類。每一種分類方式稱為一個刻面。每個刻面把構(gòu)件集合劃分為一個子集,各刻面所劃分的子集形成一些較小的交集。一個構(gòu)件對每個每個刻面有一個刻面值,例如:
應(yīng)用領(lǐng)域=計算機(jī)繪圖對象=橢圓 功能=彩色填充,編程語言=C++
檢索一個構(gòu)件時,給出一組刻面值,將確定一組子集合,在這些子集合的交集中,確認(rèn)所需的構(gòu)件。構(gòu)件可用屬性描述,例如構(gòu)件類型、開發(fā)單位、作者、提交日期等屬性。檢索時通過構(gòu)件的屬性可以縮小搜索范圍。刻面和屬性都不涉及構(gòu)件內(nèi)部實現(xiàn),只是為了便于構(gòu)件的管理、檢索和使用。如果把構(gòu)件比作一只箱子,其內(nèi)容如同箱子中裝的東西,刻面和屬性則如同箱子外邊的標(biāo)簽。刻面分類法可以看作層次分類法的擴(kuò)充。(3)屬性-值分類該方法首先是為構(gòu)件庫中的所有構(gòu)件定義一組屬性,并賦予相應(yīng)的屬性值。開發(fā)人員通過指定一組屬性值在構(gòu)件庫中對構(gòu)件進(jìn)行檢索。該分類方法與刻面分類方法有幾點不同之處:屬性的數(shù)量沒有限制,而刻面描述一般限制在7或8個刻面;屬性沒有優(yōu)先級,而刻面根據(jù)其重要程度,有相應(yīng)的優(yōu)先級。
構(gòu)件庫中檢索一個構(gòu)件和在數(shù)據(jù)庫中檢索一個記錄是不同的。
1.數(shù)據(jù)庫記錄按關(guān)鍵字段檢索。
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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 三農(nóng)信息人才培養(yǎng)計劃及實施方案
- 多領(lǐng)域融合的智能科技項目開發(fā)協(xié)議
- 工程項目居間的合同
- 化工廠員工勞動協(xié)議
- 經(jīng)營承包合同
- 勞務(wù)輸出合作協(xié)議書
- 第2課 獎品數(shù)量好計算(教學(xué)設(shè)計)2024-2025學(xué)年五年級上冊信息技術(shù)泰山版
- 新媒體主播合約協(xié)議書8篇
- Unit 8 Knowing the world Lesson 2 My home country 教學(xué)設(shè)計 2024-2025學(xué)年冀教版英語七年級上冊
- 甘肅幼兒園塑膠施工方案
- 胃癌影像診斷課件
- 建筑工程勞務(wù)作業(yè)服務(wù)方案
- (完整版)小學(xué)生心理健康教育課件
- 軍隊文職專用簡歷(2023年)
- 建筑裝飾工程施工總平面布置圖
- 鐵路基本建設(shè)工程設(shè)計概(預(yù))算編制辦法-國鐵科法(2017)30號
- 顏真卿《勸學(xué)》ppt課件1
- 特種設(shè)備安全技術(shù)檔案(附表格)
- 2022-2023學(xué)年湖南省長沙市統(tǒng)招專升本語文模擬練習(xí)題三及答案
- 社會救助法課件
- 第七講+漢字字音
評論
0/150
提交評論