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