第一章
1.軟件的定義
①運行時,能提供所要求功能和性能的指令(Instruction) 或計算機程序(Program)集合。
②程序能滿意地處理信息的數據邏輯(data structure)。
③程序能滿意地按照預定的商業邏輯進行處理。
④描述程序功能需求以及程序如何操作和使用所要求的文檔(Documents).
2.軟件危機定義及產生原因
定義:在計算機軟件開發和維護過程中所遇到的一系列嚴重問題。概括地講:
①怎樣滿足對軟件日益增長的需求(即如何開發軟件)
②如何維護數量不斷膨脹的已有軟件
產生原因:一方面與軟件本身的特點有關。一方面與軟件開發與維護的方法不正確有關。
①忽視軟件需求分析的重要性,認為軟件開發就是寫程序并設法使之運行,輕視軟件維護等。事實上,對用戶要求沒有完整準確的認識,匆忙著手編寫程序是許多軟件開發工程失敗的主要原因。
②忽視軟件文檔的重要性,認為文檔可有可無,到后期更新及修改無法有效地進行,重復大量人力物力。
3.軟件生命周期(軟件開發過程分為哪幾個階段以及每個階段完成的工作)
(1)問題定義
“要解決的問題什麼?”在問題定義階段應提出:
①問題性質報告②工程目標和規模報告③對系統的實際用戶和使用部門進行訪問調查,澄清含糊不清的地方后得到雙方滿意的文檔。
(2)可行性研究
該階段關鍵問題“對于上一個階段所確定的問題有行得通的解決辦法”
可行性研究階段應該導出系統的高層邏輯模型(通常用數據流程圖)并且在此基礎上更準確、更具體的確定工程規模和目標,然后分析員更準確的估計系統成本和效益,對建議的系統進行仔細的成本/效益分析。
該階段實際上是一個工程的核心階段,對雙方都是討價還價的心理戰,直接關系到整個系統研發的成本與利益。
(3)需求分析
解決的問題“為解決問題,目標系統必須做什麼?”
系統分析員在需求分析階段必須和用戶密切配合,充分交流信息,以得出經過用戶確認的系統邏輯模型。通常用數據流程圖,數據字典和簡要的算法表示系統的邏輯模型。
需求分析階段必須交出完整準確的系統邏輯模型經用戶確認后,再進入下一個階段,應防止和克服急于著手進行具體設計。
(4)總體設計
“應該如何解決這個問題?”,應考慮幾種可能的解決方案:
①低成本的解決方案
系統只能完成最少必要的工作,不做額外工作。
②中等成本的解決方案
除很好地完成預定的任務,使用方便,而且還有附加的額外功能。
③高成本的“十全十美”的系統
該系統具有用戶可能希望有的所有功能和特點。
(5)詳細設計
總體設計以比較抽象概括的方式提出了解決問題的辦法,詳細設計的任務是把解法具體化。具體的任務是設計出程序的詳細規格說明,通常用HIPO圖(層次圖加輸入/處理/輸出圖)或PDL語言(過程設計語言)描述詳細設計結果。
(6)編碼和單元測試
程序員根據系統要求,選定開發平臺把詳細設計的結果翻譯成選定的語言書寫程序,并仔細測試編寫的每個模塊。
(7)綜合測試
通過各種類型的測試使軟件達到預定的要求。
(8)軟件維護
①改正性維護②適應性維護③完善性維護④預防性維護
4.生存周期模型有幾種
①軟件生存期的瀑布模型②快速原型模型③螺旋模型
5.軟件項目工程包含的工作(軟件開發、軟件管理)
第二章
1.可行性研究的任務與分類
可行性研究的目的就是用最小代價在盡可能短的時間內確定問題是否能夠解決。
分類:①技術可行性②經濟可行性③操作可行性
2.數據流圖的概念和表示符號的含義,會分析數據流圖
概念: 數據流圖描繪系統的邏輯模型,圖中沒有物理元素,只是描繪信息在系統中流動和處理情況。該圖只需考慮系統必須完成的基本邏輯功能,不需要考慮如何具體實現。
符號的含義:(*)號表示數據流之間是“與”的關系。(+)號表示數據流之間是“或”的關系。(⊕)號表示只能從中選一個(互斥)的關系。
3.數據字典的定義和任務
定義:數據字典是關于數據的信息的集合,也就是對數據流圖中包含的所有元素的定義的集合。任務:對于數據流圖中出現的所有命名元素,包括數據流,加工,數據文件,以及數據的源,終點等,在數據字典中作為一個詞條加以定義,假設的每一個圖形元素的名字都有一個確切的解釋。
第三章
1.需求分析的任務
①確定對系統的綜合要求②分析系統的數據要求③導出系統的邏輯模型④修改系統的開發計劃
2.結構化分析方法的工具(需求分析的工具)有哪些
①一般工具:DFD、數據字典、結構化英語、判定表、判定樹等。②功能分析工具:DFD、DD、結構化英語、判定表和判定樹。③行為分析工具:狀態遷移圖、Petri網等。④數據分析工具:ER圖或者EER(擴展ER)圖。
3.軟件需求規格說明應包含哪些內容
4.項目管理的定義
定義:在一個確定的時間范圍內,為了完成一個既定的目標,并通過特殊形式的臨時性組織運行機制,通過有效的計劃、組織、領導與控制,充分利用既定有限資源的一種系統管理方法。
第四章
1.形式化技術的分類
(1)根據說明目標軟件系統的方式,形式化方法可以分為兩類:
①面向模型的形式化方法②面向屬性的形式化方法
(2)根據表達能力,形式化方法可以分為五類:
①基于模型的方法②基于邏輯的方法③代數方法④過程代數方法⑤基于網絡的方法
2.了解有窮狀態機、Petri網、Z語言進行格式化描述
第五章
1.總體設計的任務(概要設計)
2.總體設計過程及使用的工具
首先尋找實現目標系統的各種不同的方案,需求分析階段得到的數據流圖是設想各種可能方案的基礎。總體設計又稱為概要設計或初步設計,通過這個階段的工作將劃分出組成系統的物理元素——程序、文件、數據庫、人工過程和文檔等。
3.內聚、耦合的定義及其與模塊獨立性的關系
耦合:它是衡量不同模塊彼此間互相依賴的緊密程度。
內聚:它是衡量一個模塊內部各個元素彼此結合的緊密程度。
4.數據流圖到程序結構圖的轉換
5.從工程管理的角度來看,軟件設計分為哪兩步完成
①概要設計,將軟件需求轉化為數據結構和軟件的系統結構。
②詳細設計,即過程設計。通過對結構表示進行細化,得到軟件的詳細的數據結構和算法。
6.深度、寬度、扇入和扇出的概念
深度:軟件結構中的控制層數。
寬度:同一層上模塊總數的最大值。
扇出:一個模塊直接控制(調用)的模塊數目。
扇入:一個模塊有多少個上級模塊調用它。
第六章
1.結構程序設計定義、基本結構(程序的三種基本結構)
定義:結構程序設計是一種設計程序的技術,它采用自上向下逐步求精的設計方法和單入口單出口的控制結構。
結構:順序、分支、循環
2.根據程序流程圖畫出盒圖、PAD圖
3.程序環形復雜度的計算
4.軟件詳細設計過程使用的工具
第七章
1.程序注釋分類
2.軟件測試概念和目的
3.軟件測試的白盒測試的概念及其覆蓋技術分類
4.軟件測試的等價劃分
5.設計測試用例的步驟
6.根據流程圖給出各種覆蓋測試用例和覆蓋路徑
7.軟件測試原則
8.編碼的效率原則
第八章
1.維護的分類、定義以及提高可維護性的方法有哪些
2.維護的副作用、出現的階段
3.度量軟件可維護性的方法
4.軟件文檔的作用和分類
5.軟件開發項目生存期各階段所包含的文檔
第九章
1.理解類、對象的概念
2.面向對象方法的優點
3.類之間的幾種關系,會用UML畫類圖和類關系圖
4.面向對象建模技術所建立的三種模型,每種模型描述工具
5.面向對象的主要特征(多態、繼承、封裝)
6.UML中建立的模型有哪些(寫出名稱)
補充內容
軟件測試的等價劃分(教材第七章)
什么是軟件配置項
軟件生存周期各階段活動的產物經審批之后稱為軟件配置項,包括:
①與合同、過程、計劃和產品有關的文檔和材料
②源代碼、目標代碼和可執行代碼
③相關產品,包括軟件工具、庫內的可重用軟件、外購軟件及顧客提供的軟件等
什么是軟件配置管理
在軟件的整個生命周期內管理變化的活動,這組活動用來:
①標識變化②控制變化③保證變化被適當的發現④向可能有興趣的人員報告變化
|