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