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

下載本文檔

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

文檔簡(jiǎn)介

第1章軟件工程概述11.1

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

小合唱-->合唱-->萬(wàn)人大合唱

|||

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

⑴實(shí)時(shí)處理軟件

⑵交互式軟件

⑶分時(shí)軟件

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

⑴項(xiàng)目軟件

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

⑴僅供一次使用的軟件

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

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

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

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

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

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

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

—對(duì)象工程3、第三代軟件工程

—過(guò)程工程4、第四代軟件工程

—構(gòu)件工程

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

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

—對(duì)象工程3、第三代軟件工程

—過(guò)程工程4、第四代軟件工程

—構(gòu)件工程

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

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

—對(duì)象工程3、第三代軟件工程

—過(guò)程工程4、第四代軟件工程

—構(gòu)件工程

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

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

—對(duì)象工程3、第三代軟件工程

—過(guò)程工程4、第四代軟件工程

—構(gòu)件工程

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

⑴如何開(kāi)發(fā)軟件,怎樣滿足對(duì)軟件日益增長(zhǎng)的需求;

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

平均租船時(shí)間=MMM

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

⑴計(jì)算輸入流的信息

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

或總的時(shí)間=(第一條船結(jié)束時(shí)間+第二條船結(jié)束時(shí)間+…)-(第一條船開(kāi)始時(shí)間+第二條船開(kāi)始時(shí)間+…)29編寫(xiě)系統(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)提出修改①找出一天中最長(zhǎng)租用時(shí)間:

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

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

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

(1)軟件費(fèi)用

(2)軟件可靠性

(3)軟件維護(hù)

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

(5)軟件重用491.4

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

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

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(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)論