




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
軟件工程概要數(shù)據(jù)庫原理課程補充知識軟件工程概要數(shù)據(jù)庫原理課程1背景軟件危機軟件開發(fā)周期大大超過規(guī)定日期軟件開發(fā)成本嚴重超標軟件質(zhì)量難于保證軟件的發(fā)展大體上經(jīng)歷了三個階段:程序設計階段、軟件階段、軟件工程階段。背景軟件危機2程序設計時代名稱程序生產(chǎn)方式個人質(zhì)量取決于個人水平設計對象以硬件為中心開發(fā)工具無維護無設計方法無以技巧為主軟件時代軟件項目組取決于小集團水平硬件/軟件為中心無系統(tǒng)工具,工具為個人所有由開發(fā)者進行維護,在設計中不重視維護設計問題自頂向下有質(zhì)量保證問題和持續(xù)性問題軟件工程時代軟件產(chǎn)品軟件組織軟件生產(chǎn)管理以軟件為中心軟件生成器設計與制作過程中均考慮維護問題,維護成本占很大比重結(jié)構(gòu)化設計、原型設計從程序設計到軟件工程時代程序設計時代名稱程序生產(chǎn)方式個人質(zhì)量取決于個人水平設計對象以3軟件工程的定義
IEEE【IEE93】定義:“將系統(tǒng)化的、規(guī)范的、可度量的方法應用于軟件的開發(fā)、運行和維護的過程,即將工程化應用于軟件中?!避浖こ淌菓糜嬎銠C科學、數(shù)學及管理科學等原理開發(fā)軟件的工程。它借鑒傳統(tǒng)工程的原則、方法,以提高質(zhì)量,降低成本為目的。軟件工程的定義IEEE【IEE93】定義:“將系統(tǒng)化的、4兩種軟件工程方法傳統(tǒng)軟件工程軟件分析→總體設計→詳細設計→面向過程的編碼→測試面向?qū)ο筌浖こ誊浖治雠c對象抽取→對象詳細設計→面向?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)系模型類/對象模型對象-行為模型使用實例(UseCase)操作、屬性、協(xié)作者對象模型動態(tài)模型功能模型面向?qū)ο蠓治瞿P偷慕M成結(jié)構(gòu)對象-關(guān)類/對象對象-行為模型使用7傳統(tǒng)軟件工程中的瀑布模型可行性研究與計劃需求分析總體|詳細設計編碼運行維護測試定義階段開發(fā)階段維護階段傳統(tǒng)軟件工程中的瀑布模型可行性研究與計劃需求分析總體|詳細設81.問題定義關(guān)鍵問題:“要解決的問題是什么?”主要結(jié)果:提出關(guān)于問題的性質(zhì)、工程目標和規(guī)模的書面報告。內(nèi)容及步驟(一)系統(tǒng)任務的提出(二)初步調(diào)查(三)系統(tǒng)目標的確定1.問題定義關(guān)鍵問題:“要解決的問題是什么?”92可行性研究可行性、可行性研究的含義可行性的含義包括可能性、必要性。可行性分析的對象是系統(tǒng)目標。評價總體方案(系統(tǒng)目標)的可能性、必要性。可行性研究目的:用最小的代價在盡可能短的時間內(nèi)確定問題是否能夠解決,是否有必要去解決。2可行性研究可行性、可行性研究的含義10可行性研究的內(nèi)容1.技術(shù)上的可行性2.經(jīng)濟上的可行性3.操作可行性4.時間可行性5.組織與管理上可行性6.社會、政策允許的可行性可行性研究的內(nèi)容1.技術(shù)上的可行性113.需求分析的任務準確地定義未來系統(tǒng)的目標,確定為了滿足用戶的需求系統(tǒng)必須做什么。用<需求規(guī)格說明書>規(guī)范的形式準確地表達用戶的需求?;救蝿眨簻蚀_地回答“系統(tǒng)必須做什么?”3.需求分析的任務準確地定義未來系統(tǒng)的目標,確定為了滿足用12需求分析的具體任務1.確定對系統(tǒng)的綜合需求:(1)系統(tǒng)功能要求(2)系統(tǒng)性能要求(3)運行要求(4)將來可能提出的要求2.分析系統(tǒng)的數(shù)據(jù)要求:采用建立“概念模型”的方法,并輔助圖形工具,如:層次方框圖、Warnier圖等。3.導出系統(tǒng)的邏輯模型:數(shù)據(jù)流程圖、數(shù)據(jù)字典、主要算法4.修正系統(tǒng)開發(fā)計劃5.開發(fā)原型系統(tǒng)需求分析的具體任務1.確定對系統(tǒng)的綜合需求:(1)系統(tǒng)功能要134.總體設計的過程設想供選擇的方案選取合理的方案推薦最佳方案功能分解設計軟件結(jié)構(gòu)
數(shù)據(jù)庫設計制定測試計劃書寫文檔審查和復審4.總體設計的過程設想供選擇的方案145.詳細設計的基本任務回答的關(guān)鍵問題:“怎樣具體地實現(xiàn)這個系統(tǒng)”主要任務是設計出程序的“藍圖”,供程序員日后根據(jù)這個藍圖編寫出實際的程序代碼。注意:設計程序的藍圖,不是具體地編寫程序。設計程序主要采用結(jié)構(gòu)化的程序設計方法。5.詳細設計的基本任務回答的關(guān)鍵問題:“怎樣具體地實現(xiàn)這個15詳細設計主要任務:編寫詳細設計說明書為此,設計人員應:(1)確定每個模塊的算法,用工具表達算法的過程,寫出模塊的詳細過程性描述。(2)確定每一模塊的數(shù)據(jù)結(jié)構(gòu)。(3)確定模塊接口細節(jié)。詳細設計是編碼的先導。詳細設計主要任務:編寫詳細設計說明書16詳細設計具體任務確定模塊如何實現(xiàn)編寫詳細設計說明書制定單元測試計劃詳細設計評審詳細設計具體任務確定模塊如何實現(xiàn)176.編碼程序?qū)懽黠L格程序設計方法論自頂向下的程序設計方法自底向上的程序設計方法程序設計自動化程序設計工具6.編碼程序?qū)懽黠L格187.測試軟件測試是為了發(fā)現(xiàn)錯誤而執(zhí)行程序的過程。軟件測試是根據(jù)軟件開發(fā)階段的規(guī)格說明和程序的內(nèi)部結(jié)構(gòu)而精心設計一批測試用例(即輸入的數(shù)據(jù)及其預期的輸出結(jié)果),并利用這些用例去運行程序,以發(fā)現(xiàn)程序錯誤的過程。7.測試軟件測試是為了發(fā)現(xiàn)錯誤而執(zhí)行程序的過程。19軟件測試的目的測試是程序的執(zhí)行過程,目的在于發(fā)現(xiàn)錯誤;一個好的測試用例在于能發(fā)現(xiàn)至今未發(fā)現(xiàn)的錯誤;一個成功的測試是發(fā)現(xiàn)了至今未發(fā)現(xiàn)的錯誤的測試。軟件測試的目的測試是程序的執(zhí)行過程,目的在于發(fā)現(xiàn)錯誤;20測試設計中需要考慮的22種測試類型黑盒測試白盒測試單元測試累計綜合測試集成測試功能測試系統(tǒng)測試端到端測試健全測試衰竭測試接受測試負載測試強迫測試性能測試可用性測試安裝/卸載測試恢復測試兼容測試安全測試比較測試Alpha測試Beta測試測試設計中需要考慮的22種測試類型黑盒測試負載測試218.運行維護本質(zhì)上是修改和壓縮了的軟件定義和開發(fā)過程分析設計編碼測試驗收配置復審可靠性可移植性可用性可理解性可修改性可測試性可理解性可修改性可移植性效率可靠性效率完整性一致性可理解性8.運行維護本質(zhì)上是修改和壓縮了的軟件定義和開發(fā)過程分析設22
幾種典型的開發(fā)方法:模塊化方法(modularmethod)結(jié)構(gòu)化方法面向數(shù)據(jù)結(jié)構(gòu)方法面向?qū)ο蠓椒ㄜ浖_發(fā)方法幾種典型的開發(fā)方法:軟件開發(fā)方法23結(jié)構(gòu)程序設計結(jié)構(gòu)程序設計是一種設計程序的技術(shù),它采用自頂向下逐步求精的設計方法和單入口單出口的控制結(jié)構(gòu)。結(jié)構(gòu)程序設計結(jié)構(gòu)程序設計是一種設計程序的技術(shù),它采用自頂向下24逐步求精的含義總體設計階段逐步求精的含義把一個復雜問題的解法分解和細化成一個由許多模塊組成的層次結(jié)構(gòu)的軟件系統(tǒng)。詳細設計階段逐步求精的含義把一個模塊的功能逐步分解細化為一系列具體的處理步驟或某種高級語言的語句。逐步求精的含義總體設計階段逐步求精的含義25結(jié)構(gòu)程序設計優(yōu)越性自頂向下逐步求精的方法符合人類解決復雜問題的普遍規(guī)律,因此可以顯著提高軟件開發(fā)工程的成功率和生產(chǎn)率。用先全局后局部、先整體后細節(jié)、先抽象后具體的逐步求精過程開發(fā)出的程序有清晰的層次結(jié)構(gòu),因此容易閱讀和理解。不使用GOTO語句,僅使用單入口單出口的控制結(jié)構(gòu),使得程序的靜態(tài)結(jié)構(gòu)和它的動態(tài)執(zhí)行情況比較一致,易于閱讀和理解。……結(jié)構(gòu)程序設計優(yōu)越性自頂向下逐步求精的方法符合人類解決復雜問題26傳統(tǒng)方法學的缺點
瀑布模型的缺點:僵化瀑布模型要求:生命周期各階段間遵守嚴格的順序。實際情況是:軟件開發(fā)往往在反復實踐中完成。瀑布模型要求:預先定義并“凍結(jié)”軟件需求。實際情況是:某些系統(tǒng)的需求的一個逐漸明確的過程,且預先定義的需求到軟件完成時可能已經(jīng)過時。傳統(tǒng)方法學的缺點
瀑布模型的缺點:僵化瀑布模型要求:生命周期27結(jié)構(gòu)化技術(shù)的缺點(SA-SD-SP)本質(zhì)上是功能分解,以實現(xiàn)功能的過程為中心。而用戶的需求變化主要是針對功能的。這就使基于過程的設計不易被理解;且功能變化往往引起結(jié)構(gòu)變化較大,穩(wěn)定性不好。系統(tǒng)有明確的邊界定義,且系統(tǒng)結(jié)構(gòu)依賴于系統(tǒng)邊界的定義,這樣的系統(tǒng)不易擴充和修改。數(shù)據(jù)與操作分開處理,可能造成軟構(gòu)件對具體應用環(huán)境的依賴,可重用性(reusability)較差.結(jié)構(gòu)化技術(shù)的缺點(SA-SD-SP)本質(zhì)上是功能分解,以實現(xiàn)28軟件工程的新途徑之一:快速原型法適用于用戶驅(qū)動的系統(tǒng)(即需求模糊或隨時間變化的系統(tǒng))建造/修改原型用戶測試運行原型
聽取用戶意見軟件工程的新途徑之一:快速原型法適用于用戶驅(qū)動的系統(tǒng)(即需求29傳統(tǒng)方法和面向?qū)ο蠓椒ǖ谋容^傳統(tǒng)方法系統(tǒng)是過程的集合過程與數(shù)據(jù)實體交互過程接受輸入并產(chǎn)生輸出面向?qū)ο蠓椒ㄏ到y(tǒng)是交互對象的集合對象與人或其它對象交互對象發(fā)送與響應消息傳統(tǒng)方法和面向?qū)ο蠓椒ǖ谋容^傳統(tǒng)方法面向?qū)ο蠓椒?0傳統(tǒng)方法數(shù)據(jù)與過程是分離的過程1輸入輸出過程2過程3數(shù)據(jù)實體屬于該對象的數(shù)據(jù)對象處理數(shù)據(jù)的方法消息消息對象把數(shù)據(jù)和處理數(shù)據(jù)的方法封狀成一個單元傳統(tǒng)方法數(shù)據(jù)與過程是分離的過程1輸入輸出過程2過程3數(shù)據(jù)實體31為什么對面向?qū)ο蠓椒ǜ信d趣?面向?qū)ο蠓椒ǖ闹饕獌?yōu)點:自然性:追求軟件系統(tǒng)對現(xiàn)實系統(tǒng)的直接模擬,盡量實現(xiàn)將現(xiàn)實世界中的事物直接映射到軟件系統(tǒng)的解空間中。軟件復用:可復用性(可重用性)可擴展性可管理性為什么對面向?qū)ο蠓椒ǜ信d趣?面向?qū)ο蠓椒ǖ闹饕?2面向?qū)ο蠓治雒嫦驅(qū)ο蠓治龅年P(guān)鍵:識別出問題域內(nèi)的對象,并分析它們相互間的關(guān)系,最終建立起問題域的簡潔、精確、可理解的正確模型。面向?qū)ο蠓椒ㄗ罨镜脑瓌t:按照人們習慣的思維方式,用面向?qū)ο笥^點建立問題域的模型,開發(fā)出盡可能自然地表現(xiàn)求解方法的軟件。面向?qū)ο蠓治雒嫦驅(qū)ο蠓治龅年P(guān)鍵:識別出問題域內(nèi)的對象,并分析33面向?qū)ο蠼S妹嫦驅(qū)ο蠓椒ㄩ_發(fā)軟件,通常需要建立三種形式的模型:對象模型:描述系統(tǒng)數(shù)據(jù)結(jié)構(gòu)動態(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)抽象性:具體的組織機構(gòu)、工作場所、物質(zhì)流等等都去掉,僅剩下信息和數(shù)據(jù)存儲、流動、使用以及加工的情況。(2)概括性:它把系統(tǒng)對各種業(yè)務的處理過程聯(lián)系起來考慮,形成一個總體,具有概括性。(3)數(shù)據(jù)流程圖描述的主體是抽象出來的數(shù)據(jù)。(4)數(shù)據(jù)流程圖具有層次性,一個系統(tǒng)將有許多層次的流程圖。數(shù)據(jù)流程圖DFD是結(jié)構(gòu)化系統(tǒng)分析的主要工具,它表示了系統(tǒng)內(nèi)部38數(shù)據(jù)流程圖的用途系統(tǒng)分析員用這種工具可以自頂向下分析系統(tǒng)信息流程可在圖上畫出需要計算機處理的部分根據(jù)數(shù)據(jù)存貯,進一步作數(shù)據(jù)分析,向數(shù)據(jù)庫設計過渡根據(jù)數(shù)據(jù)流向,定出存取方式對應一個處理過程,用相應的語言、判定表等工具表達處理方法數(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)邏輯表達中良良良易轉(zhuǎn)換代碼良優(yōu)良優(yōu)直觀性中中良良使用頻率優(yōu)優(yōu)中中幾種表示工具比較流程圖偽碼盒圖問題分析圖結(jié)構(gòu)化差中優(yōu)優(yōu)邏輯表41判定表判定表能夠清晰地表示復雜的條件組合與應做的動作之間的對應關(guān)系,而其它的工具不易表示。一張判定表由四部分組成,左上部列出所有條件,左下部是所有可能做的動作,右上部是表示各種條件組合的一個矩陣,右下部是和每種條件組合相對應的動作。判定表的每一列實質(zhì)上是一條規(guī)則,規(guī)定了與特定的條件組合相對應的動作。判定表判定表能夠清晰地表示復雜的條件組合與應做的動作之間的對42例子:航空行李托運費的算法按規(guī)定:重量不超過30公斤的行李可免費托運。重量超過30公斤時,對超運部分,頭等艙國內(nèi)乘客收4元/公斤;其它艙位國內(nèi)乘客收6元/公斤;外國乘客收費為國內(nèi)乘客的2倍;殘疾乘客的收費為正常乘客的1/2。
例子:航空行李托運費的算法按規(guī)定:重量不超過30公斤的行李可43RulesRulenumbersConditionrowsActionrowsRulesRulenumbersCondition44行李費算法行李重量W>30行李重量W30免費國內(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用判定樹表示計算行李費的算法注:判定表與判定樹并不適用于作為一種通用的設計工具,通常將之用于輔助測試判定樹表示法行李費算法行李重量W>30行李重量W30免費國內(nèi)乘45參考書籍張海藩,《軟件工程導論》第三版,清華大學出版社第七學期課程參考書籍張海藩,《軟件工程導論》第三版,清華大學出版社46軟件工程概要數(shù)據(jù)庫原理課程補充知識軟件工程概要數(shù)據(jù)庫原理課程47背景軟件危機軟件開發(fā)周期大大超過規(guī)定日期軟件開發(fā)成本嚴重超標軟件質(zhì)量難于保證軟件的發(fā)展大體上經(jīng)歷了三個階段:程序設計階段、軟件階段、軟件工程階段。背景軟件危機48程序設計時代名稱程序生產(chǎn)方式個人質(zhì)量取決于個人水平設計對象以硬件為中心開發(fā)工具無維護無設計方法無以技巧為主軟件時代軟件項目組取決于小集團水平硬件/軟件為中心無系統(tǒng)工具,工具為個人所有由開發(fā)者進行維護,在設計中不重視維護設計問題自頂向下有質(zhì)量保證問題和持續(xù)性問題軟件工程時代軟件產(chǎn)品軟件組織軟件生產(chǎn)管理以軟件為中心軟件生成器設計與制作過程中均考慮維護問題,維護成本占很大比重結(jié)構(gòu)化設計、原型設計從程序設計到軟件工程時代程序設計時代名稱程序生產(chǎn)方式個人質(zhì)量取決于個人水平設計對象以49軟件工程的定義
IEEE【IEE93】定義:“將系統(tǒng)化的、規(guī)范的、可度量的方法應用于軟件的開發(fā)、運行和維護的過程,即將工程化應用于軟件中?!避浖こ淌菓糜嬎銠C科學、數(shù)學及管理科學等原理開發(fā)軟件的工程。它借鑒傳統(tǒng)工程的原則、方法,以提高質(zhì)量,降低成本為目的。軟件工程的定義IEEE【IEE93】定義:“將系統(tǒng)化的、50兩種軟件工程方法傳統(tǒng)軟件工程軟件分析→總體設計→詳細設計→面向過程的編碼→測試面向?qū)ο筌浖こ誊浖治雠c對象抽取→對象詳細設計→面向?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)系模型類/對象模型對象-行為模型使用實例(UseCase)操作、屬性、協(xié)作者對象模型動態(tài)模型功能模型面向?qū)ο蠓治瞿P偷慕M成結(jié)構(gòu)對象-關(guān)類/對象對象-行為模型使用53傳統(tǒng)軟件工程中的瀑布模型可行性研究與計劃需求分析總體|詳細設計編碼運行維護測試定義階段開發(fā)階段維護階段傳統(tǒng)軟件工程中的瀑布模型可行性研究與計劃需求分析總體|詳細設541.問題定義關(guān)鍵問題:“要解決的問題是什么?”主要結(jié)果:提出關(guān)于問題的性質(zhì)、工程目標和規(guī)模的書面報告。內(nèi)容及步驟(一)系統(tǒng)任務的提出(二)初步調(diào)查(三)系統(tǒng)目標的確定1.問題定義關(guān)鍵問題:“要解決的問題是什么?”552可行性研究可行性、可行性研究的含義可行性的含義包括可能性、必要性??尚行苑治龅膶ο笫窍到y(tǒng)目標。評價總體方案(系統(tǒng)目標)的可能性、必要性。可行性研究目的:用最小的代價在盡可能短的時間內(nèi)確定問題是否能夠解決,是否有必要去解決。2可行性研究可行性、可行性研究的含義56可行性研究的內(nèi)容1.技術(shù)上的可行性2.經(jīng)濟上的可行性3.操作可行性4.時間可行性5.組織與管理上可行性6.社會、政策允許的可行性可行性研究的內(nèi)容1.技術(shù)上的可行性573.需求分析的任務準確地定義未來系統(tǒng)的目標,確定為了滿足用戶的需求系統(tǒng)必須做什么。用<需求規(guī)格說明書>規(guī)范的形式準確地表達用戶的需求?;救蝿眨簻蚀_地回答“系統(tǒng)必須做什么?”3.需求分析的任務準確地定義未來系統(tǒng)的目標,確定為了滿足用58需求分析的具體任務1.確定對系統(tǒng)的綜合需求:(1)系統(tǒng)功能要求(2)系統(tǒng)性能要求(3)運行要求(4)將來可能提出的要求2.分析系統(tǒng)的數(shù)據(jù)要求:采用建立“概念模型”的方法,并輔助圖形工具,如:層次方框圖、Warnier圖等。3.導出系統(tǒng)的邏輯模型:數(shù)據(jù)流程圖、數(shù)據(jù)字典、主要算法4.修正系統(tǒng)開發(fā)計劃5.開發(fā)原型系統(tǒng)需求分析的具體任務1.確定對系統(tǒng)的綜合需求:(1)系統(tǒng)功能要594.總體設計的過程設想供選擇的方案選取合理的方案推薦最佳方案功能分解設計軟件結(jié)構(gòu)
數(shù)據(jù)庫設計制定測試計劃書寫文檔審查和復審4.總體設計的過程設想供選擇的方案605.詳細設計的基本任務回答的關(guān)鍵問題:“怎樣具體地實現(xiàn)這個系統(tǒng)”主要任務是設計出程序的“藍圖”,供程序員日后根據(jù)這個藍圖編寫出實際的程序代碼。注意:設計程序的藍圖,不是具體地編寫程序。設計程序主要采用結(jié)構(gòu)化的程序設計方法。5.詳細設計的基本任務回答的關(guān)鍵問題:“怎樣具體地實現(xiàn)這個61詳細設計主要任務:編寫詳細設計說明書為此,設計人員應:(1)確定每個模塊的算法,用工具表達算法的過程,寫出模塊的詳細過程性描述。(2)確定每一模塊的數(shù)據(jù)結(jié)構(gòu)。(3)確定模塊接口細節(jié)。詳細設計是編碼的先導。詳細設計主要任務:編寫詳細設計說明書62詳細設計具體任務確定模塊如何實現(xiàn)編寫詳細設計說明書制定單元測試計劃詳細設計評審詳細設計具體任務確定模塊如何實現(xiàn)636.編碼程序?qū)懽黠L格程序設計方法論自頂向下的程序設計方法自底向上的程序設計方法程序設計自動化程序設計工具6.編碼程序?qū)懽黠L格647.測試軟件測試是為了發(fā)現(xiàn)錯誤而執(zhí)行程序的過程。軟件測試是根據(jù)軟件開發(fā)階段的規(guī)格說明和程序的內(nèi)部結(jié)構(gòu)而精心設計一批測試用例(即輸入的數(shù)據(jù)及其預期的輸出結(jié)果),并利用這些用例去運行程序,以發(fā)現(xiàn)程序錯誤的過程。7.測試軟件測試是為了發(fā)現(xiàn)錯誤而執(zhí)行程序的過程。65軟件測試的目的測試是程序的執(zhí)行過程,目的在于發(fā)現(xiàn)錯誤;一個好的測試用例在于能發(fā)現(xiàn)至今未發(fā)現(xiàn)的錯誤;一個成功的測試是發(fā)現(xiàn)了至今未發(fā)現(xiàn)的錯誤的測試。軟件測試的目的測試是程序的執(zhí)行過程,目的在于發(fā)現(xiàn)錯誤;66測試設計中需要考慮的22種測試類型黑盒測試白盒測試單元測試累計綜合測試集成測試功能測試系統(tǒng)測試端到端測試健全測試衰竭測試接受測試負載測試強迫測試性能測試可用性測試安裝/卸載測試恢復測試兼容測試安全測試比較測試Alpha測試Beta測試測試設計中需要考慮的22種測試類型黑盒測試負載測試678.運行維護本質(zhì)上是修改和壓縮了的軟件定義和開發(fā)過程分析設計編碼測試驗收配置復審可靠性可移植性可用性可理解性可修改性可測試性可理解性可修改性可移植性效率可靠性效率完整性一致性可理解性8.運行維護本質(zhì)上是修改和壓縮了的軟件定義和開發(fā)過程分析設68
幾種典型的開發(fā)方法:模塊化方法(modularmethod)結(jié)構(gòu)化方法面向數(shù)據(jù)結(jié)構(gòu)方法面向?qū)ο蠓椒ㄜ浖_發(fā)方法幾種典型的開發(fā)方法:軟件開發(fā)方法69結(jié)構(gòu)程序設計結(jié)構(gòu)程序設計是一種設計程序的技術(shù),它采用自頂向下逐步求精的設計方法和單入口單出口的控制結(jié)構(gòu)。結(jié)構(gòu)程序設計結(jié)構(gòu)程序設計是一種設計程序的技術(shù),它采用自頂向下70逐步求精的含義總體設計階段逐步求精的含義把一個復雜問題的解法分解和細化成一個由許多模塊組成的層次結(jié)構(gòu)的軟件系統(tǒng)。詳細設計階段逐步求精的含義把一個模塊的功能逐步分解細化為一系列具體的處理步驟或某種高級語言的語句。逐步求精的含義總體設計階段逐步求精的含義71結(jié)構(gòu)程序設計優(yōu)越性自頂向下逐步求精的方法符合人類解決復雜問題的普遍規(guī)律,因此可以顯著提高軟件開發(fā)工程的成功率和生產(chǎn)率。用先全局后局部、先整體后細節(jié)、先抽象后具體的逐步求精過程開發(fā)出的程序有清晰的層次結(jié)構(gòu),因此容易閱讀和理解。不使用GOTO語句,僅使用單入口單出口的控制結(jié)構(gòu),使得程序的靜態(tài)結(jié)構(gòu)和它的動態(tài)執(zhí)行情況比較一致,易于閱讀和理解?!Y(jié)構(gòu)程序設計優(yōu)越性自頂向下逐步求精的方法符合人類解決復雜問題72傳統(tǒng)方法學的缺點
瀑布模型的缺點:僵化瀑布模型要求:生命周期各階段間遵守嚴格的順序。實際情況是:軟件開發(fā)往往在反復實踐中完成。瀑布模型要求:預先定義并“凍結(jié)”軟件需求。實際情況是:某些系統(tǒng)的需求的一個逐漸明確的過程,且預先定義的需求到軟件完成時可能已經(jīng)過時。傳統(tǒng)方法學的缺點
瀑布模型的缺點:僵化瀑布模型要求:生命周期73結(jié)構(gòu)化技術(shù)的缺點(SA-SD-SP)本質(zhì)上是功能分解,以實現(xiàn)功能的過程為中心。而用戶的需求變化主要是針對功能的。這就使基于過程的設計不易被理解;且功能變化往往引起結(jié)構(gòu)變化較大,穩(wěn)定性不好。系統(tǒng)有明確的邊界定義,且系統(tǒng)結(jié)構(gòu)依賴于系統(tǒng)邊界的定義,這樣的系統(tǒng)不易擴充和修改。數(shù)據(jù)與操作分開處理,可能造成軟構(gòu)件對具體應用環(huán)境的依賴,可重用性(reusability)較差.結(jié)構(gòu)化技術(shù)的缺點(SA-SD-SP)本質(zhì)上是功能分解,以實現(xiàn)74軟件工程的新途徑之一:快速原型法適用于用戶驅(qū)動的系統(tǒng)(即需求模糊或隨時間變化的系統(tǒng))建造/修改原型用戶測試運行原型
聽取用戶意見軟件工程的新途徑之一:快速原型法適用于用戶驅(qū)動的系統(tǒng)(即需求75傳統(tǒng)方法和面向?qū)ο蠓椒ǖ谋容^傳統(tǒng)方法系統(tǒng)是過程的集合過程與數(shù)據(jù)實體交互過程接受輸入并產(chǎn)生輸出面向?qū)ο蠓椒ㄏ到y(tǒng)是交互對象的集合對象與人或其它對象交互對象發(fā)送與響應消息傳統(tǒng)方法和面向?qū)ο蠓椒ǖ谋容^傳統(tǒng)方法面向?qū)ο蠓椒?6傳統(tǒng)方法數(shù)據(jù)與過程是分離的過程1輸入輸出過程2過程3數(shù)據(jù)實體屬于該對象的數(shù)據(jù)對象處理數(shù)據(jù)的方法消息消息對象把數(shù)據(jù)和處理數(shù)據(jù)的方法封狀成一個單元傳統(tǒng)方法數(shù)據(jù)與過程是分離的過程1輸入輸出過程2過程3數(shù)據(jù)實體77為什么對面向?qū)ο蠓椒ǜ信d趣?面向?qū)ο蠓椒ǖ闹饕獌?yōu)點:自然性:追求軟件系統(tǒng)對現(xiàn)實系統(tǒng)的直接模擬,盡量實現(xiàn)將現(xiàn)實世界中的事物直接映射到軟件系統(tǒng)的解空間中。軟件復用:可復用性(可重用性)可擴展性可管理性為什么對面向?qū)ο蠓椒ǜ信d趣?面向?qū)ο蠓椒ǖ闹饕?8面向?qū)ο蠓治雒嫦驅(qū)ο蠓治龅年P(guān)鍵:識別出問題域內(nèi)的對象,并分析它們相互間的關(guān)系,最終建立起問題域的簡潔、精確、可理解的正確模型。面向?qū)ο蠓椒ㄗ罨镜脑瓌t:按照人們習慣的思維方式,用面向?qū)ο笥^點建立問題域的模型,開發(fā)出盡可能自然地表現(xiàn)求解方法的軟件。面向?qū)ο蠓治雒嫦驅(qū)ο蠓治龅年P(guān)鍵:識別出問題域內(nèi)的對象,并分析79面向?qū)ο蠼S妹嫦驅(qū)ο蠓椒ㄩ_發(fā)軟件,通常需要建立三種形式的模型:對象模型:描述系統(tǒng)數(shù)據(jù)結(jié)構(gòu)動態(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)抽象性:具體的組織機構(gòu)、工作場所、物質(zhì)流等等都去掉,僅剩下信息和數(shù)據(jù)存儲、流動、使用以及加工的情況。(2)概括性:它把系統(tǒng)對各種業(yè)務的處理過程聯(lián)系起來考慮,形成一個總體,具有概括性。(3)數(shù)據(jù)流程圖描述的主體是抽象出來的數(shù)據(jù)。(4)數(shù)據(jù)流程圖具有層次性,一個系統(tǒng)將有許多層次的流程圖。數(shù)據(jù)流程圖DFD是結(jié)構(gòu)化系統(tǒng)分析的主要工具,它表示了系統(tǒng)內(nèi)部84數(shù)據(jù)流程圖的用途系統(tǒng)分析員用這種工具可以自頂向下分析系統(tǒng)信息流程可在圖上畫出需要計算機處理的部分根據(jù)數(shù)據(jù)存貯,進一步作數(shù)據(jù)分析,向數(shù)據(jù)庫設計過渡根據(jù)數(shù)據(jù)流向,定出存取方式對應一個處理過程,用相應的語言、判定表
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 農(nóng)村土地買賣合同范本
- 農(nóng)村建筑施工合同范本
- 買賣冬蟲夏草合同范本
- 勘界測繪合同范例
- 再婚買房合同范本
- 個體簡易合同范本
- 包工安裝護欄合同范本
- 單位銷售崗位勞動合同范本
- 俱樂部裝修合同范本
- 養(yǎng)殖合作建設合同范本
- 2022-2023學年上海市華東師范大學第一附屬中學物理高一下期中聯(lián)考試題含解析
- 臺灣歷屆領(lǐng)導人和其大陸政策
- 2023屆高考模擬作文“和而不同”導寫及范文
- 2023年湖南高速鐵路職業(yè)技術(shù)學院單招筆試職業(yè)技能考試題庫及答案解析
- 結(jié)婚函調(diào)報告表
- 中智投資有限公司招聘筆試題庫2023
- 2023年中智投資有限公司招聘筆試押題庫
- FSC全套程序文件
- YY/T 0729.2-2009組織粘合劑粘接性能試驗方法第2部分:T-剝離拉伸承載強度
- GB/T 18271.3-2000過程測量和控制裝置通用性能評定方法和程序第3部分:影響量影響的試驗
- 移出經(jīng)營異常名錄申請表
評論
0/150
提交評論