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