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