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

下載本文檔

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

文檔簡介

第1章軟件工程概述11.1

軟件的概念、特點和分類2軟件的概念程序、軟件與軟件產(chǎn)品獨唱

小合唱-->合唱-->萬人大合唱

|||

簡單程序較復(fù)雜程序軟件軟件是計算機系統(tǒng)中與硬件相互依存的另一部分,它包括程序、數(shù)據(jù)、相關(guān)文檔的完整集合以及完善的售后服務(wù)。軟件=程序+數(shù)據(jù)+文檔+服務(wù)3軟件的特點1.軟件是一種邏輯實體,而不是具體的物理實體。2.軟件的生產(chǎn)于硬件不同。3.在軟件的運行和使用期間,沒有硬件那樣的機械磨損,老化問題。失效率時間磨合調(diào)整磨損用壞硬件失效曲線失效率時間軟件失效曲線理想曲線實際曲線4軟件的特點4.軟件的開發(fā)和運行常常受到計算機系統(tǒng)的限制,對計算機系統(tǒng)有著不同程度的依賴。5.軟件的開發(fā)至今尚未完全擺脫手工業(yè)的開發(fā)方法。6.軟件是復(fù)雜的,人類能夠創(chuàng)造的最復(fù)雜的產(chǎn)物是計算機軟件。7.軟件成本相當(dāng)昂貴。8.相當(dāng)多的軟件工作涉及到社會因素。5軟件的分類1.按軟件的功能劃分⑴系統(tǒng)軟件操作系統(tǒng)數(shù)據(jù)庫管理系統(tǒng)設(shè)備驅(qū)動程序通信處理程序等6軟件的分類⑵支撐軟件文本編輯程序文件格式化程序磁盤向磁帶向數(shù)據(jù)傳輸?shù)某绦虺绦驇煜到y(tǒng)支持需求分析、設(shè)計、實現(xiàn)、測試和支持管理的軟件7軟件的分類⑶應(yīng)用軟件商業(yè)數(shù)據(jù)處理軟件工程與科學(xué)計算軟件計算機輔助設(shè)計/制造軟件系統(tǒng)仿真軟件智能產(chǎn)品嵌入軟件醫(yī)療、制藥軟件事務(wù)管理、辦公自動化軟件計算機輔助教學(xué)軟件8軟件的分類2.按軟件規(guī)模劃分類別參加人員數(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~10M9軟件的分類3.按軟件工作方式劃分

⑴實時處理軟件

⑵交互式軟件

⑶分時軟件

⑷批處理軟件4.按軟件服務(wù)對象的范圍劃分

⑴項目軟件

⑵產(chǎn)品軟件10軟件的分類5.按軟件使用的頻度劃分

⑴僅供一次使用的軟件

⑵頻繁使用的軟件6.按軟件的失效⑴高可靠性軟件。⑵一般可靠性軟件。111.2

軟件的發(fā)展和軟件危機

12軟件的發(fā)展軟件的發(fā)展大體經(jīng)歷了如下三個階段:

①程序設(shè)計階段,約為50至60年代

特點:依賴于個人編程’技巧’,開發(fā)不規(guī)范,開發(fā)成本難控制,其交付的產(chǎn)品主要是程序。②程序系統(tǒng)階段,約為60至70年代特點:軟件開發(fā)是以小組的形式出現(xiàn),提交的軟件產(chǎn)品除了程序外還有相應(yīng)的使用說明書。③軟件工程階段,約為70年代以后特點:開發(fā)方法遵循工程化的方法,按照軟件生命周期分階段開發(fā)軟件,提交的軟件產(chǎn)品除了程序之外,還有嚴(yán)格的文檔。13計算機軟件發(fā)展的三個時期及特點

時間特點程序設(shè)計程序系統(tǒng)軟件工程軟件所指程序程序及說明書程序、文檔、數(shù)據(jù)、服務(wù)主要程序設(shè)計語言匯編及機器語言高級語言軟件語言軟件工作范圍程序編寫包括設(shè)計和測試軟件生存期需求者程序設(shè)計本人少數(shù)用戶市場用戶開發(fā)軟件的組織個人開發(fā)小組開發(fā)小組及大中型開發(fā)機構(gòu)軟件規(guī)模小型中小型大中小型決定質(zhì)量的因素個人程序技術(shù)小組技術(shù)水平管理水平開發(fā)子程序程序庫結(jié)構(gòu)化程序設(shè)計數(shù)據(jù)庫、開發(fā)工具、開發(fā)環(huán)境、工程化開發(fā)方法、標(biāo)準(zhǔn)和規(guī)范、網(wǎng)絡(luò)和分布式開發(fā)、面向?qū)ο蠹夹g(shù)維護責(zé)任者程序設(shè)計者開發(fā)小組專職維護人員硬件特征價格高存儲容量小工作可靠性差降價、速度、容量及工作可靠性有明顯提高向超高速、大容量、微型化及網(wǎng)絡(luò)化方向發(fā)展軟件特征完全不受重視軟件技術(shù)的發(fā)展不能滿足需要,出現(xiàn)軟件危機開發(fā)技術(shù)有進步,但未獲突破性進展,價高,未完全擺脫軟件危機14軟件工程的發(fā)展的四個重要階段1、第一代軟件工程

傳統(tǒng)的軟件工程2、第二代軟件工程

—對象工程3、第三代軟件工程

—過程工程4、第四代軟件工程

—構(gòu)件工程

60年代末到70年代為了克服“軟件危機”(Softwarecrisis)提出“軟件工程”的名詞,將軟件開發(fā)納入工程化的軌道,基本形成軟件工程的概念、框架、技術(shù)和方法。稱為傳統(tǒng)的軟件工程。15軟件工程的發(fā)展的四個重要階段1、第一代軟件工程

傳統(tǒng)的軟件工程2、第二代軟件工程

—對象工程3、第三代軟件工程

—過程工程4、第四代軟件工程

—構(gòu)件工程

80年代中到90年代,面向?qū)ο蟮姆椒ㄅc技術(shù)得到發(fā)展,研究的重點轉(zhuǎn)移到面向?qū)ο蟮姆治雠c設(shè)計,演化為一種完整的軟件開發(fā)方法和系統(tǒng)的技術(shù)體系,稱為對象工程。16軟件工程的發(fā)展的四個重要階段1、第一代軟件工程

傳統(tǒng)的軟件工程2、第二代軟件工程

—對象工程3、第三代軟件工程

—過程工程4、第四代軟件工程

—構(gòu)件工程

80年代中開始,人們在軟件開發(fā)的實踐過程中認(rèn)識到:提高軟件生產(chǎn)率,保證軟件質(zhì)量的關(guān)鍵是“軟件過程”,是軟件開發(fā)和維護中的管理和支持能力,逐步形成軟件過程工程。17軟件工程的發(fā)展的四個重要階段1、第一代軟件工程

傳統(tǒng)的軟件工程2、第二代軟件工程

—對象工程3、第三代軟件工程

—過程工程4、第四代軟件工程

—構(gòu)件工程

90起年代,基于構(gòu)件(Component)的開發(fā)方法取得重要進展,軟件系統(tǒng)的開發(fā)可通過使用現(xiàn)成的可復(fù)用構(gòu)件組裝完成,而無需從頭開始構(gòu)造,以此達到提高效率和質(zhì)量,降低成本的目的。稱為構(gòu)件工程。18軟件開發(fā)方法的模型隨意編程面向過程面向?qū)ο竺嫦蚪M件面向配置組件面向WebService19什么是軟件危機定義:軟件危機是計算機軟件在它的開發(fā)和維護過程中所遇到的一系列嚴(yán)重問題。主要包含兩方面的問題:

⑴如何開發(fā)軟件,怎樣滿足對軟件日益增長的需求;

⑵如何維護數(shù)量不斷膨脹的已有軟件。20軟件危機的現(xiàn)象⑴對軟件開發(fā)成本和進度的估計常常很不準(zhǔn)確。⑵用戶對“已完成的”軟件系統(tǒng)不滿意的現(xiàn)象經(jīng)常發(fā)生。⑶軟件產(chǎn)品的質(zhì)量往往靠不住。⑷軟件常常是不可維護的。⑸軟件通常沒有適當(dāng)?shù)奈臋n資料。計算機軟件不僅僅是程序,還應(yīng)該有一整套文檔資料。⑹軟件成本在計算機系統(tǒng)總成本中所占的比例逐年上升。⑺軟件開發(fā)生產(chǎn)率提高的速度,遠(yuǎn)遠(yuǎn)跟不上計算機應(yīng)用迅速普及深入的趨勢。21軟件危機的原因⑴客觀:軟件本身特點軟件的規(guī)模龐大、復(fù)雜性高。⑵主觀:不正確的開發(fā)方法,軟件開發(fā)和維護有許多錯誤的認(rèn)識和作法。忽視需求分析軟件開發(fā)=程序編寫輕視軟件維護22軟件的神話——管理者的神話負(fù)責(zé)軟件的管理者像大多數(shù)其他管理者一樣,都有巨大的壓力,要維持預(yù)算,保持進度和提高質(zhì)量。神話:我們已經(jīng)有了關(guān)于建造軟件的標(biāo)準(zhǔn)和規(guī)程的書籍,難道它們不能給人們提供所有其需要知道的信息嗎?事實:不錯,關(guān)于標(biāo)準(zhǔn)的書籍已經(jīng)存在,但真正用到了它們嗎?軟件實踐者知道它們存在嗎?它們是否反映了現(xiàn)代軟件開發(fā)的過程?它們完整嗎?很多情況下對于這些問題的答案是“否”。23軟件的神話——管理者的神話神話:我們已經(jīng)有了很多很好的軟件開發(fā)工具,而且,我們?yōu)樗鼈冑I了最新的計算機。事實:為了使用最新型號的計算機、工作站和PC機去開發(fā)高質(zhì)量的軟件,我們已經(jīng)投入了太多的費用。實際上,計算機輔助軟件工程(CASE)工具比起硬件而言,對于獲得高質(zhì)量和高生產(chǎn)率更為重要,但大多數(shù)軟件開發(fā)者并未使用它們。24軟件的神話——管理者的神話神話:如果我們已落后于計劃,可以增加更多的程序員來趕上進度。事實:軟件開發(fā)并非像制造一樣是一個機械過程。用Brooks的話來說,“給一個已經(jīng)延遲的軟件項目增加人手只會使其更加延遲”。看起來,這句話與人的直覺正好相反。但實際上,增加新人,原來正在工作的開發(fā)者必須花時間來培訓(xùn)新人,這樣就減少了他們花在項目開發(fā)上的時間。人手可以增加,但只能在計劃周密、協(xié)調(diào)良好的情況下。25軟件的神話——用戶的神話需要計算機軟件的用戶可能就是鄰桌,或是另一個技術(shù)組,也可能是市場/銷售部門,或另一個公司。在許多情況下,用戶相信關(guān)于軟件的神話,因為負(fù)責(zé)軟件的管理者和開發(fā)者很少去糾正用戶的錯誤理解。神話導(dǎo)致了用戶過高的期望值,并引起對開發(fā)者的極端不滿。神話:有了對目標(biāo)的一般描述就足以開始寫程序了——我們可以以后補充細(xì)節(jié)。事實:不完善的系統(tǒng)定義是軟件項目失敗的主要原因。關(guān)于待開發(fā)項目的應(yīng)用領(lǐng)域、功能、性能、接口、設(shè)計約束及確認(rèn)標(biāo)準(zhǔn)的形式化的、詳細(xì)的描述是必需要的。這些內(nèi)容只有通過用戶和開發(fā)者之間的通信交流才能確定。26軟件的神話——用戶的神話神話:項目需求總是在不斷變化,但這些變化能夠很容易地滿足,因為軟件是靈活的。事實:軟件需求確實是經(jīng)常變化的,但這些變化產(chǎn)生的影響會隨著其引入的時間不同而不同。如果我們很注重早期的系統(tǒng)定義,這時需求變化就可很容易地適應(yīng)。用戶能夠復(fù)審需求,并提出對修改建議,這時對成本的影響會相對較小。當(dāng)在軟件設(shè)計過程中才要求修改時,對成本的影響就會提高的很快。資源已經(jīng)消耗了,設(shè)計框架已經(jīng)建立了,這時的變化可能會引起大的改動,需要額外的資源和大量的設(shè)計修改:如額外的花費。實現(xiàn)階段(編碼和測試階段)功能、性能、接口及其它方面的改變對成本會產(chǎn)生更大的影響。當(dāng)軟件已投入使用后再要求修改,這時所花費的代價比起較早階段做同樣修改所花的代價可能是幾何級數(shù)級的增長。27例子某公園有一游船碼頭,負(fù)責(zé)人請一位軟件開發(fā)人員實現(xiàn)計算機系統(tǒng)輔助游船管理系統(tǒng),要求如下:當(dāng)游客向租船處租船時,向租船處查詢是否有可租用的船只,如果租船處有空船,管理員就準(zhǔn)備好船只,幫助游客上船,并在聯(lián)機終端上打入一個信息“S”,表示租船周期開始。計算機自動把當(dāng)時時鐘值送入信息域。當(dāng)游客還船時,管理員打入另一個信息“E”,表示租船周期結(jié)束。由管理員向游客結(jié)算租船時間及費用。一天結(jié)束時,管理員要用一些管理信息總結(jié)每天工作狀況,要求系統(tǒng)打印出租船次數(shù)=NNN

平均租船時間=MMM

顯然,這樣一個系統(tǒng)的功能包括二個部分:

⑴計算輸入流的信息

⑵打印輸出28確定算法我們知道平均租船時間就是總的時間除以租船次數(shù)總的時間=第一條船結(jié)束時間-第一條船開始時間+第二條船結(jié)束時間-第二條船開始時間+…

或總的時間=(第一條船結(jié)束時間+第二條船結(jié)束時間+…)-(第一條船開始時間+第二條船開始時間+…)29編寫系統(tǒng)程序BEGINOPENMESSAGE_STREAMNUMBER=0TOTALTIME=0GETMESSAGEDOWHILENOTEND_OF_STREAMIFCODE=STHENNUMBER=NUMBER+1TOTAL_TIME=TOTAL_TIME-START_TIMEELSETOTAL_TIME=TOTAL_TIME+END_TIMEENDIFPRINT“NUMBEROFSESSION=”NUMBERIFNUMBER<>0THENPRINT“AVERAGESESSIONTIME=”TOTAL_TIME/NUMBERENDIFCLOSEMASSAGE_STREAMEND;30系統(tǒng)提出修改①找出一天中最長租用時間:

LONGGEST_SESSION_TIME=PPP②要求把每天的報告分成兩個,一個是上午情況,另一個是下午情況。③通信線路出了毛病,丟掉了一些信息。要求修改系統(tǒng)——從計算報告中刪除一切不完整的租船信息。對于上述的修改,除了把原系統(tǒng)廢棄之外。實在無法對其作什么修改來滿足這一新的要求。而時間及經(jīng)費都不允許他這么做了。結(jié)論:并不是任意設(shè)計出來的軟件都能夠適應(yīng)在軟件壽命期內(nèi)變化的要求,即軟件的靈活性不是絕對的。31軟件的神話——開發(fā)者的神話那些至今仍被軟件開發(fā)者相信的神話是由幾十年的程序設(shè)計文化培植起來的。而這種舊的觀念和方式是很難改變的。神話:一旦我們寫出了程序并使其正常運行,我們的工作就結(jié)束了。事實:有人說過:“越早開始寫程序,就要花越長的時間完成它”,大量的數(shù)據(jù)表明在一個程序上所投入的50%到70%的努力是花在第一次將程序交給用戶之后。32軟件的神話——開發(fā)者的神話神話:在程序真正運行之前,沒有辦法評估其質(zhì)量。事實:從項目一開始就可以應(yīng)用的最有效的軟件質(zhì)量保證機制之一是正式的技術(shù)復(fù)審。軟件復(fù)審是“質(zhì)量的過濾器”,比起通過測試找到某類軟件錯誤要有效的多。神話:一個成功的項目唯一應(yīng)該提交的就是運行程序。事實:運行程序僅是仍軟件配置的一部分,軟件配置包括:程序、文檔和數(shù)據(jù)。文檔是成功開發(fā)的基礎(chǔ),更重要的是,文檔為軟件維護提供了指導(dǎo)。33軟件危機解決途徑組織管理工程項目管理方法技術(shù)措施軟件開發(fā)技術(shù)與方法軟件工具341.3

軟件工程35軟件工程的提出“軟件工程”一詞是1968年北大西洋公約組織(NATO)在聯(lián)邦德國召開的一次會議上首次提出的,這個會議專門討論了軟件危機問題。它反映了軟件人員認(rèn)識到軟件危機的出現(xiàn)及謀求解決這一危機的努力,因此,這次會議被看作是軟件發(fā)展史上一個重要的里程碑。36軟件工程定義采用工程的概念、原理、技術(shù)和方法來計劃、開發(fā)與維護軟件,把經(jīng)過時間考驗而證明正確的管理技術(shù)和當(dāng)前能夠得到的最好的技術(shù)方法結(jié)合起來,以較經(jīng)濟的手段獲得能在實際機器上運行的可靠軟件的一系列方法。簡言之:工程方法+管理技術(shù)+技術(shù)方法37軟件工程原理著名的軟件工程專家B.W.Boehm提出了軟件工程的七條基本原理。這七條原理是確保軟件產(chǎn)品質(zhì)量和開發(fā)效率的原理的最小集合。這七條原理是互相獨立的,其中任意六條原理的組合都不能代替另一條原理,因此,它們是缺一不可的最小集合,然而這七條原理又是相當(dāng)完備的,人們雖然不能用數(shù)學(xué)方法嚴(yán)格證明它們是一個完備的集合,但是,可以證明在此之前已經(jīng)提出的100多條軟件工程原理都可以由這七條原理的任意組合蘊含或派生。38軟件工程原理⒈用分階段的生命周期計劃嚴(yán)格管理不成功的軟件項目中有一半左右是由于計劃不周造成的。⒉堅持進行階段評審軟件的質(zhì)量保證工作不能等到編碼階段結(jié)束之后再進行。⒊實行嚴(yán)格的產(chǎn)品控制在軟件開發(fā)過程中不應(yīng)隨意改變需求,因為改變一項需求往往需要付出較高的代價。⒋采用現(xiàn)代程序設(shè)計技術(shù)采用先進的技術(shù)既可提高軟件開發(fā)的效率,又可提高軟件維護的效率。39軟件工程原理⒌結(jié)果應(yīng)能清楚地審查根據(jù)軟件開發(fā)項目的總目標(biāo)及完成期限,規(guī)定開發(fā)組織的責(zé)任和產(chǎn)品標(biāo)準(zhǔn),從而使得所得到的結(jié)果能夠清楚地審查。⒍開發(fā)小組的人員應(yīng)該少而精開發(fā)小組人員的素質(zhì)和數(shù)量是影響軟件產(chǎn)品質(zhì)量和開發(fā)效率的重要因素。小組人員增加,交流情況和討論問題而造成的通訊開銷也急劇增加,人數(shù)為N,可能的通訊路徑有N(N-1)。

承認(rèn)不斷改進軟件工程實踐的必要性不僅要積極主動地采納新的軟件技術(shù),而且要注意不斷總結(jié)經(jīng)驗。40軟件工程學(xué)的范疇軟件工程學(xué)軟件工程技術(shù)軟件工程管理軟件開發(fā)方法學(xué)軟件工具軟件工程環(huán)境軟件經(jīng)濟學(xué)軟件管理學(xué)41軟件工程三要素軟件工程包括三要素:方法、工具和過程。⑴軟件工程方法為軟件開發(fā)提供了“如何做”的技術(shù)。⑵軟件工具為軟件工程方法提供了自動的或半自動的軟件支撐環(huán)境。⑶軟件工程的過程則是將軟件工程的方法和工具綜合起來以達到合理、及時地進行計算機軟件開發(fā)的目的。42什么是軟件工程過程定義:軟件工程過程是為獲得軟件產(chǎn)品,在軟件工具的支持下由軟件工程師完成的一系列軟件工程活動。針對不同類型的軟件產(chǎn)品,同一軟件開發(fā)機構(gòu)也可能采用多個不同的軟件工程過程。43軟件工程過程的基本活動⑴軟件規(guī)格說明:規(guī)定軟件的功能及其運行的限制;⑵軟件開發(fā):產(chǎn)生滿足規(guī)格說明的軟件;⑶軟件確認(rèn):確認(rèn)軟件能夠完成客戶提出的要求;⑷軟件改進:為滿足客戶的變更要求,軟件必須在使用的過程中改進。44軟件工程過程的特性⑴易理解性。⑵可見性:每個過程活動均能以明確的結(jié)果告終,使過程的進展對外可見。⑶可支持性:易得到計算機輔助軟件工程(CASE)工具的支持。⑷可接受性:易于為軟件工程師接受和使用。⑸可靠性:不會出現(xiàn)過程錯誤,或發(fā)現(xiàn)在產(chǎn)品出現(xiàn)故障之前。⑹健壯性:不受意外發(fā)生的問題干擾。⑺可維護性:過程可隨軟件機構(gòu)需求的變更或隨認(rèn)定的過程改進而演進。⑻速度:從規(guī)格說明起,就能較快地完成開發(fā)而交付。45軟件工程項目的基本目標(biāo)⑴付出較低的成本;⑵達到要求的軟件功能;⑶取得較好的軟件性能;⑷開發(fā)的軟件易于移植;⑸需要較低的維護費用;⑹能按時完成開發(fā)工作,及時交付使用。46軟件工程目標(biāo)之間的關(guān)系47軟件工程框架及原則1.選取適宜的開發(fā)模型;2.采用合適設(shè)計方法;3.提供高質(zhì)量工程支持;4.重視開發(fā)過程管理。48軟件工程面臨的問題

(1)軟件費用

(2)軟件可靠性

(3)軟件維護

(4)軟件生產(chǎn)率

(5)軟件重用491.4

軟件生命周期50軟件生命周期的定義定義:軟件生命周期是指軟件產(chǎn)品從考慮其概念開始到該軟件產(chǎn)品不再能使用為止的整個時期。軟件生命周期可分為三個階段:即定義階段、開發(fā)階段和運行維護階段,每個階段需完成幾個任務(wù)。51劃分軟件生命周期的目的和實質(zhì)⑴便于控制開發(fā)工作的復(fù)雜性。⑵通過有限的步驟,把用戶的需求從抽象的邏輯概念逐步轉(zhuǎn)化為具體的物理實現(xiàn)。52軟件生命周期各階段的基本任務(wù)-定義階段定義階段主要集中于“做什么”,即在定義過程中,軟件開發(fā)人員試圖弄清楚要處理什么信息,預(yù)期完成什么樣的功能和性能,希望有什么樣的系統(tǒng)行為,建立什么樣界面,有什么設(shè)計約束,以及定義一個成功系統(tǒng)的確認(rèn)標(biāo)準(zhǔn)是什么。在本階段需完成三項任務(wù):53系統(tǒng)定義系統(tǒng)定義必須回答的關(guān)鍵問題是:“要解決的問題是什么?”如果不知道問題是什么就試圖解決這個問題,顯然是盲目的,只會白白浪費時間和金錢,最終得出的結(jié)果很可能是毫無意義的。盡管確切地定義問題的必要性是十分明顯的,但是在實踐中它卻可能是最容易被忽視的一個步驟。系統(tǒng)定義是軟件生命周期中最簡短的任務(wù),一般只需要一天甚至更少的時間。54可行性研究可行性研究要回答的關(guān)鍵問題是:“對于上一個階段所確定的問題有行得通的解決辦法嗎?”為了回答這個問題,系統(tǒng)分析員需要進行一次大大壓縮和簡化了的系統(tǒng)分析和設(shè)計的過程,也就是在較抽象的高層次上進行的分析和設(shè)計的過程??尚行匝芯繎?yīng)該比較簡短,這個階段的任務(wù)不是具體解決問題,而是研究問題的范圍,探索這個問題是否值得去解,是否有可行的解決辦法。55需求分析需求分析的任務(wù)仍然不是具體地解決問題,而是準(zhǔn)確地確定“為了解決這個問題,目標(biāo)系統(tǒng)必須做什么”,主要是確定目標(biāo)系統(tǒng)必須具備哪些功能。系統(tǒng)分析員在需求分析階段必須和用戶密切配合,充分交流信息,以得出經(jīng)過用戶確認(rèn)的系統(tǒng)邏輯模型。通常用數(shù)據(jù)流圖、數(shù)據(jù)字典和簡要的算法表示系統(tǒng)的邏輯模型。56軟件生命周期各階段的基本任務(wù)-開發(fā)階段開發(fā)階段集中于“如何做”。即在開發(fā)過程中,軟件工程師試圖定義數(shù)據(jù)如何結(jié)構(gòu)化,功能如何轉(zhuǎn)換為軟件體系結(jié)構(gòu),過程細(xì)節(jié)如何實現(xiàn),界面如何表示,設(shè)計如何轉(zhuǎn)換成程序設(shè)計語言,測試如何運行。在本階段需完成四項任務(wù):57總體設(shè)計總體設(shè)計必須回答的關(guān)鍵問題是:“概括地說,應(yīng)該如何解決這個問題?”通常至少應(yīng)該考慮下述幾類可能的方案:①低成本的解決方案。系統(tǒng)只能完成最必要的工作,不能多做一點額外的工作。②中等成本的解決方案。這樣的系統(tǒng)不僅能夠很好地完成預(yù)定的任務(wù),使用起來很方便,而且可能還具有用戶沒有具體指定的某些功能和特點。雖然用戶沒有提出這些具體要求,但是系統(tǒng)分析員根據(jù)自己的知識和經(jīng)驗斷定,這些附加的能力在實踐中將證明是很有價值的。③高成本的“十全十美”的系統(tǒng)。這樣的系統(tǒng)具有用戶可能希望有的所有功能和特點。58詳細(xì)設(shè)計總體設(shè)計以比較抽象概括的方式提出了解決問題的辦法。詳細(xì)設(shè)計的任務(wù)就是把解法具體化,也就是回答下面這個關(guān)鍵問題:“應(yīng)該怎樣具體地實現(xiàn)這個系統(tǒng)呢?”通常用HIPO圖(層次圖加輸入/處理/輸出圖)、PAD圖或PDL語言(過程設(shè)計語言)描述詳細(xì)設(shè)計的結(jié)果。59編碼和單元測試編碼和單元測試的關(guān)鍵任務(wù)是寫出正確的容易理解、容易維護的程序模塊。60綜合測試綜合測試的關(guān)鍵任務(wù)是通過各種類型的測試(及相應(yīng)的調(diào)試),使軟件達到預(yù)定的要求。最基本的測試是集成測試和驗收測試。所謂集成測試是根據(jù)設(shè)計的軟件結(jié)構(gòu),把經(jīng)過單元測試檢驗的模塊按某種選定的策略裝配起來,在裝配過程中對程序進行必要的測試。所謂驗收測試則是按照規(guī)格說明書的規(guī)定(通常在需求分析階段確定),由用戶(或在用戶積極參加下)對目標(biāo)系統(tǒng)進行驗收。必要時還可以再通過現(xiàn)場測試或平行運行等方法對目標(biāo)系統(tǒng)進一步測試檢驗。為了使用戶能夠積極參加驗收測試,并且在系統(tǒng)投入生產(chǎn)性運行以后能夠正確有效地使用這個系統(tǒng),通常需要以正式的或非正式的方式對用戶進行培訓(xùn)。61軟件生命周期各階段的基本任務(wù)-軟件維護維護階段的關(guān)鍵任務(wù)是,通過各種必要的維護活動使系統(tǒng)持久地滿足用戶的需要。通常有四類維護活動:改正性維護,也就是診斷和改正在使用過程中發(fā)現(xiàn)的軟件錯誤;適應(yīng)性維護,即修改軟件以適應(yīng)環(huán)境的變化;完善性維護,即根據(jù)用戶的要求改進或擴充軟件使它更完善;預(yù)防性維護,即修改軟件為將來的維護活動預(yù)先做準(zhǔn)備。每一項維護活動都應(yīng)該準(zhǔn)確地記錄下來,作為正式的文檔資料加以保存。62軟件生命周期各階段任務(wù)一覽表階段關(guān)鍵問題結(jié)束標(biāo)準(zhǔn)系統(tǒng)定義問題是什么?關(guān)于規(guī)模和目標(biāo)的報告書可行性研究有可行的解嗎?系統(tǒng)的高級邏輯模型;數(shù)據(jù)流圖成本/效益分析需求分析系統(tǒng)必須做什么?系統(tǒng)的邏輯模型;數(shù)據(jù)流圖;數(shù)據(jù)字典;算法描述總體設(shè)計概括地說,應(yīng)該如何解決這個問題?可能的解法:系統(tǒng)流程圖;成本/效益分析;推薦的系統(tǒng)結(jié)構(gòu);層次圖或結(jié)構(gòu)圖詳細(xì)設(shè)計怎樣具體地實現(xiàn)這個系統(tǒng)?編碼規(guī)格說明:HIPO圖或PDL編碼和單元測試正確的程序模塊源程序清單;單元測試方案和結(jié)果綜合測試符號要求的軟件綜合測試方案和結(jié)果;完整一致的軟件配置維護持久地滿足用戶需求的軟件完整準(zhǔn)確的維護記錄631.5

軟件開發(fā)模型64軟件開發(fā)模型在整個軟件開發(fā)的發(fā)展過程中,為了要從宏觀上管理軟件的開發(fā)和維護,就必須對軟件的發(fā)展過程有總體的認(rèn)識和描述,即要對軟件過程建模。幾十年來,軟件開發(fā)生命周期模型的發(fā)展有了很大的變化,提出了一系列的模型以適應(yīng)軟件開發(fā)發(fā)展的需要。65編碼--修正模型在軟件開發(fā)早期,開發(fā)只有兩個階段,被簡單的分成編寫程序代碼和修改程序代碼。拿到項目,馬上就根據(jù)需要,開始編寫程序。編完代碼,調(diào)試通過,就算基本完成任務(wù),拿給用戶用。如果應(yīng)用中有什么錯誤,或有什么新的要求,要重新修改代碼。66編碼--修正模型的弊端1.代碼缺少統(tǒng)一規(guī)劃,低估了設(shè)計的重要性,使得代碼結(jié)構(gòu)隨著修改的次數(shù)增加變得越來越壞。以至錯誤越來越難改,甚至無法改。2.即使有的軟件計劃很好,但往往其結(jié)果并非用戶所需要的。造成軟件開發(fā)的風(fēng)險非常大。這主要是沒有重視需求而造成的。3.由于對測試、維護修改方面考慮不周,使得代碼維護修改非常困難。67瀑布模型由于吸取了開發(fā)早期的教訓(xùn),人們開始將軟件開發(fā)視為工程來管理。類似于其他的工程管理,軟件開發(fā)也具有一定的工序。“軟件生命周期”這一概念真正被提了出來,并將軟件生命周期劃分成:制定計劃,需求分析、軟件設(shè)計、程序編寫、軟件測試、運行與維護等六個部分。68瀑布模型69瀑布模型的特點⑴從上一項開發(fā)活動接受該項活動的工作對象,作為輸入。⑵利用這一輸入,實施該項活動應(yīng)完成的工作內(nèi)容。⑶給出該項活動的工作成果,作為輸出傳給下一項活動。⑷對該項目活動實施的工作成果進行評審。若工作得到確認(rèn),則繼續(xù)進行下一次開發(fā)活動,否則返回前一項,甚至更前項的活動。70瀑布模型優(yōu)點⑴消除非結(jié)構(gòu)化軟件。⑵降低軟件的復(fù)雜度。⑶促進軟件開發(fā)工程化。71瀑布模型存在的問題⑴階段與階段劃分完全固定,階段間產(chǎn)生的大量文檔,極大地增加了工作量。⑵由于開發(fā)模型呈線性,所以當(dāng)開發(fā)成果尚未經(jīng)過測試時,用戶無法看到軟件的效果。這樣,軟件與用戶見面的時間較長,也增加了一定的風(fēng)險。⑶前面未發(fā)現(xiàn)的錯誤傳到后面的開發(fā)活動中,可能會擴散,進而可能會造成更不理想的效果。72平行瀑布模型考慮對瀑布模型的進一步改進。對瀑布模型的各階段之間的轉(zhuǎn)換時,不一定要求完全按順序進行。而是以適當(dāng)?shù)牟⑿虚_展各階段的工作。在上一階段尚未完成結(jié)束前,就可以開設(shè)后一階段的工作。根據(jù)不同的情況可有不同的并行度:⑴用戶想法不穩(wěn)定,如:每天都變換想法,要求不太清楚的話,則增加并行度。⑵短期顯示成果的壓力大,則可增加并行度。⑶如果可靠性要求高;要求各方面控制和配合很嚴(yán)格;資源及預(yù)算嚴(yán)密;技術(shù)錯誤的后果嚴(yán)重時,則需減少并行度。73原型模型常有這種情況,用戶定義了軟

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論