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

下載本文檔

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

文檔簡介

軟件工程概要數(shù)據(jù)庫原理課程補(bǔ)充知識軟件工程概要數(shù)據(jù)庫原理課程1背景軟件危機(jī)軟件開發(fā)周期大大超過規(guī)定日期軟件開發(fā)成本嚴(yán)重超標(biāo)軟件質(zhì)量難于保證軟件的發(fā)展大體上經(jīng)歷了三個(gè)階段:程序設(shè)計(jì)階段、軟件階段、軟件工程階段。背景軟件危機(jī)2程序設(shè)計(jì)時(shí)代名稱程序生產(chǎn)方式個(gè)人質(zhì)量取決于個(gè)人水平設(shè)計(jì)對象以硬件為中心開發(fā)工具無維護(hù)無設(shè)計(jì)方法無以技巧為主軟件時(shí)代軟件項(xiàng)目組取決于小集團(tuán)水平硬件/軟件為中心無系統(tǒng)工具,工具為個(gè)人所有由開發(fā)者進(jìn)行維護(hù),在設(shè)計(jì)中不重視維護(hù)設(shè)計(jì)問題自頂向下有質(zhì)量保證問題和持續(xù)性問題軟件工程時(shí)代軟件產(chǎn)品軟件組織軟件生產(chǎn)管理以軟件為中心軟件生成器設(shè)計(jì)與制作過程中均考慮維護(hù)問題,維護(hù)成本占很大比重結(jié)構(gòu)化設(shè)計(jì)、原型設(shè)計(jì)從程序設(shè)計(jì)到軟件工程時(shí)代程序設(shè)計(jì)時(shí)代名稱程序生產(chǎn)方式個(gè)人質(zhì)量取決于個(gè)人水平設(shè)計(jì)對象以3軟件工程的定義

IEEE【IEE93】定義:“將系統(tǒng)化的、規(guī)范的、可度量的方法應(yīng)用于軟件的開發(fā)、運(yùn)行和維護(hù)的過程,即將工程化應(yīng)用于軟件中?!避浖こ淌菓?yīng)用計(jì)算機(jī)科學(xué)、數(shù)學(xué)及管理科學(xué)等原理開發(fā)軟件的工程。它借鑒傳統(tǒng)工程的原則、方法,以提高質(zhì)量,降低成本為目的。軟件工程的定義IEEE【IEE93】定義:“將系統(tǒng)化的、4兩種軟件工程方法傳統(tǒng)軟件工程軟件分析→總體設(shè)計(jì)→詳細(xì)設(shè)計(jì)→面向過程的編碼→測試面向?qū)ο筌浖こ誊浖治雠c對象抽取→對象詳細(xì)設(shè)計(jì)→面向?qū)ο蟮木幋a→測試兩種軟件工程方法傳統(tǒng)軟件工程5結(jié)構(gòu)化分析模型的組成結(jié)構(gòu)數(shù)據(jù)流圖(DFD)E-R圖狀態(tài)變遷圖(STD圖)加工說明控制說明數(shù)據(jù)對象說明數(shù)據(jù)字典(DD)結(jié)構(gòu)化分析模型的組成結(jié)構(gòu)數(shù)據(jù)流圖E-R圖狀態(tài)變遷圖加工說明控6面向?qū)ο蠓治瞿P偷慕M成結(jié)構(gòu)對象-關(guān)系模型類/對象模型對象-行為模型使用實(shí)例(UseCase)操作、屬性、協(xié)作者對象模型動(dòng)態(tài)模型功能模型面向?qū)ο蠓治瞿P偷慕M成結(jié)構(gòu)對象-關(guān)類/對象對象-行為模型使用7傳統(tǒng)軟件工程中的瀑布模型可行性研究與計(jì)劃需求分析總體|詳細(xì)設(shè)計(jì)編碼運(yùn)行維護(hù)測試定義階段開發(fā)階段維護(hù)階段傳統(tǒng)軟件工程中的瀑布模型可行性研究與計(jì)劃需求分析總體|詳細(xì)設(shè)81.問題定義關(guān)鍵問題:“要解決的問題是什么?”主要結(jié)果:提出關(guān)于問題的性質(zhì)、工程目標(biāo)和規(guī)模的書面報(bào)告。內(nèi)容及步驟(一)系統(tǒng)任務(wù)的提出(二)初步調(diào)查(三)系統(tǒng)目標(biāo)的確定1.問題定義關(guān)鍵問題:“要解決的問題是什么?”92可行性研究可行性、可行性研究的含義可行性的含義包括可能性、必要性??尚行苑治龅膶ο笫窍到y(tǒng)目標(biāo)。評價(jià)總體方案(系統(tǒng)目標(biāo))的可能性、必要性??尚行匝芯磕康模河米钚〉拇鷥r(jià)在盡可能短的時(shí)間內(nèi)確定問題是否能夠解決,是否有必要去解決。2可行性研究可行性、可行性研究的含義10可行性研究的內(nèi)容1.技術(shù)上的可行性2.經(jīng)濟(jì)上的可行性3.操作可行性4.時(shí)間可行性5.組織與管理上可行性6.社會、政策允許的可行性可行性研究的內(nèi)容1.技術(shù)上的可行性113.需求分析的任務(wù)準(zhǔn)確地定義未來系統(tǒng)的目標(biāo),確定為了滿足用戶的需求系統(tǒng)必須做什么。用<需求規(guī)格說明書>規(guī)范的形式準(zhǔn)確地表達(dá)用戶的需求?;救蝿?wù):準(zhǔn)確地回答“系統(tǒng)必須做什么?”3.需求分析的任務(wù)準(zhǔn)確地定義未來系統(tǒng)的目標(biāo),確定為了滿足用12需求分析的具體任務(wù)1.確定對系統(tǒng)的綜合需求:(1)系統(tǒng)功能要求(2)系統(tǒng)性能要求(3)運(yùn)行要求(4)將來可能提出的要求2.分析系統(tǒng)的數(shù)據(jù)要求:采用建立“概念模型”的方法,并輔助圖形工具,如:層次方框圖、Warnier圖等。3.導(dǎo)出系統(tǒng)的邏輯模型:數(shù)據(jù)流程圖、數(shù)據(jù)字典、主要算法4.修正系統(tǒng)開發(fā)計(jì)劃5.開發(fā)原型系統(tǒng)需求分析的具體任務(wù)1.確定對系統(tǒng)的綜合需求:(1)系統(tǒng)功能要134.總體設(shè)計(jì)的過程設(shè)想供選擇的方案選取合理的方案推薦最佳方案功能分解設(shè)計(jì)軟件結(jié)構(gòu)

數(shù)據(jù)庫設(shè)計(jì)制定測試計(jì)劃書寫文檔審查和復(fù)審4.總體設(shè)計(jì)的過程設(shè)想供選擇的方案145.詳細(xì)設(shè)計(jì)的基本任務(wù)回答的關(guān)鍵問題:“怎樣具體地實(shí)現(xiàn)這個(gè)系統(tǒng)”主要任務(wù)是設(shè)計(jì)出程序的“藍(lán)圖”,供程序員日后根據(jù)這個(gè)藍(lán)圖編寫出實(shí)際的程序代碼。注意:設(shè)計(jì)程序的藍(lán)圖,不是具體地編寫程序。設(shè)計(jì)程序主要采用結(jié)構(gòu)化的程序設(shè)計(jì)方法。5.詳細(xì)設(shè)計(jì)的基本任務(wù)回答的關(guān)鍵問題:“怎樣具體地實(shí)現(xiàn)這個(gè)15詳細(xì)設(shè)計(jì)主要任務(wù):編寫詳細(xì)設(shè)計(jì)說明書為此,設(shè)計(jì)人員應(yīng):(1)確定每個(gè)模塊的算法,用工具表達(dá)算法的過程,寫出模塊的詳細(xì)過程性描述。(2)確定每一模塊的數(shù)據(jù)結(jié)構(gòu)。(3)確定模塊接口細(xì)節(jié)。詳細(xì)設(shè)計(jì)是編碼的先導(dǎo)。詳細(xì)設(shè)計(jì)主要任務(wù):編寫詳細(xì)設(shè)計(jì)說明書16詳細(xì)設(shè)計(jì)具體任務(wù)確定模塊如何實(shí)現(xiàn)編寫詳細(xì)設(shè)計(jì)說明書制定單元測試計(jì)劃詳細(xì)設(shè)計(jì)評審詳細(xì)設(shè)計(jì)具體任務(wù)確定模塊如何實(shí)現(xiàn)176.編碼程序?qū)懽黠L(fēng)格程序設(shè)計(jì)方法論自頂向下的程序設(shè)計(jì)方法自底向上的程序設(shè)計(jì)方法程序設(shè)計(jì)自動(dòng)化程序設(shè)計(jì)工具6.編碼程序?qū)懽黠L(fēng)格187.測試軟件測試是為了發(fā)現(xiàn)錯(cuò)誤而執(zhí)行程序的過程。軟件測試是根據(jù)軟件開發(fā)階段的規(guī)格說明和程序的內(nèi)部結(jié)構(gòu)而精心設(shè)計(jì)一批測試用例(即輸入的數(shù)據(jù)及其預(yù)期的輸出結(jié)果),并利用這些用例去運(yùn)行程序,以發(fā)現(xiàn)程序錯(cuò)誤的過程。7.測試軟件測試是為了發(fā)現(xiàn)錯(cuò)誤而執(zhí)行程序的過程。19軟件測試的目的測試是程序的執(zhí)行過程,目的在于發(fā)現(xiàn)錯(cuò)誤;一個(gè)好的測試用例在于能發(fā)現(xiàn)至今未發(fā)現(xiàn)的錯(cuò)誤;一個(gè)成功的測試是發(fā)現(xiàn)了至今未發(fā)現(xiàn)的錯(cuò)誤的測試。軟件測試的目的測試是程序的執(zhí)行過程,目的在于發(fā)現(xiàn)錯(cuò)誤;20測試設(shè)計(jì)中需要考慮的22種測試類型黑盒測試白盒測試單元測試?yán)塾?jì)綜合測試集成測試功能測試系統(tǒng)測試端到端測試健全測試衰竭測試接受測試負(fù)載測試強(qiáng)迫測試性能測試可用性測試安裝/卸載測試恢復(fù)測試兼容測試安全測試比較測試Alpha測試Beta測試測試設(shè)計(jì)中需要考慮的22種測試類型黑盒測試負(fù)載測試218.運(yùn)行維護(hù)本質(zhì)上是修改和壓縮了的軟件定義和開發(fā)過程分析設(shè)計(jì)編碼測試驗(yàn)收配置復(fù)審可靠性可移植性可用性可理解性可修改性可測試性可理解性可修改性可移植性效率可靠性效率完整性一致性可理解性8.運(yùn)行維護(hù)本質(zhì)上是修改和壓縮了的軟件定義和開發(fā)過程分析設(shè)22

幾種典型的開發(fā)方法:模塊化方法(modularmethod)結(jié)構(gòu)化方法面向數(shù)據(jù)結(jié)構(gòu)方法面向?qū)ο蠓椒ㄜ浖_發(fā)方法幾種典型的開發(fā)方法:軟件開發(fā)方法23結(jié)構(gòu)程序設(shè)計(jì)結(jié)構(gòu)程序設(shè)計(jì)是一種設(shè)計(jì)程序的技術(shù),它采用自頂向下逐步求精的設(shè)計(jì)方法和單入口單出口的控制結(jié)構(gòu)。結(jié)構(gòu)程序設(shè)計(jì)結(jié)構(gòu)程序設(shè)計(jì)是一種設(shè)計(jì)程序的技術(shù),它采用自頂向下24逐步求精的含義總體設(shè)計(jì)階段逐步求精的含義把一個(gè)復(fù)雜問題的解法分解和細(xì)化成一個(gè)由許多模塊組成的層次結(jié)構(gòu)的軟件系統(tǒng)。詳細(xì)設(shè)計(jì)階段逐步求精的含義把一個(gè)模塊的功能逐步分解細(xì)化為一系列具體的處理步驟或某種高級語言的語句。逐步求精的含義總體設(shè)計(jì)階段逐步求精的含義25結(jié)構(gòu)程序設(shè)計(jì)優(yōu)越性自頂向下逐步求精的方法符合人類解決復(fù)雜問題的普遍規(guī)律,因此可以顯著提高軟件開發(fā)工程的成功率和生產(chǎn)率。用先全局后局部、先整體后細(xì)節(jié)、先抽象后具體的逐步求精過程開發(fā)出的程序有清晰的層次結(jié)構(gòu),因此容易閱讀和理解。不使用GOTO語句,僅使用單入口單出口的控制結(jié)構(gòu),使得程序的靜態(tài)結(jié)構(gòu)和它的動(dòng)態(tài)執(zhí)行情況比較一致,易于閱讀和理解?!Y(jié)構(gòu)程序設(shè)計(jì)優(yōu)越性自頂向下逐步求精的方法符合人類解決復(fù)雜問題26傳統(tǒng)方法學(xué)的缺點(diǎn)

瀑布模型的缺點(diǎn):僵化瀑布模型要求:生命周期各階段間遵守嚴(yán)格的順序。實(shí)際情況是:軟件開發(fā)往往在反復(fù)實(shí)踐中完成。瀑布模型要求:預(yù)先定義并“凍結(jié)”軟件需求。實(shí)際情況是:某些系統(tǒng)的需求的一個(gè)逐漸明確的過程,且預(yù)先定義的需求到軟件完成時(shí)可能已經(jīng)過時(shí)。傳統(tǒng)方法學(xué)的缺點(diǎn)

瀑布模型的缺點(diǎn):僵化瀑布模型要求:生命周期27結(jié)構(gòu)化技術(shù)的缺點(diǎn)(SA-SD-SP)本質(zhì)上是功能分解,以實(shí)現(xiàn)功能的過程為中心。而用戶的需求變化主要是針對功能的。這就使基于過程的設(shè)計(jì)不易被理解;且功能變化往往引起結(jié)構(gòu)變化較大,穩(wěn)定性不好。系統(tǒng)有明確的邊界定義,且系統(tǒng)結(jié)構(gòu)依賴于系統(tǒng)邊界的定義,這樣的系統(tǒng)不易擴(kuò)充和修改。數(shù)據(jù)與操作分開處理,可能造成軟構(gòu)件對具體應(yīng)用環(huán)境的依賴,可重用性(reusability)較差.結(jié)構(gòu)化技術(shù)的缺點(diǎn)(SA-SD-SP)本質(zhì)上是功能分解,以實(shí)現(xiàn)28軟件工程的新途徑之一:快速原型法適用于用戶驅(qū)動(dòng)的系統(tǒng)(即需求模糊或隨時(shí)間變化的系統(tǒng))建造/修改原型用戶測試運(yùn)行原型

聽取用戶意見軟件工程的新途徑之一:快速原型法適用于用戶驅(qū)動(dòng)的系統(tǒng)(即需求29傳統(tǒng)方法和面向?qū)ο蠓椒ǖ谋容^傳統(tǒng)方法系統(tǒng)是過程的集合過程與數(shù)據(jù)實(shí)體交互過程接受輸入并產(chǎn)生輸出面向?qū)ο蠓椒ㄏ到y(tǒng)是交互對象的集合對象與人或其它對象交互對象發(fā)送與響應(yīng)消息傳統(tǒng)方法和面向?qū)ο蠓椒ǖ谋容^傳統(tǒng)方法面向?qū)ο蠓椒?0傳統(tǒng)方法數(shù)據(jù)與過程是分離的過程1輸入輸出過程2過程3數(shù)據(jù)實(shí)體屬于該對象的數(shù)據(jù)對象處理數(shù)據(jù)的方法消息消息對象把數(shù)據(jù)和處理數(shù)據(jù)的方法封狀成一個(gè)單元傳統(tǒng)方法數(shù)據(jù)與過程是分離的過程1輸入輸出過程2過程3數(shù)據(jù)實(shí)體31為什么對面向?qū)ο蠓椒ǜ信d趣?面向?qū)ο蠓椒ǖ闹饕獌?yōu)點(diǎn):自然性:追求軟件系統(tǒng)對現(xiàn)實(shí)系統(tǒng)的直接模擬,盡量實(shí)現(xiàn)將現(xiàn)實(shí)世界中的事物直接映射到軟件系統(tǒng)的解空間中。軟件復(fù)用:可復(fù)用性(可重用性)可擴(kuò)展性可管理性為什么對面向?qū)ο蠓椒ǜ信d趣?面向?qū)ο蠓椒ǖ闹饕?2面向?qū)ο蠓治雒嫦驅(qū)ο蠓治龅年P(guān)鍵:識別出問題域內(nèi)的對象,并分析它們相互間的關(guān)系,最終建立起問題域的簡潔、精確、可理解的正確模型。面向?qū)ο蠓椒ㄗ罨镜脑瓌t:按照人們習(xí)慣的思維方式,用面向?qū)ο笥^點(diǎn)建立問題域的模型,開發(fā)出盡可能自然地表現(xiàn)求解方法的軟件。面向?qū)ο蠓治雒嫦驅(qū)ο蠓治龅年P(guān)鍵:識別出問題域內(nèi)的對象,并分析33面向?qū)ο蠼S妹嫦驅(qū)ο蠓椒ㄩ_發(fā)軟件,通常需要建立三種形式的模型:對象模型:描述系統(tǒng)數(shù)據(jù)結(jié)構(gòu)動(dòng)態(tài)模型:描述系統(tǒng)控制結(jié)構(gòu)功能模型:描述系統(tǒng)功能面向?qū)ο蠼S妹嫦驅(qū)ο蠓椒ㄩ_發(fā)軟件,通常需要建立三種形式的模34一些具體工具介紹一些具體工具介紹35ARoomhierarchybasedonaninteriordesigner’sperspectiveRoomRoomwithlightsRoomwithwindowsGarageBasementKitchenBathroomRoomwithFurnitureLivingRoomFamilyRoomBedRoomDiningRoom層次方框圖ARoomhierarchybasedonan36軟件工程概要37數(shù)據(jù)流程圖DFD是結(jié)構(gòu)化系統(tǒng)分析的主要工具,它表示了系統(tǒng)內(nèi)部信息的流向,并表示了系統(tǒng)的邏輯處理的功能數(shù)據(jù)流程圖的特性(1)抽象性:具體的組織機(jī)構(gòu)、工作場所、物質(zhì)流等等都去掉,僅剩下信息和數(shù)據(jù)存儲、流動(dòng)、使用以及加工的情況。(2)概括性:它把系統(tǒng)對各種業(yè)務(wù)的處理過程聯(lián)系起來考慮,形成一個(gè)總體,具有概括性。(3)數(shù)據(jù)流程圖描述的主體是抽象出來的數(shù)據(jù)。(4)數(shù)據(jù)流程圖具有層次性,一個(gè)系統(tǒng)將有許多層次的流程圖。數(shù)據(jù)流程圖DFD是結(jié)構(gòu)化系統(tǒng)分析的主要工具,它表示了系統(tǒng)內(nèi)部38數(shù)據(jù)流程圖的用途系統(tǒng)分析員用這種工具可以自頂向下分析系統(tǒng)信息流程可在圖上畫出需要計(jì)算機(jī)處理的部分根據(jù)數(shù)據(jù)存貯,進(jìn)一步作數(shù)據(jù)分析,向數(shù)據(jù)庫設(shè)計(jì)過渡根據(jù)數(shù)據(jù)流向,定出存取方式對應(yīng)一個(gè)處理過程,用相應(yīng)的語言、判定表等工具表達(dá)處理方法數(shù)據(jù)流程圖的用途系統(tǒng)分析員用這種工具可以自頂向下分析系統(tǒng)信息39程序流程圖、偽碼、盒圖、問題分析圖開始PGQandP停止FFdefkx2de123

While

x3cx21cDo-Whilex323dek:PROCEDUREspell_checkISBEGIN

SplitdocumentintosinglewordsLookupwordsindictionaryDisplaywordswhicharenotindictionaryCreateanewdictionaryENDspell_check程序流程圖、偽碼、盒圖、問題分析圖開始PGQandP停止40幾種表示工具比較流程圖偽碼PDL盒圖N-S問題分析圖PAD結(jié)構(gòu)化差中優(yōu)優(yōu)邏輯表達(dá)中良良良易轉(zhuǎn)換代碼良優(yōu)良優(yōu)直觀性中中良良使用頻率優(yōu)優(yōu)中中幾種表示工具比較流程圖偽碼盒圖問題分析圖結(jié)構(gòu)化差中優(yōu)優(yōu)邏輯表41判定表判定表能夠清晰地表示復(fù)雜的條件組合與應(yīng)做的動(dòng)作之間的對應(yīng)關(guān)系,而其它的工具不易表示。一張判定表由四部分組成,左上部列出所有條件,左下部是所有可能做的動(dòng)作,右上部是表示各種條件組合的一個(gè)矩陣,右下部是和每種條件組合相對應(yīng)的動(dòng)作。判定表的每一列實(shí)質(zhì)上是一條規(guī)則,規(guī)定了與特定的條件組合相對應(yīng)的動(dòng)作。判定表判定表能夠清晰地表示復(fù)雜的條件組合與應(yīng)做的動(dòng)作之間的對42例子:航空行李托運(yùn)費(fèi)的算法按規(guī)定:重量不超過30公斤的行李可免費(fèi)托運(yùn)。重量超過30公斤時(shí),對超運(yùn)部分,頭等艙國內(nèi)乘客收4元/公斤;其它艙位國內(nèi)乘客收6元/公斤;外國乘客收費(fèi)為國內(nèi)乘客的2倍;殘疾乘客的收費(fèi)為正常乘客的1/2。

例子:航空行李托運(yùn)費(fèi)的算法按規(guī)定:重量不超過30公斤的行李可43RulesRulenumbersConditionrowsActionrowsRulesRulenumbersCondition44行李費(fèi)算法行李重量W>30行李重量W30免費(fèi)國內(nèi)乘客外國乘客頭等艙其他艙殘疾乘客正常乘客(W-30)2(W-30)4殘疾乘客正常乘客(W-30)3(W-30)6頭等艙其他艙殘疾乘客正常乘客(W-30)4(W-30)8殘疾乘客正常乘客(W-30)6(W-30)12用判定樹表示計(jì)算行李費(fèi)的算法注:判定表與判定樹并不適用于作為一種通用的設(shè)計(jì)工具,通常將之用于輔助測試判定樹表示法行李費(fèi)算法行李重量W>30行李重量W30免費(fèi)國內(nèi)乘45參考書籍張海藩,《軟件工程導(dǎo)論》第三版,清華大學(xué)出版社第七學(xué)期課程參考書籍張海藩,《軟件工程導(dǎo)論》第三版,清華大學(xué)出版社46軟件工程概要數(shù)據(jù)庫原理課程補(bǔ)充知識軟件工程概要數(shù)據(jù)庫原理課程47背景軟件危機(jī)軟件開發(fā)周期大大超過規(guī)定日期軟件開發(fā)成本嚴(yán)重超標(biāo)軟件質(zhì)量難于保證軟件的發(fā)展大體上經(jīng)歷了三個(gè)階段:程序設(shè)計(jì)階段、軟件階段、軟件工程階段。背景軟件危機(jī)48程序設(shè)計(jì)時(shí)代名稱程序生產(chǎn)方式個(gè)人質(zhì)量取決于個(gè)人水平設(shè)計(jì)對象以硬件為中心開發(fā)工具無維護(hù)無設(shè)計(jì)方法無以技巧為主軟件時(shí)代軟件項(xiàng)目組取決于小集團(tuán)水平硬件/軟件為中心無系統(tǒng)工具,工具為個(gè)人所有由開發(fā)者進(jìn)行維護(hù),在設(shè)計(jì)中不重視維護(hù)設(shè)計(jì)問題自頂向下有質(zhì)量保證問題和持續(xù)性問題軟件工程時(shí)代軟件產(chǎn)品軟件組織軟件生產(chǎn)管理以軟件為中心軟件生成器設(shè)計(jì)與制作過程中均考慮維護(hù)問題,維護(hù)成本占很大比重結(jié)構(gòu)化設(shè)計(jì)、原型設(shè)計(jì)從程序設(shè)計(jì)到軟件工程時(shí)代程序設(shè)計(jì)時(shí)代名稱程序生產(chǎn)方式個(gè)人質(zhì)量取決于個(gè)人水平設(shè)計(jì)對象以49軟件工程的定義

IEEE【IEE93】定義:“將系統(tǒng)化的、規(guī)范的、可度量的方法應(yīng)用于軟件的開發(fā)、運(yùn)行和維護(hù)的過程,即將工程化應(yīng)用于軟件中。”軟件工程是應(yīng)用計(jì)算機(jī)科學(xué)、數(shù)學(xué)及管理科學(xué)等原理開發(fā)軟件的工程。它借鑒傳統(tǒng)工程的原則、方法,以提高質(zhì)量,降低成本為目的。軟件工程的定義IEEE【IEE93】定義:“將系統(tǒng)化的、50兩種軟件工程方法傳統(tǒng)軟件工程軟件分析→總體設(shè)計(jì)→詳細(xì)設(shè)計(jì)→面向過程的編碼→測試面向?qū)ο筌浖こ誊浖治雠c對象抽取→對象詳細(xì)設(shè)計(jì)→面向?qū)ο蟮木幋a→測試兩種軟件工程方法傳統(tǒng)軟件工程51結(jié)構(gòu)化分析模型的組成結(jié)構(gòu)數(shù)據(jù)流圖(DFD)E-R圖狀態(tài)變遷圖(STD圖)加工說明控制說明數(shù)據(jù)對象說明數(shù)據(jù)字典(DD)結(jié)構(gòu)化分析模型的組成結(jié)構(gòu)數(shù)據(jù)流圖E-R圖狀態(tài)變遷圖加工說明控52面向?qū)ο蠓治瞿P偷慕M成結(jié)構(gòu)對象-關(guān)系模型類/對象模型對象-行為模型使用實(shí)例(UseCase)操作、屬性、協(xié)作者對象模型動(dòng)態(tài)模型功能模型面向?qū)ο蠓治瞿P偷慕M成結(jié)構(gòu)對象-關(guān)類/對象對象-行為模型使用53傳統(tǒng)軟件工程中的瀑布模型可行性研究與計(jì)劃需求分析總體|詳細(xì)設(shè)計(jì)編碼運(yùn)行維護(hù)測試定義階段開發(fā)階段維護(hù)階段傳統(tǒng)軟件工程中的瀑布模型可行性研究與計(jì)劃需求分析總體|詳細(xì)設(shè)541.問題定義關(guān)鍵問題:“要解決的問題是什么?”主要結(jié)果:提出關(guān)于問題的性質(zhì)、工程目標(biāo)和規(guī)模的書面報(bào)告。內(nèi)容及步驟(一)系統(tǒng)任務(wù)的提出(二)初步調(diào)查(三)系統(tǒng)目標(biāo)的確定1.問題定義關(guān)鍵問題:“要解決的問題是什么?”552可行性研究可行性、可行性研究的含義可行性的含義包括可能性、必要性。可行性分析的對象是系統(tǒng)目標(biāo)。評價(jià)總體方案(系統(tǒng)目標(biāo))的可能性、必要性。可行性研究目的:用最小的代價(jià)在盡可能短的時(shí)間內(nèi)確定問題是否能夠解決,是否有必要去解決。2可行性研究可行性、可行性研究的含義56可行性研究的內(nèi)容1.技術(shù)上的可行性2.經(jīng)濟(jì)上的可行性3.操作可行性4.時(shí)間可行性5.組織與管理上可行性6.社會、政策允許的可行性可行性研究的內(nèi)容1.技術(shù)上的可行性573.需求分析的任務(wù)準(zhǔn)確地定義未來系統(tǒng)的目標(biāo),確定為了滿足用戶的需求系統(tǒng)必須做什么。用<需求規(guī)格說明書>規(guī)范的形式準(zhǔn)確地表達(dá)用戶的需求?;救蝿?wù):準(zhǔn)確地回答“系統(tǒng)必須做什么?”3.需求分析的任務(wù)準(zhǔn)確地定義未來系統(tǒng)的目標(biāo),確定為了滿足用58需求分析的具體任務(wù)1.確定對系統(tǒng)的綜合需求:(1)系統(tǒng)功能要求(2)系統(tǒng)性能要求(3)運(yùn)行要求(4)將來可能提出的要求2.分析系統(tǒng)的數(shù)據(jù)要求:采用建立“概念模型”的方法,并輔助圖形工具,如:層次方框圖、Warnier圖等。3.導(dǎo)出系統(tǒng)的邏輯模型:數(shù)據(jù)流程圖、數(shù)據(jù)字典、主要算法4.修正系統(tǒng)開發(fā)計(jì)劃5.開發(fā)原型系統(tǒng)需求分析的具體任務(wù)1.確定對系統(tǒng)的綜合需求:(1)系統(tǒng)功能要594.總體設(shè)計(jì)的過程設(shè)想供選擇的方案選取合理的方案推薦最佳方案功能分解設(shè)計(jì)軟件結(jié)構(gòu)

數(shù)據(jù)庫設(shè)計(jì)制定測試計(jì)劃書寫文檔審查和復(fù)審4.總體設(shè)計(jì)的過程設(shè)想供選擇的方案605.詳細(xì)設(shè)計(jì)的基本任務(wù)回答的關(guān)鍵問題:“怎樣具體地實(shí)現(xiàn)這個(gè)系統(tǒng)”主要任務(wù)是設(shè)計(jì)出程序的“藍(lán)圖”,供程序員日后根據(jù)這個(gè)藍(lán)圖編寫出實(shí)際的程序代碼。注意:設(shè)計(jì)程序的藍(lán)圖,不是具體地編寫程序。設(shè)計(jì)程序主要采用結(jié)構(gòu)化的程序設(shè)計(jì)方法。5.詳細(xì)設(shè)計(jì)的基本任務(wù)回答的關(guān)鍵問題:“怎樣具體地實(shí)現(xiàn)這個(gè)61詳細(xì)設(shè)計(jì)主要任務(wù):編寫詳細(xì)設(shè)計(jì)說明書為此,設(shè)計(jì)人員應(yīng):(1)確定每個(gè)模塊的算法,用工具表達(dá)算法的過程,寫出模塊的詳細(xì)過程性描述。(2)確定每一模塊的數(shù)據(jù)結(jié)構(gòu)。(3)確定模塊接口細(xì)節(jié)。詳細(xì)設(shè)計(jì)是編碼的先導(dǎo)。詳細(xì)設(shè)計(jì)主要任務(wù):編寫詳細(xì)設(shè)計(jì)說明書62詳細(xì)設(shè)計(jì)具體任務(wù)確定模塊如何實(shí)現(xiàn)編寫詳細(xì)設(shè)計(jì)說明書制定單元測試計(jì)劃詳細(xì)設(shè)計(jì)評審詳細(xì)設(shè)計(jì)具體任務(wù)確定模塊如何實(shí)現(xiàn)636.編碼程序?qū)懽黠L(fēng)格程序設(shè)計(jì)方法論自頂向下的程序設(shè)計(jì)方法自底向上的程序設(shè)計(jì)方法程序設(shè)計(jì)自動(dòng)化程序設(shè)計(jì)工具6.編碼程序?qū)懽黠L(fēng)格647.測試軟件測試是為了發(fā)現(xiàn)錯(cuò)誤而執(zhí)行程序的過程。軟件測試是根據(jù)軟件開發(fā)階段的規(guī)格說明和程序的內(nèi)部結(jié)構(gòu)而精心設(shè)計(jì)一批測試用例(即輸入的數(shù)據(jù)及其預(yù)期的輸出結(jié)果),并利用這些用例去運(yùn)行程序,以發(fā)現(xiàn)程序錯(cuò)誤的過程。7.測試軟件測試是為了發(fā)現(xiàn)錯(cuò)誤而執(zhí)行程序的過程。65軟件測試的目的測試是程序的執(zhí)行過程,目的在于發(fā)現(xiàn)錯(cuò)誤;一個(gè)好的測試用例在于能發(fā)現(xiàn)至今未發(fā)現(xiàn)的錯(cuò)誤;一個(gè)成功的測試是發(fā)現(xiàn)了至今未發(fā)現(xiàn)的錯(cuò)誤的測試。軟件測試的目的測試是程序的執(zhí)行過程,目的在于發(fā)現(xiàn)錯(cuò)誤;66測試設(shè)計(jì)中需要考慮的22種測試類型黑盒測試白盒測試單元測試?yán)塾?jì)綜合測試集成測試功能測試系統(tǒng)測試端到端測試健全測試衰竭測試接受測試負(fù)載測試強(qiáng)迫測試性能測試可用性測試安裝/卸載測試恢復(fù)測試兼容測試安全測試比較測試Alpha測試Beta測試測試設(shè)計(jì)中需要考慮的22種測試類型黑盒測試負(fù)載測試678.運(yùn)行維護(hù)本質(zhì)上是修改和壓縮了的軟件定義和開發(fā)過程分析設(shè)計(jì)編碼測試驗(yàn)收配置復(fù)審可靠性可移植性可用性可理解性可修改性可測試性可理解性可修改性可移植性效率可靠性效率完整性一致性可理解性8.運(yùn)行維護(hù)本質(zhì)上是修改和壓縮了的軟件定義和開發(fā)過程分析設(shè)68

幾種典型的開發(fā)方法:模塊化方法(modularmethod)結(jié)構(gòu)化方法面向數(shù)據(jù)結(jié)構(gòu)方法面向?qū)ο蠓椒ㄜ浖_發(fā)方法幾種典型的開發(fā)方法:軟件開發(fā)方法69結(jié)構(gòu)程序設(shè)計(jì)結(jié)構(gòu)程序設(shè)計(jì)是一種設(shè)計(jì)程序的技術(shù),它采用自頂向下逐步求精的設(shè)計(jì)方法和單入口單出口的控制結(jié)構(gòu)。結(jié)構(gòu)程序設(shè)計(jì)結(jié)構(gòu)程序設(shè)計(jì)是一種設(shè)計(jì)程序的技術(shù),它采用自頂向下70逐步求精的含義總體設(shè)計(jì)階段逐步求精的含義把一個(gè)復(fù)雜問題的解法分解和細(xì)化成一個(gè)由許多模塊組成的層次結(jié)構(gòu)的軟件系統(tǒng)。詳細(xì)設(shè)計(jì)階段逐步求精的含義把一個(gè)模塊的功能逐步分解細(xì)化為一系列具體的處理步驟或某種高級語言的語句。逐步求精的含義總體設(shè)計(jì)階段逐步求精的含義71結(jié)構(gòu)程序設(shè)計(jì)優(yōu)越性自頂向下逐步求精的方法符合人類解決復(fù)雜問題的普遍規(guī)律,因此可以顯著提高軟件開發(fā)工程的成功率和生產(chǎn)率。用先全局后局部、先整體后細(xì)節(jié)、先抽象后具體的逐步求精過程開發(fā)出的程序有清晰的層次結(jié)構(gòu),因此容易閱讀和理解。不使用GOTO語句,僅使用單入口單出口的控制結(jié)構(gòu),使得程序的靜態(tài)結(jié)構(gòu)和它的動(dòng)態(tài)執(zhí)行情況比較一致,易于閱讀和理解?!Y(jié)構(gòu)程序設(shè)計(jì)優(yōu)越性自頂向下逐步求精的方法符合人類解決復(fù)雜問題72傳統(tǒng)方法學(xué)的缺點(diǎn)

瀑布模型的缺點(diǎn):僵化瀑布模型要求:生命周期各階段間遵守嚴(yán)格的順序。實(shí)際情況是:軟件開發(fā)往往在反復(fù)實(shí)踐中完成。瀑布模型要求:預(yù)先定義并“凍結(jié)”軟件需求。實(shí)際情況是:某些系統(tǒng)的需求的一個(gè)逐漸明確的過程,且預(yù)先定義的需求到軟件完成時(shí)可能已經(jīng)過時(shí)。傳統(tǒng)方法學(xué)的缺點(diǎn)

瀑布模型的缺點(diǎn):僵化瀑布模型要求:生命周期73結(jié)構(gòu)化技術(shù)的缺點(diǎn)(SA-SD-SP)本質(zhì)上是功能分解,以實(shí)現(xiàn)功能的過程為中心。而用戶的需求變化主要是針對功能的。這就使基于過程的設(shè)計(jì)不易被理解;且功能變化往往引起結(jié)構(gòu)變化較大,穩(wěn)定性不好。系統(tǒng)有明確的邊界定義,且系統(tǒng)結(jié)構(gòu)依賴于系統(tǒng)邊界的定義,這樣的系統(tǒng)不易擴(kuò)充和修改。數(shù)據(jù)與操作分開處理,可能造成軟構(gòu)件對具體應(yīng)用環(huán)境的依賴,可重用性(reusability)較差.結(jié)構(gòu)化技術(shù)的缺點(diǎn)(SA-SD-SP)本質(zhì)上是功能分解,以實(shí)現(xiàn)74軟件工程的新途徑之一:快速原型法適用于用戶驅(qū)動(dòng)的系統(tǒng)(即需求模糊或隨時(shí)間變化的系統(tǒng))建造/修改原型用戶測試運(yùn)行原型

聽取用戶意見軟件工程的新途徑之一:快速原型法適用于用戶驅(qū)動(dòng)的系統(tǒng)(即需求75傳統(tǒng)方法和面向?qū)ο蠓椒ǖ谋容^傳統(tǒng)方法系統(tǒng)是過程的集合過程與數(shù)據(jù)實(shí)體交互過程接受輸入并產(chǎn)生輸出面向?qū)ο蠓椒ㄏ到y(tǒng)是交互對象的集合對象與人或其它對象交互對象發(fā)送與響應(yīng)消息傳統(tǒng)方法和面向?qū)ο蠓椒ǖ谋容^傳統(tǒng)方法面向?qū)ο蠓椒?6傳統(tǒng)方法數(shù)據(jù)與過程是分離的過程1輸入輸出過程2過程3數(shù)據(jù)實(shí)體屬于該對象的數(shù)據(jù)對象處理數(shù)據(jù)的方法消息消息對象把數(shù)據(jù)和處理數(shù)據(jù)的方法封狀成一個(gè)單元傳統(tǒng)方法數(shù)據(jù)與過程是分離的過程1輸入輸出過程2過程3數(shù)據(jù)實(shí)體77為什么對面向?qū)ο蠓椒ǜ信d趣?面向?qū)ο蠓椒ǖ闹饕獌?yōu)點(diǎn):自然性:追求軟件系統(tǒng)對現(xiàn)實(shí)系統(tǒng)的直接模擬,盡量實(shí)現(xiàn)將現(xiàn)實(shí)世界中的事物直接映射到軟件系統(tǒng)的解空間中。軟件復(fù)用:可復(fù)用性(可重用性)可擴(kuò)展性可管理性為什么對面向?qū)ο蠓椒ǜ信d趣?面向?qū)ο蠓椒ǖ闹饕?8面向?qū)ο蠓治雒嫦驅(qū)ο蠓治龅年P(guān)鍵:識別出問題域內(nèi)的對象,并分析它們相互間的關(guān)系,最終建立起問題域的簡潔、精確、可理解的正確模型。面向?qū)ο蠓椒ㄗ罨镜脑瓌t:按照人們習(xí)慣的思維方式,用面向?qū)ο笥^點(diǎn)建立問題域的模型,開發(fā)出盡可能自然地表現(xiàn)求解方法的軟件。面向?qū)ο蠓治雒嫦驅(qū)ο蠓治龅年P(guān)鍵:識別出問題域內(nèi)的對象,并分析79面向?qū)ο蠼S妹嫦驅(qū)ο蠓椒ㄩ_發(fā)軟件,通常需要建立三種形式的模型:對象模型:描述系統(tǒng)數(shù)據(jù)結(jié)構(gòu)動(dòng)態(tài)模型:描述系統(tǒng)控制結(jié)構(gòu)功能模型:描述系統(tǒng)功能面向?qū)ο蠼S妹嫦驅(qū)ο蠓椒ㄩ_發(fā)軟件,通常需要建立三種形式的模80一些具體工具介紹一些具體工具介紹81ARoomhierarchybasedonaninteriordesigner’sperspectiveRoomRoomwithlightsRoomwithwindowsGarageBasementKitchenBathroomRoomwithFurnitureLivingRoomFamilyRoomBedRoomDiningRoom層次方框圖ARoomhierarchybasedonan82軟件工程概要83數(shù)據(jù)流程圖DFD是結(jié)構(gòu)化系統(tǒng)分析的主要工具,它表示了系統(tǒng)內(nèi)部信息的流向,并表示了系統(tǒng)的邏輯處理的功能數(shù)據(jù)流程圖的特性(1)抽象性:具體的組織機(jī)構(gòu)、工作場所、物質(zhì)流等等都去掉,僅剩下信息和數(shù)據(jù)存儲、流動(dòng)、使用以及加工的情況。(2)概括性:它把系統(tǒng)對各種業(yè)務(wù)的處理過程聯(lián)系起來考慮,形成一個(gè)總體,具有概括性。(3)數(shù)據(jù)流程圖描述的主體是抽象出來的數(shù)據(jù)。(4)數(shù)據(jù)流程圖具有層次性,一個(gè)系統(tǒng)將有許多層次的流程圖。數(shù)據(jù)流程圖DFD是結(jié)構(gòu)化系統(tǒng)分析的主要工具,它表示了系統(tǒng)內(nèi)部84數(shù)據(jù)流程圖的用途系統(tǒng)分析員用這種工具可以自頂向下分析系統(tǒng)信息流程可在圖上畫出需要計(jì)算機(jī)處理的部分根據(jù)數(shù)據(jù)存貯,進(jìn)一步作數(shù)據(jù)分析,向數(shù)據(jù)庫設(shè)計(jì)過渡根據(jù)數(shù)據(jù)流向,定出存取方式對應(yīng)一個(gè)處理過程,用相應(yīng)的語言、判定表

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論