第一篇:軟件工程復習總結
第一章 軟件工程概述
1.軟件危機是指在計算機軟件的開發(fā)和維護過程中所遇到的一系列嚴重問題.2.軟件危機的典型表現:
①對軟件開發(fā)成本和進度的估計常常很不準確.②用戶對“已完成的”軟件系統(tǒng)不滿意的現象經常發(fā)生.③軟件產品的質量往往靠不住.④軟件常常是不可維護的.⑤軟件通常沒有適當的文檔資料.⑥軟件成本在計算機系統(tǒng)總成本中占得比例逐年上升.⑦軟件開發(fā)生產率提高的速度遠跟不上計算機應用迅速普及深入的趨勢.3.產生軟件危機的原因:
①與軟件本身的特點有關,軟件缺乏“可見性”.②與軟件開發(fā)維護的方法不正確有關.4.消除軟件危機的途徑:
①首先應該對計算機軟件有一個正確的認識.②必須充分認識到軟件開發(fā)不是某種個體勞動的神秘技巧,而是一種組織良好、管理嚴密、各類人員協(xié)同配合、共同完成的工程項目.③應該推廣使用在實踐中總結出來的開發(fā)軟件的成功的技術和方法,并且研究探索更好更有效的技術和方法.④應該開發(fā)和使用更好的軟件工具.5.軟件工程的基本原理:
①用分階段的生命周期計劃嚴格管理.②堅持進行階段評審.③實行嚴格的產品控制.④采用現代化程序設計技術.⑤結果應能清楚的審查.⑥開發(fā)小組的人員應該少而精.⑦承認不斷改進軟件工程實踐的必要性.6.軟件生命周期:
①問題定義 → ②可行性研究 → ③需求分析 → ④總體設計 → ⑤詳細設計 → ⑥編碼和單元測試 → ⑦綜合測試 → ⑧軟件維護
7.瀑布模型: ?特點:①階段間具有順序性和依賴性.②推遲實現的觀點③質量保證的觀點
?優(yōu)點:可強迫開發(fā)人員采用規(guī)范的方法;嚴格地規(guī)定了每個階段必須提交的文檔;要求每個階段交出的所有產品都必須經過質量保證小組的仔細驗證.?缺點:由文檔驅動.產品交付給用戶之前,用戶只能通過文檔來了解產品.8.快速原型模型: 是快速建立起來的可以在計算機上運行的程序,它能完成的功能往往是最終產品的一個子集.優(yōu)點: 軟件產品的開發(fā)基本上是線性順序進行的.9.增量模型: 把軟件產品作為一系列的增量構件來設計、編碼、集成和測試.優(yōu)點: 能在較短時間內向用戶提交可完成部分工作的產品;逐步增加產品功能可以使用戶有較充裕的時間學習和適應新產品,從而減少一個全新的軟件可能給客戶組織帶來的沖擊.第二章 可行性研究
1.可行性研究的目的:用最小的代價在盡可能短的時間內確定問題是否能夠解決.2.從以下幾方面研究每種解法的可行性:
①技術可行性②經濟可行性③操作可行性④社會可行性
3.可行性研究的過程:
①復查系統(tǒng)規(guī)模和目標.②研究目前正在使用的系統(tǒng).③導出新系統(tǒng)的高層邏輯模型.④進一步定義問題.⑤導出和評價供選擇的解法.⑥推薦行動方針.⑦草擬開發(fā)計劃.⑧書寫文檔提交審查.4.系統(tǒng)流程圖是概括地描繪物理系統(tǒng)的傳統(tǒng)工具.數據流圖是一種圖形化技術,它描繪信息流和數據從輸入移動到輸出的過程中所經受的變換.5.數據字典是關于數據的信息的集合,也就是對數據流圖中包含的所有元素的定義集合.數據字典的內容由4類元素的定義組成:數據流、數據元素、數據存儲、處理.6.成本估計:
①代碼行技術:每行代碼平均成本×行數=軟件的成本
②任務分解技術:把軟件開發(fā)工程分解為若干個相對獨立的任務,再分別估計每個任務的成本,最后累加起來.③自動估計成本技術:用自動估計成本的軟件工具.7.系統(tǒng)的經濟效益=因使用新系統(tǒng)而增加的收入+使用新系統(tǒng)可以節(jié)省的運行費用
系統(tǒng)是否值得投資贏考慮:①貨幣的時間價值 ②投資回收期 ③純收入 ④投資回收率
第三章 需求分析
1.需求分析的任務:
?確定對系統(tǒng)的綜合要求:①功能需求②性能需求③可靠性和可用性需求④出錯處理需求⑤接口需求⑥約束⑦逆向需求⑧將來可能提出的要求
?分析系統(tǒng)的數據要求
?導出系統(tǒng)的邏輯模型
?修正系統(tǒng)開發(fā)計劃
2.實體聯系圖(ER圖)實體用方框□,關系用菱形◇,屬性用橢圓○
狀態(tài)轉換圖
層次方框圖
Warnier圖
IPO圖(輸入-處理-輸出)
第五章 總體設計
1.總體設計過程:
①設想提供選擇的方案②選取合理的方案③推薦最佳方案④功能分解⑤設計軟件結構⑥設計數據庫⑦制定測試計劃⑧書寫文檔⑨審查和復審
2.模塊獨立: 重要性:①有效的模塊化軟件比較容易開發(fā)出來 ②便于測試和維護 模塊的獨立程度由兩個標準度量: 內聚、耦合耦合:是對一個軟件結構內不同模塊之間互連程度的度量,耦合強弱取決于模塊間接口的復雜程度.耦合度由低到高:數據耦合<控制耦合<特征耦合<公共環(huán)境耦合<內容耦合內聚:標志著一個模塊內各個元素彼此結合的緊密程度.高內聚往往意味著低耦合.內聚度由低到高:偶然內聚<邏輯內聚<時間內聚<過程內聚<通信內聚<順序內聚<功能內聚
3.啟發(fā)式規(guī)則:
①改進軟件結構提高模塊獨立性.②模塊規(guī)模應該適中.③深度、寬度、扇出和扇入都應適當.④模塊的作用域應該在控制域之內.⑤力爭降低模塊接口的復雜程度.⑥設計單入口單出口的模塊.⑦模塊功能應該可以預測.4.面向數據流的設計方法:變換分析,事務分析
第六章 詳細設計
1.人機界面設計問題: 系統(tǒng)響應時間、用戶幫助設施、出錯信息處理、命令交互
2.人機界面設計指南:
?一般交互指南:
①保持一致性.②提供有意義的反饋.③在執(zhí)行有較大破壞性的動作之前要求用戶確認.④允許取消絕大多數操作.⑤減少在兩次操作之間必須記憶的信息量.⑥提高對話、移動和思考的效率.⑦允許犯錯誤.⑧按功能對動作分類,并據此設計屏幕布局.⑨提供對用戶工作內容敏感的幫助設施.⑩用簡單動詞或動詞短語作為命令名.?信息顯示指南:
①只顯示與當前工作內容有關的信息.②不要用數據淹沒用戶,應該用便于用戶迅速吸取信息的方式來表示數據.③使用一致的標記、標準的縮寫和可預知的顏色.④允許用戶保持可視化的語境.⑤產生有意義的出錯信息.⑥使用大小寫、縮進和文本分組以幫助理解.⑦使用窗口分隔不同類型的信息.⑧使用“模擬”顯示方式表示信息,以使信息更容易被用戶提取.⑨高效率的使用顯示屏.?數據輸入指南:
①盡量減少用戶的輸入動作.②保持信息顯示和數據輸入之間的一致性.③允許用戶自定義輸入.④交互應該是靈活的,并且可調整成用戶最喜歡的輸入方式.⑤使在當前動作語境中不適用的命令不起作用.⑥讓用戶控制交互流.⑦對所有輸入動作都提供幫助.⑧消除輸入的冗余.3.過程設計的工具: 即描述程序處理過程的工具.①程序流程圖②盒圖③PAD圖(問題分析圖)④判定表⑤判定樹⑥過程設計語言(PDL,也稱為偽碼)
4.面向數據結構的設計方法:Jackson方法和Warnier方法
Jackson圖:只有順序結構,選擇結構,重復結構這三種邏輯數據結構.優(yōu)點: 便于表示層次結構;形象直觀可讀性好;既能表示數據結構也能表示程序結構缺點: 選擇條件或循環(huán)結束條件不能上圖;也不易把圖翻譯成程序;框間連線為斜線,不易打印.(改進的Jackson圖框間連線為直線)
第七章 實現
1.通常把編碼和測試統(tǒng)稱為實現.2.編碼:?選擇程序語言的標準:①系統(tǒng)用戶的要求②可以使用的編譯程序③可以得到的軟件工具④工程規(guī)模⑤程序員的知識⑥軟件可移植性要求⑦軟件的應用領域
?編碼風格應遵循的規(guī)則:①程序內部的文檔②數據說明③語句構造④輸入輸出⑤效率
3.測試:?目標:①發(fā)現程序中的錯誤②發(fā)現錯誤的測試方案③發(fā)現錯誤的測試 ?準則:①所以測試都應該能追溯到用戶需求.②應該遠在測試開始之前就制定出測試計劃.③把Pareto原理應用到測試軟件中.④應該從“小規(guī)模”測試開始,并逐步進行“大規(guī)模”測試.⑤窮舉測試是不可能的.⑥應該由獨立的第三方從事測試工作.?方法:白盒,黑盒
?步驟:①模塊測試②子系統(tǒng)測試③系統(tǒng)測試④驗收測試⑤平行運行
4.白盒測試技術:把程序看成裝在一個透明的白盒子里,測試者完全知道程序的結構和處理方法.按照程序內部的邏輯測試程序,檢測程序中的主要執(zhí)行通路是否都能按預定要求正確工作.5.黑盒測試技術:把程序看作一個黑盒子,完全不考慮程序的內部結構和處理過程.在程序接口進行的測試,它只檢查程序功能是否能按照規(guī)格說明書的規(guī)定正常使用,程序是否能適當地接收輸入數據并產生正確的信息,能否保持外部信息完整性.等價劃分是一種黑盒測試技術,這種技術把程序的輸入域劃分成若干個數據類,據此導出測試用例.6.調試途徑:①蠻干法②回溯法③原因排除法
第八章 維護
1.維護的問題:
①理解別人寫的程序通常非常困難,而且困難程度隨著軟件配置成分的減少而迅速增加.②需要維護的軟件往往沒有合格的文檔,或文檔資料不足.③當要求對軟件進行維護時,不能指望由開發(fā)人員給人們仔細說明軟件.④絕大多數軟件在設計時沒有考慮將來的修改.⑤軟件維護不是一項吸引人的工作.2.軟件維護過程: ①維護組織②維護報告③維護的事件流
④保存維護記錄⑤評價維護活動
3.決定軟件可維護性的因素: ①可理解性②可測試性③可修改性
④可移植性⑤可重用性
第十三章 軟件項目管理
1.估算軟件規(guī)模:代碼行技術,功能點技術
2.Gantt圖:是歷史悠久、應用廣泛的制定進度計劃的工具.缺點:①不能顯式地描繪各項作業(yè)彼此間的依賴關系.②進度計劃的關鍵部分不明確,難于判定哪些部分應當是主攻和主控的對象.③計劃中有潛力的部分及潛力的大小不明確,往往造成潛力的浪費.3.人員組織方式:①民主制程序員組 ②主程序員組 ③現代程序員組
4.軟件質量保證措施:基于非執(zhí)行的測試,基于執(zhí)行的測試和程序正確性證明.5.軟件配置:①軟件配置項:計算機程序,描述計算機程序的文檔,數據.②基線
6.軟件配置管理過程:①標識軟件配置中的對象 ②版本控制 ③變化控制
④配置審計 ⑤狀態(tài)報告
7.能力成熟度的五個等級從低到高依次是:初始級<可重復級<已定義級<已管理級<優(yōu)化級
第二篇:軟件工程復習總結
第1章
1什么是軟件危機,產生軟件危機的原因,消除軟件危機的途徑。
落后的軟件生產方式無法滿足迅速增長的計算機軟件需求,從而導致軟件開發(fā)與維護過程中出現一系列嚴重問題的現象。
軟件維護費用的急劇上升,直接威脅計算機應用的擴大;軟件生產技術進步緩慢,是加劇軟件危機的重要原因。
既要有技術措施,又要有必要的組織管理措施。2什么是軟件,軟件的精確定義。
軟件是程序以及開發(fā)、使用和維護程序所需的所有文檔.。3軟件工程的精確定義,軟件工程的7個特征,7基本原理。
軟件工程是指導計算機軟件開發(fā)和維護的一門工程學科。1,軟件工程關注于大型程序的構造; 2,軟件工程的中心課題是控制復雜性; 3,軟件經常化;
4,開發(fā)軟件的效率非常重要; 5,和諧地合作是開發(fā)軟件的關鍵; 6,軟件必須有效地支持它的用戶;
7,在軟件工程領域中是由一種文化背景的人替具有另一種文化背景的人創(chuàng)造產品。基本原理:
1,用分階段的生命周期計劃嚴格管理; 2,堅持進行階段評審; 3,實行嚴格的產品控制; 4,采用現代程序設計的技術; 5,結果應能清楚地審查;
6,開發(fā)小組的人員應該少而精;
7,承認不斷改進軟件工程實踐的必要性。
4軟件工程方法學的精確定義,它的三要素。二種方法學,面向結構,面向對象
3個要素:方法 工具和過程 兩種方法學:1傳統(tǒng)方法學2面向對象方法學 5什么是軟件生命周期,它有哪幾個階段(8個階段),各個階段分別做什么,這些階段的重要性。
一個軟件從定義到開發(fā)、使用和維護,直到最終被棄用,要經歷一個漫長的時期,通常把軟件經歷的這個漫長的時期稱為生存周期。階段:1問題定義2可行性研究3需求分析4總體設計5詳細設計6編碼和單元測試7綜合測試8軟件維護
6軟件過程的精確定義,它與軟件工程的關系,它的各種模型,各種模型的優(yōu)缺點,適用范 圍。
軟件過程為一個為建造高質量軟件所需完成的任務的框架,它規(guī)定了完成各項任務的工作步驟。瀑布模型 快速原型模型 增量模型 螺旋模型 噴泉模型 第2章
1什么是可行性研究,它的目的,它的任務,可行性研究是在項目建議書被批準后,對項目在技術上和經濟上是否可行所進行的科學分析和論證。目的:用最小的代價在盡可能短的時間內確定問題是否能夠解決。任務:對以后的行動方針提出建議。
2從哪幾個方面進行可行性研究,每個方面研究什么,它的目的,它的任務。
1技術可行性2經濟可行性3操作可行性 3可行性研究的過程,8個階段。
1.復查系統(tǒng)規(guī)模和目標2.研究目前正在使用的系統(tǒng)3.導出新系統(tǒng)的高層邏輯模型4.進一步定義模型5.導出和評價供選擇的解法6.推薦行動方針7.草擬開發(fā)計劃8.書寫文檔提交審查 4系統(tǒng)流程圖,表達什么,它的符號,符號含義 概括地描繪物理系統(tǒng)的傳統(tǒng)工具。
5數據流程圖,描繪什么,它的符號,符號含義,畫法,數據流程圖的用途(重點)描繪信息流和數據從輸入移動到輸出的過程中所經受的變換。
6數據字典的精確定義,作用,內容(4類定義組成)定義數據的方法,用途,實現。
數據字典是關于數據的信息的集合。對數據流圖中包含的所有元素的定義的集合。
內容1.數據流2數據流分量3數據存儲4處理 7成本效益分析,使用的方法 第3章
1需求分析,它的任務,它的重要性,它的結果,要遵守的4條準則。
開發(fā)人員準確地理解用戶的要求,進行細致的調查分析,將用戶非形式的需求陳述轉化為完整的需求定義,再由需求定義轉換到相應的需求規(guī)格說明的過程。
基本任務: ⑴問題識別:雙方確定對問題的綜合需求,這些需求包括功能需求,性能需求,環(huán)境需求,用戶界面需求。
重要性:需求分析可以使得開發(fā)和測試更能夠了解客戶的需求,把一些技術難點和可能遇到的難點問題提出來,盡早解決,并且達到一致,便于以后的開發(fā)和測試
需求分析結果是產生:需求規(guī)格說明書
⑵分析與綜合,導出軟件的邏輯模型
⑶編寫文檔:包括編寫“需求規(guī)格說明書”,“初步用戶使用手冊”,“確認測試計劃”,“修改完善軟件開發(fā)計劃” 任務的7項要求,與用戶溝通的方法
獲取需求的方法,用到的圖形工具:E_R圖,圖描述什么,使用符號 狀態(tài)轉換圖,其他圖形,IPO圖等 驗證需求,4個方面 第5章
1總體設計的目的,任務
總體設計的基本目的就是回答“概括地說,系統(tǒng)應該如何實現?”這個問題。任務是設計軟件的結構,也就是明確系統(tǒng)中每個程序是由哪些模塊組成的,以及這些模塊相互間的關系。必要性:可以站在全局的高度上,花較少成本,從較抽象的層次上分析對比多種可能的系統(tǒng)實現方案和軟件結構,從中選出最佳方案和最合理的軟件結構,從而用較低成本開發(fā)出較高質量的軟件系統(tǒng)。2設計過程,二個階段9個步驟
兩個階段:1系統(tǒng)設計階段,確定系統(tǒng)的具體實現方案2結構設計階段,確定軟件結構。設計過程的9個步驟:1設想供選擇的方案2選取合理的方案3推薦最佳方案4功能分解5設計軟件結構6設計數據庫7制定測試計劃8書寫文檔9審查和復審。3設計原理,模塊化,與模塊化有關的獨立,度量標準:耦合,內驟
設計原理:1模塊化2抽象3逐步求精。模塊獨立程度的兩個定性標準度量:1內聚2耦合。
4啟發(fā)式7條規(guī)則,啟發(fā)規(guī)則:1改進軟件結構提高模塊獨立性2模塊規(guī)模應該適中3深度、寬度、扇出、扇入都應適中4模塊的作用域應該在控制域之內5力爭降低模塊接口的復雜程度6設計單入口單出口的模塊7模塊功能應該可以預測。5各種圖形工具,HIPO,結構圖,數據流圖
描繪軟件結構的圖形工具:1層次圖2 HIPO圖3結構圖;面向數據流的設計方法把信息流映射程軟件結構,信息流的類型決定了映射的方法信息流有下述兩種類型:1變換流2事務流。第6章
1詳細設計的目的,任務
詳細設計的根本目標 :是確定應該怎樣具體地實現所要求的系統(tǒng),經過這個階段的設計工作,應該得出對目標系統(tǒng)的精確描述,從而在編碼階段可以把這個描述直接翻譯成用某種程序設計語言寫的程序。
任務:是要設計出程序的“藍圖”,以后程序員將根據這個藍圖寫出實際的程序代碼。必要性:衡量程序的質量不僅看它的邏輯是否正確,性能是否滿足要求,更重要的是要看它能夠簡單易懂,詳細設計的目的不僅僅是邏輯上正確地實現每個模塊的功能,更重要的是設計出的處理過程應該盡可能簡明易懂。
2結構化:定義,指導思想,哪幾種結構,使用的工具,建立什么模型使用什么工具
結構化的定義:結構化程序設計是盡可能少用GOTO語句的程序設計方法,最好僅在檢測出錯誤時才使用GOTO語句,而且應該總是使用前向goto語句。結構有三種:順序,選擇,和循環(huán)。
指導思想:采用自頂向下,逐步求精的程序設計方法,使用三種基本控制結構構造程序,任何程序都可由順序,選擇,重復三種基本控制結構構造。結構:順序結構,選擇結構,循環(huán)結構 工具:圖形,表格,和語言
3人機界面設計,要解決的問題,設計過程,設計指南
人機界面設計是接口設計的一個重要組成部分,遇到的四個問題:系統(tǒng)響應時間,用戶幫助設施,出錯信息處理和命令交互。
設計過程,用戶界面設計是一個迭代的過程,通常先創(chuàng)建設計模型,再用原型實現這個設計模型,并由用戶試用和評價,然后根據用戶意見進行修改。設計指南:一般交互指南,信息顯示指南和數據輸入指南
4過程設計的各種工具,程序流程圖,盒圖,PAD圖,判定表,判定樹,過程設計語言
過程設計的工具有三類:圖形,表格,語言。具體有如下幾種
程序流程圖,盒圖,pad圖,判定表,判定樹,過程設計語言(PDL)
5面向數據結構的設計方法,jackson方法,使用的圖形工具
設計方法:根據數據結構設計程序處理過程的方法。
數據的3種使用方法:順序,選擇,重復。Jackson方法
Jackson結構程序設計方法基本上由下述5個步驟組成,(1)分析并確定輸入數據和輸出數據的邏輯結構,并用jackson圖描述這些數據結構(2)找出輸入數據結構和輸出數據結構中有對應關系的數據單元。
(3)用下述3條規(guī)則從描繪數據結構的jackson圖導出描繪程序結構的jackson圖。
1、為每對有對應關系的數據單元,按照它們在數據結構圖中的層次在程序結構圖的相應層次畫一個處理框。
2根據輸入數據結構中剩余的每個數據單元所處的層次,在程序結構圖的相應層次分別為它們畫上對應的處理框。總之,描繪程序結構的jackson圖應該綜合輸入數據結構和輸出數據結構的層次關系而導出來。在導出程序結構圖的過程中,由于改進的jackson圖規(guī)定在構成順序結構的元素中不能有重復出現或選擇出現的元素,因此可能需要增加中間層次的處理框圖。(4)、列出所有操作和條件,并且把它們分配到程序結構圖的適當位置。(5)用偽碼表示程序。使用的圖形工具:jackson圖
6復雜度的度量,McCabe方法,流圖,(2014年重點)
復雜度度量:把程序的復雜程度乘以適當的常數即可估算出軟件中的錯誤的數量以及軟件開發(fā)需要的工作量
Mccabe方法:根據程序控制流的復雜程度定量度量程序的復雜程度 第7章
1實現的重點是測試
2軟件測試的基礎:目標,準則,方法,測試5步驟
軟件測試的基礎:在測試階段測試的人員努力設計出一系列的方案,目的卻是為了“破壞”已經建造好的軟件系統(tǒng)—竭力證明程序中有錯誤,不能按照預定要求正確工作。發(fā)現問題是為了解決問題,測試階段的根本目標是盡可能多地發(fā)現并排除軟件中潛在的錯誤,最終把一個高質量的軟件系統(tǒng)交給用戶使用。軟測的目標:①測試是為了發(fā)現程序中的錯誤而執(zhí)行程序的過程。②好的測試方案是極可能發(fā)現迄今為止尚未發(fā)現的錯誤的測試方案。③成功的測試是發(fā)現至今為止尚未發(fā)現的錯誤的測試。
軟測的準則:①所有的測試都應該能追溯到用戶的需求。②應該遠在測試開始之前就制定出測試計劃。③把Pareto原理應用到軟測中。④應該從“小規(guī)模”測試開始,并逐步進行“大規(guī)模”測試。⑤窮舉測試是不可能的。⑥為了達到最佳的測試效果,應該由獨立的第三方從事測試工作。
測試方法:白盒測試(結構測試)、黑盒測試(功能測試)。
測試步驟:①模塊測試②子系統(tǒng)測試③系統(tǒng)測試④驗收測試⑤平行測試。3單元測試,測試的重點,測試方案
單元測試:在軟件開發(fā)過程中要進行的最低級別的測試活動,軟件的獨立單元將在與程序的其他部分相隔離的情況下進行測試;集中檢測軟件設計的最小單元---模塊。
單元測試方法有:人工測試和計算機測試;單元測試主要使用白盒測試技術,而且對多個模塊的測試可以并行的進行。
單元測試的重點:①模塊接口②局部數據結構③重要的執(zhí)行通路④出錯處理通路⑤邊界條件
4集成測試:集成的策略,自頂向下,自底向上
集成測試:測試和組裝軟件的系統(tǒng)化技術。
集成測試的策略:自頂向下和自底向上。
自頂向下集成方法是一個日益為人們廣泛采用的測試和組成軟件的途徑。從主控制模塊開始,沿著程序的控制層次向下移動,逐漸把各個模塊結合起來。自底向上集成:從“原子”模塊開始組成和測試。
5確認測試,范圍,Alpha測試Beta測試
確認測試:又稱驗收測試,它目標是驗證軟件的有效性。
Alpha測試由用戶在開發(fā)者的場所進行,并且在開發(fā)者對用戶的“指導”下進行測試,其是在受控的環(huán)境中進行的。
Beta測試由軟件的最終用戶們在一個或多個客戶場所進行。與Alpha測試不同,開發(fā)者通常不在Beta測試的現場,因此Beta測試是軟件開發(fā)者不能控制的環(huán)境中的“真實”應用。6白盒測試,黑盒測試(重點)
白盒測試:通過測試來檢測產品內部動作是否按照設計規(guī)格說明書的規(guī)定正常進行。黑盒測試:通過測試來檢測每個功能是否都能正常使用。
7軟件的可靠性,計算公式
軟件的可靠性:程序在給定的時間間隔內,按照規(guī)格說明書的規(guī)定成功的運行的概率。設計白盒測試方案的技術主要有邏輯技術和控制結構測試;設計黑盒測試方案的技術主要有等價劃分、分界值分析和錯誤推測。
第8章
1軟件維護的定義,4項活動,4類維護
軟件維護的定義:在軟件已經交付使用后,為了改正錯誤或滿足新的需要而修改軟件的過程。
四項維護:第一項維護活動:在任何大型程序的使用期間,用戶必然會發(fā)現程序錯誤,并且把他們遇到的問題報告給維護人員,讓維護人員診斷和改正的過程。第二項維護活動:為了和變化了的環(huán)境適當地配合而進行的修改軟件的活動,是既必要又經常的維護活動。第三項維護活動:在使用軟件的過程中用戶往往提出增加新功能或修改已有功能的建議,還可能提出一般性的改進意見。第四項維護活動:為了改進未來的可維護性或可靠性,或為了給未來的改進奠定更好的基礎而修改軟件。
四類維護:改正性維護、適應性維護、完善性維護、預防性維護 2軟件維護的特點,問題,軟件維護的特點:結構化維護與非結構化維護差別巨大、維護的代價高昂、維護的問題很多
軟件維護的問題:
1)理解別人寫的程序通常非常困難,而且困難程度隨著軟件配置成分的減少而迅速增加。2)需要維護的軟件往往沒有合格的文檔,或者文檔資料顯著不足。
3)當要求對軟件進行維護時,不能指望有開發(fā)人員給人們仔細說明軟件。由于維護階段持續(xù)的時間很長,因此,當需要解釋軟件時,往往原來寫程序的人已經不在附近了。4)絕大多數軟件在設計時沒有考慮將來的修改。5)軟件維護不是吸引人的工作。3軟件維護的過程
軟件維護的過程:維護組織、維護報告、維護的事件流、保存維護記錄、評價維護活動 4軟件的可維護性
軟件可維護性定義:維護人員理解、改正、改動或改進這個軟件的難易程度。決定軟件可維護性的因素:可理解性、可測試性、可修改性、可移植性、可重用性 5預防性維護與軟件再工程。
預防性維護由Miller提出來把今天的方法學應用到昨天的系統(tǒng)上以支持明天的明天的需求
6軟件再工程
6類活動:1.庫存目錄分析2.文檔重構3.逆向工程4.代碼重構5.數據重構6.正向工程 第9章
1面向對象方法學的定義,要點,優(yōu)點
定義:面向對象方法是一種把面向對象的思想應用于軟件開發(fā)過程中,指導開發(fā)活動的系統(tǒng)方法,簡稱OO(Object-Oriented)方法,是建立在“對象”概念基礎上的方法學。
要點:1認為客觀世界是由各種對象構成的,任何事物都是對象,復雜的對象可以由簡單的對象以某種方式組合而成。2,把所有的對象都劃分成各種對象類,每個對象類都定義了一組數據和一組方法。3,按照子類與父類的關系,把若干個對象組成一個層次結構的的系統(tǒng)。4,對象之間僅能通過傳遞消息互相聯系。
優(yōu)點:1.與人類習慣的思維方法一致2.穩(wěn)定性好3.可重用性好4.較易開發(fā)大型軟件產品5.可維護性好
2對象的定義,要點,優(yōu)點
定義:1.對象是具有相同狀態(tài)的一組操作的集合2.對象是對屬性值和操作的封裝。3.對象::=
3面向對象的概念,定義,特點
面向對象是一種對現實世界理解和抽象的方法,是計算機編程技術[1]發(fā)展到一定階段后的產物。
特點:1對象唯一性2分類性3繼承性4多態(tài)性 優(yōu)點:1易維護2質量高3效率高4易擴展 4類的定義,實例、消息、方法、屬性,繼承等概念
類的定義:類就是具有相同數據和相同操作的一組相似對象的定義。實例:實例就是由某個特定類所描述的一個具體的對象。
消息:小時就是要求某個對象執(zhí)行在定義它的那個類中所定義的某個操作的規(guī)格說明。方法:方法就是對象所能執(zhí)行的操作,也就是類中所定義的服務。
屬性:屬性就是類中所定義的數據,它是對客觀世界實體說具有的性質的抽象。封裝:在面向對象的程序中,把數據和實現操作的代碼集中放在對象內部。
繼承:在面向對象的軟件技術中,繼承是子類自動地共享基類中的數據和方法的機制。多態(tài):多態(tài)性是指子類對象可以像父類對象那樣使用,同樣地消息既可以發(fā)給父類對象也可以發(fā)給子類對象。重載:函數重載是指在同一作用域類的若干個參數特征不同的函數可以使用相同的函數名字,運送符號重載是指同一個運算符可以施加在不同類型操作數上面。5面向對象建模,對象模型(重點),功能模型(重點)動態(tài)模型,模型怎么畫,各種符號 6面向對象方法學使用的語言
面向對象語言是一類以對象作為基本程序結構單位的程序設計語言,指用于描述的設計是以對象為核心,而對象是程序運行時刻的基本成分。語言中提供了類、繼承等成分。第10章
3個子模型和5個層次 怎樣確定類與對象
類是對象的抽象,對象是類的具體實例。確定關聯,各種關聯怎樣確定
建立動態(tài)模型,編寫腳本,畫事件跟蹤圖
第三篇:軟件工程復習知識點總結
1.軟件危機的概念,內容,原因及消除的途徑; 2.軟件工程的定義,基本原理;
3.軟件工程方法學的基本概念、內容;
4.軟件生命周期的具體內容,每一個階段的任務是什么?結合具體的工程例子來理解做軟件項目主要分那幾個階段。
5.理解幾個典型軟件過程的內容及其優(yōu)點與缺點:瀑布模型、增量模型、快速原型模型、螺旋模型、噴泉模型等; 6.了解可行性研究中的任務和過程;
7.掌握系統(tǒng)流程圖的概念和方法,會從具體的案例中抽象出系統(tǒng)流程圖; 8.掌握數據流圖的概念和方法,會從具體的案例中畫出0層數據流圖和功能級數據流圖;
9.掌握數據字典的內容、方法、用戶和實現; 10.了解成本/效益分析方法;
11.了解需求分析過程中任務是什么.12.理解面向數據流自頂向下逐步求精的方法和意義;
13.理解分析及建模的意義,需求分析中應該建立哪三種模型?有哪些工具來幫助建立這些模型?
14.掌握實體關系(E-R)圖的概念,內容和實現方法,能結合具體實例建立實體關系圖;
15.掌握狀態(tài)圖的概念,內容,實現方法和作用;
16.掌握層次方框圖、warnier圖、IPO圖的概念,內容和作用; 17.有窮狀態(tài)機的概念和內容;
18.總體設計是做什么?總體設計的過程是怎樣的?總體結構設計的目的是什么?
19.掌握幾個設計原理,理解他們的內容和意義;
20.掌握耦合和內聚的概念和內容,理解這些原理對設計有哪些指導意義; 21.耦合包含了哪些類型?每個類型的具體內容是什么?要求能通過程序代碼識別出耦合類型。
22.啟發(fā)性規(guī)則的內容及部分概念。23.層次圖、HIPO圖和結構圖的內容;
24.掌握面向數據流的設計方法,了解其中涉及到的概念(變換流,事務流),結合例子理解變換分析的具體過程。25.詳細設計是做什么? 26.什么是結構程序設計?
27.人機界面設計問題包含哪些?
28.掌握設計過程中用到的工具:程序流程圖的概念,內容和方法;盒圖的概念、內容和方法;會結合實例使用這些工具;掌握PAD 圖的概念和內容;掌握判定表的概念和內容。要結合實例來掌握它們。
29.了解結合Jackson圖來掌握面向數據結構的設計方法;會用Jackson程序設計方法對具體的實例進行設計。
30.掌握幾種測試:單元測試、集成測試、確認測試、白盒測試技術和黑盒測試技術;掌握它們的概念,內容和方法;
31.對每一種測試方法,理解其具體細節(jié):比如理解什么是漸增式測試和非漸增式測試,什么是Alpha測試和Beta測試.....; 32.結合G.J.Myers的觀點理解軟件測試的目的;(教材p150)33.掌握白盒測試的技術細節(jié)(比如:掌握邏輯覆蓋中的8個覆蓋點;掌握基本路徑測試,會根據過程設計結果畫出相應的流圖;會計算流圖的環(huán)形復雜度;會計算出線性獨立路徑的基本集合);掌握黑盒測試的技術細節(jié); 34.理解軟件維護的定義、特點和維護過程; 自測練習題:
一、選擇題
1.瀑布模型的存在問題是()
A.用戶容易參與開發(fā)
B.缺乏靈活性
C.用戶與開發(fā)者易溝通
D.適用可變需求
2.可行性分析是在系統(tǒng)開發(fā)的早期所做的一項重要的論證工作,它是決定該系統(tǒng)是否開發(fā)的決策依據,因必須給出()的回答。
A.確定
B.行或不行
C.正確
D.無二義
3. 系統(tǒng)流程圖是用來
()
A 描繪程序結構的 B 描繪系統(tǒng)的邏輯模型
C 表示信息層次結構的圖形工具 D 描繪物理系統(tǒng)的 4.下列屬于維護階段的文檔是()
A.軟件規(guī)格說明
B.用戶操作手冊
C.軟件問題報告
D.軟件測試分析報告 5.軟件按照設計的要求,在規(guī)定時間和條件下達到不出故障,持續(xù)運行的要求的質量特性稱為()
A.可用性
B.可靠性
C.正確性
D.完整性
6、快速原型模型的主要特點之一是()A.開發(fā)完畢才見到產品
B.及早提供全部完整的軟件產品 C.開發(fā)完畢后才見到工作軟件 D.及早提供工作軟件
7、軟件需求分析的主要任務是準確地定義出要開發(fā)的軟件系統(tǒng)是()A.如何做
B.怎么做 C.做什么
D.對誰做
8.若有一個計算類型的程序,它的輸入量只有一個X,其范圍是[-1.0,1.0],現從輸入的角度考慮一組測試用例:-1.001,-1.0,1.0,1.001。設計這組測試用例的方法是()
A.條件覆蓋法
B.等價分類法
C.邊界值分析法
D.錯誤推測法
9.研究開發(fā)所需要的成本和資源是屬于可行性研究中的研究的一方面。()A.技術可行性
B.經濟可行性 C.社會可行性
D.法律可行性 10.模塊的內聚性最高的是()A.邏輯內聚
B.時間內聚 C.偶然內3 聚
D.功能內聚
12.()是把對象的屬性和操作結合在一起,構成一個獨立的對象,其內部信息對外界是隱蔽的,外界只能通過有限的接口與對象發(fā)生聯系。A 多態(tài)性 B 繼承 C 封裝 D 消息
二、填空題
1.將數據流圖映射為程序結構時, 所用映射方法涉及信息流的類型。其信息流分為 和 兩種類型。
2.為了便于對照檢查,測試用例應由輸入數據和預期的_ _____兩部分組成。3.軟件由程序、、組成。
4.在學校中,一個學生可以選修多門課程,一門課程可以由多個學生選修,那么學生和課程之間是
關系。
5.軟件工程釆用層次化的方法,每個層次都包括、方法、三要素。6.一個模塊擁有的直屬下級模塊的個數稱為,一個模塊的直接上級模塊的個數稱為。
三、名詞解釋題 1.內聚性 2.軟件危機 3.完善性維護 4.數據字典 5.程序流圖 6.驅動程序 7.數據耦合 8.類圖
9.Alpha測試與Beta測試 10.軟件產品
四、簡答題
1.黑盒測試旨在測試軟件是否滿足功能要求,它主要診斷哪幾類錯誤? 2.瀑布模型、增量模型的優(yōu)缺點
3.程序流程圖或者盒圖的5種基本結構的畫法 4.簡述過程設計語言(PDL)的特點。
5.根據特定的項目,你會考慮哪些因素來選擇合適的程序設計語言。6.(教材P141)畫出下列偽碼程序的程序流程圖和盒圖 START IF p THEN WHILE q DO f END DO ELSE BLOCK 4 g n END BLOCK END IF STOP 7.(教材P141)研究下面的PDL語言(過程設計語言,也稱偽碼程序): LOOP: Set I to(START + FINISH)/2 If TABLE(I)=ITEM goto FOUND If TABLE(I)
五、綜合題(三題分別5,7,8分,共20分)
1.某培訓中心要研制一個計算機管理系統(tǒng)。它的業(yè)務是: 將學員發(fā)來的信件收集分類后,按幾種不同的情況處理。
如果是報名的,則將報名數據送給負責報名事務的職員,他們將查閱課程文件,檢查該課程是否額滿,然后在學生文件、課程文件上登記,并開出報告單交財務部門,財務人員開出發(fā)票給學生。
如果是想注銷原來已選修的課程,則由注銷人員在課程文件、學生文件和帳目文件上做相應的修改,并給學生注銷單。
3)如果是付款的,則由財務人員在帳目文件上登記,也給學生一張收費收據。要求:
(1).對以上問題畫出功能級數據流程圖。(2).畫出該培訓管理的軟件結構圖。
2.某旅館的電話服務如下:
可以撥分機號和外線號碼。分機號是從7201至7299。外線號碼先撥9,然后是市話號碼或長話號碼。長話號碼是以區(qū)號和市話號碼組成。區(qū)號是從100到300中任意的數字串。市話號碼是以局號和分局號組成。局號可以是455,466,888,552中任意一個號碼。分局號是任意長度為4的數字串。
要求:寫出在數據字典中,電話號碼的數據條目的定義即組成。
3.軟件測試的過程包括哪些?黑盒測試與白盒測試的具體內容是什么?它們分別針對哪幾類錯誤?
一.集成測試中自頂向下集成和自底向上集成的優(yōu)缺點?
1、自頂向下集成 優(yōu)點:較早地驗證了主要控制和判斷點;按深度優(yōu)先可以首先實現和驗證一個完整的軟件功能;功能較早證實,帶來信心;只需一個驅動,減少驅動器開發(fā)的費用;支持故障隔離。
缺點:柱的開發(fā)量大;底層驗證被推遲;底層組件測試不充分。適應于產品控制結構比較清晰和穩(wěn)定;高層接口變化較小;底層接口未定義或經常可能被修改;產口控制組件具有較大的技術風險,需要盡早被驗證;希望盡早能看到產品的系統(tǒng)功能行為。
2、自底向上集成
優(yōu)點:對底層組件行為較早驗證;工作最初可以并行集成,比自頂向下效率高;減少了樁的工作量;支持故障隔離。
缺點:驅動的開發(fā)工作量大;對高層的驗證被推遲,設計上的錯誤不能被及時發(fā)現。
適應于底層接口比較穩(wěn)定;高層接口變化比較頻繁;底層組件較早被完成。
二.簡述螺旋模型的基本開發(fā)過程。正確答案
(1)需求定義。利用需求分析技術理解應用領域,獲取初步的用戶需求,制定項目開發(fā)計劃。
(2)風險分析。根據初始需求或改進意見評審可選用的方案,給出消除或減少風險的途徑。
(3)工程實現。利用快速原型構造方法針對已知的用戶需求生成快速原型。(4)評審。將原型提交用戶使用并征詢用戶改進意見。
上述過程將不斷迭代,直至給出用戶滿意的目標軟件產品。
三.一般而言,衡量某種程序語言是否適合于特定的項目,應考慮哪些因素?(1)應用領域;(2)算法和計算復雜性;(3)軟件運行環(huán)境;(4)用戶需求中關于性能方面的需要;(5)數據結構的復雜性;(6)軟件開發(fā)人員的知識水平;(7)可用的編譯器與交叉編譯器。
四.名詞解釋:
軟件危機是指落后的軟件生產方式無法滿足迅速增長的計算機軟件需求,從而導致軟件開發(fā)與維護過程中出現一系列嚴重問題的現象
軟件質量是軟件符合明確敘述的功能和性能需求、文檔中明確描述的開發(fā)標準、以及所有專業(yè)開發(fā)的軟件都應具有的和隱含特征相一致的程度。
恢復測試是指采取各種人工干預方式強制性地使軟件出錯,使其不能正常工作,6 進而檢驗系統(tǒng)的恢復能力。
類圖(Class diagram)是顯示了模型的靜態(tài)結構,特別是模型中存在的類、類的內部結構以及它們與其他類的關系等
數據耦合指兩個模塊之間有調用關系,傳遞的是簡單的數據值,相當于高級語言的值傳遞
第四篇:軟件工程復習點總結
軟件工程
第一章
1.軟件過程模型有:線性順序模型(瀑布模型),原型實現模型,螺旋模型,快速應用開發(fā)模型RAD,并發(fā)模型,基于構件的開發(fā)模型,形式化方法模型,第四代技術。2.軟件危機變現:《1》軟件代價高
《2》開發(fā)進度難以控制
《3》工作量估計困難 《4》質量差
《5》修改、維護困難
3.維護類型:改正性維護,適應性維護,完善性維護,預防性維護。
4.軟件是計算機系統(tǒng)中與硬件相互依存的另一部分,它是包括程序在,數據及其相關文檔的集合。
5.軟件工程是一門旨在生產無故障的,及時交付的,在預算之內的和滿足用戶需求的軟件學科。
6.軟件生命周期包括了軟件定義,軟件開發(fā)和運行維護3個時期組成。
7.軟件生命周期模型有問題定義,可行性研究,需求分析,總體詳細設計,總體編碼和單元測試,綜合測試軟件維護組。
8.CMM是用于評價一個組織軟件過程成熟度和識別增加這些過程的成熟度所需要的關鍵實踐的一個模型,是建立軟件組織所使用的進程成熟度的模型以及定義和測量過程成熟度的有效方法,在實際中被軟件開發(fā)組織用于軟件過程改進和評估。9.軟件過程開發(fā)模型: 1)線性模型(瀑布模型):特點:自上而下,相互銜接如同瀑布流水,逐級下落,體現不可逆轉性。
優(yōu)點:強調開發(fā)的階段性、強調早期計劃和需求調查以及強調產品測試。
(1)為項目提供了按階段劃分的檢查點
(2)當前一階段完成后,你自需要去關注后序階段。(3)開在迭代模型中應用瀑布模型。
缺點:(1)在項目各階段之間極少有反饋。
(2)只用在項目生命周期的后期才能看到結果。
(3)通過過多的強制完成時期和里程碑來跟蹤各個階段。
適用性:用戶的需求非常清楚全面。2)快速原型模型:(1)可以得到比較良好的需求定義,容易適應需求的變化。
(2)有利于開發(fā)與培訓的同步
(3)開發(fā)費用低,開發(fā)周期短且對用戶更友好
缺點:(1)客戶與開發(fā)者對原型模型理解不同
(2)準確的原型設計比較困難(3)不利于開發(fā)人員開發(fā)
3)增量型優(yōu)點:(1)人員分配靈活
(2)如果核心產品很受歡迎,則可增加人力實現下一個增量(3)可先發(fā)布部分功能給客戶,對客戶起到鎮(zhèn)靜劑的作用
缺點:(1)并行開發(fā)構件有可能遇到不能集成的風險,軟件必須具備開放式的體系結構。
(2)容易退化為邊做邊改模型。從而使軟件過程的控制失去整體性。
4)螺旋模型:(1)設計上的靈活性,可以在項目的各個階段進行變更。
(2)以小的分段來構建大型系統(tǒng),使成本計算變得簡單容易。
(3)隨著項目推進,客戶始終掌握項目的最新消息,從而他或她能夠和管理層有效交互。
缺點:(1)采用螺旋模型需要具有相當豐富的風險評估經驗和專門知識,在風險較大的項目開發(fā)中,如果未能夠及時標識風險,勢必造成重大損失。
(3)過多的迭代次數會增加開發(fā)成本,延遲提交時間。
10.可行性分析法包括:(1)經濟可行性(2)技術可行性(3)運行可行性(4)法律可行性
(5)開發(fā)方案的選擇 11.需求工程分為:
(1)系統(tǒng)可行性研究:它指的現有的軟件、硬件技術能否實現用戶對新系統(tǒng)的需求。,從業(yè)務角度來決定系統(tǒng)開發(fā)是否劃算以及在預算范圍內能否開發(fā)出來。
(2)需求導出和分析:這是一個通過對現有系統(tǒng)分析與潛在用戶和購買者討論。進行任務分析等導出系統(tǒng)需求的過程,也可能需要一個或多個不同的系統(tǒng)模型和原型
(3)需求描述。需求描述就是把分析活動中收集信息以文檔的形式確定下來。(4)需求有效性驗證。這個活動檢查需求實現、一致和完備。
(5)需求管理。需求管理是一種系統(tǒng)化方法,可用于獲取、組織和記錄系統(tǒng)需求并使客戶和項目團隊在系統(tǒng)變更需求上達成并保持一致。12.軟件需求5個方面:(1)問題識別(2)評估與綜合(3)建模
(4)規(guī)約(5)評審 13.需求獲取方法:(1)建立聯合分析小組
(2)客戶訪談(3)問題分析與確認(4)快速原型法
14.需求分析原則:(1)必須能夠表達和理解問題的數據域和功能域
(2)按按自頂向下,逐層分解。
(3)要給出系統(tǒng)的邏輯視圖和物理視圖。15.軟件設計分為總體設計和詳細設計。16.總體設計任務:
(1)系統(tǒng)分析員審查軟件計劃、軟件需求分析、提供的文檔、提出最佳推薦方案,用系統(tǒng)流程圖,組成物理元素清單,成本效益分析,系統(tǒng)的進度計劃,供專家審定后進入設計。(2)去頂模塊結構,劃分功能模塊,將軟件功能需求分配給所劃分的最小單元模塊。確定模塊之間的聯系,確定數據結構、文件結構、數據庫模式,確定測試方法與策略。(3)編寫概要設計說明書,用戶手冊、測試計劃、選用相關的軟件工具來描述軟件結構,結構圖是經常使用的軟件的軟件描述工具。選擇分解功能與劃分模塊的設計原則,例如模塊劃分獨立性原則,信息隱藏原則等。
17.信息隱蔽是指每個模塊內部信息對于其他不需要此信息的模塊來說是不可訪問的,即外部模塊對模塊內部的實現過程的不可見性。
18.模塊化就是把程序劃分成獨立命名且可獨立訪問的模塊,每個模塊完成一個子功能,把這些模塊集成起來構成一個整體,可以完成指定的功能,以滿足用戶的需求。
19.模塊獨立性概括了把軟件劃分為模塊時要遵守的準則,也是判斷模塊夠著是否合理的標準。
20.衡量模塊獨立的兩個標準是耦合性和內聚性。21.耦合性:也稱塊間聯系,指軟件系統(tǒng)結構中各模塊間相互聯系和緊密程度的一種度量。模塊之間聯系月緊密,其耦合性就越強,模塊的獨立性則越差。模塊間耦合高低取決于模塊間接口的復雜性,調用的方式以及傳遞的信息。
22.內聚性:又稱為塊間聯系。指模塊的躬耕強度的度量即一個模塊內部各個元素,彼此結合的緊密程度的度量。若一個模塊內各個元素聯系的越緊密,則它的內聚性越高。23.模塊獨立原則也稱為模塊設計的原則:高內聚、低耦合。
24.耦合性包括:非直接耦合,數據耦合,標記耦合,控制耦合,外部耦合,公共耦合,內容耦合
25.內聚性包括:巧合內聚,邏輯內聚,時間性內聚,過程內聚,通信內聚,信息內聚,功能內聚。
26.數據流程圖的定義和作用:數據流程圖有兩個特征:抽象性和概括性。抽象性指的是數據流程圖把具體的組織機構、工作場所、物質流都去掉,只剩下信息和數據存儲,流動,使用以及加工情況。
概括性則是指數據流圖把系統(tǒng)對各種業(yè)務的處理過程聯系起來考慮,形成一個總體。27.數據流程圖的組成:外部實體、數據流、處理、數據存儲。
28.面向對象的基本概念:對象是由描述該對象屬性的數據以及可以對這些數據施加的所有操作封裝在一起構成的統(tǒng)一體。
29.對象:它是分裝了數據結構及可以施加在這些數據結構上的操作的封裝體。30.類:用于表示某些對象的共同特征(屬性和操作),對象是類的實例。31.實例:就是由某個特定類所描述的一個具體對象。32.消息:消息傳遞時對象與外界相互關系的唯一途徑。
33.方法:方法就是對象所能執(zhí)行的操作,也就是類中所定義的服務。
34.屬性:屬性就是類中定義的數據,它是對客觀世界實體所具有的性質的抽象。35.封裝:封裝也就是信息隱藏,通過封裝對外界隱藏了對象的實現細節(jié)。36.繼承:是現實世界中遺傳關系的直接模擬。
37.多態(tài)性:指允許不同類的對象對同一信息做出響應
38.重載:函數重載是指在同一個作用域內的若干個參數特征不同的函數可以使用相同的函數名字
運算重載是指同一個運算符可以施加不同類型的操作數上面 39.UML是面向對象的方法
40.靜態(tài)結構圖包括類圖和對象圖 41.UML由九種圖構成:
用例圖
類圖
對象圖
活動圖
狀態(tài)圖
序列圖(順序圖)
協(xié)作圖
構件圖(組件圖)
部署圖(配置圖)
42.UML視圖大體分為三大類:
結構分類
動態(tài)行為
模型管理
43.類圖有3種屬性
“+”public(公共)
“#”protected(保護)
“-”private(私有)
操作一樣
44.類之間的關系有用關聯:泛化
聚合依賴
組合
45.用例圖有3種關系:communicates(通信)
extends(延伸)
uses(使用)46.程序設計語言3種結構:順序
判斷
循環(huán)
47.良好的編碼風格:
縮進良好,沒有過多嵌套
變量名,空間名,類名都取直接有意義的字眼
有一些必要注釋
符合思維習慣使用運算符
模塊化 48.軟件測試定義:為了發(fā)現程序中的錯誤而執(zhí)行程序的過程 49.測試方法
黑盒測試(功能測試)
白盒測試(結構測試)
50.黑盒測試如果已經知道了產品應該具有的功能,可以通過測試來檢驗是否每個功能都正常使用 白盒測試:如果知道產品內部工作過程,可以通過測試來檢驗產品內部動作是否按照規(guī)格說明的規(guī)定正常進行
51.軟件測試:
單元測試
集成測試
確認測試
系統(tǒng)測試
52.單元測試也稱為模塊測試或結構測試,通常可放在編程序段,主要采用邏輯覆蓋技術,目的是檢查模塊是否能實現了詳細設計說明書種規(guī)定的功能和算法 53.單元測試主要發(fā)現編程和詳細設計中產生的錯誤 54.測試一個模塊是需要為該模塊編寫一個驅動模塊和若干樁模塊。頂層測試無需驅動模塊,底層測試無需樁模塊
55.集成測試也稱為組裝測試,在單元測試的基礎上把所有模塊組裝成一個系統(tǒng)進行測試。主要測試設計階段產生的錯誤
56.非漸增式集成測試(先測試后組裝)和漸增式集成測試(測試一個組裝一個)57.確認測試目標是檢驗軟件的有效性,在需求分析階段制定
58.白盒測試技術:語句覆蓋
判定覆蓋
條件覆蓋
判定條件覆蓋
條件組合覆蓋
路徑覆蓋
59.黑盒測試技術:等價類劃分,邊值分析,錯誤推測和因果圖等 60.按照測試過程是否在實際應用過程中來分,有靜態(tài)分析與動態(tài)測試
測試方法有分析法(靜態(tài)分析和白盒測試)與非分析法(黑盒法)
61.軟件維護分為以下4類:改正性維護;適應性維護;完善性維護;預防性維護
62.決定軟件可維護性的因素: 可理解性
可測試性
可修改性
可移植性
可重用性 63.基本路徑測試:環(huán)路復雜性的3種計算方法: <1>將環(huán)路復雜度定義為流圖種區(qū)域的數量
<2>設E為流圖的邊數,N為圖中的節(jié)點數,則定義環(huán)路復雜度
V(G)=E-N+2 <3>設p為流圖G中的制定節(jié)點數,則有V(G)=p+1 64.關鍵路徑測試
第五篇:軟件工程復習重點總結
第一章
軟件過程:需求設計實現發(fā)布
軟件過程三要素: 過程+方法+工具
瀑布rup scrum Iconix
Scrum是一種迭代式增量軟件開發(fā)過程,通常用于敏捷軟件開發(fā)。Product Owner、Scrum Master、Team Product Backlog、SprintBacklog、Burndown Chart、Sprint、Sprint Planning Meeting、Daily Standup Meeting、Review Meeting、Retrospective Meeting ICONIX軟件開發(fā)過程
愿景、業(yè)務建模、需求分析、健壯性分析、系統(tǒng)設計??
思想是重點;過程是方式;方法和工具是載體
第二章
敏捷開發(fā)是一種以人為核心、迭代、循序漸進的開發(fā)方法。敏
捷是一種思想?Scrum是一個框架
敏捷開發(fā)過程知多少?
?Scrum、?極限編程(XP)、?Crystal Methods(水晶方法族)
?特性驅動開發(fā)(FDD)
?動態(tài)系統(tǒng)開發(fā)(DSDM)
?輕量型統(tǒng)一過程(RUP)
調查結果:敏捷開發(fā)方法—Scrum最流行!
Scrum的適用場景
?7人,+or-2
?偏小一些會更適合?最好能坐在一起
?客戶參不度高
?快速移動互聯網項目
?自主性研發(fā)的產品
第三章
軟件項目是為了改善某個組織的某些方面
–老大就是要改善的組織中最有權力的干系人。
用戶建模四步曲列出盡可能多的用戶識別關鍵用戶(購買決策者/主要使用者)分類,合并次要用戶
4添加虛擬和極端用戶
第四章
?產品backlog是Scrum的核心
產品功能列表格式
?ID(標示符)
–統(tǒng)一標識符
?Name(標題)
–簡短的、描述性的故事名
?Story(故事)
–故事內容描述
?Priority(重要性)
–產品負責人評出一個數值,指示這個故事有多重要
?Initial estimate(初始估計)
–團隊的初步估算,表示不其他故事相比,完成該故事所需的工作量
?How to demo(如何做演示)
–它大略描述了這個故事應該如何在sprint 演示上進行示范
?Notes(注解)
–相關信息、解釋說明和對其它資料的引用等等
產品功能列表由誰來寫?
?思考:由誰來寫?
–主要是Product Owner
–Team也有權利,但最終由PO進行取舍。
用戶故事是一種敏捷的需求挖掘方式,其側重點不是將需求書寫出來,而是將需求討論出來。
按“作為一個??,可以??,以便??”樣式和思路寫成的用戶需求,就是用戶故事。
用戶故事的三個變量
范圍,重要性,估算
好故事的準則
?獨立的(Independ)
?可討論的(Negotiable)
?對用戶戒客戶有價值的(Valuable)
?可估計的(Estimatable)
?小的(Small)
?可測試的(Testable)
Sprint會議如何迚行
–確定Sprint目標及長度
–講解Story、估算時間、任務分解
–決定 sprint 要包含的故事
–一些其他問題
第六章
什么是界面原型
?界面原型指使用工具根據客戶需求及軟件分析人員的理解,將頭腦中的界面快速的反映到介質上。
界面原型的目的?盡早驗證需求
?盡早明確不確定性的因素
?方便溝通交流
?為后續(xù)界面設計提供基礎
第八章
ICONIX過程
?ICONIX過程的規(guī)模介于RUP和XP之間
?適合中小型的、需求相對明確的軟件項目
?ICONIX核心思想
?開源!節(jié)流!
ICONIX軟件過程是用例驅動的軟件過程。
ICONIX過程中的第一步:明確愿景
?愿景是確保項目成功的第一步;
?愿景必須來自老大;
?愿景必須是可度量。
如何獲取軟件項目的愿景
?獲取軟件項目愿景的三步曲:
?第一步:找到軟件項目的“老大”;
?第二步:得到“老大”對項目的期望(愿景);
?第三步:描述出愿景的度量指標;
要點:系統(tǒng)要改善哪個組織的流程?
老大就是要改善的組織中最有權力的干系人
第九章
業(yè)務建模的目的:從組織的角度來定位系統(tǒng)的價值。
業(yè)務建模
?業(yè)務建模的目的是把視角從系統(tǒng)轉向組織,站在客戶角度看問題。
?業(yè)務用例是對組織為外部業(yè)務執(zhí)行者提供的價值的建模。
?現狀業(yè)務序列圖是對組織價值內部實現流程(業(yè)務工人與業(yè)務實體的協(xié)作)的建模 ?改迚業(yè)務序列圖是對新系統(tǒng)為組織提供的改良的建模。
業(yè)務建模的步驟:
1.明確我們?yōu)檎l服務(選定愿景要改進的組織)。
2.要改進的組織是什么現狀(業(yè)務用例圖、現狀業(yè)務序列圖)。
3.我們如何改進(改進業(yè)務序列圖)。
第十章
域建模的步驟
第一步:提取名詞或名詞短語
第二步:排除重復、相似
第三步:排除系統(tǒng)范圍外
第四步:畫出第一版域模型圖
第五步:整理第一版域模型
域模型之間的關系
?泛化[Generalization],一般元素和特殊元素的關系。
?關聯[Association],兩個類乊間存在著某種語義上的聯系。
系統(tǒng)需求分析的目的是把視角轉向新系統(tǒng),站在最織
用戶(及其它干系人)的角度看問題。
?系統(tǒng)用例是對(新)系統(tǒng)為系統(tǒng)執(zhí)行者提供的價值的建模
系統(tǒng)用例建模步驟
1.繪制系統(tǒng)用例圖
2.編寫系統(tǒng)用例描述
3.更新域模型
繪制系統(tǒng)用例圖
1.確定系統(tǒng)邊界
2.識別系統(tǒng)執(zhí)行者
3.識別系統(tǒng)用例
4.確定用例間的關系
用例描述的作用
?用例圖描述總體,用例文檔描述紳節(jié)。
?每個用例必須對應有用例描述。
用例描述的基本組成?干系人利益
?基本路徑
?擴展路徑
?業(yè)務觃則
軟件產品的典型非功能性需求(RUPS)
?可靠性[Reliability]。
?可用性[Usability]。
?性能[Performance]。
?可支持性[Supportability]。
需求獲取的方法
?研究文檔。
?問卷調查。
?訪談。
?觀察。
?研究競爭對手。
需求分析結果復核
?形式:面對面會議。
?參會人:甲乙雙方在需求分析階段的主要參與者。
?被審材料:域模型、用例圖、用例描述、非功能性需求;
?過程:需求分析師主持,最終需求分析成果,所有參與者交流討論,達成統(tǒng)一理解和確認。?結論:所有參與者簽字確認。(當然,也有可能是未達成共識,需要返工。)
?注意:后續(xù)的工作基本不需要用戶的參不了。
第十一章
健壯性分析的步驟
第一步:創(chuàng)建一個空的健壯性圖。
第三步:從基本路徑的第一句話開始畫健壯性圖。
第二步:直接將用例文本粘貼到圖上(基本路徑和擴展路徑)。
第四步:貫串整個用例基本路徑,一次一個句子,畫執(zhí)行者、適當的邊界對象和實體對象以及控制器,和各元素乊間的連線。
第五步:將每一個擴展路徑畫在健壯性圖上,并以紅色標示出。
在用例驅動的開發(fā)模式中,用例的準確完整性是關鍵;
?健壯性分析技術兩個主要的價值:其一幫助完善用例分析結果;其二完善域模型,做為需求分析走向系統(tǒng)設計的過度技術;
?丌要花費太多的精力和時間在本階段,本階段的成果也僅起到過度作用,不納入最終文檔; 第十二章
關鍵設計是功能性需求的設計,成果為類圖和序列圖;
?關鍵設計還沒考慮真實實現的平臺相關因素,因此不能基于這個階段的設計成果開始編碼; ?關鍵設計的方法就是在域模型、用例描述和健壯性分析的基礎上,迭代生成類圖和序列圖;
關鍵設計的步驟
?第一步:將現有的域模型直接作為第一版靜態(tài)類模型;
?第二步:基于用例描述和健壯性分析結果,畫出每個用例的序列圖;
?健壯性圖中的控制類會轉化為方法;
?如果也轉化為控制類,那么就添加到類圖中(注意:邊界類丌添加到類圖中); ?第三步:整理靜態(tài)類圖和序列圖;
?第四步:關鍵設計復核,迭代更新用例圖、類圖和序列圖;
高內聚、低耦合。是判斷設計好壞的標準。
關鍵設計復核的指導建議
?確保關鍵設計的“如何做”和需求階段的“做什么”匹配。也就是說每個用例都要和序列圖匹配,包含了用例的基本流程和分支流程。
?復核設計的品質。應該至少有一個設計與家在場。
?檢查消息的連貫性。檢查時序圖上消息箭頭的指向,有時我們會發(fā)現對象乊間缺少消息而造成跳躍,我們必須消除這些邏輯跳躍。
?確保方法分配給了適當的類,類視圖中的每一個類擁有適當的方法和屬性。