軟件工程概述_第1頁
軟件工程概述_第2頁
軟件工程概述_第3頁
軟件工程概述_第4頁
軟件工程概述_第5頁
已閱讀5頁,還剩131頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

軟件工程主講:林芳Qq:1329155520課件:/cmRBEA6CPdMuy訪問密碼d614第一章軟件工程概述本章主要內(nèi)容:軟件危機(jī)軟件工程軟件生命周期軟件過程本章重點(diǎn):軟件工程軟件生命周期軟件生命周期模型1.1軟件危機(jī)1.1.1軟件工程發(fā)展史1.1.2軟件危機(jī)1.1.1軟件工程發(fā)展史19世紀(jì)初在法國(guó)人約瑟夫雅各JosephMarieJaquard設(shè)計(jì)的織布機(jī)里已經(jīng)具有了初步的程序設(shè)計(jì)的思想英國(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é)家布爾奠定的。早期利用計(jì)算機(jī)器解決問題的一般過程是針對(duì)特定的問題制造解決該問題的機(jī)器設(shè)計(jì)所需的指令并把完成該指令的代碼序列傳送到卡片或機(jī)械輔助部件上使計(jì)算機(jī)器運(yùn)轉(zhuǎn)執(zhí)行預(yù)定的操作程序設(shè)計(jì)的形式有不同程度的改變,但革命性的變革則是1948年,香農(nóng)重新發(fā)現(xiàn)了二值演算之后,發(fā)生的二值邏輯代數(shù),被引入程序設(shè)計(jì)過程。程序的表現(xiàn)形式就是存儲(chǔ)在不同信息載體上的0和1的序列。1.1.1軟件工程發(fā)展史從1946年第一臺(tái)計(jì)算機(jī)產(chǎn)生,軟件工程發(fā)展分為4個(gè)階段程序設(shè)計(jì)階段(20世紀(jì)40年代中期-60年代中期)“軟件=程序+文檔”階段(20世紀(jì)60年代中期-70年代中期)軟件工程階段:20世紀(jì)70年代中期-20世紀(jì)90年代第4代技術(shù)階段程序設(shè)計(jì)階段(20世紀(jì)40年代中期-60年代中期)

主要致力于硬件的設(shè)計(jì)和生產(chǎn)。計(jì)算機(jī)程序是作為解決特定問題的工具和信息分析工具而存在的,并不是一個(gè)獨(dú)立的產(chǎn)業(yè),軟件基本不受重視。軟件=程序?!败浖?程序+文檔”階段(20世紀(jì)60年代中期-70年代中期)20世紀(jì)60年代中期-60年代末期20世紀(jì)60年代末期-70年代中期20世紀(jì)60年代中期-60年代末期軟件需求量增大,軟件作為獨(dú)立產(chǎn)品;1968年MartinGoetz獲得了世界上第一個(gè)軟件專利。1969年春ADR公司就IBM壟斷軟件產(chǎn)業(yè)提出了訴訟,促使IBM在1969年6月30日宣布結(jié)束一些軟件和硬件的捆綁銷售,為軟件產(chǎn)品單獨(dú)定價(jià)。20世紀(jì)60年代中期-60年代末期軟件規(guī)模與復(fù)雜性大大增加這個(gè)階段軟件技術(shù)的發(fā)展為解決這個(gè)問題奠定了基礎(chǔ)。軟件的技術(shù)也在不斷發(fā)展:引入了多道程序技術(shù)、多用戶系統(tǒng)、人機(jī)交互概念、數(shù)據(jù)庫管理系統(tǒng);有了操作系統(tǒng)和編譯技術(shù);不再直接用機(jī)器碼編程,而使用各種符號(hào)語言來編程,如高級(jí)語言BASIC、FORTRAN、ALGOL、COBOL等。20世紀(jì)60年代中期-60年代末期開發(fā)方式仍沿用個(gè)體化方式,出現(xiàn)了“軟件危機(jī)”二十世紀(jì)六十年代IBM公司開發(fā)了System/360系列機(jī)器。盡管這些機(jī)器在性能上有明顯的差異,但是他們有統(tǒng)一的操作系統(tǒng)——OS/360,讓單一OS適用于整個(gè)系列的產(chǎn)品是System/360成功的關(guān)鍵。OS/360的成功陸續(xù)地催化出MFT、MVT、SVS、MVS、MVS/XA、MVS/ESA、OS/390和z/OS等大型機(jī)的操作系統(tǒng)。OS/360問題開發(fā)難度大,IBM在1963-1966年開發(fā)OS/360,IBM為這個(gè)計(jì)劃總共投入50億美元的研發(fā)費(fèi)用,花5000人-年工作量,最多同時(shí)有1000人投入開發(fā)工作,源程序近100萬行。質(zhì)量差,維護(hù)困難:每次發(fā)行新版本都要更正前一個(gè)版本1000個(gè)程序錯(cuò)誤。

《人月神話》焦油坑這個(gè)系統(tǒng)在開發(fā)和維護(hù)過程中存在很多問題,在開發(fā)OS/360過程中遇到的問題在FredBrooks寫的軟件工程經(jīng)典之作《人月神話》中詳細(xì)地?cái)⑹隽恕J非笆分?,沒有別的場(chǎng)景比巨獸在焦油坑中垂死掙扎的場(chǎng)面更令人震撼。上帝見證著恐龍、猛犸象、劍齒虎在焦油中掙扎。它們掙扎得越是猛烈,焦油糾纏得越緊,沒有任何猛獸足夠強(qiáng)壯或具有足夠的技巧,能夠掙脫束縛,它們最后都沉到了坑底。

1963年美國(guó)飛往火星的火箭爆炸,造成1000萬美元的損失。原因是FORTRAN程序:

DO5I=1,3

誤寫為:DO5I=1.

3

1967年蘇聯(lián)“聯(lián)盟一號(hào)”載人宇宙飛船在返航時(shí),由于軟件忽略一個(gè)小數(shù)點(diǎn),在進(jìn)入大氣層時(shí)因打不開降落傘而燒毀。20世紀(jì)60年代末期-70年代中期

產(chǎn)生了結(jié)構(gòu)化程序設(shè)計(jì)理論。從程序中分離出數(shù)據(jù)結(jié)構(gòu)與算法。形成了完整的軟件系統(tǒng)。發(fā)展了各種程序設(shè)計(jì)語言。提出并使用“軟件工程”這個(gè)術(shù)語?!败浖こ獭边@個(gè)詞是由NATO(NorthAtlanticTreatyOrganization北大西洋公約組織屬下的一個(gè)研究組在1967年提出的,這個(gè)研究組提議召開一次會(huì)議,專門討論“軟件所面臨的問題”。1968年,由NATO科學(xué)委員會(huì)主辦的這次會(huì)議在德國(guó)加米施(Garmish)召開,會(huì)議提交的報(bào)告就被命名為《軟件工程》。1968年NATO提出軟件工程的概念,倡導(dǎo)以工程的原理、原則和方法進(jìn)行軟件開發(fā),以期解決當(dāng)時(shí)出現(xiàn)的"軟件危機(jī)"。3、軟件工程時(shí)代(20世紀(jì)70年代中期~今)計(jì)算機(jī)滲透到人類活動(dòng)各個(gè)領(lǐng)域。軟件的生產(chǎn)方式是工程化的生產(chǎn),軟件工程標(biāo)準(zhǔn)規(guī)范還不完善軟件開發(fā)技術(shù)有很大進(jìn)步,軟件生產(chǎn)率大大提高,但未能獲得突破性進(jìn)展軟件產(chǎn)品供不應(yīng)求,軟件維護(hù)要耗費(fèi)大量的成本,軟件危機(jī)日益嚴(yán)重,沒有完全擺脫軟件危機(jī)4、第4代技術(shù)階段現(xiàn)在的軟件已經(jīng)不再是單機(jī)系統(tǒng),計(jì)算機(jī)體系結(jié)構(gòu)從主機(jī)結(jié)構(gòu)轉(zhuǎn)向C/S環(huán)境、B/S環(huán)境。開發(fā)技術(shù)有了新的發(fā)展:計(jì)算機(jī)輔助軟件工程CASE將工具和代碼生成器結(jié)合起來,為許多軟件系統(tǒng)提供了可靠的解決方案;面向?qū)ο蠹夹g(shù)已在許多領(lǐng)域迅速取代了傳統(tǒng)的軟件開發(fā)方法;專家系統(tǒng)和人工智能軟件有了實(shí)際應(yīng)用;人工神經(jīng)網(wǎng)絡(luò)軟件展示了信息處理的美好前景;并行計(jì)算、網(wǎng)絡(luò)計(jì)算機(jī)、虛擬現(xiàn)實(shí)技術(shù)、多媒體技術(shù)和現(xiàn)代通信技術(shù)使人們開始采用和原來完全不同的方法進(jìn)行工作。此外,光計(jì)算機(jī)、化學(xué)計(jì)算機(jī)、生物計(jì)算機(jī)和量子計(jì)算機(jī)等新一代計(jì)算機(jī)也在研制之中,這將使軟件工程帶來一場(chǎng)新的革命。1.1.2軟件危機(jī)(1)軟件危機(jī)定義軟件危機(jī)定義:軟件開發(fā)和維護(hù)過程中遇到的一系列嚴(yán)重問題。軟件危機(jī)包含兩方面的問題:如何開發(fā)軟件,以滿足對(duì)軟件日益增長(zhǎng)的需求;如何維護(hù)數(shù)量不斷膨脹的已有軟件。1.1.2軟件危機(jī)(2)軟件危機(jī)表現(xiàn)1)

軟件成本高

做個(gè)算術(shù)題:美國(guó)一家公司在1982年計(jì)劃用FORTRAN語言開發(fā)一個(gè)在VAX750計(jì)算機(jī)上運(yùn)行的應(yīng)用程序,估計(jì)這個(gè)程序的長(zhǎng)度為10000條FORTRAN指令。如果平均每人每天可以開發(fā)出10條(注意:開發(fā)工作量包括問題定義、需求分析、總體設(shè)計(jì)、詳細(xì)設(shè)計(jì)、編碼和測(cè)試,不僅僅是編寫代碼。),回答如下問題:回答如下問題:1)開發(fā)這個(gè)應(yīng)用程序需要多少人日?答:10000/10=1000(人日)2)假設(shè)程序員的月平均工資為4000美元,每月按20個(gè)工作日計(jì)算,這個(gè)軟件的成本是多少?答:1000/20*4000=200000(美元)3)1982年VAX750計(jì)算機(jī)硬件價(jià)格為125000美元,在那一年這個(gè)軟件的成本在總成本中占比多少?答:200000/(200000+125000)=61.5%

4)20年后,一臺(tái)性能遠(yuǎn)遠(yuǎn)優(yōu)于VAX750的微型計(jì)算機(jī)的價(jià)格約為2000美元,這時(shí)軟件開發(fā)生產(chǎn)率已提高到平均每人每天40條指令,程序員的月平均工資為8000美元,那么這時(shí)開發(fā)上述程序,該軟件的成本在總成本中占比多少?答:軟件成本:10000/40/20*8000=100000(美元)總成本中占比:100000/(100000+2000)=98%

1.1.2軟件危機(jī)(2)軟件危機(jī)表現(xiàn)1)

軟件成本高

1008060402001955硬件軟件19701985總費(fèi)用的百分比計(jì)算機(jī)系統(tǒng)硬件/軟件成本變化趨勢(shì)1.1.2軟件危機(jī)(3)2)軟件研制進(jìn)度無法預(yù)先估計(jì)

3)軟件產(chǎn)品質(zhì)量差

4)軟件常常是不可維護(hù)

5)軟件發(fā)展跟不上硬件的發(fā)展和用戶的要求

產(chǎn)生軟件危機(jī)的原因1、軟件本身的特點(diǎn)軟件是個(gè)邏輯實(shí)體,不是物理實(shí)體,具有抽象性→管理和控制軟件困難軟件規(guī)模龐大→軟件開發(fā)困難軟件故障是在開發(fā)過程中產(chǎn)生而在測(cè)試時(shí)沒有發(fā)現(xiàn)的問題→軟件故障修改困難軟件維護(hù)會(huì)產(chǎn)生新的錯(cuò)誤→軟件維護(hù)困難1.1.2軟件危機(jī)(4)1.1.2軟件危機(jī)(5)2、人為因素,軟件開發(fā)和維護(hù)的方法不正確

1)軟件開發(fā)技術(shù)落后、生產(chǎn)方式落后、開發(fā)工具落后

2)對(duì)用戶要求沒有完整準(zhǔn)確認(rèn)識(shí)就匆忙著手編寫程序

3)只重視程序而忽視軟件配置其余成分:

4)輕視維護(hù):維護(hù)費(fèi)用占軟件總費(fèi)用的55%-70%

1.1.2軟件危機(jī)(6)緩解軟件危機(jī)的途徑1、更新觀念:采用工程化的方法和途徑來開發(fā)與維護(hù)軟件2、汲取系統(tǒng)工程的理念,采用必要的組織管理和技術(shù)管理措施3、應(yīng)該不斷地發(fā)現(xiàn)、完善、推廣、使用再實(shí)踐中總結(jié)出來的開發(fā)軟件的成功的技術(shù)和方法。4、開發(fā)和使用更好的軟件工具,提高軟件生產(chǎn)率。

1.2軟件工程學(xué)1.2.1什么是軟件?1.2.2什么是軟件工程?1.2.3軟件工程的目標(biāo)1.2.4軟件工程學(xué)的內(nèi)容1.2.5軟件過程1.2.6軟件工程基本原理1.2.1什么是軟件?1.軟件的定義軟件是指計(jì)算機(jī)程序及其有關(guān)的數(shù)據(jù)和文檔。程序:能夠完成預(yù)定功能的可執(zhí)行的指令序列。數(shù)據(jù):程序能適當(dāng)處理的信息,具有適當(dāng)?shù)臄?shù)據(jù)結(jié)構(gòu)。文檔:開發(fā)、使用和維護(hù)程序所需要的圖文資料。有了程序,為什么需要文檔?直接閱讀程序有難度。程序只是軟件開發(fā)和維護(hù)過程中,其中一小階段的成果。軟件生產(chǎn)的各個(gè)階段必需完成的有關(guān)計(jì)算機(jī)程序的功能、設(shè)計(jì)和使用的文字或圖形資料,這些資料稱為“文檔”。軟件文檔是以人們可讀的形式出現(xiàn)的技術(shù)數(shù)據(jù)和信息。特別當(dāng)軟件成為商品時(shí),文檔是必不可少的。2.軟件的特點(diǎn)軟件是一種邏輯產(chǎn)品生產(chǎn)方式主要是研制,而不是硬件制造軟件不允許有誤差軟件維護(hù)復(fù)雜

3.軟件的分類—按功能進(jìn)行劃分系統(tǒng)軟件操作系統(tǒng)數(shù)據(jù)庫管理系統(tǒng)設(shè)備驅(qū)動(dòng)程序通信處理程序等支撐軟件文本編輯程序文件格式化程序磁盤向磁帶向數(shù)據(jù)傳輸?shù)某绦虺绦驇煜到y(tǒng)支持需求分析、設(shè)計(jì)、實(shí)現(xiàn)、測(cè)試和管理的軟件

應(yīng)用軟件商業(yè)數(shù)據(jù)處理軟件工程與科學(xué)計(jì)算軟件計(jì)算機(jī)輔助設(shè)計(jì)/制造軟件系統(tǒng)仿真軟件智能產(chǎn)品嵌入軟件醫(yī)療、制藥軟件事務(wù)管理、辦公自動(dòng)化軟件計(jì)算機(jī)輔助教學(xué)軟件3.軟件的分類—按規(guī)模進(jìn)行劃分類別參加人員數(shù)研制期限源程序行數(shù)

微型 1 1~4周0.5k小型1 1~6月1k~2k中型2~5 1~2年5k~50k大型5~20 2~3年50k~100k甚大型100~10004~5年1M(=1000k)極大型2000~50005~10年1M~10M

3.軟件的分類按工作方式劃分:實(shí)時(shí)處理軟件分時(shí)軟件交互式軟件批處理軟件按服務(wù)對(duì)象的范圍劃分:項(xiàng)目軟件產(chǎn)品軟件按使用的頻度進(jìn)行劃分:一次使用頻繁使用按軟件失效的影響進(jìn)行劃分:高可靠性軟件一般可靠性軟件1.2.2什么是軟件工程?軟件工程定義

1968年在聯(lián)邦德國(guó)召開的NATO(NorthAtlanticTreatyOrganization)國(guó)際會(huì)議上正式提出并使用“軟件工程”這個(gè)術(shù)語。定義1:軟件工程是為了經(jīng)濟(jì)地獲得能夠在實(shí)際機(jī)器上高效運(yùn)行的可靠軟件而建立和使用的一系列的工程化原則。[Bauer1972]定義2:軟件工程是以工程的形式應(yīng)用計(jì)算機(jī)科學(xué)和數(shù)學(xué)原理,從而經(jīng)濟(jì)有效地解決軟件問題[CMU/SEI-90-TR-03]定義3:軟件工程是將系統(tǒng)性的、規(guī)范化的、可定量的方法應(yīng)用于軟件的開發(fā)、運(yùn)行和維護(hù)。[IEEE1990]定義4:采用工程的概念、原理、技術(shù)和方法來開發(fā)與維護(hù)軟件,把經(jīng)過時(shí)間考驗(yàn)而證明正確的管理技術(shù)和當(dāng)前能夠得到的最好的技術(shù)方法結(jié)合起來,以經(jīng)濟(jì)地開發(fā)出高質(zhì)量的軟件并有效地維護(hù)它。理解:

1)軟件工程是系統(tǒng)方法而不是神秘的個(gè)人技巧。

2)軟件工程的目標(biāo)是經(jīng)濟(jì)、成功地開發(fā)出高質(zhì)量地軟件。

3)軟件工程包含技術(shù)和管理兩方面的內(nèi)容。軟件工程的本質(zhì)特性軟件工程關(guān)注于大型程序的構(gòu)造軟件工程的中心課題是控制復(fù)雜性軟件經(jīng)常變化開發(fā)軟件的效率非常重要和諧地合作是開發(fā)軟件的關(guān)鍵軟件必須有效地支持它的用戶在軟件工程領(lǐng)域中通常由具有一種文化背景的人替具有另一種文化背景的人創(chuàng)造產(chǎn)品1.2.3軟件工程的目標(biāo)軟件工程是一門工程性的學(xué)科,軟件工程的目的是成功地構(gòu)造一個(gè)大型軟件系統(tǒng)。所謂成功是指達(dá)到以下標(biāo)準(zhǔn):有較低的開發(fā)成本。能達(dá)到用戶所要求的軟件功能。有很好的軟件性能。軟件有較好的可移植性、穩(wěn)定性、健壯性和可靠性。有較好的可維護(hù)性,較低的維護(hù)成本。能按計(jì)劃規(guī)定的進(jìn)度開發(fā),及時(shí)交付使用。1.2.4軟件工程學(xué)的內(nèi)容軟件工程學(xué)的主要內(nèi)容:軟件開發(fā)技術(shù)包含:軟件工程方法學(xué)軟件工具軟件開發(fā)環(huán)境;軟件工程管理學(xué)包含:軟件工程經(jīng)濟(jì)學(xué)軟件管理學(xué)。理論方面研究1.軟件工程方法學(xué)軟件工程方法學(xué)是編制軟件的系統(tǒng)方法,它確定軟件開發(fā)的各個(gè)階段,規(guī)定每一階段的活動(dòng)、產(chǎn)品、驗(yàn)收的步驟和完成準(zhǔn)則。各種軟件工程方法的適用范圍不盡相同。目前使用得最廣泛的軟件工程方法學(xué)可以分為傳統(tǒng)方法學(xué)面向?qū)ο蠓椒▽W(xué)計(jì)算機(jī)世界現(xiàn)實(shí)世界結(jié)構(gòu)化開發(fā)方法SASDSPOOAOODOOP面向?qū)ο箝_發(fā)方法(1)傳統(tǒng)方法學(xué)采用結(jié)構(gòu)化技術(shù),來完成軟件開發(fā)任務(wù),把軟件開發(fā)工作劃分成若干個(gè)階段傳統(tǒng)方法學(xué)歷史悠久,是廣大軟件開發(fā)人員所熟悉的,在開發(fā)某些軟件時(shí)十分有效。傳統(tǒng)方法可以再分為:面向數(shù)據(jù)流設(shè)計(jì)方法面向數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)方法。(2)面向?qū)ο蠓椒▽W(xué)面向?qū)ο蠓椒▽W(xué)是在傳統(tǒng)方法學(xué)的基礎(chǔ)上發(fā)展起來的。面向?qū)ο蠓椒▽W(xué)的要素是對(duì)象、類、繼承以及消息通信??梢杂孟铝蟹匠虂砀爬ǎ好嫦?qū)ο?對(duì)象+類+繼承+消息通信面向?qū)ο蠓椒▽W(xué)是多次反復(fù)、迭代開發(fā)的過程。軟件工程方法學(xué)有三個(gè)要素,包括方法、工具和過程。質(zhì)量焦點(diǎn)過程方法工具質(zhì)量焦點(diǎn):任何工程方法必須以有組織的質(zhì)量保證為基礎(chǔ)。質(zhì)量的理念刺激不斷過程改進(jìn),導(dǎo)致出現(xiàn)更加成熟的軟件工程方法。它是軟件工程的根基。過程:軟件工程的基礎(chǔ)是過程。規(guī)定了完成任務(wù)的工作階段、工作內(nèi)容、產(chǎn)品、驗(yàn)收的步驟和完成準(zhǔn)則。軟件工程過程是將技術(shù)層結(jié)合在一起的凝聚力,使得軟件能夠合理地和及時(shí)地開發(fā)出來。方法:完成軟件開發(fā)任務(wù)的技術(shù)手段,軟件工程方法層提供了建造軟件在技術(shù)上需要“怎么做”。工具:在工具層對(duì)過程和方法提供了自動(dòng)和半自動(dòng)的支持。2.軟件工具軟件工具(softwaretools)是指為了支持計(jì)算機(jī)軟件的開發(fā)和維護(hù)而研制的程序系統(tǒng)。使用軟件工具的目的是提高軟件設(shè)計(jì)的質(zhì)量和軟件生產(chǎn)效率,降低軟件開發(fā)、維護(hù)的成本。軟件工具用于軟件開發(fā)的整個(gè)過程。3.軟件開發(fā)環(huán)境軟件開發(fā)環(huán)境是方法和工具的結(jié)合。在1985年第八屆國(guó)際軟件工程會(huì)議上,關(guān)于“軟件開發(fā)環(huán)境”的定義是:“軟件開發(fā)環(huán)境是相關(guān)的一組軟件工具集合,它支持一定的軟件開發(fā)方法或按照一定的軟件開發(fā)模型組織而成”。軟件開發(fā)環(huán)境的設(shè)計(jì)目標(biāo)是提高軟件生產(chǎn)率和改善軟件質(zhì)量。計(jì)算機(jī)輔助軟件工程(ComputerAidedSoftwareEngineering,CASE)是一組工具和方法的集合,可以輔助軟件生命周期各階段進(jìn)行的軟件開發(fā)活動(dòng)。4.軟件工程管理軟件工程管理學(xué)包含軟件工程經(jīng)濟(jì)學(xué):包括成本估算、效益評(píng)價(jià)、風(fēng)險(xiǎn)分析、投資回收分析、質(zhì)量評(píng)價(jià)等。軟件管理學(xué):包括軟件費(fèi)用管理、人員組織、工程計(jì)劃管理、軟件配置管理等。(1)費(fèi)用管理從經(jīng)濟(jì)角度分析,開發(fā)一個(gè)軟件系統(tǒng)是否劃算,是軟件使用單位負(fù)責(zé)人決定是否開發(fā)這個(gè)項(xiàng)目的主要依據(jù),要從軟件開發(fā)成本、運(yùn)行費(fèi)用、經(jīng)濟(jì)效益等方面來估算整個(gè)系統(tǒng)的投資和回收情況。軟件開發(fā)成本主要包含開發(fā)人員的工資報(bào)酬,開發(fā)階段的各項(xiàng)支出;軟件運(yùn)行費(fèi)用取決于系統(tǒng)的操作費(fèi)用和維護(hù)費(fèi)用;系統(tǒng)的經(jīng)濟(jì)效益是指因使用新系統(tǒng)而節(jié)省的費(fèi)用和增加的收入。由于運(yùn)行費(fèi)用和經(jīng)濟(jì)效益兩者在軟件的整個(gè)使用期內(nèi)都存在,總的效益和軟件使用時(shí)間的長(zhǎng)短有關(guān),所以,應(yīng)合理地估算軟件的壽命。一般在進(jìn)行成本/效益分析時(shí)一律假設(shè)軟件使用期為五年。(2)人員組織軟件開發(fā)不是個(gè)體勞動(dòng),需要各類人員協(xié)同配合、共同完成工程任務(wù),因而應(yīng)該有良好的組織、周密的管理。(3)工程計(jì)劃管理軟件工程計(jì)劃是在軟件開發(fā)的早期確定的。在計(jì)劃實(shí)施過程中,如果需要,應(yīng)對(duì)工程進(jìn)度作適當(dāng)?shù)恼{(diào)整。在軟件開發(fā)結(jié)束后應(yīng)寫出軟件開發(fā)總結(jié),以便今后能制定出更切實(shí)際的軟件開發(fā)計(jì)劃。(4)軟件配置管理軟件工程各階段所產(chǎn)生的全部文檔和軟件本身構(gòu)成軟件配置。每當(dāng)完成一個(gè)軟件工程步驟,就涉及軟件工程配置,必須使軟件配置始終保持其精確性。軟件配置管理就是在系統(tǒng)的整個(gè)開發(fā)、運(yùn)行和維護(hù)時(shí)期控制配置的狀態(tài)和變動(dòng),驗(yàn)證配置項(xiàng)的完整性和正確性。1.2.5軟件過程國(guó)際標(biāo)準(zhǔn)化組織(InternationalStandardizationOrganization,ISO)是世界性的標(biāo)準(zhǔn)化專門機(jī)構(gòu)。ISO9000把軟件過程定義為:“把輸入轉(zhuǎn)化為輸出的一組彼此相關(guān)的資源和活動(dòng)”。軟件過程是為了獲得高質(zhì)量軟件所需要完成的一系列任務(wù)的框架,它規(guī)定了完成各項(xiàng)任務(wù)的工作步驟。軟件開發(fā)過程(softwaredevelopmentprocess)是把用戶要求轉(zhuǎn)化為軟件需求,把軟件需求轉(zhuǎn)化為設(shè)計(jì),用代碼來實(shí)現(xiàn)設(shè)計(jì)、對(duì)代碼進(jìn)行測(cè)試,完成文檔編制并確認(rèn)軟件可以投入運(yùn)行使用的過程。軟件過程定義了運(yùn)用方法的順序、應(yīng)該交付的文檔、開發(fā)軟件的管理措施和各階段任務(wù)完成的標(biāo)志。1.2.6軟件工程基本原理用分階段的生命周期計(jì)劃嚴(yán)格管理堅(jiān)持進(jìn)行階段評(píng)審.高中低變化出現(xiàn)的時(shí)期早中晚不同時(shí)期引入同一變動(dòng)付出的代價(jià)代價(jià)1.2.6軟件工程基本原理實(shí)行嚴(yán)格的產(chǎn)品控制采用現(xiàn)代程序設(shè)計(jì)技術(shù)結(jié)果應(yīng)能清楚地審查開發(fā)小組的人員應(yīng)該少而精承認(rèn)不斷改進(jìn)軟件工程實(shí)踐的必要性1.3軟件生命周期1.3.1軟件生命周期定義1.3.2軟件生命周期劃分階段的原則1.3.3軟件生命周期各階段的任務(wù)1.3.1軟件生命周期定義軟件產(chǎn)品從定義開始,經(jīng)過開發(fā)、使用和維護(hù),直到最后被淘汰的整個(gè)過程稱為軟件生存周期。

為什么稱為軟件生命周期?T軟件生命周期人的生命周期T費(fèi)用費(fèi)用貢獻(xiàn)效益為什么要?jiǎng)澐蛛A段?是實(shí)現(xiàn)軟件生產(chǎn)過程化的重要步驟。能夠簡(jiǎn)化每個(gè)階段的工作。容易確立系統(tǒng)開發(fā)計(jì)劃。還可以明確系統(tǒng)各類開發(fā)人員的分工與職責(zé)范圍。

1.3.2軟件生命周期劃分階段的原則各階段的任務(wù)彼此間盡可能相對(duì)獨(dú)立。這樣便于逐步完成每個(gè)階段的任務(wù),能夠簡(jiǎn)化每個(gè)階段的工作,容易確立系統(tǒng)開發(fā)計(jì)劃。同一階段的工作任務(wù)性質(zhì)盡可能相同。這樣有利于軟件工程的開發(fā)和組織管理,明確系統(tǒng)各類開發(fā)人員的分工與職責(zé)范圍,以便協(xié)同工作,保證質(zhì)量。1.3.3軟件生命周期各階段的任務(wù)軟件生存周期階段劃分:軟件計(jì)劃:?jiǎn)栴}定義、可行性研究、需求分析軟件開發(fā):設(shè)計(jì)、實(shí)現(xiàn)和測(cè)試軟件維護(hù):維護(hù)

實(shí)際從事軟件開發(fā)時(shí),軟件規(guī)模、種類、開發(fā)環(huán)境及開發(fā)時(shí)所使用的技術(shù)方法等因素,都影響階段的劃分。(1)問題定義確定系統(tǒng)的目標(biāo)、規(guī)模和基本任務(wù)。(2)可行性研究從經(jīng)濟(jì)、技術(shù)、法律等方面分析確定系統(tǒng)是否值得開發(fā),及時(shí)建議停止項(xiàng)目開發(fā),避免人力、物力、時(shí)間的浪費(fèi)。(3)需求分析確定軟件系統(tǒng)應(yīng)具備的具體功能。通常用數(shù)據(jù)流圖、數(shù)據(jù)字典和簡(jiǎn)明算法描述表示系統(tǒng)的邏輯模型,防止系統(tǒng)的設(shè)計(jì)與用戶的實(shí)際需求不相符的后果。(4)概要設(shè)計(jì)確定系統(tǒng)設(shè)計(jì)方案,軟件的體系結(jié)構(gòu)。確定軟件由哪些模塊組成以及這些模塊之間的相互關(guān)系。(5)詳細(xì)設(shè)計(jì)描述應(yīng)該如何具體地實(shí)現(xiàn)系統(tǒng)。詳細(xì)設(shè)計(jì)每個(gè)模塊,確定實(shí)現(xiàn)模塊所需要的算法和數(shù)據(jù)結(jié)構(gòu)。(6)軟件實(shí)現(xiàn)階段進(jìn)行程序設(shè)計(jì)(編碼)和模塊測(cè)試。(7)綜合測(cè)試階段通過各種類型的測(cè)試,查出軟件設(shè)計(jì)中的錯(cuò)誤并改正,確保軟件質(zhì)量;還要在用戶的參與下進(jìn)行驗(yàn)收,才可交付使用。(8)軟件運(yùn)行、維護(hù)軟件運(yùn)行期間,通過各種必要的維護(hù)使系統(tǒng)改正錯(cuò)誤、或修改擴(kuò)充功能使軟件適應(yīng)環(huán)境變化,以便延長(zhǎng)軟件的使用壽命,提高軟件的效益。每次維護(hù)的要求及修改步驟都應(yīng)詳細(xì)準(zhǔn)確地記錄下來,作為文檔保存。1.4軟件過程軟件過程:為了獲得高質(zhì)量軟件所需要完成的一系列任務(wù)的框架,他規(guī)定了完成各項(xiàng)任務(wù)的工作步驟。軟件開發(fā)模型:描述軟件開發(fā)過程中各種活動(dòng)如何執(zhí)行的模型。軟件開發(fā)模型確立了軟件開發(fā)和演繹中各階段的次序限制,以及各階段活動(dòng)的準(zhǔn)則,確立了開發(fā)過程所遵守的規(guī)定和限制。1.4.1瀑布模型1.4.2快速原型模型(RapidPrototypeModel)1.4.3增量模型1.4.4噴泉模型1.4.5螺旋模型(SpiralModel)1.4.6RUP(統(tǒng)一過程)1.4.7敏捷過程與極限編程1.4.8微軟過程1.4.9軟件開發(fā)模型的選擇1.4.1瀑布模型(waterfallmodel)

屬于傳統(tǒng)的結(jié)構(gòu)化開發(fā)模式,是一種將軟件生存周期各活動(dòng)階段規(guī)定為依線性順序聯(lián)接的、系統(tǒng)的和順序的開發(fā)方法。傳統(tǒng)的瀑布模型

按照傳統(tǒng)的瀑布模型開發(fā)軟件,有下述三個(gè)特點(diǎn):(1)階段間具有順序性和依賴性(2)推遲實(shí)現(xiàn)的觀點(diǎn)(3)質(zhì)量保證的觀點(diǎn)傳統(tǒng)的瀑布模型

為了保證質(zhì)量,瀑布模型堅(jiān)持兩個(gè)重要做法:每個(gè)階段都要完成規(guī)定的文檔。每個(gè)階段都要對(duì)已完成的文檔進(jìn)行復(fù)審,以便及早發(fā)現(xiàn)隱患,排除故障。文檔的作用:作為階段工作成果和結(jié)束標(biāo)志;向管理人員提供軟件開發(fā)過程中的進(jìn)展和情況,把軟件開發(fā)過程中的一些“不可見的”事物轉(zhuǎn)換成“可見的”文字資料;記錄開發(fā)過程中的技術(shù)信息,便于協(xié)調(diào)以后的軟件開發(fā)、使用和修改;提供對(duì)軟件的有關(guān)運(yùn)行、維護(hù)和培訓(xùn)的信息,便于各類人員之間相互了解彼此的工作;向潛在用戶報(bào)告軟件的功能和性能,使他們能判定該軟件能否服務(wù)于自己的需要。瀑布模型的優(yōu)點(diǎn):

它可強(qiáng)迫開發(fā)人員采用規(guī)范的開發(fā)方法。它嚴(yán)格地規(guī)定了每個(gè)階段必須提交的文檔。它要求每個(gè)階段所交出的一切產(chǎn)品都必須經(jīng)過質(zhì)量保證小組的仔細(xì)驗(yàn)證。瀑布模型缺點(diǎn):1)對(duì)于應(yīng)用軟件項(xiàng)目,需求難以完整、準(zhǔn)確:2)缺乏靈活:3)開發(fā)代價(jià)高:4)沒有體現(xiàn)開發(fā)人員之間通信和軟件工具之間聯(lián)系和開發(fā)工作之間并行、串行。1.4.2快速原型模型(RapidPrototypeModel)為什么要原型?正確的需求定義是系統(tǒng)成功的關(guān)鍵。由于以下幾個(gè)方面原因:用戶與開發(fā)者之間以及他們之間的交流存在巨大的文化差異;用戶不熟悉信息技術(shù),可能提出非常含糊的需要,而這種需求有可能被開發(fā)人員隨意解釋;經(jīng)驗(yàn)證明,一旦用戶開始使用計(jì)算機(jī)系統(tǒng),他們對(duì)目標(biāo)系統(tǒng)的理解可能又會(huì)發(fā)生變化。快速原型模型就是解決這方面的問題??焖僭偷亩x所謂快速原型是快速建立起來的可以在計(jì)算機(jī)上運(yùn)行的程序,它能完成的功能往往是最終的軟件產(chǎn)品所能完成的功能的一個(gè)子集。特點(diǎn):軟件產(chǎn)品的開發(fā)基本上是線性順序進(jìn)行的

原型開發(fā)的過程快速原型模型的特點(diǎn)只要快速原型法使用得當(dāng),就能減少軟件的總成本,縮短開發(fā)周期。所以快速原型模型是目前比較流行的實(shí)用開發(fā)模型。開發(fā)按線性順序進(jìn)行,從模型圖可以看出,快速原型模型是不帶反饋環(huán)的,在需求確定之后,后面的開發(fā)按線性順行進(jìn)行。原型的開發(fā)工具應(yīng)根據(jù)目的而使用,快速原型模型原型的分類漸增式原型:也稱增量模型。用于驗(yàn)證軟件需求的原型:用于驗(yàn)證設(shè)計(jì)方案的原型:1.4.3增量模型使用增量模型開發(fā)軟件時(shí),把軟件產(chǎn)品作為一系列的增量構(gòu)件來設(shè)計(jì)、編碼、集成和測(cè)試。增量模型例如,使用增量模型開發(fā)字處理軟件:第一個(gè)增量構(gòu)件可能提供基本的文件管理、編輯和文檔生成功能;第二個(gè)增量構(gòu)件提供更完善的編輯和文檔生成功能;第三個(gè)增量構(gòu)件實(shí)現(xiàn)拼寫和語法檢查功能;第四個(gè)增量構(gòu)件完成高級(jí)的頁面排版功能。

優(yōu)點(diǎn):能在較短時(shí)間內(nèi)向用戶提交可完成一些有用的工作的產(chǎn)品,是增量模型的一個(gè)優(yōu)點(diǎn)。逐步增加產(chǎn)品功能可以使用戶有較充裕的時(shí)間學(xué)習(xí)和適應(yīng)新產(chǎn)品,從而減少一個(gè)全新的軟件可能給客戶組織帶來的沖擊。困難:軟件體系結(jié)構(gòu)的設(shè)計(jì):如何分解增量構(gòu)件?應(yīng)該使構(gòu)件規(guī)模適中,規(guī)模過大或過小都不好。最佳的分解方法因軟件產(chǎn)品特點(diǎn)和開發(fā)人員的習(xí)慣而異。在把每個(gè)新的增量構(gòu)件集成到現(xiàn)有軟件體系結(jié)構(gòu)中時(shí),必須不破壞原來已經(jīng)開發(fā)出的產(chǎn)品。分解的唯一必須遵守的約束條件是,當(dāng)把新構(gòu)件集成到現(xiàn)有軟件中時(shí),所形成的產(chǎn)品必須是可測(cè)試的。1.4.4螺旋模型(spiralmodel)

螺旋模型的基本思想是,使用原型及其他方法來盡量降低風(fēng)險(xiǎn)。

簡(jiǎn)化的螺旋模型完整的螺旋模型如圖所示1.4.5噴泉模型(fountainmodel)主要用于采用對(duì)象技術(shù)的軟件開發(fā)項(xiàng)目。它克服了瀑布模型不支持軟件重用和多項(xiàng)開發(fā)活動(dòng)集成的局限性,噴泉模型使開發(fā)過程具有迭代性和無間隙性。

噴泉模型特點(diǎn):1.開發(fā)過程有分析、系統(tǒng)設(shè)計(jì)、軟件設(shè)計(jì)和實(shí)現(xiàn)4個(gè)階段,各階段相互重疊,它反映了軟件過程并行性的特點(diǎn)。不同活動(dòng)之間項(xiàng)目成就與時(shí)間關(guān)系項(xiàng)目工作分析時(shí)間設(shè)計(jì)實(shí)現(xiàn)測(cè)試2.以分析為基礎(chǔ),反映了軟件過程迭代性的自然特性,從高層返回低層無資源消耗。3.強(qiáng)調(diào)增量開發(fā),整個(gè)過程是一個(gè)迭代的逐步提煉的過程。1.4.6RUP(統(tǒng)一過程)

RationalUnifiedProcess(以下簡(jiǎn)稱RUP),Rational公司提出的軟件開發(fā)方法。主要由IvarJacobson的TheObjectoryApproch和TheRationalApproch發(fā)展而來。同時(shí),它又是文檔化的軟件工程產(chǎn)品,所有RUP的實(shí)施細(xì)節(jié)及方法導(dǎo)引均以Web文檔的方式集成在一張光盤上,由Rational公司開發(fā)、維護(hù)并銷售,當(dāng)前版本是5.0。RUP吸收了多種開發(fā)模型的優(yōu)點(diǎn),具有很好的可操作性和實(shí)用性。從它一推出市場(chǎng),憑借Booch、IvarJacobson、以及Rumbagh在業(yè)界的領(lǐng)導(dǎo)地位以及與統(tǒng)一建模語言(UnifiedModelLanguage,以下簡(jiǎn)稱UML)的良好集成、多種CASE工具的支持、不斷的升級(jí)與維護(hù),迅速得到業(yè)界廣泛的認(rèn)同,越來越多的組織以它作為軟件開發(fā)模型框架?;赨ML的RUP把軟件開發(fā)分成四個(gè)階段:初始階段細(xì)化階段構(gòu)造階段提交階段RUP三大特點(diǎn):軟件開發(fā)是一個(gè)疊代過程。軟件開發(fā)是由UseCase驅(qū)動(dòng)的。軟件開發(fā)是以架構(gòu)設(shè)計(jì)(ArchitecturalDesign)為中心的。1.4.7敏捷過程與極限編程什么是敏捷過程?一種以人為核心、迭代、循序漸進(jìn)的開發(fā)方法。敏捷開發(fā)是由一些業(yè)界專家針對(duì)一些企業(yè)現(xiàn)狀提出了一些讓軟件開發(fā)團(tuán)隊(duì)具有快速工作、響應(yīng)變化能力的價(jià)值觀和原則,并于2001初成立了敏捷聯(lián)盟。他們正在通過親身實(shí)踐以及幫助他人實(shí)踐,揭示更好的軟件開發(fā)方法。

在敏捷開發(fā)中,軟件項(xiàng)目的構(gòu)建被切分成多個(gè)子項(xiàng)目,各個(gè)子項(xiàng)目的成果都經(jīng)過測(cè)試,具備集成和可運(yùn)行的特征。簡(jiǎn)言之,就是把一個(gè)大項(xiàng)目分為多個(gè)相互聯(lián)系,但也可獨(dú)立運(yùn)行的小項(xiàng)目,并分別完成,在此過程中軟件一直處于可使用狀態(tài)。

通過這項(xiàng)工作,他們認(rèn)為:個(gè)體和交互勝過過程和工具可以工作的軟件勝過面面俱到的文檔輕量開發(fā)方法是相對(duì)于傳統(tǒng)的重量開發(fā)方法而言。簡(jiǎn)單地理解,“量”的輕重是指用于軟件過程管理和控制的、除程序量以外的“文檔量”的多少。輕量開發(fā)方法認(rèn)識(shí)到,在當(dāng)前很多情況下,按傳統(tǒng)觀念建立的大量文檔,一方面需要消耗大量開發(fā)資源,同時(shí)卻已失去幫助“預(yù)見、管理、決策和控制的依據(jù)”的作用。因此必須重新審視開發(fā)環(huán)節(jié),去除臃腫累贅,輕裝上陣。客戶合作勝過合同談判響應(yīng)變化勝過遵循計(jì)劃極限編程(XP,eXtremeProgramming)極限編程是敏捷過程中最富盛名的一個(gè)。極限:把好的開發(fā)實(shí)踐運(yùn)用到極致。XP從實(shí)踐中來,是對(duì)實(shí)踐的總結(jié),也是經(jīng)過實(shí)踐檢驗(yàn)的。廣泛應(yīng)用于需求模糊且經(jīng)常改變的場(chǎng)合。極限編程(ExtremeProgramming,簡(jiǎn)稱XP)是由KentBeck在1996年提出的。KentBeck在九十年代初期與WardCunningham共事時(shí),就一直共同探索著新的軟件開發(fā)方法,希望能使軟件開發(fā)更加簡(jiǎn)單而有效。Kent仔細(xì)地觀察和分析了各種簡(jiǎn)化軟件開發(fā)的前提條件、可能性以及面臨的困難。1996年三月,Kent終于在為DaimlerChrysler所做的一個(gè)項(xiàng)目中引入了新的軟件開發(fā)觀念——XP。極限編程采用的有效的開發(fā)實(shí)踐客戶作為開發(fā)團(tuán)隊(duì)的成員至少有一名客戶代表在項(xiàng)目的整個(gè)開發(fā)周期中與開發(fā)人員在一起緊密配合工作,客戶代表負(fù)責(zé)確定需求、回答開發(fā)人員的問題并且設(shè)計(jì)功能驗(yàn)收測(cè)試方案。使用用戶素材用戶素材就是正在進(jìn)行的關(guān)于需求的談話內(nèi)容。根據(jù)用戶素材合理安排實(shí)現(xiàn)該項(xiàng)需求的時(shí)間。短交付周期每?jī)芍芡瓿梢淮蔚牡^程實(shí)現(xiàn)了用戶的一些需求,交付出目標(biāo)系統(tǒng)的一個(gè)可工作的版本。通過向有關(guān)的用戶演示迭代生成的系統(tǒng),獲得他們的反饋意見。驗(yàn)收測(cè)試通過執(zhí)行由客戶指定的驗(yàn)收測(cè)試來捕獲用戶素材的細(xì)節(jié)。結(jié)對(duì)編程由兩名開發(fā)人員在同一臺(tái)計(jì)算機(jī)上共同編寫解決同一個(gè)問題的程序代碼,通常一個(gè)人編碼,另一個(gè)人對(duì)代碼進(jìn)行審查與測(cè)試,以保證代碼的正確性與可讀性。結(jié)對(duì)編程是加強(qiáng)開發(fā)人員相互溝通與評(píng)審的一種方式。測(cè)試驅(qū)動(dòng)開發(fā)強(qiáng)調(diào)“測(cè)試先行”。在編碼之前應(yīng)該首先設(shè)計(jì)好測(cè)試方案,然后再編程,直到所有測(cè)試獲得通過之后才可以結(jié)束工作。集體所有強(qiáng)調(diào)程序代碼屬于整個(gè)開發(fā)小組所有,小組每個(gè)成員都有更改代碼的權(quán)利,每個(gè)成員都對(duì)全部代碼的質(zhì)量負(fù)責(zé)。持續(xù)集成主張?jiān)谝惶熘畠?nèi)多次集成系統(tǒng),而且隨著需求的變更,應(yīng)該不斷進(jìn)行回歸測(cè)試??沙掷m(xù)的開發(fā)速度規(guī)定開發(fā)人員每周工作時(shí)間不超過40小時(shí),連續(xù)加班不可以超過兩周。開放的工作空間全體參與者(開發(fā)人員、客戶等)一起在一個(gè)開放的場(chǎng)所中工作,項(xiàng)目組成員在這個(gè)場(chǎng)所自由地交流和討論。及時(shí)調(diào)整計(jì)劃計(jì)劃應(yīng)該是靈活的、循序漸進(jìn)的。制定出項(xiàng)目計(jì)劃后,必須根據(jù)項(xiàng)目進(jìn)展情況及時(shí)調(diào)整。簡(jiǎn)單的設(shè)計(jì)設(shè)計(jì)與計(jì)劃在本次迭代過程中完成的用戶素材完全匹配,設(shè)計(jì)時(shí)不需要考慮未來的用戶素材。在一次次迭代過程中,項(xiàng)目組成員不斷變更系統(tǒng)設(shè)計(jì),使之相對(duì)于正在實(shí)習(xí)的用戶素材而言始終處于最優(yōu)狀態(tài)重構(gòu)在不改變系統(tǒng)行為的前提下,重新調(diào)整和優(yōu)化系統(tǒng)的內(nèi)部結(jié)構(gòu),以降低復(fù)雜性、消除冗余、增加靈活性和提高性能。應(yīng)該注意,不要過分依賴重構(gòu),不能輕視設(shè)計(jì),對(duì)于大中型系統(tǒng)而言,推遲設(shè)計(jì)或者不做設(shè)計(jì),那將是一場(chǎng)災(zāi)難。使用隱喻隱喻是把整個(gè)系統(tǒng)聯(lián)系在一起的全局視圖,它描述系統(tǒng)如何運(yùn)作,以及用何種方式把新功能加入到系統(tǒng)中。與其他方式的不同:

對(duì)比其它方法

,敏捷方法有時(shí)候被誤認(rèn)為是無計(jì)劃性和紀(jì)律性的方法,實(shí)際上更確切的說法是敏捷方法,強(qiáng)調(diào)適應(yīng)性而非預(yù)見性。

適應(yīng)性的方法集中在快速適應(yīng)現(xiàn)實(shí)的變化。當(dāng)項(xiàng)目的需求起了變化,團(tuán)隊(duì)?wèi)?yīng)該迅速適應(yīng)。這個(gè)團(tuán)隊(duì)可能很難確切描述未來將會(huì)如何變化.

對(duì)比迭代方法相比迭代式開發(fā)兩者都強(qiáng)調(diào)在較短的開發(fā)周期提交軟件,敏捷方法的周期可能更短,并且更加強(qiáng)調(diào)隊(duì)伍中的高度協(xié)作。

對(duì)比瀑布式開發(fā),兩者沒有很多的共同點(diǎn),瀑布模型式是最典型的預(yù)見性的方法,嚴(yán)格遵循預(yù)先計(jì)劃的需求、分析、設(shè)計(jì)、編碼、測(cè)試的步驟順序進(jìn)行。步驟成果作為衡量進(jìn)度的方法,例如需求規(guī)格,設(shè)計(jì)文檔,測(cè)試計(jì)劃和代碼審閱等等。相對(duì)來講,敏捷方法則在幾周或者幾個(gè)月的時(shí)間內(nèi)完成相對(duì)較小的功能,強(qiáng)調(diào)的是能將盡早將盡量小的可用的功能交付使用,并在整個(gè)項(xiàng)目周期中持續(xù)改善和增強(qiáng)。敏捷過程具有對(duì)變化和不確定性的更快速、更敏捷的反應(yīng)特性,而且在快速的同時(shí)仍然保持可持續(xù)的開發(fā)速度。因此比較適合于開發(fā)可用資源及開發(fā)時(shí)間都有苛刻約束的小項(xiàng)目。1.4.8微軟過程規(guī)劃階段確定產(chǎn)品目標(biāo);獲取競(jìng)爭(zhēng)對(duì)手的信息;完成對(duì)客戶和市場(chǎng)的調(diào)研分析;確定新版本產(chǎn)品應(yīng)該具備的特性;相對(duì)于前一版本,新版本應(yīng)該解決的問題和需要增加的功能設(shè)計(jì)階段編寫系統(tǒng)特性規(guī)格說明書:軟件特性、系統(tǒng)結(jié)構(gòu)、各構(gòu)件間的相關(guān)性及接口標(biāo)準(zhǔn)高層系統(tǒng)設(shè)計(jì),繪制系統(tǒng)結(jié)構(gòu)圖,確定風(fēng)險(xiǎn)因素劃分子系統(tǒng)制定產(chǎn)品開發(fā)計(jì)劃開發(fā)階段:編寫代碼和文檔穩(wěn)定階段:測(cè)試和調(diào)試發(fā)布階段微軟過程與RUP比較相對(duì)于RUP而言,可以把微軟過程看做是RUP的一個(gè)精簡(jiǎn)配置版本。整個(gè)微軟過程由若干個(gè)生命周期的持續(xù)遞進(jìn)循環(huán)組成,每個(gè)生命周期分為5個(gè)階段。RUP的初始階段完成微軟過程規(guī)劃階段的工作精化階段完成設(shè)計(jì)工作構(gòu)建階段完成開發(fā)和穩(wěn)定工作移交階段完成發(fā)布工作微軟過程的每個(gè)階段精簡(jiǎn)為一次迭代完成,每次迭代所完成的工作相對(duì)于經(jīng)歷RUP的若干個(gè)核心工作流程:規(guī)劃階段中一次迭代主要經(jīng)歷的工作流程為:業(yè)務(wù)建模、需求和項(xiàng)目管理;設(shè)計(jì)階段中一次迭代經(jīng)歷的工作流程為:業(yè)務(wù)建模、需求、分析設(shè)計(jì)和項(xiàng)目管理;開發(fā)階段中一次迭代經(jīng)歷的工作流程為:需求、分析設(shè)計(jì)和實(shí)現(xiàn);穩(wěn)定階段中一次迭代經(jīng)歷的工作流程為:測(cè)試發(fā)布階段中一次迭代經(jīng)歷的工作流程為:部署、配置與變更管理和項(xiàng)目管理。微軟過程與敏捷過程比較相對(duì)于敏捷過程,可以把微軟過程看做是它的一個(gè)擴(kuò)充版本。微軟過程補(bǔ)充規(guī)定了其每個(gè)生命周期內(nèi)各個(gè)階段的具體工作流程。與敏捷過程類似,微軟過程的適用范圍也是具有有限資源和有限開發(fā)時(shí)間約束的項(xiàng)目。1.4.9軟件開發(fā)模型的選擇通過3個(gè)例子大家討論如何進(jìn)行軟件項(xiàng)目開發(fā)模型測(cè)選擇。例1假設(shè)要求你開發(fā)一個(gè)軟件,該軟件的功能是把讀入的浮點(diǎn)數(shù)開平方,所得到的結(jié)果精確到小數(shù)點(diǎn)后4位。一旦實(shí)現(xiàn)并且測(cè)試完成后,該產(chǎn)品將被拋棄。選擇用哪種軟件生命周期模型,說明理由?這個(gè)軟件需求很明確,實(shí)現(xiàn)開平方功能的算法也很成熟,因此,既無需通過分析需求也無需用原型來驗(yàn)證設(shè)計(jì)方案。此外,一旦實(shí)現(xiàn)并測(cè)試完成,該產(chǎn)品將被拋棄,因此也無需使用有助于提高軟件可維護(hù)性的增量模型或螺旋模型來開發(fā)。綜上所述,為了開發(fā)這個(gè)簡(jiǎn)單軟件,使用大多數(shù)人所熟悉的瀑布模型就可以了。例2假設(shè)你被任命為一家軟件公司的項(xiàng)目負(fù)責(zé)人,你的工作是管理該公司已被廣泛應(yīng)用的字處理軟件的新版本開發(fā)。由于市場(chǎng)競(jìng)爭(zhēng)激烈,公司規(guī)定了嚴(yán)格的完成期限并且已對(duì)外公布。你打算用哪種軟件生命周期模型,說明理由?這個(gè)項(xiàng)目的一個(gè)重要要求是:嚴(yán)格的按照已對(duì)外公布完成期限。因此選擇生命周期模型時(shí)應(yīng)該著重考慮哪種模型有助于加快產(chǎn)品開發(fā)的進(jìn)度。使用增量模型開發(fā)軟件時(shí)可以并行完成開發(fā)工作,因此能夠加快開發(fā)進(jìn)度。這個(gè)項(xiàng)目是開發(fā)該公司已被廣泛應(yīng)用的字處理軟件的新版本,那么有3個(gè)結(jié)論:第一:舊版本相當(dāng)于一個(gè)原型,通過收集用戶對(duì)舊版本的反映,較容易確定對(duì)新版本的需求,沒必要再專門建立一個(gè)原型系統(tǒng)來分析用戶的需求;第二:該公司的軟件工程師對(duì)字處理軟件很熟悉,有開發(fā)字處理軟件的豐富經(jīng)驗(yàn),具有采用增量模型開發(fā)新版字處理軟件所需要的技術(shù)水平;第三,該軟件受到廣大用戶的喜愛,今后很可能還要開發(fā)更新的版本,因此,應(yīng)該把該軟件的體系結(jié)構(gòu)設(shè)計(jì)成開放式的,以利于今后的改進(jìn)和擴(kuò)充。綜上所述,采用增量模型來完成這個(gè)項(xiàng)目比較恰當(dāng)。例3航天型號(hào)軟件研制過程模型航天型號(hào)研制經(jīng)歷方案階段、模樣、初樣、試樣(正樣)、定型型號(hào)軟件研制通常也經(jīng)歷模樣、初樣、試樣(正樣)模樣、初樣、正樣軟件是針對(duì)同一個(gè)軟件開展的循環(huán)研制,側(cè)重面不同。結(jié)合原型、漸進(jìn)模型,以原型-基本型-更新型來形成航天型號(hào)軟件研制過程模型基本思想首先在需求尚不明確的情況下,對(duì)已知的需求和尚不能確定的需求進(jìn)行分析整理,在此基礎(chǔ)上簡(jiǎn)單地設(shè)計(jì)、編制軟件,產(chǎn)生一個(gè)軟件的原型;并對(duì)原型進(jìn)行多方面的研究、分析和討論,以便確定所采取的技術(shù)實(shí)現(xiàn)方案是否可行,需求還要做哪些補(bǔ)充、修改和完善,從而獲得一個(gè)內(nèi)容較完整、接口較明確的軟件需求和一個(gè)切實(shí)可行的軟件實(shí)現(xiàn)技術(shù)途徑。在軟件原型研制的基礎(chǔ)上,進(jìn)行一次完整、嚴(yán)格的軟件研制工作,獲得一個(gè)高質(zhì)量的軟件基本型;最后在軟件基本型的基礎(chǔ)上,針對(duì)更新的軟件需求,采用軟件更新與更改的的方法,對(duì)軟件進(jìn)行更新,獲得軟件的更新型模樣、初樣、試樣-正樣模樣初樣正樣原型基本型更新型更新版本1更新版本2……原型軟件原型研制的目的是明確接口、確定需求、試驗(yàn)系統(tǒng)方案需求分析:根據(jù)系統(tǒng)的任務(wù)分解和技術(shù)要求,對(duì)已知需求、應(yīng)有需求、未確認(rèn)需求等進(jìn)行綜合分析,形成粗略的原型軟件需求規(guī)格說明。設(shè)計(jì):對(duì)軟件的總體結(jié)構(gòu)和接口進(jìn)行設(shè)計(jì),形成軟件設(shè)計(jì)說明。編碼調(diào)試:編制程序并調(diào)試通過。分析總結(jié):運(yùn)行軟件,并與系統(tǒng)總體、相應(yīng)接口單位進(jìn)行詳細(xì)的分析討論,對(duì)軟件需求進(jìn)行補(bǔ)充、修改和完善,并確定技術(shù)途徑的可行性。對(duì)高質(zhì)量要求的軟件研制,軟件原型研制所獲的程序應(yīng)廢棄,不帶入以后的研制階段。基本型基本型研制的任務(wù)是根據(jù)基本確定的軟件需求,全面開展軟件的研制工作,形成一個(gè)基本滿足系統(tǒng)對(duì)軟件各項(xiàng)要求的基本型軟件,以直接應(yīng)用于型號(hào)或

溫馨提示

  • 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. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論