版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
《實(shí)用軟件工程》
緒言在1946年美國(guó)研制成功第一臺(tái)高速電子數(shù)字計(jì)算機(jī)ENIAC問世之前,計(jì)算機(jī)器的發(fā)展經(jīng)歷了一個(gè)漫長(zhǎng)的階段。根據(jù)計(jì)算機(jī)器的特點(diǎn)可以將其劃分為3個(gè)時(shí)代算盤時(shí)代機(jī)械時(shí)代和機(jī)電時(shí)代。算盤時(shí)代機(jī)械時(shí)代機(jī)電時(shí)代計(jì)算機(jī)硬件的歷史計(jì)算機(jī)史前史1946年以前的世界?,F(xiàn)代計(jì)算機(jī)的歷史可以追溯到1943年英國(guó)研制的巨人計(jì)算機(jī)和同年美國(guó)哈佛大學(xué)研制的MarkI今天計(jì)算機(jī)已經(jīng)歷了四代并得到了迅猛地發(fā)展。第一代計(jì)算機(jī)(1946年~1957年)(真空管)第二代計(jì)算機(jī)(1958年~1964年)(晶體管)第三代計(jì)算機(jī)(1965年~1971年)(硅半導(dǎo)體)第四代計(jì)算機(jī)(1972年至今)(大規(guī)模LSI和超大規(guī)模VLSI集成電路)新一代計(jì)算機(jī)隨著第四代計(jì)算機(jī)向智能化方向發(fā)展,最終將導(dǎo)致新一代計(jì)算機(jī)的出現(xiàn)。新一代計(jì)算機(jī)的研制是各國(guó)計(jì)算機(jī)界研究的熱點(diǎn),如知識(shí)信息處理系統(tǒng)(KIPS)、神經(jīng)網(wǎng)絡(luò)計(jì)算機(jī)、生物計(jì)算機(jī)等,知識(shí)信息處理系統(tǒng)是從外部功能方面模擬人腦的思維方式,使計(jì)算機(jī)具有人的某些智能,如學(xué)習(xí)和推理的能力,神經(jīng)網(wǎng)絡(luò)計(jì)算機(jī)則從內(nèi)部結(jié)構(gòu)上模擬人腦神經(jīng)系統(tǒng),其特點(diǎn)是具有大規(guī)模的分布并行處理自適應(yīng)和高度容錯(cuò)的能力,生物計(jì)算機(jī)是使用以人工合成的蛋白質(zhì)分子為主要材料制成的生物芯片的計(jì)算機(jī),生物計(jì)算機(jī)具有生物體的某些機(jī)能,如自我調(diào)節(jié)和再生能力等。計(jì)算機(jī)軟件的歷史軟件是由計(jì)算機(jī)程序和程序設(shè)計(jì)的概念發(fā)展演化而來的。是程序和程序設(shè)計(jì)發(fā)展到規(guī)模化和商品化后,所逐漸形成的概念。軟件是程序以及程序?qū)崿F(xiàn)和維護(hù)程序時(shí)所必須的文檔的總稱。第一位程序員布爾邏輯與程序設(shè)計(jì)算機(jī)軟件產(chǎn)業(yè)的發(fā)展19世紀(jì)初在法國(guó)人約瑟夫雅各JosephMarieJaquard設(shè)計(jì)的織布機(jī)里已經(jīng)具有了初步的程序設(shè)計(jì)的思想,他設(shè)計(jì)的織機(jī)能夠通過讀取穿孔卡上的信息完成預(yù)先確定的任務(wù),可以用于復(fù)雜圖案的編織。早期利用計(jì)算機(jī)器解決問題的一般過程是針對(duì)特定的問題制造解決該問題的機(jī)器設(shè)計(jì)所需的指令并把完成該指令的代碼序列傳送到卡片或機(jī)械輔助部件上使計(jì)算機(jī)器運(yùn)轉(zhuǎn)執(zhí)行預(yù)定的操作英國(guó)著名詩人拜倫Byron的女兒、數(shù)學(xué)家愛達(dá)奧古斯塔拉夫拉斯伯爵夫人AdaAugustaLovelace,在幫助巴貝奇研究分析機(jī)時(shí)指出分析機(jī)可以像織布機(jī)一樣進(jìn)行編程,并發(fā)現(xiàn)進(jìn)行程序設(shè)計(jì)和編程的基本要素,被認(rèn)為是有史以來的第一位程序員。而著名的計(jì)算機(jī)語言Ada就是以她的名字命名的。在計(jì)算機(jī)的發(fā)展史上,二值邏輯和布爾代數(shù)的使用,是一個(gè)重要的突破。其理論基礎(chǔ)是由英國(guó)數(shù)學(xué)家布爾奠定的,1847年布爾在邏輯的數(shù)學(xué)分析TheMathematicalAnalysisofLogic中分析了數(shù)學(xué)和邏輯之間的關(guān)系并闡述了邏輯歸于數(shù)學(xué)的思想。這在數(shù)學(xué)發(fā)展史上是一個(gè)了不起的成就,也是思維的一大進(jìn)步并為現(xiàn)代計(jì)算機(jī)提供了重要的理論準(zhǔn)備,遺憾的是布爾的理論直到100年之后才被用于計(jì)算。在此期間,程序設(shè)計(jì)隨硬件的發(fā)展,其形式也不斷發(fā)展。在基于繼電器的計(jì)算機(jī)器時(shí)代所謂“程序設(shè)計(jì)”,實(shí)際上就是設(shè)置繼電器開關(guān)以及根據(jù)要求使用電線,把所需的邏輯單元相連重新設(shè)計(jì)程序,就意味著重新連線,所以通常的情況是“設(shè)置程序”花了許多天時(shí)間,而計(jì)算本身則幾分鐘就可以完成。此后,隨著真空管計(jì)算機(jī)和晶體管計(jì)算機(jī)的出現(xiàn),程序設(shè)計(jì)的形式有不同程度的改變,但革命性的變革則是1948年,香農(nóng)重新發(fā)現(xiàn)了二值演算之后,發(fā)生的二值邏輯代數(shù),被引入程序設(shè)計(jì)過程。程序的表現(xiàn)形式就是存儲(chǔ)在不同信息載體上的0和1的序列。這些載體包括紙帶穿孔卡氫延遲線以及后來的磁鼓磁盤和光盤。此后,計(jì)算機(jī)程序設(shè)計(jì)進(jìn)入了一個(gè)嶄新的發(fā)展階段,就程序設(shè)計(jì)語言來講,經(jīng)歷了機(jī)器語言、匯編語言、高級(jí)語言、非過程語言等4個(gè)階段,第5代自然語言的研究也已經(jīng)成為學(xué)術(shù)研究的熱點(diǎn)。計(jì)算機(jī)軟件的發(fā)展與計(jì)算機(jī)軟件產(chǎn)業(yè)化的進(jìn)程息息相關(guān),在電子計(jì)算機(jī)誕生之初,計(jì)算機(jī)程序是作為解決特定問題的工具和信息分析工具而存在的,并不是一個(gè)獨(dú)立的產(chǎn)業(yè)。計(jì)算機(jī)軟件產(chǎn)業(yè)化是在20世紀(jì)50年代,隨著計(jì)算機(jī)在商業(yè)應(yīng)用中的迅猛增長(zhǎng)而發(fā)生的,這種增長(zhǎng)直接導(dǎo)致了社會(huì)對(duì)程序設(shè)計(jì)人員需求的增長(zhǎng),于是一部分具有計(jì)算機(jī)程序設(shè)計(jì)經(jīng)驗(yàn)的人,分離出來專門從事程序設(shè)計(jì)工作,并創(chuàng)建了他們自己的程序設(shè)計(jì)服務(wù)公司,根據(jù)用戶的訂單提供相應(yīng)的程序設(shè)計(jì)服務(wù)。這樣就產(chǎn)生了第一批軟件公司。如1955年由ElmerKubie和JohnW.Sheldon創(chuàng)建的計(jì)算機(jī)使用公司(CUC)和1959年創(chuàng)建的應(yīng)用數(shù)據(jù)研究(ADR)公司等。進(jìn)入20世紀(jì)60和70年代,計(jì)算機(jī)的應(yīng)用范圍持續(xù)快速增長(zhǎng),使計(jì)算機(jī)軟件產(chǎn)業(yè)無論是軟件公司的數(shù)量還是產(chǎn)業(yè)的規(guī)模都有了更大的發(fā)展。同時(shí)與軟件業(yè)相關(guān)的各種制度也逐步建立1968年MartinGoetz獲得了世界上第一個(gè)軟件專利1969年春ADR公司就IBM壟斷軟件產(chǎn)業(yè)提出了訴訟促使IBM在1969年6月30日宣布結(jié)束一些軟件和硬件的捆綁銷售為軟件產(chǎn)品單獨(dú)定價(jià)這一時(shí)期成立的軟件公司有美國(guó)計(jì)算機(jī)公司CCAInformationBuilder公司和Oracle公司等關(guān)于計(jì)算機(jī)科學(xué)的討論我們通常說的計(jì)算機(jī)科學(xué)與技術(shù),可以分為兩類:一類是計(jì)算機(jī)科學(xué),研究計(jì)算機(jī)理論的學(xué)科;另一類是計(jì)算機(jī)技術(shù),屬應(yīng)用類、工程類的。今天,人們將計(jì)算機(jī)學(xué)科分為類:計(jì)算機(jī)科學(xué)計(jì)算機(jī)工程軟件工程信息技術(shù)信息系統(tǒng)…末來學(xué)科的教程什么是計(jì)算機(jī)科學(xué)呢?這個(gè)問題計(jì)算機(jī)界一直在討論、論證,從1991年到2001年,直至今天仍然在討論。雖然計(jì)算學(xué)科源于歐美誕生于20世紀(jì)40年代初,計(jì)算學(xué)科的理論基礎(chǔ)可以說在第一臺(tái)現(xiàn)代電子計(jì)算機(jī)出現(xiàn)以前就已經(jīng)建立起來了,20世紀(jì)40年代數(shù)字計(jì)算機(jī)產(chǎn)生后,促進(jìn)了計(jì)算機(jī)設(shè)計(jì)、程序設(shè)計(jì)以及計(jì)算機(jī)理論等領(lǐng)域的發(fā)展。但要成為一門學(xué)科,必須滿足一定的條件。中科院工程院士李國(guó)杰教授曾經(jīng)說過,與其稱“計(jì)算機(jī)科學(xué)”,不如說“信息科學(xué)”比較好。計(jì)算機(jī)只能作為工具,他以鋼琴為例,100年前的鋼琴與現(xiàn)在相比,結(jié)構(gòu)上并沒有進(jìn)步,但其生命力還是如此的強(qiáng),主要是由于作曲家和表演家賦予了它生命力。計(jì)算機(jī)作為一個(gè)處理信息的工具,是網(wǎng)絡(luò)和軟件賦予它生命力。正由于有了網(wǎng)絡(luò)的出現(xiàn),在上世紀(jì)末,把計(jì)算機(jī)的普及和應(yīng)用,掀起了一個(gè)高潮。網(wǎng)絡(luò)為計(jì)算機(jī)的生存提供了一個(gè)環(huán)境。他預(yù)測(cè)互聯(lián)網(wǎng)的第三次高潮將會(huì)在2004年出現(xiàn)。也由于有處理信息的軟件,才顯得計(jì)算機(jī)有用。而軟件是什么?它要靠思想、靠智慧去設(shè)計(jì),用計(jì)算機(jī)語言來實(shí)現(xiàn)。軟件為計(jì)算機(jī)的生存賦予了活力。軟件工程是什么?軟件工程涉及到為高效率地構(gòu)建滿足客戶需求的軟件系統(tǒng)所需的理論、知識(shí)和實(shí)踐的應(yīng)用。是指導(dǎo)開發(fā)軟件的工程性的課程。軟件工程適合用于各類軟件系統(tǒng)的開發(fā),它包含需求分析的規(guī)約、設(shè)計(jì)、構(gòu)建、測(cè)試、運(yùn)行和維護(hù)等軟件系統(tǒng)生存周期的所有階段。軟件工程使用工程方法、技術(shù)和度量,它使用管理軟件開發(fā)的工具、軟件制品的分析和建模工具、質(zhì)量評(píng)估與控制工具、確保有條不紊且有控制地實(shí)施軟件深化和復(fù)用的工具。軟件工程課程的特點(diǎn):1、計(jì)算機(jī)學(xué)科知識(shí)的一個(gè)整合(畫龍點(diǎn)晴),充分體現(xiàn)了學(xué)科知識(shí)之間的相互協(xié)調(diào)、相互支撐、相互促進(jìn);2、是計(jì)算機(jī)學(xué)科中的一個(gè)方法論課程,軟件開發(fā)的思維能力(抽象思維與邏輯思維);3、工程,是計(jì)算機(jī)科學(xué)與計(jì)算機(jī)工程的橋梁;4、創(chuàng)造性;5、軟件工程管理的載體是文檔,文檔在軟件工程中占相當(dāng)重要的地位。本課程的學(xué)習(xí)特點(diǎn):1、課聽得輕松;2、課講得艱難;3、考試考得痛苦。學(xué)習(xí)本課程的要求:1、多看參考書;2、考試以課堂講的內(nèi)容為主;3、做好每次作業(yè)。第一章軟件與軟件危機(jī)
1946年,人類第一臺(tái)電子計(jì)算機(jī)的問世,標(biāo)志著人類開始從工業(yè)社會(huì)向信息社會(huì)邁進(jìn),因此,人類認(rèn)識(shí)自身生存空間的能力逐步提高,同時(shí)計(jì)算機(jī)系統(tǒng)的發(fā)展更是日新月異。雖然“計(jì)算機(jī)不是科學(xué),信息才是科學(xué)”這個(gè)結(jié)論不太容易讓人接受,但是信息產(chǎn)業(yè)的快速發(fā)展就在于信息逐漸成為人類的主要消費(fèi)資源,信息作為科學(xué)勢(shì)在必行,計(jì)算機(jī)僅僅是作為處理信息的工具而存在,賦于計(jì)算機(jī)生命力的是軟件,而軟件是處理信息的算法、思想。第一節(jié)軟件的發(fā)展歷程第二節(jié)軟件的概念和特點(diǎn)第三節(jié)軟件危機(jī)第一章軟件與軟件危機(jī)
第一節(jié)軟件的發(fā)展歷程程序設(shè)計(jì)的原始時(shí)代(50年代)基本軟件時(shí)代(50年代末~60年代末)程序設(shè)計(jì)方法時(shí)代(60年代末~70年代中)軟件工程時(shí)代(70年代中~今)。是軟件發(fā)展的早期時(shí)代,這個(gè)時(shí)代的軟件是為某個(gè)具體應(yīng)用而專門編寫的。軟件特征是只有程序、程序設(shè)計(jì)概念,不重視程序設(shè)計(jì)方法。程序設(shè)計(jì)的原始時(shí)代(50年代)特點(diǎn):使用的工具是機(jī)器語言和匯編語言,它們是面向機(jī)器的;開發(fā)方法追求編程技巧、追求程序運(yùn)行效率,使得程序難讀、難懂、難修改;生產(chǎn)方式是個(gè)體勞動(dòng)式的,大多數(shù)人認(rèn)為軟件開發(fā)是無需計(jì)劃的事情,編程者和使用者往往是同一個(gè)人(同一組人),程序的規(guī)模小,程序編寫較容易。對(duì)軟件開發(fā)工作沒有管理,這種個(gè)體化的軟件開發(fā)環(huán)境,使得軟件開發(fā)只是某些人頭腦中隱含進(jìn)行的一個(gè)模糊過程,除了程序清單以外沒有任何文檔資料,是一個(gè)不可視的過程。特點(diǎn):不再直接用機(jī)器碼編程了,使用各種符號(hào)語言來編程,如高級(jí)語言(BASIC、FORTRAN、ALGOL、COBOL),高級(jí)語言程序設(shè)計(jì)比較接近人的習(xí)慣,人們不必考慮計(jì)算機(jī)內(nèi)部的構(gòu)造和不同機(jī)器的特點(diǎn),只要考慮解題步驟,寫出的程序經(jīng)過編譯,翻譯成機(jī)器能執(zhí)行的機(jī)器指令,計(jì)算機(jī)就能執(zhí)行。這個(gè)階段,計(jì)算機(jī)應(yīng)用范圍大大擴(kuò)大,計(jì)算機(jī)大規(guī)模進(jìn)入工商業(yè)、銀行業(yè)等領(lǐng)域。有了操作系統(tǒng)(IBM公司用了6000人·年開發(fā)了操作系統(tǒng)OS360,費(fèi)用高達(dá)1億美元。),有了編譯技術(shù)。這時(shí)編程的目的不是關(guān)心計(jì)算機(jī)硬件的動(dòng)作,而是要確定程序人員定義的動(dòng)作序列,程序員控制的動(dòng)作粒度可大大增加。基本軟件時(shí)代(50年代末~60年代末)這個(gè)時(shí)代的開發(fā)方法可以用“功能性程序設(shè)計(jì)”來表達(dá)其開發(fā)技術(shù)的特點(diǎn)。針對(duì)特定的問題,根據(jù)所需的功能,制定特定的方法,甚至要考慮是否需要特定的機(jī)器去解決該問題。其編程毫無章法,類似于智力游戲,主要依賴于編程人員的才智與技巧,缺乏軟件開發(fā)技術(shù)方法與理論。因此,編程的隨意性很大,一個(gè)人寫的程序另一個(gè)人很難看懂或理解。這種完全靠個(gè)人想象力構(gòu)造的系統(tǒng),其中所產(chǎn)生的問題就很難解決,在這個(gè)時(shí)代產(chǎn)生了“軟件危機(jī)”?;拒浖r(shí)代(50年代末~60年代末)程序設(shè)計(jì)方法時(shí)代(60年代末~70年代中)為了解決“軟件危機(jī)”,不少軟件工作者要求提高程序的可讀性、可理解性,而不再?gòu)?qiáng)調(diào)編程技巧。著名荷蘭計(jì)算機(jī)科學(xué)家圖靈獎(jiǎng)獲得者戴克斯特拉(E.W.Dijkstra)教授提出:不應(yīng)簡(jiǎn)單地只考慮編寫程序,就期望產(chǎn)生一個(gè)正確的結(jié)果,而應(yīng)考慮如何把軟件進(jìn)行劃分及構(gòu)造。他在編寫操作系統(tǒng)時(shí)提出了分層次結(jié)構(gòu)、取消GOTO語句以及結(jié)構(gòu)化程序設(shè)計(jì)方法。Jacopini等人證明了一個(gè)重要的“程序結(jié)構(gòu)定理”:只要“順序”、“選擇”與“循環(huán)”三種基本控制結(jié)構(gòu)就可以實(shí)現(xiàn)任何單入口、單出口程序。這就產(chǎn)生了結(jié)構(gòu)化程序設(shè)計(jì)的方法,即只要用三種控制結(jié)構(gòu)的高級(jí)程序設(shè)計(jì)語言以及只有一個(gè)入口和一個(gè)出口的程序設(shè)計(jì)原則的新的程序設(shè)計(jì)思想、方法和風(fēng)格,使程序變得清晰、易讀、易修改?!俺绦蛟O(shè)計(jì)=數(shù)據(jù)結(jié)構(gòu)+算法”總結(jié)了這個(gè)時(shí)代程序設(shè)計(jì)的特征與成就。在這個(gè)時(shí)代軟件開發(fā)技術(shù)主要有兩大發(fā)展:第一是從程序中分離出數(shù)據(jù)結(jié)構(gòu)與算法;第二是把結(jié)構(gòu)化程序設(shè)計(jì)方法發(fā)展成結(jié)構(gòu)化開發(fā)方法(包括結(jié)構(gòu)化分析與結(jié)構(gòu)化設(shè)計(jì)方法)。在這個(gè)時(shí)代發(fā)展了各種程序設(shè)計(jì)語言,如Pascal(不用GOTO語句)、Smalltalk(面向?qū)ο笳Z言)、Prolog(邏輯語言)。。形成了系統(tǒng)軟件與應(yīng)用軟件的區(qū)別,形成了完整的軟件系統(tǒng)(不僅是可執(zhí)行系統(tǒng),還有獨(dú)立的數(shù)據(jù)狀態(tài)和程序系統(tǒng)的規(guī)格說明書)軟件工程時(shí)代(70年代中~今)面對(duì)復(fù)雜的、大型的軟件開發(fā),不再僅僅是程序設(shè)計(jì)的事,出現(xiàn)了“軟件工程”的思想。如B.W.Boehm在1976年對(duì)軟件工程定義時(shí)所說“在軟件(包括程序和文檔)設(shè)計(jì)、實(shí)現(xiàn)、測(cè)試、運(yùn)行、維護(hù)的各個(gè)過程中,建立在科學(xué)基礎(chǔ)上的一套實(shí)用方法?!盋.A.Hoare則認(rèn)為軟件工程是“一種導(dǎo)致電子數(shù)字計(jì)算機(jī)具有強(qiáng)大功能的藝術(shù),這種功能表現(xiàn)為人可以方便地使用計(jì)算機(jī)”。這個(gè)時(shí)代軟件的生產(chǎn)方式是工程化的生產(chǎn),使用數(shù)據(jù)庫(kù)、開發(fā)工具、開發(fā)環(huán)境、網(wǎng)絡(luò)、分布式、面向?qū)ο蠹夹g(shù)來開發(fā)軟件。其中最重要的理論成就是關(guān)系數(shù)據(jù)庫(kù)的理論。在這個(gè)時(shí)代雖然軟件開發(fā)技術(shù)有很大進(jìn)步,但是未能獲得突破性進(jìn)展,軟件價(jià)格不斷上升,沒有完全擺脫軟件危機(jī)。軟件不是自然規(guī)律的物質(zhì),是人類思維的創(chuàng)造物,有待理論的創(chuàng)新和不斷實(shí)踐。第二節(jié)軟件的概念和特點(diǎn)“程序”是指當(dāng)運(yùn)行時(shí)能夠提供所要求功能和性能的指令的集合;“文檔”是描述有關(guān)計(jì)算機(jī)程序功能、設(shè)計(jì)、編制、使用的文字或圖形資料。數(shù)據(jù)是指使程序能較好地處理信息的數(shù)據(jù)結(jié)構(gòu)。一、軟件定義計(jì)算機(jī)軟件可定義為計(jì)算機(jī)程序、文檔和數(shù)據(jù)的完整集合。二、軟件的特點(diǎn)軟件是一種特殊的產(chǎn)品,它與硬件及人一起構(gòu)成完整的計(jì)算機(jī)系統(tǒng),它們是相互依存的,缺一不可的。它具有下列一些特點(diǎn):1.軟件是一種邏輯產(chǎn)品。2.軟件生產(chǎn)方式不同于硬件。3.軟件產(chǎn)品不會(huì)用壞,不存在磨損、消耗等問題。4.軟件產(chǎn)品的生產(chǎn)主要是腦力勞動(dòng)。5.要求不同于硬件,硬件允許誤差,軟件不允許。6.維護(hù)不同于硬件。三、軟件的分類軟件的分類方法很多,如按其功能進(jìn)行劃分,可分為如下幾類:系統(tǒng)軟件能與計(jì)算機(jī)硬件緊密配合,使計(jì)算機(jī)系統(tǒng)的各個(gè)部件和相關(guān)的軟件協(xié)調(diào)、高效地工作的軟件。如操作系統(tǒng)、數(shù)據(jù)庫(kù)管理系統(tǒng)等。支撐軟件協(xié)助用戶開發(fā)軟件的工具性軟件,包括幫助程序人員開發(fā)軟件產(chǎn)品的工具和幫助管理人員控制開發(fā)進(jìn)程的工具。應(yīng)用軟件在特定領(lǐng)域內(nèi)開發(fā),為特定目的服務(wù)的軟件。按軟件的規(guī)模進(jìn)行劃分,可分為:微型、小型、中型、大型、超大型、極大型軟件。按軟件的工作方式進(jìn)行劃分,可分為:實(shí)時(shí)處理軟件、分時(shí)處理軟件、交互式軟件、批處理軟件等。按軟件的服務(wù)對(duì)象的范圍進(jìn)行劃分,可分為:項(xiàng)目軟件、產(chǎn)品軟件等。四、軟件的生命周期軟件生命周期定義為軟件的生產(chǎn)、使用和消亡過程稱為軟件的生命周期。即是從軟件問題的提出,直到軟件的停止使用這樣整個(gè)過程。軟件生命周期是由軟件定義、軟件開發(fā)和軟件運(yùn)行三個(gè)階段組成。把整個(gè)生存周期劃分為若干階段,使得每個(gè)階段有明確的任務(wù),把規(guī)模大、結(jié)構(gòu)復(fù)雜和管理復(fù)雜的軟件開發(fā)變得容易控制和管理。每個(gè)階段根據(jù)開發(fā)模式的不同又有其不同形式的內(nèi)容。1988年發(fā)布的GB8566《計(jì)算機(jī)軟件開發(fā)規(guī)范》中軟件生存周期階段的劃分是基于“瀑布模型”給出的。它把軟件生存期劃分為三階段8個(gè)步驟。軟件定義問題提出可行性分析需求分析軟件開發(fā)總體設(shè)計(jì)詳細(xì)設(shè)計(jì)編碼測(cè)試軟件運(yùn)行:維護(hù)在這個(gè)過程中,維護(hù)是一個(gè)很長(zhǎng)的階段,要提高軟件的使用價(jià)值,就得考慮如何延長(zhǎng)軟件的使用期。因此,軟件的可維護(hù)性是提高軟件價(jià)值的最重要指標(biāo)。從軟件的需求分析開始,就得研究如何提高軟件的可維護(hù)性。軟件生存周期是借用工程中產(chǎn)品生存周期的概念而得來的。引入軟件生存周期概念,對(duì)于軟件生產(chǎn)的管理、進(jìn)度控制有著非常重要的意義,可使軟件生產(chǎn)有相應(yīng)的模式、相應(yīng)的流程、相應(yīng)的工序和步驟。第三節(jié)軟件危機(jī)由于計(jì)算機(jī)硬件技術(shù)的進(jìn)步,計(jì)算機(jī)的運(yùn)行速度、容量和可靠性有了顯著的提高,生產(chǎn)成本有了顯著下降,為計(jì)算機(jī)的廣泛應(yīng)用創(chuàng)造了條件。因而出現(xiàn)了一些復(fù)雜的、大型的軟件開發(fā)項(xiàng)目,雖然軟件開發(fā)技術(shù)一直在發(fā)展,但始終不能滿足軟件發(fā)展的要求。一、軟件危機(jī)軟件危機(jī)是指在計(jì)算機(jī)軟件的開發(fā)和維護(hù)過程中所出現(xiàn)的一系列嚴(yán)重的問題。這些問題因找不到解決的辦法,使之長(zhǎng)期積累,形成了尖銳的矛盾,產(chǎn)生了軟件危機(jī)。二、軟件危機(jī)的表現(xiàn)軟件危機(jī)表現(xiàn)在很多方面,以下幾個(gè)方面是比較主要的、明顯的表現(xiàn)。軟件需求增長(zhǎng)得不到滿足軟件生產(chǎn)高成本、價(jià)格昂貴軟件生產(chǎn)進(jìn)度無法控制軟件需求定義不準(zhǔn)確軟件質(zhì)量不易保證軟件可維護(hù)性差三、軟件危機(jī)產(chǎn)生的原因在軟件開發(fā)和維護(hù)過程中出現(xiàn)的軟件危機(jī),主要原因有兩個(gè)方面:一是與軟件本身的特點(diǎn)有關(guān),二是與軟件開發(fā)和維護(hù)的方法不正確有關(guān)。不正確的方法,具體地有以下幾點(diǎn):軟件是邏輯部件,不是物理部件。軟件的規(guī)模越來越大,結(jié)構(gòu)越來越復(fù)雜。軟件開發(fā)、維護(hù)管理困難。軟件開發(fā)技術(shù)落后。生產(chǎn)方式落后。開發(fā)工具落后,生產(chǎn)率提高緩慢。四、緩解軟件危機(jī)的途徑軟件危機(jī)只有緩解,不可能解決,特別是在目前這種硬件結(jié)構(gòu)體系下開發(fā)的軟件,其危機(jī)永遠(yuǎn)存在,即使未來的新一代計(jì)算機(jī)系統(tǒng)問世后,那也會(huì)產(chǎn)生新形式的軟件危機(jī)。辯證的看,正是由于軟件危機(jī)的存在,才使得軟件技術(shù)日益發(fā)展。所以人類不可能徹底解決軟件危機(jī),只有想辦法去緩解軟件危機(jī),通過緩解軟件危機(jī)的過程,來推動(dòng)軟件的發(fā)展。怎么來緩解軟件危機(jī)?只有通過從事軟件研究的科技人員,不斷的勤奮探索,推動(dòng)軟件的發(fā)展,改進(jìn)軟件的開發(fā)方法、完善軟件的開發(fā)工具,提高軟件的生產(chǎn)率。針對(duì)軟件的現(xiàn)狀,采取什么措施來緩解軟件危機(jī)呢?從下列幾方面來考慮緩解的途徑:更新觀念。應(yīng)該不斷地去發(fā)現(xiàn)、完善、推廣使用在實(shí)踐中總結(jié)出來的開發(fā)軟件的成功的技術(shù)和方法。要開發(fā)更好的軟件開發(fā)工具,提高軟件的生產(chǎn)率。綜上所述,要緩解軟件危機(jī),既要有先進(jìn)的技術(shù)和方法,又需要高水平的組織管理措施。而軟件工程正是綜合了管理和技術(shù)兩方面,研究如何更好地開發(fā)軟件的一門新興學(xué)科。所以,就目前而言,軟件工程是緩解軟件危機(jī)的最好途徑。第一節(jié)軟件工程的定義
一、軟件工程的定義二、軟件工程的性質(zhì)三、軟件工程的目標(biāo)四、軟件工程的研究?jī)?nèi)容一、軟件工程的定義軟件工程思想是20世紀(jì)60年代末提出的,70年代以后逐步發(fā)展起來的一門指導(dǎo)計(jì)算機(jī)軟件開發(fā)和維護(hù)的工程科學(xué)。采用工程的概念、原理、技術(shù)和方法來開發(fā)與維護(hù)軟件,把經(jīng)過時(shí)間考驗(yàn)而證明正確的管理技術(shù)和當(dāng)前能夠得到的最好的技術(shù)方法結(jié)合起來,這就是軟件工程。這門學(xué)科的目的是研究如何從管理和技術(shù)兩方面更好地開發(fā)和維護(hù)計(jì)算機(jī)軟件。1968年在聯(lián)邦德國(guó)召開的國(guó)際會(huì)議上正式提出并使用了“軟件工程”這個(gè)術(shù)語,運(yùn)用工程學(xué)的基本原理和方法來組織和管理軟件生產(chǎn)。后來還發(fā)展了與軟件有關(guān)的心理學(xué)、生理學(xué)和經(jīng)濟(jì)學(xué)等方面的學(xué)科。在這個(gè)期間,研究軟件工程的專家學(xué)者們陸續(xù)提出了100多條關(guān)于軟件工程的準(zhǔn)則。這100多條準(zhǔn)則可以概括為下述6條基本原則。6條基本原則。用分階段的生存周期計(jì)劃嚴(yán)格管理堅(jiān)持階段評(píng)審實(shí)行嚴(yán)格的產(chǎn)品控制采用現(xiàn)代程序設(shè)計(jì)技術(shù)能非常清楚地審查結(jié)果合理安排軟件開發(fā)小組人員僅遵循以上6條,一成不變是不夠的,軟件工程本身就是一項(xiàng)實(shí)踐工程。隨著計(jì)算機(jī)系統(tǒng)的發(fā)展,必須不斷地靈活地改進(jìn)軟件工程的實(shí)踐。這就必須積極主動(dòng)地采用新的軟件技術(shù),注意不斷地總結(jié)經(jīng)驗(yàn),不斷地有條件地進(jìn)行繼承和揚(yáng)棄,不斷地認(rèn)識(shí)未知和演變地處理未知,推進(jìn)軟件工程的發(fā)展。二、軟件工程的性質(zhì)軟件工程涉及到計(jì)算機(jī)科學(xué)、工程科學(xué)、管理科學(xué)、經(jīng)濟(jì)學(xué)和數(shù)學(xué)等領(lǐng)域,是一門綜合性的交叉學(xué)科。計(jì)算機(jī)科學(xué)中的所有學(xué)科的知識(shí)都可應(yīng)用于軟件工程,特別是計(jì)算機(jī)專業(yè)的本科生,通過計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)的課程學(xué)習(xí),有了較扎實(shí)的理論基礎(chǔ),軟件工程將給予你一個(gè)計(jì)算機(jī)知識(shí)綜合應(yīng)用的工程概念,會(huì)讓你所學(xué)的計(jì)算機(jī)學(xué)科知識(shí)起到一個(gè)畫龍點(diǎn)睛的作用。有了軟件工程思想方法,應(yīng)用所學(xué)的計(jì)算機(jī)知識(shí),就知道如何建造一個(gè)軟件系統(tǒng)。軟件工程要用工程科學(xué)中的思想、觀點(diǎn)來進(jìn)行軟件項(xiàng)目規(guī)劃、經(jīng)費(fèi)估算、制定項(xiàng)目進(jìn)度、制定項(xiàng)目計(jì)劃和制定項(xiàng)目開發(fā)方案;用管理科學(xué)、經(jīng)濟(jì)學(xué)的思想和方法對(duì)軟件項(xiàng)目進(jìn)行管理、成本核算、投入產(chǎn)出分析;用數(shù)學(xué)的方法建立軟件項(xiàng)目開發(fā)過程中的各種模型和各種算法,進(jìn)行正確性、可靠性分析,建立用戶需求的形式化模型等。三、軟件工程的目標(biāo)有較低的開發(fā)成本。能達(dá)到用戶所要求的軟件功能。有很好的軟件性能。軟件有較好的可移植性、穩(wěn)定性、健壯性和可靠性。有較好的可維護(hù)性,較低的維護(hù)成本。能按計(jì)劃規(guī)定的進(jìn)度開發(fā),及時(shí)交付使用。軟件工程是一門工程性的學(xué)科,軟件工程的目的是成功地構(gòu)造一個(gè)大型軟件系統(tǒng)。所謂成功是指達(dá)到以下標(biāo)準(zhǔn):軟件產(chǎn)品是把思維、概念、算法、組織、流程、效率、質(zhì)量、成本等多方面的問題融為一體的產(chǎn)品,它不同于一般意義上的工程開發(fā)與管理,必須通過人員組織管理、項(xiàng)目計(jì)劃管理和配置管理來保證軟件的高質(zhì)量完成。軟件的交付使用也不同于一般意義上的工程項(xiàng)目交付使用,軟件的交付使用必須將軟件的思想方法滲透到組織、人員中去。從這個(gè)意義上看,軟件工程目標(biāo)的內(nèi)涵是十分豐富多彩的。四、軟件工程的研究?jī)?nèi)容軟件工程是計(jì)算機(jī)領(lǐng)域的一個(gè)較大的研究方向,其內(nèi)容十分豐富,包括:理論、結(jié)構(gòu)、方法、工具、環(huán)境、管理、經(jīng)濟(jì)、規(guī)范等。軟件工程理論與結(jié)構(gòu)是軟件開發(fā)的技術(shù)基礎(chǔ),包括程序正確性證明理論、軟件可靠性理論、軟件成本估算模型、軟件開發(fā)模型、模塊劃分原理等。軟件開發(fā)技術(shù)包括軟件開發(fā)方法學(xué)、軟件工具和軟件開發(fā)環(huán)境,良好的軟件工具可促進(jìn)方法的研制,而先進(jìn)的軟件開發(fā)方法能改進(jìn)工具,軟件工具集成軟件開發(fā)環(huán)境。軟件開發(fā)方法、工具和環(huán)境是相互作用的。軟件工具一般是指為了支持軟件人員開發(fā)和維護(hù)活動(dòng)而使用的軟件。例如,項(xiàng)目估算工具、需求分析工具、設(shè)計(jì)工具、編碼工具、測(cè)試工具和維護(hù)工具等。使用了軟件工具后,可大大提高軟件生產(chǎn)率。機(jī)械工具可以放大人類的體力,軟件工具可以放大人類的智力。最初的軟件工具是以工具箱的形式出現(xiàn)的,一種工具支持一種開發(fā)活動(dòng),然后將各種工具簡(jiǎn)單組合起來。這類工具箱的工具界面不統(tǒng)一,工具內(nèi)部無聯(lián)系,工具切換由人工操作。工具箱主要由八類工具組成:業(yè)務(wù)系統(tǒng)規(guī)劃工具。項(xiàng)目管理工具。有效地估算軟件項(xiàng)目所需的工作量、成本和研制周期。支持工具。用于支持軟件工程過程,有文檔編制工具、系統(tǒng)軟件工具、質(zhì)量保證工具、數(shù)據(jù)庫(kù)管理工具、軟件配置管理工具。分析和設(shè)計(jì)工具。編程工具。編譯器、編輯器、調(diào)試器(如4GL)。測(cè)試與分析工具。常用的測(cè)試與分析工具。原型工具。維護(hù)工具。由于工具箱存在的問題,人們?cè)诠ぞ呦到y(tǒng)的整體化及集成化方法上展開了一系列研究工作,使之形成完整的軟件開發(fā)環(huán)境。其目的是使軟件工具支持整個(gè)生存周期。它不僅能支持軟件開發(fā)和維護(hù)中的個(gè)別階段,而且能夠支持從項(xiàng)目開發(fā)計(jì)劃、需求分析、設(shè)計(jì)、編碼、測(cè)試到維護(hù)等所有階段,做到不僅支持各階段中的技術(shù)工作,還支持管理和操作工作,保證項(xiàng)目開發(fā)的高度可預(yù)見性、可控制性和可追蹤性。軟件開發(fā)環(huán)境是指全面支持軟件開發(fā)全過程的軟件工具集合,主要體現(xiàn)在三個(gè)級(jí)別上:程序設(shè)計(jì)環(huán)境、系統(tǒng)合成環(huán)境、項(xiàng)目管理環(huán)境。如,以語言為中心的環(huán)境、面向結(jié)構(gòu)的環(huán)境、工具箱環(huán)境、基于方法的環(huán)境及計(jì)算機(jī)輔助軟件(CASE)。軟件管理技術(shù)是實(shí)現(xiàn)開發(fā)質(zhì)量的保證。軟件工程管理包括軟件開發(fā)管理和軟件經(jīng)濟(jì)管理。軟件開發(fā)管理包括軟件開發(fā)規(guī)劃的制定、人員的組成、制定計(jì)劃、確定軟件標(biāo)準(zhǔn)與配置。軟件經(jīng)濟(jì)管理主要指成本估算、效益評(píng)價(jià)、風(fēng)險(xiǎn)分析、投資回收計(jì)劃、質(zhì)量評(píng)價(jià)等。軟件工程學(xué)的最終目的是研究開發(fā)以較少的投入獲得易維護(hù)、易理解、可靠性高的軟件產(chǎn)品。所以軟件工程學(xué)就必須研究軟件結(jié)構(gòu)、軟件設(shè)計(jì)與開發(fā)方法、軟件的維護(hù)方法、軟件工具與開發(fā)環(huán)境、軟件工程的標(biāo)準(zhǔn)與規(guī)范、軟件工程經(jīng)濟(jì)學(xué)以及軟件開發(fā)技術(shù)與管理技術(shù)的相關(guān)理論。軟件工程軟件開發(fā)技術(shù)軟件工程管理軟件開發(fā)方法軟件開發(fā)工具軟件開發(fā)環(huán)境軟件開發(fā)管理軟件心理學(xué)軟件工程經(jīng)濟(jì)學(xué)第二節(jié)軟件工程方法軟件工程是系統(tǒng)工程概念、思想、方法在軟件開發(fā)和維護(hù)中的具體體現(xiàn),是由系統(tǒng)工程派生出來的。系統(tǒng)工程就是把組織管理與技術(shù)管理相結(jié)合,軟件工程也是將軟件開發(fā)的管理與技術(shù)緊密結(jié)合的學(xué)科。所謂管理是指通過計(jì)劃、組織、領(lǐng)導(dǎo)、控制和創(chuàng)新等一系列活動(dòng),合理地配置和使用各種資源,以達(dá)到既定目標(biāo)的過程。技術(shù)是指在軟件生命周期的全過程中使用的一整套技術(shù)的集合。技術(shù)由各種方法組成,方法又稱范型。
方法
語言
工具
過程軟件工程方法學(xué)包括四個(gè)要素:方法提供如何構(gòu)造軟件的技術(shù)。包括與項(xiàng)目有關(guān)的計(jì)算和各種估算,系統(tǒng)和軟件需求分析,數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì),程序體系結(jié)構(gòu),算法過程,編碼,測(cè)試和維護(hù)等。軟件工程方法通常引入多種專用的圖形符號(hào)以及一套軟件質(zhì)量的準(zhǔn)則。方法是解決如何做的問題。語言用以支持軟件的分析、設(shè)計(jì)和實(shí)現(xiàn)。隨著編譯程序和軟件技術(shù)的完善,傳統(tǒng)的編程語言表述能力更強(qiáng),更加靈活,而且支持過程實(shí)現(xiàn)更加抽象的描述。與此同時(shí),規(guī)格說明語言和設(shè)計(jì)語言也開始有更大的可執(zhí)行子集?,F(xiàn)在還發(fā)展了原型開發(fā)語言、面向?qū)ο笳Z言。原型開發(fā)語言除必須具有執(zhí)行的能力外,還必須有規(guī)格說明和設(shè)計(jì)這兩種語言能力。工具為方法和語言提供了自動(dòng)化或半自動(dòng)化的軟件支持環(huán)境。今天,工具可以支持上面提到的任一種方法和語言。當(dāng)這些工具集成起來,由一個(gè)工具產(chǎn)生的信息可以被另一個(gè)工具使用時(shí),就形成了一個(gè)支持軟件開發(fā)的系統(tǒng)。這個(gè)系統(tǒng)我們稱之為計(jì)算機(jī)輔助軟件工程系統(tǒng)(Computer-AidedSoftwareEngineering),簡(jiǎn)稱CASE。CASE把軟件、硬件、軟件工程數(shù)據(jù)庫(kù)(包括分析、設(shè)計(jì)、編碼和測(cè)試重要信息的數(shù)據(jù)結(jié)構(gòu))組成一個(gè)軟件工程環(huán)境,類似于硬件的計(jì)算機(jī)輔助設(shè)計(jì)/計(jì)算機(jī)輔助工程(CAD/CAE)。過程是粘結(jié)劑,把方法、語言和工具粘結(jié)在一起,它能使計(jì)算機(jī)軟件開發(fā)理性化和適時(shí)化。過程定義了方法使用的順序、可交付產(chǎn)品(文檔、報(bào)告以及格式等)的要求以及幫助確保質(zhì)量和變更的控制,使軟件管理人員能對(duì)它們的進(jìn)展進(jìn)行評(píng)價(jià)。過程是為了獲得高質(zhì)量的軟件所需要完成的一系列任務(wù)的框架,它規(guī)定了完成各項(xiàng)任務(wù)的工作步驟。這些工作步驟通常叫作軟件工程模式,軟件工程模式是根據(jù)項(xiàng)目和應(yīng)用的性質(zhì)、方法、語言、工具的使用、控制和可交付產(chǎn)品的要求來選擇的。是軟件工程方法研究的主要內(nèi)容。目前使用最廣泛的工程方法學(xué)是:生命周期方法學(xué)原型方法學(xué)面向?qū)ο蠓椒▽W(xué)生命周期方法學(xué),也稱傳統(tǒng)方法學(xué),或稱結(jié)構(gòu)化方法學(xué)。它采用結(jié)構(gòu)化技術(shù)來完成軟件開發(fā)的任務(wù),在其過程中使用適當(dāng)?shù)能浖ぞ呋蜍浖h(huán)境來支撐結(jié)構(gòu)化技術(shù)的運(yùn)用。所謂結(jié)構(gòu)化技術(shù)包括:結(jié)構(gòu)化分析、結(jié)構(gòu)化設(shè)計(jì)、結(jié)構(gòu)化程序設(shè)計(jì)和結(jié)構(gòu)化測(cè)試。這種方法學(xué)把軟件生命周期的全過程依次劃分為任務(wù)相對(duì)獨(dú)立、相對(duì)簡(jiǎn)單的若干個(gè)階段,然后順序地完成每個(gè)階段的任務(wù)。從對(duì)任務(wù)的抽象邏輯開始,一個(gè)階段一個(gè)階段地順序開發(fā),前一個(gè)階段的完成是后階段開始的前提和基礎(chǔ),后一階段的完成通常是使前一階段提出的算法更進(jìn)一步具體化,增加了更多的實(shí)現(xiàn)細(xì)節(jié)。每一個(gè)階段結(jié)束之前都必須進(jìn)行正式的技術(shù)審查和管理復(fù)審,從技術(shù)和管理兩方面對(duì)這個(gè)階段的開發(fā)成果進(jìn)行檢查,通過這個(gè)階段才算結(jié)束;如果不通過,則必須進(jìn)行必要的返工,并且返工后還要再經(jīng)過審查。審查的一條主要標(biāo)準(zhǔn)就是每個(gè)階段都應(yīng)該交出與所開發(fā)的軟件相一致的文檔資料,保證在軟件開發(fā)結(jié)束時(shí)有一個(gè)完整準(zhǔn)確的軟件配置交付使用。在進(jìn)行生命周期的每個(gè)階段的任務(wù)時(shí),應(yīng)該采用適合該階段任務(wù)特點(diǎn)的系統(tǒng)化的技術(shù),即結(jié)構(gòu)化分析、結(jié)構(gòu)化設(shè)計(jì)、結(jié)構(gòu)化程序設(shè)計(jì)和結(jié)構(gòu)化測(cè)試技術(shù)。這種傳統(tǒng)的軟件開發(fā)方法,是面向過程的(或說是面向行為的)。其優(yōu)點(diǎn)是開發(fā)的軟件整體性較強(qiáng)。缺點(diǎn)是軟件開發(fā)的成功率較低,對(duì)需求分析的要求很高,維護(hù)很困難。它適合開發(fā)功能和性能預(yù)先知道的軟件,如系統(tǒng)軟件、嵌入式軟件、實(shí)時(shí)控制系統(tǒng)等。而對(duì)于一些功能和性能事先不太明確的軟件,開發(fā)的成功率較低。目前,這種傳統(tǒng)的軟件開發(fā)方法仍然廣泛使用。原型方法學(xué)是根據(jù)簡(jiǎn)單的用戶需求,用軟件工具快速生成軟件原型(模型),用戶與開發(fā)人員針對(duì)這個(gè)原型進(jìn)行討論,用戶提出意見,開發(fā)人員進(jìn)行修改,直到用戶對(duì)這個(gè)原型滿意為止。然后,以修改好的原型為基礎(chǔ)開發(fā)軟件。原型方法學(xué)是針對(duì)傳統(tǒng)方法學(xué)的缺點(diǎn)而產(chǎn)生的一種方法學(xué)。它們屬于系統(tǒng)工程中的兩種不同的方法。傳統(tǒng)方法學(xué)屬于霍爾的以“優(yōu)化”為核心的方法學(xué),原型方法學(xué)屬于切克蘭德的以“比較、學(xué)習(xí)”為核心的方法學(xué)。傳統(tǒng)方法學(xué)有一個(gè)嚴(yán)格的需求分析過程,需要準(zhǔn)確、完整的需求分析,軟件開發(fā)成功與否就建立在需求分析的基礎(chǔ)上,然而人類的認(rèn)識(shí)能力是有限的,對(duì)問題的認(rèn)識(shí)不可能一步到位,有個(gè)反復(fù)的螺旋上升過程,這就決定了傳統(tǒng)方法學(xué)不適合于需求模糊易變的軟件開發(fā)。原型方法學(xué)沒有嚴(yán)格的需求分析階段,只有需求驗(yàn)證階段,在需求階段反復(fù)地與用戶勾通,滿足用戶的需求,其整個(gè)過程就是一個(gè)比較、學(xué)習(xí)過程,因此原型方法學(xué)比較符合人類認(rèn)識(shí)、分析、理解客觀事物的規(guī)律。原型方法學(xué)在軟件開發(fā)早期階段應(yīng)是一個(gè)學(xué)習(xí)和實(shí)踐過程,它的活動(dòng)應(yīng)該包括開發(fā)人員和用戶兩個(gè)方面。為了使其更有效,不僅要求開發(fā)人員要與用戶緊密合作,而且還要有一個(gè)實(shí)際系統(tǒng),只有這樣才能獲得成功。盡管用戶在開始時(shí)說不清所要求的未來軟件系統(tǒng)是什么樣,但他們卻可以對(duì)現(xiàn)有系統(tǒng)非常熟練地進(jìn)行挑剔。原型法的主要哲學(xué)觀點(diǎn)就是允許失敗。面向?qū)ο蠓椒▽W(xué)是面向數(shù)據(jù)同時(shí)又面向行為的一種嶄新的軟件開發(fā)方法學(xué)。它是把數(shù)據(jù)和行為(或稱為操作)等同看待,以數(shù)據(jù)為主線,把數(shù)據(jù)和對(duì)數(shù)據(jù)的操作緊密結(jié)合在一起的一種方法。面向?qū)ο蠓椒▽W(xué)的出發(fā)點(diǎn)和基本原則是盡可能模擬人類習(xí)慣的思維方式,使開發(fā)軟件的方法與過程盡可能接近人類認(rèn)識(shí)世界、解決問題的方法與過程,從而使描述問題的問題空間與實(shí)現(xiàn)的解空間在結(jié)構(gòu)上盡可能一致。用面向?qū)ο蠓椒▽W(xué)開發(fā)軟件的過程是一個(gè)主動(dòng)地多次反復(fù)迭代的演化過程,如同噴泉一樣。面向?qū)ο蠓椒ㄔ诟拍詈捅硎痉椒ㄉ系囊恢滦员WC了在各項(xiàng)開發(fā)活動(dòng)之間的平滑(無縫)過渡。面向?qū)ο蠓椒ㄆ毡檫M(jìn)行的對(duì)象分類過程支持從特殊到一般的歸納思維過程,通過建立類等級(jí)而獲得的繼承性支持從一般到特殊的演繹思維過程。面向?qū)ο蠓椒ㄓ腥缦聨讉€(gè)特點(diǎn):1、對(duì)象(Object)是融合了數(shù)據(jù)及在數(shù)據(jù)上的操作行為的軟件構(gòu)件。對(duì)象是用數(shù)據(jù)來刻劃屬性及定義了該屬性對(duì)象的行為的一個(gè)被封裝了的模塊。數(shù)據(jù)用于表示對(duì)象的靜態(tài)屬性,是對(duì)象的狀態(tài)信息,而施加于數(shù)據(jù)上的操作是用于實(shí)現(xiàn)對(duì)象的動(dòng)態(tài)行為。面向?qū)ο蟮某绦蚴怯蓪?duì)象組成,程序中的元素就是對(duì)象,復(fù)雜的對(duì)象由比較簡(jiǎn)單的對(duì)象組合而成。2、把對(duì)象分類(Class)。每個(gè)類都定義了一組數(shù)據(jù)和一組操作,類是對(duì)具有相同數(shù)據(jù)和相同操作的一組相似對(duì)象的定義。對(duì)象是類的一個(gè)實(shí)例,類是由對(duì)象群抽象而得到3、類有一個(gè)“繼承”性質(zhì)。有父類、子類之分,父類稱為基類,子類稱為派生類。子類繼承了父類的全部屬性和操作。即,我們可把若干個(gè)相似類組成一個(gè)層次結(jié)構(gòu)的系統(tǒng)。在這個(gè)結(jié)構(gòu)中,下層派生類自動(dòng)擁有上層基類中定義的數(shù)據(jù)和操作,這就是繼承。4、封裝。對(duì)象的數(shù)據(jù)屬性以及對(duì)象的操作(或稱行為)是被封裝在一起的,它是進(jìn)行處理的主體,其它對(duì)象必須向它發(fā)送消息請(qǐng)求它執(zhí)行它的某個(gè)操作,而不能從外界直接對(duì)它訪問。這種封裝性,很符合軟件的信息隱蔽、信息局部性原則,其獨(dú)立性很好。面向?qū)ο蠓椒?對(duì)象+類+繼承+用消息通信。面向?qū)ο蠹扔脤?duì)象又用類的繼承機(jī)制,對(duì)象之間通過傳遞消息實(shí)現(xiàn)彼此通信。當(dāng)軟件規(guī)模較大、軟件需求較模糊易變時(shí),傳統(tǒng)的方法學(xué)往往顯得力不從心,面向?qū)ο蠓椒▽W(xué)能起一定的作用,可以簡(jiǎn)化軟件的開發(fā)和維護(hù)工作,能提高軟件的可重用性。近年來在許多應(yīng)用領(lǐng)域中,面向?qū)ο蠓椒▽W(xué)已經(jīng)取代了傳統(tǒng)的方法學(xué),但我們必須清楚地認(rèn)識(shí)到,面向?qū)ο蠓椒▽W(xué)并不是如人們所期望的那樣萬能,也有一定的局限性。明確問題選擇目標(biāo)系統(tǒng)綜合系統(tǒng)分析方案優(yōu)化作出決策付諸實(shí)施霍爾“優(yōu)化”方法流程圖問題現(xiàn)狀說明弄清關(guān)聯(lián)因素建立概念模型改善概念模型比較實(shí)施切克蘭德“調(diào)查學(xué)習(xí)”方法流程圖第三節(jié)
常見的幾種軟件開發(fā)模型模型是為了理解事物而對(duì)事物作出的一種抽象,它忽略了不必要的細(xì)節(jié),是事物的一種抽象形式、一個(gè)規(guī)劃、一個(gè)程式。軟件開發(fā)模型就是描述軟件開發(fā)過程中各種活動(dòng)如何執(zhí)行的模型。一個(gè)強(qiáng)有力的軟件開發(fā)模型,為軟件開發(fā)提供了強(qiáng)有力的支持,為軟件開發(fā)過程中所有活動(dòng)提供了統(tǒng)一的規(guī)范保證,為參與軟件開發(fā)的所有成員提供幫助和指導(dǎo)。同時(shí)它也揭示了如何演繹軟件過程的思想,是軟件開發(fā)模型化技術(shù)的基礎(chǔ),也是建立軟件開發(fā)環(huán)境的核心。軟件開發(fā)模型確立了軟件開發(fā)和演繹中各階段的次序限制,以及各階段活動(dòng)的準(zhǔn)則,確立了開發(fā)過程所遵守的規(guī)定和限制,便于各種活動(dòng)的協(xié)調(diào)以及各種人員的有效通信,有利于活動(dòng)重用和活動(dòng)管理。軟件開發(fā)模型能表示各種活動(dòng)的實(shí)際工作方式,各種活動(dòng)間的同步和制約關(guān)系,以及活動(dòng)的動(dòng)態(tài)特性。模型應(yīng)該容易為軟件開發(fā)過程中的各類人員所理解,應(yīng)該適應(yīng)不同的軟件項(xiàng)目,具有較強(qiáng)的靈活性以及支持軟件開發(fā)環(huán)境的建立。軟件開發(fā)模型與開發(fā)模式是有區(qū)別的,開發(fā)模式指一種開發(fā)思想。常見的軟件開發(fā)模式:結(jié)構(gòu)化開發(fā)模式、原型開發(fā)模式、面向?qū)ο箝_發(fā)模式及CASE模式。常用的軟件開發(fā)模型:瀑布模型增量模型螺旋模型噴泉模型四代技術(shù)變換模型基于知識(shí)的模型過程開發(fā)模型瀑布模型瀑布模型是屬于傳統(tǒng)的結(jié)構(gòu)化開發(fā)模式,是由硬件和系統(tǒng)工程派生出來的,是一種將軟件生存周期各活動(dòng)階段規(guī)定為依線性順序聯(lián)接的,系統(tǒng)的和順序的開發(fā)方法。它包括可行性分析、項(xiàng)目開發(fā)計(jì)劃、需求分析、概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)、編碼、測(cè)試和維護(hù)。這種模型的實(shí)質(zhì)是面向階段的、線性的或傳統(tǒng)的開發(fā)策略。除了確認(rèn)和驗(yàn)證外,其它所有階段都是線性執(zhí)行的,即每個(gè)階段只有在前一個(gè)階段完成后才能開始。它規(guī)定了由前至后、相互銜接的固定次序,如同瀑布流水,逐級(jí)下落。瀑布模型為軟件開發(fā)提供了一種有效的管理模型。根據(jù)這一模型制定開發(fā)計(jì)劃,進(jìn)行成本預(yù)算,組織開發(fā)力量,以項(xiàng)目的階段評(píng)審和文檔控制為手段有效地對(duì)整個(gè)開發(fā)過程進(jìn)行指導(dǎo)。因此它是以文檔作為驅(qū)動(dòng)、適合于需求很明確的軟件項(xiàng)目開發(fā)的模型。需求定義確認(rèn)設(shè)計(jì)確認(rèn)編碼確認(rèn)測(cè)試確認(rèn)維護(hù)確認(rèn)需求說明書設(shè)計(jì)說明書源程序清單測(cè)試報(bào)告軟件維護(hù)報(bào)告瀑布模型該模型說明整個(gè)軟件開發(fā)過程是按圖中5個(gè)階段進(jìn)行的。每個(gè)階段的任務(wù)完成之后,產(chǎn)生右邊相應(yīng)的文檔(圖中只列出該階段最主要的文檔),這些文檔通過確認(rèn)后,表明該階段工作完成,并進(jìn)入下一階段的工作。每個(gè)階段均以上一階段的文檔作為開發(fā)的基礎(chǔ),如果某一文檔出現(xiàn)問題,則要返回到上一階段去重新進(jìn)行工作。
一、瀑布模型往往會(huì)碰到讓人頭痛的問題。例如:1)一個(gè)活動(dòng)在項(xiàng)目中出現(xiàn)得越早,對(duì)這個(gè)活動(dòng)的注釋就越不足;2)一個(gè)活動(dòng)在項(xiàng)目中出現(xiàn)得越早,我們對(duì)這個(gè)活動(dòng)的理解就越少;3)一個(gè)錯(cuò)誤在項(xiàng)目中形成越早,這個(gè)錯(cuò)誤所造成的影響就越嚴(yán)重。瀑布模型有如下特點(diǎn):?jiǎn)栴}的本質(zhì)是這種模式是建立在完備的需求分析的基礎(chǔ)上,而需求分析是不可能完備的、準(zhǔn)確的。原因主要是:1)用戶與開發(fā)者之間,以及他們之間的交流存在巨大的文化差異;2)用戶由于不熟悉信息技術(shù),可能提出非常含糊的需求,而這種需求又可能被開發(fā)人員隨意解釋;3)經(jīng)驗(yàn)證明,一旦用戶開始使用計(jì)算機(jī)系統(tǒng),他們對(duì)目標(biāo)系統(tǒng)的理解可能又會(huì)發(fā)生變化,這顯然會(huì)使原始需求無效。用戶需求常常是一個(gè)變動(dòng)的目標(biāo)。由于知識(shí)背景的不同,工作中的疏漏和通訊媒介的局限性,使通訊中的誤解無法避免。隨著項(xiàng)目向前推進(jìn),用戶會(huì)產(chǎn)生新的要求,或因環(huán)境變化希望系統(tǒng)也能隨之變化。二、瀑布模型要求嚴(yán)格按照生存周期各個(gè)階段的目標(biāo)、任務(wù)、文檔和要求來進(jìn)行開發(fā)。它強(qiáng)調(diào)了每一階段的嚴(yán)格性,尤其是開發(fā)前期的良好需求說明,這樣,就能解決在開發(fā)階段后期因修正不完善的需求說明而導(dǎo)致巨大費(fèi)用的問題。于是人們需要付出極大的努力來加強(qiáng)各階段活動(dòng)的嚴(yán)格性,特別是需求定義階段,希望得到完整、準(zhǔn)確、無二義性的需求說明,以減少后面各階段不易估量的浪費(fèi)。在傳統(tǒng)的觀念中,人們認(rèn)為只要認(rèn)真努力,總可以通過詳盡分析來確定完整、準(zhǔn)確的需求說明,從而明確系統(tǒng)的各種需求,只要采用一套嚴(yán)格規(guī)定的術(shù)語及表達(dá)方式,就一定可以準(zhǔn)確清楚地表達(dá)和通訊,在嚴(yán)格的開發(fā)管理下得到完美的結(jié)果。
在這種嚴(yán)格定義的模型中,開發(fā)人員試圖在每一活動(dòng)過程結(jié)束后,通過嚴(yán)格的階段性復(fù)審與確認(rèn),得到該階段的一致、完整、準(zhǔn)確和無二義性的良好文檔,以“凍結(jié)”這些文檔為該階段結(jié)束的標(biāo)志,保持不變,作為下一階段活動(dòng)的唯一基礎(chǔ),從而形成一個(gè)理想的線性開發(fā)序列,以每一步的正確性和完整性來保證最終系統(tǒng)的質(zhì)量。瀑布模型是以文檔形式驅(qū)動(dòng)的,為合同雙方最終確認(rèn)產(chǎn)品規(guī)定了藍(lán)本,為管理者進(jìn)行項(xiàng)目開發(fā)管理提供了基礎(chǔ),為開發(fā)過程施加了“政策”或紀(jì)律限制,約束了開發(fā)過程中的活動(dòng)。瀑布模型以里程碑開發(fā)原則為基礎(chǔ),提供各階段的檢查點(diǎn),確保用戶需求,滿足預(yù)算和時(shí)間限制。三、瀑布模型是一種整體開發(fā)模型,在開發(fā)過程中,用戶看不見系統(tǒng)是什么樣,只有開發(fā)完成向用戶提交整個(gè)系統(tǒng)時(shí),用戶才能看到一個(gè)完整的系統(tǒng)。
四、瀑布模型適合于功能和性能明確、完整、無重大變化的軟件開發(fā)。如,系統(tǒng)軟件、嵌入式軟件等就具有這些特征。在開發(fā)這些系統(tǒng)前均可完整、準(zhǔn)確、一致和無二義性地定義其目標(biāo)、功能和性能等。有人稱這類軟件為預(yù)先指定系統(tǒng)。對(duì)于當(dāng)前的大型軟件項(xiàng)目,特別是應(yīng)用軟件項(xiàng)目,在開發(fā)前期用戶常常對(duì)系統(tǒng)只有一個(gè)模糊的想法,很難明確確定和表達(dá)對(duì)系統(tǒng)的全面要求,稱這類軟件為由用戶驅(qū)動(dòng)軟件。這類軟件經(jīng)過詳細(xì)的需求定義,盡管可得到一份較好的需求說明,但卻很難期望該需求說明能將系統(tǒng)的一切都描述得完整、準(zhǔn)確、一致并與實(shí)際環(huán)境相符,很難通過它在邏輯上推斷出系統(tǒng)的運(yùn)行效果,并以此達(dá)到各類人員對(duì)系統(tǒng)的共同理解。
因此,要保證每個(gè)階段特別是定義階段是正確的、完整的,只是理想情況,實(shí)際上是做不到或很難做到的。開發(fā)者也可能在設(shè)計(jì)中遇到某些未曾預(yù)料的實(shí)際困難,希望能在需求中有所權(quán)衡。這些都成為進(jìn)行嚴(yán)格線性開發(fā)的重大障礙,盡管通過加強(qiáng)復(fù)審與確認(rèn)、全面測(cè)試和設(shè)立維護(hù)階段來緩解上述困難,但均未在根本上解決這些問題。
五、作為整體開發(fā)的瀑布模型,由于不支持軟件產(chǎn)品的演化,對(duì)開發(fā)過程中的一些很難發(fā)現(xiàn)的錯(cuò)誤只有在最終產(chǎn)品運(yùn)行時(shí)才能發(fā)現(xiàn)。
瀑布模型缺乏對(duì)付變化的機(jī)制,所以最終產(chǎn)品將難以維護(hù)。瀑布模型在大量的軟件開發(fā)實(shí)踐中也逐漸暴露出它的嚴(yán)重缺點(diǎn)。它是一種理想的線性開發(fā)模式,缺乏靈活性,特別是無法解決軟件需求不明確或不準(zhǔn)確的問題。這些缺點(diǎn)對(duì)軟件開發(fā)帶來了嚴(yán)重影響,最終可能導(dǎo)致開發(fā)出的軟件并不是用戶真正需要的軟件,并且這一點(diǎn)在開發(fā)過程完成后才能發(fā)現(xiàn),但已為時(shí)太晚。針對(duì)這些情況,無疑需要進(jìn)行返工,或者在運(yùn)行中進(jìn)行大量修改。不管是返工或進(jìn)行大量修改都必須付出巨大的代價(jià),給軟件開發(fā)帶來不必要的損失。同時(shí),隨著軟件開發(fā)項(xiàng)目的規(guī)模日益擴(kuò)大,瀑布模型缺乏靈活性的缺點(diǎn)引發(fā)的問題更為嚴(yán)重。為克服瀑布模型的不足,現(xiàn)在已提出若干其他模型。增量模型瀑布模型是一種整體開發(fā)模型。在開發(fā)過程中,用戶看不到軟件是什么樣子,只有開發(fā)完成后,整個(gè)軟件才全部展現(xiàn)在用戶面前。針對(duì)它的這種缺點(diǎn),提出了增量模型。增量模型屬于原型開發(fā)模式,是一種非整體開發(fā)的模型。它適合開發(fā)那種需求是可變的、模糊的以及用戶與開發(fā)者難以溝通的軟件。增量模型的基本思想軟件在該模型中是“逐漸”開發(fā)出來的,開發(fā)出一部分,向用戶展示一部分,可讓用戶及早看到部分軟件,及早發(fā)現(xiàn)問題?;蛘呦乳_發(fā)一個(gè)“原型”軟件,完成部分主要功能,展示給用戶并征求意見,然后逐步完善,最終獲得滿意的軟件產(chǎn)品。該模型具有較大的靈活性,適合于軟件需求不明確、設(shè)計(jì)方案有一定風(fēng)險(xiǎn)的軟件項(xiàng)目。原型模型計(jì)劃需求分析原型開發(fā)原型評(píng)價(jià)最終系統(tǒng)設(shè)計(jì)最終系統(tǒng)實(shí)現(xiàn)漸增模型原型模型增量構(gòu)造模型演化提交模型探索型模型實(shí)驗(yàn)型模型演化型模型
增量模型增量構(gòu)造模型是在瀑布模型的基礎(chǔ)上,對(duì)一階段進(jìn)行整體開發(fā),對(duì)另一些階段進(jìn)行增量開發(fā)。演化提交模型是在瀑布模型的基礎(chǔ)上,所有階段都進(jìn)行增量提交式開發(fā),即開發(fā)一個(gè)提交一個(gè)。原型模型,又稱快速原型模型。在開發(fā)真實(shí)系統(tǒng)前,構(gòu)造一個(gè)原型,在該原型的基礎(chǔ)上,逐漸完成整個(gè)系統(tǒng)的開發(fā)任務(wù)。它又可分為探索型原型、實(shí)驗(yàn)型原型、演化型原型。探索型原型是把原型法用于開發(fā)的需求分析,目的是弄清楚用戶的需求,確定所期望的軟件特征。它適用于對(duì)開發(fā)目標(biāo)模糊、用戶與開發(fā)者對(duì)開發(fā)軟件都缺乏經(jīng)驗(yàn)的情況下,通過對(duì)原型的開發(fā)、交互來驗(yàn)證需求。實(shí)驗(yàn)型原型主要用于設(shè)計(jì)階段,驗(yàn)證方案是否合適、能否實(shí)現(xiàn)。對(duì)于一個(gè)大型系統(tǒng),若對(duì)設(shè)計(jì)方案心中沒有把握時(shí),可通過這種原型來證實(shí)設(shè)計(jì)方案的正確性。演化型原型主要用于及早向用戶提交一個(gè)原型系統(tǒng),該原型系統(tǒng)包含系統(tǒng)的框架,或包含系統(tǒng)的主要功能,在得到用戶的認(rèn)可后,將原型系統(tǒng)不斷擴(kuò)充演變?yōu)樽罱K的軟件系統(tǒng)。它將原型的思想擴(kuò)展到軟件開發(fā)的全過程。螺旋模型螺旋模型將瀑布模型與增量模型結(jié)合起來,汲取了這兩種模型的優(yōu)點(diǎn),增加了風(fēng)險(xiǎn)分析來彌補(bǔ)這兩種模型的不足。螺旋模型將開發(fā)過程分為幾個(gè)螺旋周期,每個(gè)螺旋周期大致和瀑布模型相符合。每個(gè)螺旋周期可分為4個(gè)工作步驟。第一,制定計(jì)劃,即確定目標(biāo),選定實(shí)施方案,明確開發(fā)限制條件;第二,風(fēng)險(xiǎn)分析,即分析所選方案,識(shí)別風(fēng)險(xiǎn),通過原型消除風(fēng)險(xiǎn);第三,開發(fā)實(shí)施,即實(shí)施軟件開發(fā);第四,用戶評(píng)估,即評(píng)價(jià)開發(fā)工作,提出修改意見,建立下一個(gè)周期的計(jì)劃。
螺旋模型
需求計(jì)劃操作概念軟件需求提交部分確定目標(biāo)方案限制條件費(fèi)用累加風(fēng)險(xiǎn)分析風(fēng)險(xiǎn)分析風(fēng)險(xiǎn)分析原型1原型2原型3可操作原型詳細(xì)設(shè)計(jì)編程模塊測(cè)試組裝測(cè)試確認(rèn)測(cè)試運(yùn)行評(píng)估方案,標(biāo)識(shí)、解決風(fēng)險(xiǎn)軟件產(chǎn)品設(shè)計(jì)設(shè)計(jì)驗(yàn)證和確認(rèn)需求驗(yàn)證開發(fā)計(jì)劃測(cè)試計(jì)劃集成和計(jì)劃下階段工作開發(fā)驗(yàn)證下一級(jí)產(chǎn)品螺旋模型是一種風(fēng)險(xiǎn)驅(qū)動(dòng)的模型。在軟件開發(fā)中,有各種各樣的風(fēng)險(xiǎn)。對(duì)于不同的軟件項(xiàng)目,其開發(fā)風(fēng)險(xiǎn)有大有小。在制定項(xiàng)目開發(fā)計(jì)劃時(shí),分析員要明確項(xiàng)目的需求是什么,需要多少資源,如何安排開發(fā)進(jìn)度等一系列問題。要給出準(zhǔn)確無誤的回答是不容易的。分析員通常憑借經(jīng)驗(yàn)的估計(jì)而給出初步的設(shè)想,這難免會(huì)帶來一定的風(fēng)險(xiǎn)。同樣,在設(shè)計(jì)階段給出的設(shè)計(jì)方案是否能實(shí)現(xiàn)用戶的功能,也會(huì)具有一定風(fēng)險(xiǎn)。實(shí)踐表明,項(xiàng)目越復(fù)雜,設(shè)計(jì)方案、資源、成本和進(jìn)度等因素的不確定性就越大,項(xiàng)目開發(fā)的風(fēng)險(xiǎn)也越大。因此,應(yīng)該對(duì)風(fēng)險(xiǎn)進(jìn)行識(shí)別、分析并采取對(duì)策,從而消除或減少風(fēng)險(xiǎn)的危害。螺旋模型適合于大型軟件的開發(fā),它吸收了軟件工程“演化”的概念,使得開發(fā)人員和用戶對(duì)每個(gè)螺旋周期出現(xiàn)的風(fēng)險(xiǎn)有所了解,從而作出相應(yīng)的反應(yīng)。但是,使用該模型需要有相當(dāng)豐富的風(fēng)險(xiǎn)評(píng)估經(jīng)驗(yàn)和專門知識(shí),這使該模型的應(yīng)用受到一定的限制。圖形中半徑的大小代表了完成現(xiàn)在步驟所需的費(fèi)用累加。螺旋角度的大小代表了完成螺旋的每次循環(huán)需做的工作,該模型反映了一個(gè)重要的概念,即每一次循環(huán)包含一次進(jìn)展,該進(jìn)展對(duì)產(chǎn)品的每一部分及每一級(jí)改進(jìn)都指出了從用戶需求文檔至每一單獨(dú)程序的編程步驟的相同次序。一、確定目標(biāo)、方案和限制條件。確定軟件產(chǎn)品各部分的目標(biāo),如性能、功能和適應(yīng)變化的能力等;確定軟件產(chǎn)品各部分實(shí)現(xiàn)的各種方案,選擇如A設(shè)計(jì)、B設(shè)計(jì)、軟件重用和購(gòu)買等;確定不同方案的限制條件,如成本、規(guī)模、接口調(diào)度、資源分析和時(shí)間表安排等。二、評(píng)估方案、標(biāo)識(shí)風(fēng)險(xiǎn)和解決風(fēng)險(xiǎn)。對(duì)各個(gè)不同實(shí)現(xiàn)方案進(jìn)行評(píng)估,對(duì)出現(xiàn)的不確定因素進(jìn)行風(fēng)險(xiǎn)分析,提出解決風(fēng)險(xiǎn)的策略,建立相應(yīng)的原型。若原型是可運(yùn)行的、健壯的,則可作為下一步產(chǎn)品演化的基礎(chǔ)。螺旋模型的開發(fā)步驟:三、開發(fā)確認(rèn)產(chǎn)品。若以前的原型已解決了所有性能和用戶接口風(fēng)險(xiǎn),目前占主要位置的是程序開發(fā)和接口控制風(fēng)險(xiǎn),那么接下來應(yīng)采用瀑布模型的方法,進(jìn)行用戶需求、軟件需求、軟件設(shè)計(jì)和軟件實(shí)現(xiàn)等。同時(shí)要對(duì)其作適當(dāng)修改,以適應(yīng)增量開發(fā)。也可選擇原型,模擬原型,導(dǎo)致了步驟的不同子集的使用。四、計(jì)劃下一周期工作。主要工作包括對(duì)下一周期的軟件需求、軟件設(shè)計(jì)和軟件實(shí)現(xiàn)進(jìn)行計(jì)劃;對(duì)部分產(chǎn)品進(jìn)行增量開發(fā);或者是由部分組織和個(gè)人開發(fā)軟件的各個(gè)組成部分。我們可設(shè)想有一系列平行的螺旋循環(huán),每一個(gè)螺旋循環(huán)對(duì)應(yīng)一個(gè)組成部分,好像在圖中加入第三維,即加入若干重疊的螺旋平面,不同的螺旋平面對(duì)應(yīng)于不同的軟件組成部分,以便分別演化。與其他模型相似,在螺旋模型中每次循環(huán)都以評(píng)審結(jié)束,評(píng)審涉及產(chǎn)品的原來人員或組織,評(píng)審覆蓋前一次循環(huán)中所開發(fā)的全部產(chǎn)品,包括下一次循環(huán)的計(jì)劃以及實(shí)現(xiàn)它們的資源。評(píng)審的主要任務(wù)是確保所有有關(guān)部分的質(zhì)量,以共同提交給下一階段。噴泉模型噴泉模型是屬于面向?qū)ο蠓椒▽W(xué)的,是一種以用戶需求為動(dòng)力,以對(duì)象作為驅(qū)動(dòng)的模型。它適合于面向?qū)ο蟮拈_發(fā)方法。它克服了瀑布模型不支持軟件重用和多項(xiàng)開發(fā)活動(dòng)集成的局限性。噴泉模型使開發(fā)過程具有迭代性和無間隙性。系統(tǒng)某些部分常常重復(fù)工作多次,相關(guān)功能在每次迭代中隨之加入演化的系統(tǒng)。無間隙是指在分析、設(shè)計(jì)和實(shí)現(xiàn)等開發(fā)活動(dòng)之間不存在明顯的邊界。噴泉模型實(shí)現(xiàn)軟件設(shè)計(jì)系統(tǒng)設(shè)計(jì)分析噴泉模型的圖形如圖所示。它以面向?qū)ο蟮能浖_發(fā)方法學(xué)為基礎(chǔ),以用戶需求作為噴泉模型的源泉。其特點(diǎn)如下:一、噴泉模型規(guī)定軟件開發(fā)過程有4個(gè)階段,即系統(tǒng)分析、系統(tǒng)設(shè)計(jì)、軟件設(shè)計(jì)和實(shí)現(xiàn)。二、噴泉模型的各階段相互重疊,它反映了軟件過程并行性的特點(diǎn)。
三、噴泉模型以分析為基礎(chǔ),資源消耗呈塔型,在分析階段消耗的資源最多。四、噴泉模型反映了軟件過程迭代的自然特性,從高層返回低層無資源消耗。五、噴泉模型強(qiáng)調(diào)增量開發(fā),它依據(jù)分析一點(diǎn),設(shè)計(jì)一點(diǎn)的原則,并不要求一個(gè)階段的徹底完成,整個(gè)過程是一個(gè)迭代的逐步提煉的過程。六、噴泉模型是對(duì)象驅(qū)動(dòng)的過程,對(duì)象是所有活動(dòng)作用的實(shí)體,也是項(xiàng)目管理的基本內(nèi)容。四代技術(shù)模型四代技術(shù),簡(jiǎn)稱4GT。4GT擁有一組工具,它們都有一個(gè)共同的特點(diǎn),即每個(gè)工具都能使開發(fā)人員在高層次上定義軟件的某些特性,并把開發(fā)人員定義的這些特性自動(dòng)生成源代碼。機(jī)器如果能在越高層上定義軟件,則程序生成越快。軟件工程的4GT模型能在機(jī)器的一定層次上用一種近似自然的語言或一種能賦予特殊功能的符號(hào)來定義軟件。目前,支持4GT模型的軟件開發(fā)環(huán)境的常見的工具:數(shù)據(jù)查詢的非過程性語言,報(bào)表生成,數(shù)據(jù)處理,屏幕交互和定義,代碼生成,高層圖形功能和電子表格等。四代技術(shù)模型需求分析設(shè)計(jì)策略用4GT實(shí)現(xiàn)測(cè)試變換模型變換模型是一種適合于形式化開發(fā)方法的模型。從軟件需求的形式化說明開始,經(jīng)過一系列變換,最終得到系統(tǒng)的目標(biāo)程序。變換模型主要用于軟件的形式化開發(fā)方法。一個(gè)形式化的軟件開發(fā)方法要提供一套思維方法和描述開發(fā)手段,如規(guī)范描述的原則、程序開發(fā)的一般過程、描述語言等,使開發(fā)者能利用數(shù)學(xué)概念和表示方法恰當(dāng)合理地構(gòu)造形式規(guī)范,根據(jù)開發(fā)過程的框架及設(shè)計(jì)原則進(jìn)行規(guī)范描述和系統(tǒng)化的設(shè)計(jì),并對(duì)規(guī)范的性質(zhì)和設(shè)計(jì)的步驟進(jìn)行分析驗(yàn)證。用于軟件形式化開發(fā)方法的變換模型分為模型規(guī)范的建立和規(guī)范實(shí)現(xiàn)開發(fā)的一系列變換過程。模型檢查軟件需求形式化說明(M0)(M2)軟件設(shè)計(jì)形式化說明(M1)程序(Mn)……變換變換變換一、建立軟件系統(tǒng)的模型規(guī)范。將對(duì)實(shí)現(xiàn)環(huán)境和系統(tǒng)的功能需求進(jìn)行分析,提出與系統(tǒng)有關(guān)的基本概念和固有屬性,并以此為基礎(chǔ)建立問題求解的抽象模型,稱為模型抽象。它由相互關(guān)聯(lián)的兩部分組成,即表示抽象和運(yùn)算抽象。二、表示抽象。表示抽象是模型規(guī)范構(gòu)造者在分析求解問題及其實(shí)現(xiàn)環(huán)境的基礎(chǔ)上,對(duì)形成系統(tǒng)可觀察屬性的對(duì)象域及其組成元素的形式描述。三、運(yùn)算抽象。運(yùn)算抽象是定義若干運(yùn)算來模擬系統(tǒng)中可能發(fā)生的事件,即圍繞表示抽象給出若干運(yùn)算的規(guī)范描述。這種描述規(guī)定了運(yùn)算所模擬的事件發(fā)生前后,系統(tǒng)可觀察屬性的變化關(guān)系,即狀態(tài)轉(zhuǎn)換關(guān)系。開發(fā)過程中注意如下六個(gè)問題:
四、變換過程。當(dāng)軟件系統(tǒng)模型規(guī)范的構(gòu)造完成之后,進(jìn)一步開發(fā)滿足規(guī)范的實(shí)現(xiàn)系統(tǒng)。程序開發(fā)過程應(yīng)是設(shè)計(jì)和驗(yàn)證并行的多步精化過程,對(duì)開發(fā)的每一步,均要慎重考慮該步開發(fā)是否正確,在發(fā)現(xiàn)問題時(shí)要及時(shí)解決。只有這樣才能大大減少開發(fā)費(fèi)用,保證最終產(chǎn)品的質(zhì)量和開發(fā)效率。從抽象模型規(guī)范(M0)開始的多步開發(fā)過程可表示為
M0→M1→M2→…→Mn
的變換,其中,Mi+1是Mi的實(shí)現(xiàn)模型,變換中的每一步的“強(qiáng)度”都影響到整個(gè)變換的強(qiáng)度,還要論證每個(gè)Mi+1是Mi的正確實(shí)現(xiàn)。這種開發(fā)過程中的證明推理是以諸模型的形式化為前提的,也是保證最終的實(shí)現(xiàn)系統(tǒng)(Mn)正確實(shí)現(xiàn)模型規(guī)范的必要階段。五、變換的獨(dú)立性。這種多步變換過程的一個(gè)重要性質(zhì)是每步變換對(duì)相關(guān)模型描述是“封閉的”,即每步變換的正確性僅與該步變換所依據(jù)的規(guī)范Mi以及對(duì)變換后的假設(shè)(如Mi+1)有關(guān)。變換步驟在這種意義下獨(dú)立于其他變換步驟。假若沒有這種獨(dú)立性,就無法控制錯(cuò)誤的惡性蔓延,而變換步驟的經(jīng)驗(yàn)也就成了一句空話。六、變換的設(shè)計(jì)。變換的設(shè)計(jì)過程是一種“發(fā)明”的過程。在模型具體化的變換過程中,具體實(shí)現(xiàn)模型的設(shè)計(jì)是開發(fā)者的職責(zé)。目前還沒有相當(dāng)高級(jí)的規(guī)范能自動(dòng)翻譯成高效程序代碼的工具,這種設(shè)計(jì)“發(fā)明”,是以開發(fā)者自己對(duì)正在設(shè)計(jì)中的系統(tǒng)的功能和使用環(huán)境的理解,是對(duì)實(shí)現(xiàn)效率及進(jìn)一步開發(fā)的預(yù)測(cè)等程序設(shè)計(jì)經(jīng)驗(yàn)以及對(duì)軟件開發(fā)基本原則的理解為基礎(chǔ)的。形式化開發(fā)方法僅提供給開發(fā)者一種嚴(yán)格有效的思維工具和描述工具,而不能代替開發(fā)者進(jìn)行變換的“發(fā)明”。該模型只適合于軟件的形式化開發(fā)方法。必須有嚴(yán)格的數(shù)學(xué)理論和形式化技術(shù)支持。缺乏相應(yīng)的支持工具,處于手工處理方式。尚處于研究和實(shí)驗(yàn)階段,離使用前景尚有一段距離。對(duì)軟件開發(fā)人員要求較高。變換模型有以下幾個(gè)的特點(diǎn):基于知識(shí)的模型基于知識(shí)的模型又稱智能模型,它把瀑布模型和專家系統(tǒng)結(jié)合在一起。該模型在開發(fā)的各個(gè)階段上都利用了相應(yīng)的專家系統(tǒng)來幫助軟件人員完成開發(fā)工作,使維護(hù)在系統(tǒng)需求說明一級(jí)上進(jìn)行。為此,該模型建立了各階段所需要的知識(shí)庫(kù),將模型、相應(yīng)領(lǐng)域知識(shí)和軟件工程知識(shí)分別存入數(shù)據(jù)庫(kù),把在軟件工程知識(shí)基礎(chǔ)上生成規(guī)則構(gòu)成的專家系統(tǒng),與含有應(yīng)用領(lǐng)域知識(shí)規(guī)則的其他專家系統(tǒng)相結(jié)合,構(gòu)成了該應(yīng)用領(lǐng)域的開發(fā)系統(tǒng)?;谥R(shí)的模型用戶概念支持需求分析專家系統(tǒng)需求分析概要設(shè)計(jì)詳細(xì)設(shè)計(jì)編碼測(cè)試維護(hù)支持設(shè)計(jì)專家系統(tǒng)支持測(cè)試專家系統(tǒng)支持維護(hù)專家系統(tǒng)一、支持需求活動(dòng)的專家系統(tǒng)。支持需求活動(dòng)的專家系統(tǒng)用來幫助減少需求活動(dòng)中的二義性、不精確性和沖突易變的需求。這種專家系統(tǒng)要使用應(yīng)用領(lǐng)域的知識(shí),要用到應(yīng)用系統(tǒng)中的規(guī)則,建立應(yīng)用領(lǐng)域的專家系統(tǒng)來支持需求活動(dòng)。二、支持設(shè)計(jì)活動(dòng)的專家系統(tǒng)。支持設(shè)計(jì)活動(dòng)的專家系統(tǒng)用于支持設(shè)計(jì)功能的CASE中的工具和文檔的選擇,這種專家系統(tǒng)要使用軟件開發(fā)的知識(shí)。在各階段都有相應(yīng)的專家系統(tǒng)支持三、支持測(cè)試活動(dòng)的專家系統(tǒng)。支持測(cè)試活動(dòng)的專家系統(tǒng)用于支持測(cè)試自動(dòng)化,利用基于知識(shí)的系統(tǒng)選擇測(cè)試工具,生成測(cè)試數(shù)據(jù),跟蹤測(cè)試過程,分析測(cè)試結(jié)果。四、支持維護(hù)活動(dòng)的專家系統(tǒng)。支持維護(hù)活動(dòng)的專家系統(tǒng)將維護(hù)變成新的應(yīng)用開發(fā)過程的重復(fù),運(yùn)行可利用的基于知識(shí)的系統(tǒng)來進(jìn)行維護(hù)。知識(shí)模型以瀑布模型與專家系統(tǒng)的綜合應(yīng)用為基礎(chǔ)。該模型通過應(yīng)用系統(tǒng)的知識(shí)和規(guī)則幫助設(shè)計(jì)者認(rèn)識(shí)一個(gè)特定軟件的需求和設(shè)計(jì),這些專家系統(tǒng)已成為開發(fā)過程的伙伴,并指導(dǎo)開發(fā)過程。將軟件工程知識(shí)從特定領(lǐng)域分離出來,這些知識(shí)隨著過程范例收入知識(shí)庫(kù),產(chǎn)生規(guī)則,在接受軟件工程技術(shù)的基礎(chǔ)上被編碼成專家系統(tǒng),用來輔助軟件工程的開發(fā)。在使用過程中,軟件工程專家系統(tǒng)與其他領(lǐng)域的應(yīng)用知識(shí)的專家系統(tǒng)連接起來,形成了特定軟件系統(tǒng),為開發(fā)一個(gè)軟件產(chǎn)品所應(yīng)用。知識(shí)模型的優(yōu)點(diǎn)如下:1.
通過領(lǐng)域的專家系統(tǒng),可使需求說明更完整、準(zhǔn)確和無二義性。2.
通過軟件工程專家系統(tǒng),提供一個(gè)設(shè)計(jì)庫(kù)支持,在開發(fā)過程中成為設(shè)計(jì)者的助手。3.
通過軟件工程知識(shí)和特定應(yīng)用領(lǐng)域的知識(shí)和規(guī)則的應(yīng)用來提供開發(fā)的幫助。知識(shí)模型的缺點(diǎn)如下:1.建立適合于軟件設(shè)計(jì)的專家系統(tǒng)是非常困難的,超出了目前的能力,是今后軟件工程的發(fā)展方向,要經(jīng)過相當(dāng)長(zhǎng)的時(shí)間才能取得進(jìn)展。2.建立一個(gè)既適合軟件工程又適合應(yīng)用領(lǐng)域的知識(shí)庫(kù)也是非常困難的。3.目前的狀況是在軟件開發(fā)中正在應(yīng)用AI技術(shù),在CASE工具系統(tǒng)中使用專家系統(tǒng),用專家系統(tǒng)來實(shí)現(xiàn)測(cè)試自動(dòng)化,這只在軟件開發(fā)的局部階段有所進(jìn)展。過程開發(fā)模型又稱混合模型,或稱元模型。近幾年來,為了克服瀑布模型式模型的種種缺陷,出現(xiàn)了很多開發(fā)模型。但是,這些開發(fā)模型仍被限制在整個(gè)項(xiàng)目開發(fā)按定義所確定的階段性的系統(tǒng)開發(fā)方向上。解決這一問題的方法之一是把幾種模型組合為一種混合模型。這種思想屬于問題導(dǎo)向方法論。瀑布式給了人們一種軟件開發(fā)過程的概念,即一個(gè)項(xiàng)目要經(jīng)過需求分析、設(shè)計(jì)、實(shí)現(xiàn)、測(cè)試和維護(hù)等階段的一系列軟件工程活動(dòng)。原型模型是在需求分析階段生成的原型上開發(fā)系統(tǒng)。螺旋模型則把開發(fā)分為計(jì)劃、風(fēng)險(xiǎn)、工程和用戶評(píng)價(jià)四個(gè)階段。4GT就其本質(zhì)來看更像是開發(fā)方法和工具,而不是具體模型。OO開發(fā)與傳統(tǒng)的結(jié)構(gòu)化生存期比較,具有更多的遞增和迭代性質(zhì),生存期的各個(gè)階段可以相互重疊和多次反復(fù),而在項(xiàng)目的整個(gè)生存期中還可以嵌入子生存期。所以有人稱OO生存期為噴泉模型,就像水噴上去落下來,可以落在中間,也可以落在最底部。變換模型是一種屬于形式化開發(fā)方法的模型。知識(shí)模型是把瀑布模型和專家系統(tǒng)結(jié)合在一起。在開發(fā)的各個(gè)階段上都利用了相應(yīng)的專家系統(tǒng)來幫助軟件人員完成開發(fā)工作,使維護(hù)在系統(tǒng)需求說明一級(jí)上進(jìn)行。以上這些方法看起來十分嚴(yán)謹(jǐn),但實(shí)際上很少完全按上述過程一步一步的進(jìn)行。這是因?yàn)槿魏我粋€(gè)項(xiàng)目的開發(fā)決定于許多因素,如軟件的應(yīng)用領(lǐng)域,規(guī)模大小,可重用構(gòu)件的大小和多少,軟件實(shí)現(xiàn)的硬軟環(huán)境,開始和交付的規(guī)定等。這就需要一種更為靈活和更加動(dòng)態(tài)的方法。在1985年美國(guó)國(guó)防部軟件研究所提出了混合模型。它是根據(jù)具體的項(xiàng)目問題,制定開發(fā)策略?;旌夏P陀卸喾N開發(fā)方法,提供了一種適合于各種具體系統(tǒng)、環(huán)境或機(jī)構(gòu)的靈活的結(jié)構(gòu)。它的好處是:項(xiàng)目管理人員無疑不愿意在工作中沒有某種構(gòu)思的框架就去進(jìn)行一個(gè)項(xiàng)目的開發(fā)。聯(lián)合幾種模型構(gòu)成一種混合模型,給管理人員提供了在具體操作中使用結(jié)構(gòu)框架的某種形式。這樣就可以使每個(gè)模型的長(zhǎng)處得到充分的發(fā)揮。所有項(xiàng)目都始于一些初始的想法,在混合模型中稱之為構(gòu)思。一個(gè)項(xiàng)目有了構(gòu)思,預(yù)計(jì)劃就有了確定的過程方向?;旌夏P驮试S管理人員按照當(dāng)前項(xiàng)目的情況,指導(dǎo)項(xiàng)目構(gòu)造一種開發(fā)方法。由于混合模型結(jié)構(gòu)中的不確定性,管理人員在一開始不必去決定完成開發(fā)過程的方向。需要在基于項(xiàng)目的情況,確定項(xiàng)目的決策點(diǎn),管理人員可在項(xiàng)目的生存期內(nèi)做出決策,當(dāng)一個(gè)項(xiàng)目的環(huán)境完全不同于開始時(shí),早決策不如晚些時(shí)候決策好。過程開發(fā)模型對(duì)開發(fā)人員的要求是比較高的,開發(fā)人員不僅要有扎實(shí)的軟件工程理論基礎(chǔ),而且要有豐富的軟件項(xiàng)目開發(fā)經(jīng)驗(yàn)。第一節(jié)需求分析軟件需求是指用戶對(duì)目標(biāo)系統(tǒng)在功能、行為、性能、設(shè)計(jì)約束等方面的要求。需求分析是指對(duì)應(yīng)用問題及其環(huán)境的理解與分析,為問題涉及的信息、功能及系統(tǒng)行為建立模型,將用戶需求精確化、完全化,最終形成需求規(guī)格說明的一系列活動(dòng)或過程。需求分析介于系統(tǒng)分析和軟件設(shè)計(jì)之間。一方面,需求分析以系統(tǒng)規(guī)格說明和項(xiàng)目規(guī)劃作為分析活動(dòng)的基本出發(fā)點(diǎn)。另一方面,需求分析規(guī)格說明書又是軟件設(shè)計(jì)、實(shí)現(xiàn)、測(cè)試和維護(hù)的基礎(chǔ)。一個(gè)軟件系統(tǒng)是由相互聯(lián)系和相互作用的若干部分組成的,是具有特定功能的有機(jī)整體。要準(zhǔn)確回答“系統(tǒng)必須做什么”,要進(jìn)行軟件需求分析,需求分析有時(shí)稱為系統(tǒng)分析。需求分析的過程是一個(gè)對(duì)系統(tǒng)的理解與表達(dá)的過程,是軟件工程的一個(gè)重要活動(dòng)。理解就是開發(fā)人中充分理解用戶的需求,對(duì)問題及環(huán)境的理解、分析與綜合,逐步建立目標(biāo)系統(tǒng)的模型。應(yīng)該是開發(fā)人員與用戶一起來理解系統(tǒng),大家都來理解系統(tǒng)要做什么。表達(dá)就是產(chǎn)生規(guī)格說明書等有關(guān)文檔。規(guī)格說明書就是把分析的結(jié)果完全地、精確地表達(dá)出來。一、需求分析的任務(wù)需求分析的基本任務(wù)是確定系統(tǒng)必須完成哪些工作,也就是對(duì)目標(biāo)系統(tǒng)提出完整、準(zhǔn)確、清晰和具體要求。即必須準(zhǔn)確回答問題:“系統(tǒng)能做什么?”而不是確定系統(tǒng)如何完成它的工作。需求分析研究的對(duì)象是軟件項(xiàng)目的用戶要求。用戶與分析員之間需要通信和溝通。一方面,分析員必須應(yīng)澄清用戶需求的模糊性、歧義性和不一致性,全面理解用戶的各項(xiàng)要求,但又不能全盤接受所有要求,因?yàn)橛脩籼岢龅囊笪幢囟际呛侠淼?。?duì)于無法實(shí)現(xiàn)的要求,應(yīng)予充分解釋,并對(duì)相互沖突的要求進(jìn)行折衷。另一方面,必須準(zhǔn)確表達(dá)被接受的用戶要求,因?yàn)槊枋龃_切的軟件需求才能成為軟件設(shè)計(jì)和實(shí)現(xiàn)的基礎(chǔ)。對(duì)需求分析的結(jié)果,即分析模型和需求規(guī)格說明必須嚴(yán)格審查。需求規(guī)格說明一旦得到用戶和軟件開發(fā)方一致確認(rèn)后,它將成為用戶和軟件開發(fā)方之間的合同。作為目標(biāo)系統(tǒng)的參考,需求分析要做的工作是借助于當(dāng)前系統(tǒng)的邏輯模型導(dǎo)出目標(biāo)系統(tǒng)的邏輯模型,解決目標(biāo)系統(tǒng)“做什么”的問題需求分析的任務(wù)主要有如下幾個(gè)方面:1.確定軟件的綜合需求軟件的綜合需求包括:功能需求,性能需求,運(yùn)行需求,可靠性需求,安全保障需求,用戶界面需求,資源使用需求,成本消耗與開發(fā)進(jìn)度需求,將來可能提出的需求。功能需求:列出被開發(fā)的軟件應(yīng)該作什么。性能需求:給出被開發(fā)的軟件的技術(shù)性能指標(biāo),包括存貯容量限制,響應(yīng)時(shí)間,精確度指標(biāo)和安全性等。運(yùn)行需求:對(duì)系統(tǒng)運(yùn)行時(shí)所處環(huán)境的要求。例如在硬件方面,采用什么機(jī)型、什么外部設(shè)備和數(shù)據(jù)通信接口等;在軟件方面,采用什么系統(tǒng)軟件(操作系統(tǒng),網(wǎng)絡(luò)軟件,數(shù)據(jù)庫(kù)管理系統(tǒng)等)支撐軟件系統(tǒng)運(yùn)行;在使用方面,要求使用部門、操作人員在技術(shù)水平上應(yīng)該具備什么樣的條件等??煽啃孕枨螅喊磳?shí)際的運(yùn)行環(huán)境提出對(duì)被開發(fā)軟件在投入運(yùn)行后不發(fā)生故障的概率之要求。安全保障需求:按實(shí)際環(huán)境提出對(duì)被開發(fā)軟件給予特殊設(shè)計(jì),使其在投入運(yùn)行后其安全保密方面性能得到必要保證的要求。用戶界面需求:軟件與用戶界面友好程度的要求。資源使用需求:對(duì)被開發(fā)軟件運(yùn)行時(shí)所需的數(shù)據(jù)、軟件、內(nèi)存空間等各項(xiàng)資源的要求;對(duì)開發(fā)軟件所需的人力、支撐軟件、開發(fā)設(shè)備等的要求。成本消耗與開發(fā)進(jìn)度需求:軟件立項(xiàng)后,根據(jù)合同規(guī)定,對(duì)軟件開發(fā)的進(jìn)度和各步驟的費(fèi)用要求。將來可能提出的需求:對(duì)軟件將來可能的擴(kuò)充與修改做準(zhǔn)備的要求。2.分析系統(tǒng)的數(shù)據(jù)需求分析系統(tǒng)的數(shù)據(jù)需求就是從系統(tǒng)的信息流中歸納抽象出數(shù)據(jù)元素組成、數(shù)據(jù)的邏輯關(guān)系、數(shù)據(jù)字典格式和數(shù)據(jù)模型,并以輸入/處理/輸出的結(jié)構(gòu)方式表示。3.導(dǎo)出系統(tǒng)的邏輯模型明確目標(biāo)系統(tǒng)與當(dāng)前系統(tǒng)的邏輯差別,將變化部分看作是新的處理過程,然后由外及里對(duì)變化進(jìn)行分析,推斷其結(jié)構(gòu),最終獲得目標(biāo)系統(tǒng)的邏輯模型。通常用數(shù)據(jù)流圖、數(shù)據(jù)字典和主要的處理算法描述這個(gè)邏輯模型。4.修正系統(tǒng)開發(fā)計(jì)劃在對(duì)目標(biāo)系統(tǒng)有了更深入更具體認(rèn)識(shí)的基礎(chǔ)之上對(duì)開發(fā)計(jì)劃進(jìn)行修正。
5.開發(fā)原形系統(tǒng)采用開發(fā)原形系統(tǒng)策略的理由是:人類認(rèn)識(shí)能力的局限性,不能預(yù)先窮盡所有要求;用戶與系統(tǒng)分析員之間存在通信鴻溝;用戶需要一個(gè)顯示的系統(tǒng)以便獲得使用經(jīng)驗(yàn);開發(fā)過程中的反復(fù)和重復(fù)是必要的和不可避免的。使用原形系統(tǒng)的目的是:讓用戶通過實(shí)踐獲得關(guān)于未來系統(tǒng)將怎樣為他們服務(wù)的直接概念,從而能更準(zhǔn)確的提出和確定用戶要求。探索型原型二、需求分析的主要步驟:1.調(diào)查研究調(diào)查用戶需求,訪談或會(huì)談是最早開始運(yùn)用的獲取用戶需求的技術(shù),也是迄今為止廣泛使用的需求分析技術(shù)。2.分析與綜合問題分析與方案綜合要求分析員從數(shù)據(jù)流和數(shù)據(jù)結(jié)構(gòu)出發(fā),逐步細(xì)化所有的軟件功能,找出系統(tǒng)個(gè)元素之間的聯(lián)系、接口特性和設(shè)計(jì)上的約束,分析它們是否滿足功能需求,是否合理。刪除不合理的部分,增補(bǔ)需要的部分,最終綜合出系統(tǒng)的解決方案,導(dǎo)出系統(tǒng)的詳細(xì)邏輯模型。3.書寫文檔這個(gè)階段可能需要完成下面三份文檔資料1)系統(tǒng)需求規(guī)格說明:主要包括描述目標(biāo)系統(tǒng)概貌、功能要求、性能要求、運(yùn)行要求和將來可能提出的要求。數(shù)據(jù)流圖、用IPO圖或其他工具簡(jiǎn)要描述的系統(tǒng)主要算法都是該份文擋的重要組成部分。此外,該份文檔還應(yīng)包括用戶需求與系統(tǒng)功能之間的關(guān)系、設(shè)計(jì)約束等等。軟件需求規(guī)格說明是需求分析階段的最終成果。2)數(shù)據(jù)要求:主要包括數(shù)據(jù)字典以及描述數(shù)據(jù)結(jié)構(gòu)的層次方框圖或Warnier圖。此外,該份文檔還應(yīng)包括對(duì)存儲(chǔ)信息分析的結(jié)果。修正開發(fā)計(jì)劃:主要包括成本計(jì)劃、資源使用計(jì)劃和進(jìn)度計(jì)劃等等。3)用戶系統(tǒng)描述:主要包括對(duì)系統(tǒng)功能性能扼要描述,使用系統(tǒng)的主要步驟和方法,以及用戶的責(zé)任等等。該文檔相當(dāng)于一份初步用戶手冊(cè),它使得未來用戶能從使用系統(tǒng)的角度檢查該目標(biāo)系統(tǒng),進(jìn)而讓用戶比較易于判斷這個(gè)系統(tǒng)是否滿足他們的需要。4.需求分析評(píng)審將需求規(guī)格說明書提交設(shè)計(jì)之前,必須進(jìn)行需求評(píng)審,這是需求分析的最后一步。如果在評(píng)審過程中發(fā)現(xiàn)說明書中存在錯(cuò)誤或缺陷,應(yīng)及時(shí)重新進(jìn)行相應(yīng)的初步需求分析,修改需求規(guī)格說明書,并重新評(píng)審。評(píng)審的內(nèi)容包括:正確性:需求規(guī)格說明書中對(duì)系統(tǒng)的功能、行為、性能描述必須符合用戶對(duì)目標(biāo)軟件產(chǎn)品的期望。無歧義性:需求規(guī)格說明書中的語法單位只有唯一的解釋。使用標(biāo)準(zhǔn)化術(shù)語是一種確保無歧義性的有效措施。完整性:需求規(guī)格說明書中不能遺漏用戶需求,即目標(biāo)軟件產(chǎn)品的所有功能、行為、性能約束以及它在所有可能情況下的預(yù)期行為應(yīng)該完全包含在需求規(guī)格說明書中。可驗(yàn)證性:需求規(guī)格說明書中的各類需求都應(yīng)該存在技術(shù)和經(jīng)濟(jì)上的可行手段進(jìn)行驗(yàn)證和確認(rèn)。一致性:需求規(guī)格說明書中各部分不能存在矛盾。例如,術(shù)語使用方面的沖突,功能和行為特征方面的沖突,時(shí)序方面的前后不一致等??衫斫庑裕河脩粼O(shè)計(jì)人員和測(cè)試人員應(yīng)該容易理解需求規(guī)格說明書中的描述,避免使用過多的專業(yè)詞匯。可修改性:需求規(guī)格說明書中的格式和組織方式應(yīng)能保證比較容易地接受后續(xù)的增、刪和修改,并使修改后的說明書能夠較好地保持其他各項(xiàng)屬性??勺粉櫺裕盒枨笠?guī)格說明書必須能將分析后獲得的每項(xiàng)需求與用戶的原始需求清晰地聯(lián)系起來,并為后續(xù)開發(fā)和其他文檔引用這些需求項(xiàng)提供便利。另外還有系統(tǒng)需求分階段提供的文檔資料是否齊全,與其他系統(tǒng)的重要接口是否都已描述,設(shè)計(jì)的約束或限制條件是否切合實(shí)際,被開發(fā)項(xiàng)目的數(shù)據(jù)流與數(shù)據(jù)結(jié)構(gòu)是否足夠、確定,開發(fā)的技術(shù)風(fēng)險(xiǎn)是什么,用戶是否審查了初步用戶手冊(cè),軟件開發(fā)計(jì)劃中的估算是否受到了影響等等,其中正確性在評(píng)審中受到普遍關(guān)注。評(píng)審應(yīng)由專門指定的人員負(fù)責(zé),評(píng)審結(jié)束后應(yīng)有評(píng)審負(fù)責(zé)人的結(jié)論意見及簽字。分析員,用戶、開發(fā)部門的管理者、軟件設(shè)計(jì)、實(shí)現(xiàn)、測(cè)試人員都應(yīng)當(dāng)參加評(píng)審工作。評(píng)審可以采取會(huì)議的形式進(jìn)行,首先,分析員要說明軟件產(chǎn)品的總體目標(biāo),包括產(chǎn)品的主要功能、與環(huán)境的交互行為以及性能指標(biāo)。評(píng)審會(huì)議要對(duì)需求模型進(jìn)行評(píng)估,以此決定該說明書能否成為良好的軟件設(shè)計(jì)基礎(chǔ)。評(píng)審會(huì)議還要就原始軟件問題討論除當(dāng)前需求模型之外的其他解決問題的方案,并對(duì)各種影響軟件設(shè)計(jì)和質(zhì)量的因素進(jìn)行折衷,決定說明書中采用的取舍是否合理。最后,評(píng)審會(huì)議應(yīng)對(duì)軟件的質(zhì)量確認(rèn)方法進(jìn)行討論,形成為用戶和開發(fā)人員均能接受的各項(xiàng)測(cè)試指標(biāo)。1.理解和表示問題的信息域和功能域。信息域包括數(shù)據(jù)流、數(shù)據(jù)內(nèi)容和數(shù)據(jù)結(jié)構(gòu)。數(shù)據(jù)流就是數(shù)據(jù)經(jīng)過系統(tǒng)時(shí)的變化形式,輸入數(shù)據(jù)先轉(zhuǎn)換成中間數(shù)據(jù),再由中間數(shù)據(jù)轉(zhuǎn)換成輸出結(jié)果數(shù)據(jù)。數(shù)據(jù)內(nèi)容就是數(shù)據(jù)項(xiàng)。數(shù)據(jù)結(jié)構(gòu)就是各數(shù)據(jù)項(xiàng)的邏輯組織。三、需求分析的原則2.對(duì)描述信息、功能和行為的模型進(jìn)行分解,用層次的方式展示細(xì)節(jié)。把問題以自頂向下、逐層分解的方式分解為幾個(gè)較易理解的部分,并確定各部分之間的接口,從而實(shí)現(xiàn)軟件的整體功能。在需求分析階段,軟件的功能域和信息域都可以做進(jìn)一步的分解。3.分清系統(tǒng)的邏輯視圖和物理視圖
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 三體讀書筆記
- 簡(jiǎn)歷的自我評(píng)價(jià)(合集15篇)
- 售后客服工作總結(jié)合集15篇
- xxx生態(tài)養(yǎng)豬場(chǎng)建設(shè)產(chǎn)業(yè)化項(xiàng)目商業(yè)計(jì)劃書
- 南京某煤氣站鋼結(jié)構(gòu)氣柜施工組織設(shè)計(jì)
- 房地產(chǎn)銷售個(gè)人季度工作總結(jié)(合集六篇)
- 七年級(jí)人教版復(fù)習(xí)提綱
- 《職場(chǎng)溝通》電子教案 項(xiàng)目十 商務(wù)宴請(qǐng)溝通(4課時(shí))
- 2025年硅力敏傳感器項(xiàng)目發(fā)展計(jì)劃
- 門面房出租合同范文
- 雙塊式無砟軌道道床板裂紋成因分析應(yīng)對(duì)措施
- FZ∕T 62044-2021 抗菌清潔巾
- 國(guó)家電網(wǎng)有限公司十八項(xiàng)電網(wǎng)重大反事故措施(修訂版)
- 凈水廠課程設(shè)計(jì)
- 全級(jí)老年大學(xué)星級(jí)學(xué)校達(dá)標(biāo)評(píng)價(jià)細(xì)則
- 模具維護(hù)保養(yǎng)PPT課件
- 《新媒體文案寫作》試卷4
- 【模板】OTS認(rèn)可表格
- 2021國(guó)家開放大學(xué)電大本科《流行病學(xué)》期末試題及答案
- 中國(guó)銀行_境外匯款申請(qǐng)表模板(練手)
- 中班數(shù)學(xué)活動(dòng)《圖圖家請(qǐng)客》教案
評(píng)論
0/150
提交評(píng)論