软件工程复试面试问题总结(二)
可行性研究
為什么要進行可行性研究
用最小的代價、在盡可能短的時間內確定問題是否能被解決。(注意:不是去解決問題)
可行性研究工具有哪些?
請介紹一下可行性研究的方法
首先分析問題,試探性的導出問題的各種解,然后進行各種分析和比較,選擇和推薦可行的解決方案。采用系統流程圖描述物理數據流;運用數據流圖并結合數據字典構建系統的邏輯模型。可行性研究的結果產生可行性研究報告。
軟件需求分析的任務是什么?有哪些主要步驟?
任務:
一、確定對系統的綜合要求
(1)功能需求:明確所開發的軟件必須具備什么樣的功能
(2)性能需求:明確待開發的軟件的技術性能指標
(3)環境需求:明確軟件運行時所需要的軟、硬件的要求
(4)用戶界面需求:明確人機交互方式、輸入輸出數據格式
二、分析系統的數據要求(任何一個軟件系統本質上都是信息處理系統,系統必須處理的信息和系統應該產生的信息在很大程度上決定了系統的面貌,對軟件設計有深遠影響,因此,必須分析系統的數據要求,這是軟件需求分析的一個重要任務。)
三、?導出系統的邏輯模型(綜合上述兩項分析的結果可以導出系統的詳細的邏輯模型,通常用數據流圖、實體-聯系圖、狀態轉換圖、數據字典和主要的處理算法描述這個邏輯模型。)
四、?修正系統開發計劃(根據在分析過程中獲得的對系統的更深入更具體的了解,可以比較準確地估計系統的成本和進度,修正以前制定的開發計劃。)
步驟:
1.需求獲取:從分析當前系統包含的數據開始,系統需求包括用戶對軟件功能的需求和界面的需求。
2.需求提煉:分析建模:圖像化的分析模型包括數據流圖,實體關系圖,控制流圖,狀態轉換圖,用例圖,類對象關系及其行為圖等。除系統模型外,更有系統關聯圖,創建用戶接口原型,確定需求優先級別等。
3.需求描述:編寫統一格式的文檔。
4.需求驗證:改善需求中的二義性,不一致的問題。
總體設計
總體設計過程分:
系統設計過程,確定系統的具體實現方案?;
結構設計階段,確定軟件結構
詳細設計
詳細設計的根本目標是確定應該怎樣具體地實現所要求的系統,也就是說,經過這個階段的設計工作,應該得出對目標系統的精確描述,從而在編碼階段可以把這個描述直接翻譯成用某種程序設計語言書寫的程序
主要任務是過程設計。需要注意,過程設計應該在數據設計、體系結構設計和接口設計之后進行,過程設計的主要內容是設計解題的詳細步驟,即算法。
接口設計中,人機界面設計是一個重要組成部分,設計原理是一個迭代過程,反復琢磨逐步求精。
軟件測試的目標是什么,主要有哪幾種測試方法??
軟件測試的目的:
(1)測試是為了發現程序中的錯誤而執行程序的過程;
(2)好的測試方案是極可能發現迄今為止尚未發現的錯誤的測試方案;
(3)成功的測試是發現了至今為止尚未發現的錯誤的測試。
從是否關心內部結構來看分為
(1)白盒測試:又稱為結構測試或邏輯驅動測試,是一種按照程序內部邏輯結構和編碼結構,設計測試數據并完成測試的一種測試方法。
(2)黑盒測試:又稱為數據驅動測試,把測試對象當做看不見的黑盒,在完全不考慮程序內部結構和處理過程的情況下,測試者僅依據程序功能的需求規范考慮,確定測試用例和推斷測試結果的正確性,它是站在使用軟件或程序的角度,從輸入數據與輸出數據的對應關系出發進行的測試。
(3)灰盒測試:是一種綜合測試法,它將“黑盒”測試與“白盒”測試結合在一起,是基于程序運行時的外部表現又結合內部邏輯結構來設計用例,執行程序并采集路徑執行信息和外部用戶接口結果的測試技術
軟件測試的過程有哪幾個步驟?
單元測試:檢查各個程序模塊是否完成了功能
集成測試:把測試過的模塊組裝起來,測試軟件體系結構
確認測試:檢查已經實現的軟件是否滿足了需求規格說明書的需求
系統測試:把已經確認的軟件納入實際運行環境,與其他系統成分一起測試
驗收測試:向用戶表明系統已經符合了用戶預期標準
什么是軟件調試?有哪些調試方法?
軟件調試,是在測試成功后進行的工作,用以進一步診斷和改正程序中的潛在錯誤。
調試由兩部分組成:1.確定程序中可疑錯誤的確切性質和位置2.對程序修改,排除這個錯誤。
主要的調試方法有:1.強行排錯2.回溯法調試3.對分查找法4.歸納法5.演繹法
軟件維護的目標是什么,有哪幾種維護類型?
目標:糾正在使用過程中暴露出來的錯誤而進行的改進型維護,適應外部環境的變化而進行的適應性維護,改進原有的軟件而進行的完善性維護,以及改進將來的可維護性和可靠性而進行的預防性維護。
類型
(1)糾錯性維護:由于前期的測試不可能揭露軟件系統中所有潛在的錯誤,用戶在使用軟件時仍將會遇到錯誤,診斷和改正這些錯誤的過程稱為糾錯性維護。
(2)適應性維護:由于新的硬件設備不斷推出,操作系統和編譯系統也不斷地升級,為了使軟件能適應新的環境而引起的程序修改和擴充活動稱為適應性維護。
(3)完善性維護:在軟件的正常使用過程中,用戶還會不斷地提出新的需求。為了滿足用戶新的需求而增加軟件功能的活動稱為完善性維護。
簡述提高軟件質量的主要措施
復審:是在軟件生命周期每個階段結束之前,都采用一定的標準對該段產生的軟件配置成分進行嚴格的正式或非正式的檢測。
復查:是檢查已有的材料,以斷定在軟件生命周期某個階段的工作是否能開始或繼續。
管理復審:是向開發組織或使用部門的管理人員提供有關項目的總體狀況、成本和進度等方面的情況,以便他們從管理角度對開發工作進行審查。
測試:包括測試計劃、測試過程和測試結果3個階段。
選擇一種程序設計語言的主要有哪些依據?
為了使程序容易測試和維護以減少生命周期的總成本,選用的高級語言應該有理想的模塊化機制,以及可讀性好的控制結構和數據結構;
為了便于調試和提高軟件可靠性,語言特點應該使編譯程序能夠盡可能多地發現程序中的錯誤;
為了降低軟件開發和維護的成本,選用的語言應該有良好的獨立編譯機制。
上述這些要求是選擇語言的理想標準,但是在實際選用語言時不能僅僅考慮理論上的標準,還必須同時考慮實用方面的各種限制。 (1)系統用戶的要求 (2)可以使用的編譯程序 (3)可以得到的軟件工具 (4)系統規模 (5)程序員的知識 (6)軟件可移植性要求 (7)軟件的應用領域
?
基本的軟件設計原理有哪些?
模塊化(使復雜問題“分而治之”)
抽象(抓事務本質特征,先不考慮細節)
逐步求精(集中精力先解決主要問題,盡量推遲對細節的考慮)
信息隱藏和局部化(將某些模塊的某些過程和數據隱藏起來,其他模塊不能訪問它)
模塊獨立性(模塊獨立性是模塊化、抽象、信息隱藏的直接產物)
?
總結
以上是生活随笔為你收集整理的软件工程复试面试问题总结(二)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Metro风格的开源项目 MahApps
- 下一篇: UnityEditor三自定义窗口 案例