计算机考研复试之软件工程三十问
/*前言:不知道學習軟工的小伙伴有沒有這種疑問,軟工為何這么難學進去?為何這么繁瑣?為何這么難背?本小白在初學軟工的時候,基本就是長期走神發呆的狀態,因為完全不知道軟在講啥,要考啥。?本次二刷軟工,我花了18小時來整理軟件工程的知識點和可能要考查的面試問題,雖然不能把軟工覆蓋全面,也比不上一些大佬整理得專業和詳細,但是我有信心我自己整理的東西還是比較細致的、比較簡潔明了的、比較抓住重點的、也比較適合廣大考研學生的知識掃盲和應考背誦記憶的。
? ? ? ? ?本文參考資料:軟件工程導論(第六版)、本人考研院選的本科PPT、一些考研參考資料和CSDN部分優質博客等。
? ? ? ? ?自身專業水平有限,文章如有錯誤,懇請批評指正。整理知識點不易,若對您學習、備考有幫助,懇請關注、點贊、收藏。你們的支持、鼓勵是我繼續打雞血學習和創作的動力。*/
?
/*********************軟件工程概述************************/
?
問題一:什么是軟件工程?目標是什么?內容是什么?軟工方法學三要素是什么?什么是軟件過程?
軟件工程是利用科學知識和技術原理來定義、開發和維護軟件的一門學科。
目標是:付出較低的開發成本、取得良好的性能、達到預期的效果……(很多)
軟工內容:軟工包括開發技術和開發管理兩方面內容。
軟工方法學三要素:1.方法(指的是開發方法)2.工具(支持方法的工具)3.過程(管理過程)
軟件過程:完成高質量軟件開發中的一系列操作。
?
問題二:軟件工程方法學一般有哪兩種?
結構化方法學(又稱為生命周期方法學):強調自頂向下順序完成軟件開發的任務。結構化方法學中有三種基本控制結構:1.順序2.選擇3.循環
面向對象方法學:盡量模擬人類習慣的思維方式去開發。
補充:面向對象三大特征:1.封裝(把數據和方法放在一個類里封裝起來)2.繼承(子類繼承父類,通過關鍵詞extends)3.多態(相同類型的變量調用同一個方法時呈現出不同的行為特征。Ps:一個細節問題要注意:只有方法才有多態,實例變量不存在多態)
?
問題三:軟件生命周期劃分為哪幾個階段?
生命周期劃分為三個時期八個階段:
軟件定義時期:問題定義、可行性研究
軟件開發時期:需求分析、總體設計、詳細設計、編碼和單元測試、綜合測試
軟件運行維護時期:運行維護
?
問題四:什么是軟件危機?(本題自由度較大,選取兩三點就行)
軟件危機指軟件開發的成本和開發時期估計不準、軟件質量不可靠、軟件維護難……
造成軟件危機的主要原因有:軟件本身的特點、軟件開發和維護的方法等……
?
問題五:軟件生命周期中有哪幾種模型?哪些適用于面向對象的軟件開發?
軟件生命周期中常見的模型有:瀑布模型、快速原型模型、增量模型、螺旋模型、噴泉模型、Rational統一過程、敏捷過程、微軟過程等等。
噴泉模型適用于面向對象的軟件開發。(因為噴泉模型在整個開發過程中都使用“對象”這個概念,很容易實現各個開發步驟的反復迭代(求精)和逐步深化,因此噴泉模型很好實現了面向對象開發的無縫和迭代特性)
?
?
/*************************可行性研究***********************/
?
問題六:為什么要進行可行性研究
用最小的代價、在盡可能短的時間內確定問題是否能被解決。(注意:不是去解決問題)
?
問題七:可行性研究工具有哪些?(這是重點)
?
問題八:請介紹一下可行性研究的方法。
首先分析問題,試探性的導出問題的各種解,然后進行各種分析和比較,選擇和推薦可行的解決方案。采用系統流程圖描述物理數據流;運用數據流圖并結合數據字典構建系統的邏輯模型??尚行匝芯康慕Y果產生可行性研究報告。
?
?
/*************************需求分析***********************/
?
問題九:什么是需求分析?(記住要點,用自己的話說)
需求分析是發現、求精、建模、規格說明和復審的過程。
即:先與用戶交流,了解基本需求……繼續深入,逐步求精需求……建立分析模型……寫成軟件規格說明書……嚴格評審……最終得到用戶確認。
補充:一般從1.一致性2.完整性3.現實性4.有效性 四方面去復審軟件需求規格說明書。
?
問題十:請介紹一下什么是需求工程。
需求工程包括需求分析和需求管理。需求分析任務主要包括:1.需求獲取2.需求建模3.規格說明4.需求驗證。需求管理是對系統需要變更了解和控制的工程,包括標識、控制和跟蹤需求的活動。
?
問題十一:需求分析是一項軟件工程活動,它的兩大主要目標是什么?
?
?
/**************************總體設計*************************/
?
問題十二:軟件總體設計階段的主要任務是什么?
如果簡要作答:1.確定系統的物理模型2.確定軟件的體系結構
詳細作答(課本上的原話):總體設計階段的基本目的是用比較抽象概括的方法確定系統如何完成預定的任務,也就是說,應該確定系統的物理配置方案,進而確定組成系統的每個程序的結構。
?
問題十三:從技術觀點上看,軟件設計包括了什么內容?
Ps:本題為PPT上的知識點,軟件設計包括了總體設計和詳細設計。
?
問題十四:基本的軟件設計原理有哪些?
?
問題十五:什么是內聚性,什么是耦合性,針對這兩個特性應該注意什么問題?
內聚性:內聚是一個模塊內部各個元素彼此結合緊密程度的度量
耦合性:耦合是模塊間互相連接的緊密程度的度量
應注意以下問題:軟件設計應追求高內聚、低耦合。
盡量使用數據耦合,少用控制耦合和特征耦合,限制外部耦合和公共環境耦合的范圍,不用內容耦合。
盡量做到高內聚,中等程度的內聚也可以采用,堅決不使用低內聚。
?
問題十六:軟件結構設計的主要手段有哪些?應該遵循的最主要原理是什么?
軟件設計原理和啟發規則是軟件結構設計的兩大主要手段,模塊獨立性是其應遵循的最主要原理。
補充:層次圖、HIPO圖、結構圖,是描繪軟件結構的常用工具。
?
問題十七:講述一下什么是結構化設計方法。
結構化設計(SD)是一種面向數據流的設計方法,并基于模塊化、自頂向下逐步求精、結構化程序設計等技術,可與結構化分析(SA)方法銜接。
?
問題十八:數據處理的類型有哪兩種?請分別介紹一下。(也可問,信息流的類型有哪幾種)
? ? ?即:輸入+變換中心+輸出
? ? ? 2.事務流:數據沿著輸入通路到達一個事務中心,事務中心根據事務的類型在若干個活動流中選擇一個來執行,這種數據流稱作事務流。
?
問題十九:變換分析步驟有哪些?
?
/*************************詳細設計**************************/
?
問題二十:詳細設計階段的根本目標是什么?主要任務是什么?
詳細設計的根本目標是確定應該怎么具體的實現所需求的系統。主要任務是過程設計。需要注意,過程設計應該在數據設計、體系結構設計和接口設計之后進行,過程設計的主要內容是設計解題的詳細步驟,即算法。
Ps:接口設計中,人機界面設計是一個重要組成部分,設計原理是一個迭代過程,反復琢磨逐步求精。
?
問題二十一:過程設計工具有有哪些?
過程設計中,主要分為三類
補充:在過程設計中,有面向數據結構的設計方法,主要有Jackson方法和Warnier方法。
?
問題二十二:程序復雜程度的度量方法有哪些?
此為重要內容:環形復雜度有三種計算方法①數一數流圖的區域個數②V(G)=E-N+2;E是條數,N是結點數③V(G)=P+1;P是判定節點數目
? ? ?2. Halstead方法:根據程序中運算符和操作數的總數來度量程序的復雜度。
?
?
/***************************軟件測試***************************/
?
問題二十三:軟件測試和軟件開發有什么異同?
軟件開發過程是一個自頂向下、逐步求精的過程,而軟件測試過程是采用相反順序安排的自底向上,逐步集成的過程。
?
?
問題二十四:軟件測試的過程有哪幾個步驟?
?
問題二十五:單元測試有哪些內容?
總體上說,單元測試是依據詳細設計說明書和源程序清單,來了解該模塊的I/O條件和模塊的邏輯結構。主要采用白盒測試,輔以黑盒測試。
?
問題二十六:什么是黑盒測試?
黑盒測試法: 把程序看作一個黑盒子,完全不考慮程序的內部邏輯結構和內部特性。它只檢查程序功能是否能按照規格說明書的規定正常使用,程序是否能適當地接收輸入數據并產生正確的輸出信息,程序運行過程中能否保持外部信息的完整性。黑盒測試又稱為功能測試或基于規格說明書的測試。
黑盒測試包括:等價類劃分法、邊界值分析法、錯誤推測法、因果圖法、功能圖法和接口測試法。
補充:等價類劃分法不好理解,解釋一下。即將所有的輸入數據劃分成若干部分,然后從每一部分中選取少數有代表性的數據作為測試用例。
?
問題二十七:什么是白盒測試?
白盒測試法: 是把測試對象看成一個玻璃盒子,允許測試人員利用程序內部的邏輯結構及有關信息,設計測試用例對程序所有的邏輯路徑進行測試,通過在不同點檢查程序的狀態,確定實際狀態是否與預期一致。白盒測試又稱為結構測試或基于程序的測試。
白盒測試包括:邏輯覆蓋測試、基本路徑測試、控制機構測試和數據流測試。
?
問題二十八:白盒測試中的邏輯覆蓋測試主要有哪些?
首先,邏輯覆蓋測試指的是對所有的邏輯判定,取“真”與取“假”的兩種情況都至少測試一次??煞譃?.語句覆蓋2.判定覆蓋3.條件覆蓋4.判定——條件覆蓋5.條件組合覆蓋6.路徑覆蓋。
Ps:語句覆蓋是最弱的邏輯覆蓋,條件組合覆蓋是最強的邏輯覆蓋。
?
問題二十九:黑盒測試中使用各種測試方法的綜合策略是什么?
?
問題三十:什么是軟件調試?有哪些調試方法?
軟件調試,是在測試成功后進行的工作,用以進一步診斷和改正程序中的潛在錯誤。
調試由兩部分組成1.確定程序中可疑錯誤的確切性質和位置2.對程序修改,排除這個錯誤。
主要的調試方法有1.強行排錯2.回溯法調試3.對分查找法4.歸納法5.演繹法
?
//本文到此結束,麻煩關注我點個贊再走唄~~球球點個贊!
?
總結
以上是生活随笔為你收集整理的计算机考研复试之软件工程三十问的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux镜像文件没有gho,【iso文
- 下一篇: python gps坐标系utm坐标系等