版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、軟件設計和體系結(jié)構(gòu)軟件設計和體系結(jié)構(gòu)謝兄謝兄信息科學技術(shù)學院信息科學技術(shù)學院教學內(nèi)容教學內(nèi)容軟件過程軟件過程設計原則設計原則設計模式設計模式應用示例應用示例體系結(jié)構(gòu)體系結(jié)構(gòu)實際設計案例研究實際設計案例研究軟件進化軟件進化再工程和逆向工程再工程和逆向工程教學內(nèi)容教學內(nèi)容軟件過程軟件過程設計原則設計原則設計模式設計模式應用示例應用示例體系結(jié)構(gòu)體系結(jié)構(gòu)實際設計案例研究實際設計案例研究軟件進化軟件進化再工程和逆向工程再工程和逆向工程你可以學到你可以學到武林高手武林高手扎馬步扎馬步武功招式武功招式武功秘訣武功秘訣編程高手編程高手編程語言編程語言設計模式設計模式設計原則設計原則實驗實驗 實驗內(nèi)容:設計模式
2、實驗內(nèi)容:設計模式 實驗學時:實驗學時:10學時學時 實驗時間:軟件工程(第實驗時間:軟件工程(第14-18周周二周周二 7-8節(jié)節(jié)實驗地點:實驗地點:1,2班在班在201室,室,3,4班在班在205室室 實驗報告:實驗目的、實驗要求、實驗步實驗報告:實驗目的、實驗要求、實驗步驟、實驗結(jié)果、總結(jié)驟、實驗結(jié)果、總結(jié)參考書籍參考書籍軟件設計軟件設計從程序設計到體系結(jié)構(gòu),從程序設計到體系結(jié)構(gòu),Eric Eric J. BraudeJ. Braude著,李仁發(fā)等譯,電子工業(yè)出版著,李仁發(fā)等譯,電子工業(yè)出版社社參考書籍參考書籍Head First Head First 設計模式,設計模式, Eric F
3、reeman, Eric Freeman, Elisabeth FreemanElisabeth Freeman等著,中國電力出版等著,中國電力出版社社設計模式設計模式可復用可復用面向?qū)ο筌浖幕A,面向?qū)ο筌浖幕A,Erich GammaErich Gamma等著,李等著,李英軍等譯,機械工業(yè)英軍等譯,機械工業(yè)出版社出版社參考書籍參考書籍軟件體系結(jié)構(gòu),軟件體系結(jié)構(gòu),Mary Mary ShawShaw著,牛振東等譯,著,牛振東等譯,清華大學出版社清華大學出版社軟件體系結(jié)構(gòu),張友生軟件體系結(jié)構(gòu),張友生等著,清華大學出版社等著,清華大學出版社考試考試閉卷筆試閉卷筆試 7070分分實驗成績實驗成
4、績 2020分分實驗作業(yè)實驗作業(yè) 1515分分實驗報告實驗報告 5 5分分平時成績平時成績 1010分分 課堂小測課堂小測 8 8分分出勤出勤 2 2分分軟件危機軟件危機(software crisis)是指在計算是指在計算機軟件的開發(fā)機軟件的開發(fā)(development)和維護和維護(maintenance)過程中所遇到的一系列過程中所遇到的一系列嚴重問題。嚴重問題。1968年在原西德加密施年在原西德加密施(Garmish)召開召開的國際軟件工程會議上開始被人們普遍的國際軟件工程會議上開始被人們普遍認識到。認識到。軟件危機軟件危機如何克服軟件危機如何克服軟件危機 如何克服軟件危機如何克服軟件
5、危機人們面臨的不光是技術(shù)問題,更重要的是人們面臨的不光是技術(shù)問題,更重要的是管理問題管理問題。管理。管理不善必然導致失敗不善必然導致失敗 。要提高軟件開發(fā)效率,提高軟件產(chǎn)品質(zhì)量,必須采用要提高軟件開發(fā)效率,提高軟件產(chǎn)品質(zhì)量,必須采用工程工程化化的開發(fā)方法與的開發(fā)方法與工業(yè)化工業(yè)化的生產(chǎn)技術(shù)。的生產(chǎn)技術(shù)。在技術(shù)上,應該采用在技術(shù)上,應該采用基于重用的基于重用的軟件生產(chǎn)技術(shù);在管理上,軟件生產(chǎn)技術(shù);在管理上,應該采用應該采用多維的多維的工程管理模式。工程管理模式。為了解決軟件危機,既要有技術(shù)措施,又要有必要的組織為了解決軟件危機,既要有技術(shù)措施,又要有必要的組織管理措施。軟件工程正是從管理措施。軟
6、件工程正是從管理管理和和技術(shù)技術(shù)兩方面研究如何兩方面研究如何更好地開發(fā)和維護計算機軟件的一門新興學科。更好地開發(fā)和維護計算機軟件的一門新興學科。軟件過程軟件過程需求分析需求分析:定義程序必須做什么:定義程序必須做什么做什么?做什么?設計設計:定義每部分將是什么以及:定義每部分將是什么以及它們將如何協(xié)調(diào)它們將如何協(xié)調(diào)如何做?如何做?實現(xiàn)實現(xiàn)(編碼):編寫代碼(編碼):編寫代碼測試測試:以測試數(shù)據(jù)作為輸入來:以測試數(shù)據(jù)作為輸入來執(zhí)行應用程序執(zhí)行應用程序維護維護:修補缺陷和增強功能:修補缺陷和增強功能動手做動手做檢驗檢驗維修維修軟件過程示例軟件過程示例個人理財個人理財需求分析需求分析:文本“應用將顯
7、示用戶銀行賬戶的收支余額”設計設計:圖表和文本“設計將包含類CheckingAccount”實現(xiàn)實現(xiàn):源代碼和目標代碼測試測試:整理測試數(shù)據(jù),測試程序的執(zhí)行結(jié)果“測試示例:存款44.92/取款32.00”維護維護:修改設計、代碼和文本,糾錯、功能增強軟件過程的風格軟件過程的風格瀑布過程瀑布過程:一個基本的軟件過程,其中需求分析、設計、編碼、一個基本的軟件過程,其中需求分析、設計、編碼、測試和維護都是按順序完成的,但是各個階段有一些重疊。測試和維護都是按順序完成的,但是各個階段有一些重疊。維護維護軟件過程的風格軟件過程的風格需求分析需求分析設計設計主要事件主要事件(s)階段階段 (活動性活動性)
8、實現(xiàn)實現(xiàn)測試測試維護維護發(fā)布產(chǎn)品發(fā)布產(chǎn)品 X對于一個較短的周對于一個較短的周期,這兩個階段可期,這兩個階段可能同時進行能同時進行純瀑布過程通常不實際的原因純瀑布過程通常不實際的原因預先不知道所想要的和需要的預先不知道所想要的和需要的通常很難提前給出所有細節(jié)通常很難提前給出所有細節(jié)僅能估計實現(xiàn)需求的成本僅能估計實現(xiàn)需求的成本為了準確估計,需要設計和精確實現(xiàn)各個部分,尤其為了準確估計,需要設計和精確實現(xiàn)各個部分,尤其是風險最大的部分是風險最大的部分可能需要修改需求可能需要修改需求常常需要執(zhí)行中間件常常需要執(zhí)行中間件風險承擔者要有信心風險承擔者要有信心設計者和開發(fā)者必須證實他們需要和想要構(gòu)建的內(nèi)容設
9、計者和開發(fā)者必須證實他們需要和想要構(gòu)建的內(nèi)容當需求處理快要完成時,小組成員要繼續(xù)進行下當需求處理快要完成時,小組成員要繼續(xù)進行下一步的工作一步的工作特別要讓相關成員馬上進行其他階段的處理特別要讓相關成員馬上進行其他階段的處理軟件過程的風格軟件過程的風格螺旋過程螺旋過程:將幾次遍歷瀑布階段,每一次通過瀑布階段,將產(chǎn)生將幾次遍歷瀑布階段,每一次通過瀑布階段,將產(chǎn)生一個功能更強的中間產(chǎn)物,直到生成可傳遞的結(jié)果。一個功能更強的中間產(chǎn)物,直到生成可傳遞的結(jié)果。時間時間 1 需求分析需求分析設計設計編碼編碼測試測試1迭代迭代 # 11 2 2 23 3 3 已發(fā)布的產(chǎn)品已發(fā)布的產(chǎn)品 X中間版本中間版本*
10、完整的完整的 X重要事件重要事件 23 2 3 1程序設計回顧及軟件設計導論程序設計回顧及軟件設計導論軟件設計的含義軟件設計的含義表達的是應該怎樣構(gòu)造應用程序,描述所用表達的是應該怎樣構(gòu)造應用程序,描述所用到的各個部分,以及如何將它們組合起來。到的各個部分,以及如何將它們組合起來。是一套文檔,通常是各種示意圖以及對這些是一套文檔,通常是各種示意圖以及對這些圖的具體含義的解釋。圖的具體含義的解釋。在此基礎上程序員能設計出軟件應用程序在此基礎上程序員能設計出軟件應用程序類似于建筑物的藍圖類似于建筑物的藍圖從需求中產(chǎn)生,不包含代碼從需求中產(chǎn)生,不包含代碼UMLUML是設計文檔的一個非常有用的表示方法
11、。是設計文檔的一個非常有用的表示方法。軟件需求分析軟件需求分析軟件需求軟件需求軟件設計軟件設計軟件實現(xiàn)軟件實現(xiàn)軟件設計軟件設計實現(xiàn)實現(xiàn)框架框架需求分析需求分析體系結(jié)構(gòu)體系結(jié)構(gòu)詳細設計詳細設計設計設計原則原則工具工具: UML組件組件 + 組件關系組件關系 可重用類型可重用類型 設計模式設計模式 類類 + 類間算法類間算法 第一部分第一部分第二部分第二部分第三部分第三部分第四部分第四部分第第1.2節(jié)節(jié)函數(shù)的說明文檔函數(shù)的說明文檔n實例變量通過實例變量通過this.引用引用本書使用的編碼標準本書使用的編碼標準例如:例如:class Car int milesDriven; 引用:引用:this.m
12、ilesDrivenn靜態(tài)變量通過類名引用靜態(tài)變量通過類名引用例如:例如:class Car Static int numCarsSold; 引用:引用:Car.numCarsSoldn參數(shù)前加前綴參數(shù)前加前綴a/an例如:例如:public getVolume(int aLength) n前置條件前置條件 (precondition)(precondition):方法代碼假設的非局部變:方法代碼假設的非局部變量的條件量的條件n包括參數(shù)包括參數(shù)n方法本身沒有提供這些條件的驗證方法本身沒有提供這些條件的驗證n后置條件后置條件 (postcondition)(postcondition):執(zhí)行后非
13、局部變量的值:執(zhí)行后非局部變量的值n包括參數(shù)包括參數(shù)n注釋:注釋:x x代表代表x x執(zhí)行后的值執(zhí)行后的值n不變式不變式 (invariant)(invariant):函數(shù)執(zhí)行后沒有改變的非局部:函數(shù)執(zhí)行后沒有改變的非局部變量的關系變量的關系n在前置條件和后置條件中都相等在前置條件和后置條件中都相等n在局部變量中也有不變式在局部變量中也有不變式說明函數(shù)功能的分類注釋說明函數(shù)功能的分類注釋n返回返回 (return)(return)n方法的返回值方法的返回值n已知問題已知問題 (known issue)(known issue)n真實描述要做的內(nèi)容,未被糾正的缺真實描述要做的內(nèi)容,未被糾正的缺陷
14、等陷等n限于所知道的限于所知道的說明函數(shù)功能的分類注釋說明函數(shù)功能的分類注釋class Rectangle /前置條件:長度前置條件:長度10, 寬度寬度10 /返回:長度返回:長度寬度寬度 public double area (double aLength, double aBreadth) N流程圖流程圖姓名無效姓名無效?姓名截短姓名截短姓名賦值姓名賦值姓名取默認值姓名取默認值姓名太長姓名太長?輸出到控制臺輸出到控制臺YYNprotected final void setName(string aName) /檢查姓名是否有效檢查姓名是否有效 if( (aName=null) |(max
15、NumCharsInName( )alltimeLimitOfNameLength( ) ) name=new String(“defaultName”); System.out.printin(“defaultName selected by GameCharacter.setName( )”); else /若姓名太長,則姓名截短若姓名太長,則姓名截短 if(aName.length( )maxNumCharsInName( ) name=new String(aName.getBytes( ), 0, maxNumCharsInName( ); /若姓名不長,則姓名賦值若姓名不長,則姓名
16、賦值 else name=new String(aName);圖圖1.5FOR 操作員操作時間的微秒數(shù)操作員操作時間的微秒數(shù)IF 操作時間超過臨界值操作時間超過臨界值ENDFORENDIFIF 功率超過臨界值功率超過臨界值ENDIFIF (正確檢查病人正確檢查病人&正確安放防護物正確安放防護物&機器自檢通過機器自檢通過)ENDIF需要得到管理者的允許需要得到管理者的允許IF 管理者未允許管理者未允許ENDIF中止并提示中止并提示“管理者未允許的異常值管理者未允許的異常值”中止并提示中止并提示“功率過大功率過大”以功率以功率p應用應用X射線射線偽代碼偽代碼流程圖和偽代碼的優(yōu)點流程
17、圖和偽代碼的優(yōu)點 算法清晰化算法清晰化 具體設計文檔的過程更嚴格化具體設計文檔的過程更嚴格化 提供檢查執(zhí)行的補充標準提供檢查執(zhí)行的補充標準 有助于在生成代碼前捕獲錯誤有助于在生成代碼前捕獲錯誤 提高可靠性提高可靠性 降低整體花費降低整體花費流程圖和偽代碼的缺點流程圖和偽代碼的缺點 要維護額外的說明文檔要維護額外的說明文檔 帶來轉(zhuǎn)換為代碼時出錯的可能性帶來轉(zhuǎn)換為代碼時出錯的可能性 需要產(chǎn)生偽代碼和繪制流程圖的工具需要產(chǎn)生偽代碼和繪制流程圖的工具l 函數(shù)函數(shù)/參數(shù)參數(shù)/變量的命名要具有表現(xiàn)力變量的命名要具有表現(xiàn)力l 用傳遞參數(shù)代替全局變量用傳遞參數(shù)代替全局變量l 防止錯誤數(shù)據(jù)防止錯誤數(shù)據(jù):異常處理
18、異常處理/默認處理默認處理/返回特殊值返回特殊值l 不要將參數(shù)作為方法變量不要將參數(shù)作為方法變量l 給數(shù)字命名給數(shù)字命名l 限制參數(shù)個數(shù)在限制參數(shù)個數(shù)在6個或個或7個之內(nèi)個之內(nèi)l 在臨近使用變量時才定義它們在臨近使用變量時才定義它們l 初始化所有變量初始化所有變量l 檢查循環(huán)計數(shù)器檢查循環(huán)計數(shù)器l 避免避免3次以上的嵌套循環(huán)次以上的嵌套循環(huán)l 確保不是死循環(huán)確保不是死循環(huán)l 編譯前先檢查編譯前先檢查編碼好習慣編碼好習慣manipulate(float aFloat, int anInt)getBaseRaisedToExponent(float aBase, int anExponent)函數(shù)
19、函數(shù)/參數(shù)參數(shù)/變量的命名應該說明其用途變量的命名應該說明其用途(圖圖1.9)extract(int anEntry) table = 避免使用全局變量避免使用全局變量: 考慮使用傳遞參數(shù)來代替考慮使用傳遞參數(shù)來代替extract(int anEntry, EmployeeTable anEmployeeTable)for(i=0; i8927; +i)給數(shù)字命名給數(shù)字命名int NUM_CELLS=8927for(cellCounter=0; cellCounterNUM_CELLS; +cellCounter)軟件設計的目標軟件設計的目標正確性、充足性、模塊性和可讀性正確性、充足性、模塊性和可讀性確保代碼按照需求執(zhí)行確保代碼按照需求執(zhí)行健壯性健壯性設計和實現(xiàn)能處理各種
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025屆四川省會理縣第一中學英語高三第一學期期末監(jiān)測模擬試題含解析
- 2025屆河南省蘭考縣三中數(shù)學高三第一學期期末預測試題含解析
- 重慶市主城區(qū)七校聯(lián)考2025屆數(shù)學高二上期末監(jiān)測模擬試題含解析
- 2025屆浙江省嘉興市第五高級中學高一數(shù)學第一學期期末考試模擬試題含解析
- 2025屆上海市虹口區(qū)復興高級中學高二上生物期末統(tǒng)考模擬試題含解析
- 2025屆南陽市重點中學數(shù)學高三第一學期期末教學質(zhì)量檢測試題含解析
- 2025屆廣東省廣州市番禺區(qū)廣東第二師范學院番禺附中高一上數(shù)學期末質(zhì)量跟蹤監(jiān)視模擬試題含解析
- 2024年模具制造合同
- 2024年上海房屋裝修合同范本
- 2024年健身房合同
- 歐洲文明與世界遺產(chǎn)智慧樹知到期末考試答案2024年
- 山東省淄博市臨淄區(qū)2022-2023學年六年級上學期期中英語試卷
- 23年11月14日江蘇省南京鼓樓八上語文期中【學生】
- 中醫(yī)合理膳食知識講座
- (高清版)TDT 1033-2012 高標準基本農(nóng)田建設標準
- 2024年中核武漢核電運行技術(shù)股份有限公司招聘筆試參考題庫含答案解析
- 周圍神經(jīng)損傷(InjuryofPeripheralNerve)
- 商務溝通與談判練習題庫含答案
- 食品生產(chǎn)過程控制
- 失地農(nóng)民可持續(xù)生計研究
- 家用電飯煲簡介介紹
評論
0/150
提交評論