計算機考研復試面試常問問題 軟件工程篇


計算機考研復試面試常問問題 軟件工程篇

使用前需知(拒絕白嫖,從你我做起,你只需點個贊就行):

需要pdf直接打印版,可在公眾號"程序員寶藏"回復復試上岸獲取(會持續更新)

在復習過程中,我用心查閱並整理了在考研復試面試中可能問到的大部分問題,並分點整理了答案,可以直接理解背誦並加上自己的語言潤色!極力推薦打印下來看,效率更高!

聲明:一些邊邊角角的沒有收集,畢竟是考研面試,不是筆試,這樣也能減輕大家的負擔!

此系列一共有8篇:編程語言篇|數據結構篇|操作系統篇|組成原理篇|計算機網絡篇|數據庫篇|軟件工程篇|計算機專業英語篇(還未全部完成,敬請期待,你們的支持和關注是我最大的動力!)

個人整理,不可用於商業用途,轉載請注明出處。

需要408電子書2021版,可在公眾號"程序員寶藏"回復408電子書獲取

需要408初試視頻2021版,可在公眾號"程序員寶藏"回復408視頻獲取

需要復試機試視頻,可在公眾號"程序員寶藏"回復機試必過獲取

加油,大家都可以上岸!!!讓我們一起努力!!!


1、什么是軟件工程?目前有哪幾種主要的軟件工程方法?

概括地說,軟件工程是指導計算機軟件開發和維護的一門工程學科.采用工程的概念、原理、技術、和方法來開發與維護軟件,把經過時間考驗而證明正確的管理技術和當前能夠得到的最好的技術方法結合起來,以經濟地開發出高質量的軟件並有效地維護它,這就是軟件工程。它涉及程序設計語言、數據庫、軟件開發工具、系統平台、標准、設計模式等方面。

主要有傳統方法也稱為經典軟件工程方法或生命周期方法或結構化范型和面向對象方法。

2、軟件的生命周期

軟件生命周期又稱為軟件生存周期或系統開發生命周期,是軟件的產生直到報廢的生命周期。軟件生存周期包括:

(1)問題定義:弄清"用戶需要計算機解決什么樣的問題”,提出"系統目標和范圍的說明“,提交用戶審查和確認。

(2)可行性分析:把待開發系統的目標以明確的語言描述出來,並從經濟、技術、法律等多個方面進行可行性分析。

(3)需求分析:弄清用戶對軟件系統的全部需求,編寫需求規格說明書和初步的用戶手冊,提交評審。

(4)開發階段:設計、實現(完成源程序的編碼)、測試

(5)維護:改正性維護(由於開發測試的不徹底、不完全),適應性維護(適應環境變化),完善性維護(使用過程中提出的一些建設性意見),預防性維護(改善軟件系統的可維護性和可靠性)。

3、軟件過程

軟件生命周期所涉及的一系列相關過程,是指一套關於項目的階段、狀態、方法、技術和開發、維護軟件的人員以及相關Artifacts(計划、文檔、模型、編碼、測試、手冊等)組成。包含基本過程類、支持過程類、組織過程類。

(1)基本過程類包括獲取過程、供應過程、開發過程、運作過程、維護過程和管理過程。

(2)支持過程類包括文檔過程、配置管理過程、質量保證過程、驗證過程、確認過程、聯合評審過程、審計過程以及問題解決過程。

(3)組織過程類包括基礎設施過程、改進過程、培訓過程。

4、軟件需求分析的任務是什么?有哪些主要步驟?

需求分析的基本任務是深入描述軟件的功能和性能、確定軟件設計的約束和軟件同其它系統元素的接口細節、定義軟件的其它有效性需求,總之,需求分析的任務就是借助於當前系統的邏輯模型導出目標系統的邏輯模型,解決目標系統的 “做什么” 的問題。

主要步驟

1.問題識別

(1)功能需求:明確所開發的軟件必須具備什么樣的功能。

(2)性能需求:明確待開發的軟件的技術性能指標。

(3)環境需求:明確軟件運行時所需要的軟、硬件的要求。

(4)用戶界面需求:明確人機交互方式、輸入輸出數據格式。

2.分析與綜合,導出軟件的邏輯模型

分析人員對獲取的需求,進行一致性的分析檢查,在分析、綜合中逐步細化軟件功能,划分成各個子功能。用圖文結合的形式,建立起新系統的邏輯模型。

3.編寫文檔

(1)編寫“需求規格說明書”,把雙方共同的理解與分析結果用規范的方式描述出來,作為今后各項工作的基礎。

(2)編寫初步用戶使用手冊,着重反映被開發軟件的用戶功能界面和用戶使用的具體要求,用戶手冊能強制分析人員從用戶使用的觀點考慮軟件。

(3)編寫確認測試計划,作為今后確認和驗收的依據。

(4)修改完善軟件開發計划。在需求分析階段對待開發的系統有了更進一步的了解,所以能更准確地估計開發成本、進度及資源要求,因此對原計划要進行適當修正。

5、軟件工程模型

常見軟件工程模型如下:

1)瀑布模型:將軟件生命周期中的各個活動規定為線性連接的模型,包括需求分析、設計、編碼、測試、運行與維護,由前至后、相互銜接的固定順序,如同瀑布流水逐級下落。

瀑布模型是以文檔作為驅動、適合於軟件需求很明確的軟件項目的模型。

2)V模型:瀑布模型的一個變體,提供了一種驗證確認活動應用於早期軟件工程工作中的方法。

瀑布模型的優點:1)容易理解,管理成本低;2)強調開發的階段性早期計划及需求調查和產品測試。

瀑布模型的缺點:1)客戶必須能夠完整、正確和清晰地表達他們的需要;2)開始2個或3個階段,很難評估真正的進度;3)項目結束時,出現大量的集成和測試工作;4)需求或設計中的錯誤往往只有到了項目后期才能夠被發現,對於項目風險的控制能力較弱,從而導致項目常常延期完成,開發費用超出預算。

3)增量模型:融合了瀑布模型的基本成分和原型實現的迭代特征,它假設可以將需求分段為一系列增量產品,每一增量可以分別開發。

使用增量模型,第1個增量往往是核心的產品。客戶對每個增量的使用和評估都作為下一個增量發布的新特征和功能,這個過程在每一個增量發布后不斷重復,直到產生了最終的完善產品。增量模型強調每一個增量均發布一個可操作的產品。

增量模型的優點:1)容易理解,管理成本低;2)強調開發的階段性早期計划及需求調查和產品測試;3)第一個可交付版本所需要的成本和時間很少;4)開發由增量表示的小系統所承擔的風險不大;5)減少用戶需求的變更;6)運行增量投資,即在項目開始時,可以僅對一個或兩個增量投資。

增量模型的缺點:1)如果沒有對用戶的變更需求進行規划,那么產生的初始增量可能會造成后來增量的不穩定;2)如果需求不想早期思考的那樣穩定和完整,那么一些增量就可能需要重新開發,重新發布;3)管理發生的成本、進度和配置的復雜性可能會超出組織的能力。

4)演化模型:是迭代的過程,軟件開發人員能逐步開發出更完整的軟件版本,適用於軟件需求缺乏准確認識的情況,典型的演化模型有原型模型和螺旋模型。

4.1)演化模型之原型模型:是預期系統的一個可執行版本,反映了系統性的一個選定的子集,一個原型不必滿足目標軟件的所有約束,目的是能快速、低成本地構建原型。

原型模型開始於溝通,其目的是定義軟件的總體目標,標識需求,然后快速制定原型開發的計划,確定原型的目標和范圍,采用快速射擊的方式對其進行建模,並構建原型。

根據原型的目的,可分為三種:1)探索型原型:目的是弄清目標的要求,確定所希望的特性,並探討多種方案的可行性;2)實驗型原型:目的是驗證方案或算法的合理性,是在大規模開發和實現前,用於考查方案是否合適、規格說明是否可靠等;3)演化型原型:目的是將原型作為目標系統的一部分,通過對原型的多次改進,逐步將原型演化成最終的目標系統。

4.2)演化型模型之螺旋模型:將瀑布模型與演化模型結合起來,加入了兩種模型均忽略的風險分析,彌補了這兩種模型的不足。螺旋模型將開發過程分為幾個螺旋周期,每個螺旋周期大致和瀑布模型相符合:

螺旋模型強調風險分析,使得開發人員和用戶對每個演化層出現的風險有所了解,從而做出應有的反應。因此,該模型特別適用於龐大、復雜並且具有高風險的系統。

5)噴泉模型:一種以用戶需求為動力,以對象作為驅動的模型,適合於面向對象的開發方法。它克服了瀑布模型不支持軟件重用和多項開發活動集成的局限性,噴泉模型使開發過程具有迭代性和無間隙性。

優點:提高軟件項目的開發效率,節省開發時間。

缺點:開發階段是重疊的,開發過程中需要大量的開發人員,不利於項目的管理。需要嚴格的管理文檔,使得審核的難度加大。

6、簡述結構化分析、設計的要點:

結構化分析方法適合於數據處理類型軟件的需求分析。 其要點是"自頂向下"地開發系統,由整體到各組成部分,由表及里,由抽象到具體,逐步求精.

(1) 模塊化 (2)由頂向下,逐步求精.(3)上層模塊分解為下層模塊,有三種不同的結構形式,即順序結構,選擇結構和循環結構.

7、軟件測試的目標是什么,有哪幾種主要有測試方法? 軟件測試的目標:

(1)測試是為了發現程序中的錯誤而執行程序的過程;

(2)好的測試方案是極可能發現迄今為止尚未發現的錯誤的測試方案;

(3)成功的測試是發現了至今為止尚未發現的錯誤的測試。

軟件測試的方法有動態測試、靜態測試和正確性證明。

a.黑盒測試: 黑盒測試是將被測軟件看出一個黑盒子,只考慮系統的輸入和輸出,完全不考慮程序內部的邏輯結構和處理過程。 黑盒測試的依據是開發各階段的需求規格說明。

b.白盒測試:白盒測試是將黑盒子打開,研究源代碼和程序內部的邏輯結構;

8、白盒測試主要有哪些覆蓋?

語句覆蓋、判定覆蓋、 條件覆蓋、判定/條件覆蓋、條件組合覆蓋、 點覆蓋、 邊覆蓋、路徑覆蓋

9、選擇一種程序設計語言的主要有哪些依據?

為了使程序容易測試和維護以減少生命周期的總成本,選用的高級語言應該有理想的模塊化機制,以及可讀性好的控制結構和數據結構;

為了便於調試和提高軟件可靠性,語言特點應該使編譯程序能夠盡可能多地發現程序中的錯誤;

為了降低軟件開發和維護的成本,選用的語言應該有良好的獨立編譯機制。

上述這些要求是選擇語言的理想標准,但是在實際選用語言時不能僅僅考慮理論上的標准,還必須同時考慮實用方面的各種限制。 (1)系統用戶的要求 (2)可以使用的編譯程序 (3)可以得到的軟件工具 (4)系統規模 (5)程序員的知識 (6)軟件可移植性要求 (7)軟件的應用領域

10、軟件的維護的目標是什么,有哪幾種維護類型?

糾正在使用過程中暴露出來的錯誤而進行的改進性維護,適應外部環境的變化而進行的適應性維護,改進原有的軟件而進行的完善性維護,以及改進將來的可維護性和可靠性而進行的預防性維護。 軟件維護的分類: 軟件維護主要划分為糾錯性維護、適應性維護和完善性維護。

(1)糾錯性維護。由於前期的測試不可能揭露軟件系統中所有潛在的錯誤,用戶在使用軟件時仍將會遇到錯誤,診斷和改正這些錯誤的過程稱為糾錯性維護。

(2)適應性維護。由於新的硬件設備不斷推出,操作系統和編譯系統也不斷地升級,為了使軟件能適應新的環境而引起的程序修改和擴充活動稱為適應性維護。

(3)完善性維護。在軟件的正常使用過程中,用戶還會不斷地提出新的需求。為了滿足用戶新的需求而增加軟件功能的活動稱為完善性維護。

11、簡述提高軟件質量的主要措施。

復審:是在軟件生命周期每個階段結束之前,都采用一定的標准對該段產生的軟件配置成分進行嚴格的正式或非正式的檢測。

復查:是檢查已有的材料,以斷定在軟件生命周期某個階段的工作是否能夠開始或繼續。

管理復審:是向開發組織或使用部門的管理人員提供有關項目的總體狀況、成本和進度等方面的情況,以便他們從管理角度對開發工作進行審查。

測試:包括測試計划、測試過程和測試結果3個階段。

12、面向對象如何實現模塊獨立性,其耦合和內聚的含義是什么?

因為對象是由數據及可以對這些數據施加的操作所組成的統一體,而且對象是以數據為中心的,操作圍繞對其數據所需做的處理來設置,沒有無關的操作。因此,對象內部各種元素彼此結合得很緊密。內聚性相當強,由於完成對象所需要的元素(數據和方法)基本上都被封裝在對象內部,它與外界的聯系自然就比較少。因此,對象之間的耦合通常比較松。總之,面向對象使用對象、類、繼承和消息的方法,既使用類和繼承等機制,而且對象之間僅能通過傳遞消息實現彼此通信來實現模塊的獨立性。

13、面向對象和面向過程軟件工程有哪些區別?

(1)面向過程就是分析出解決問題所需要的步驟,然后用函數把這些步驟一步一步實現,使用的時候一個一個依次調用就可以了;面向對象是把構成問題事務分解成各個對象,建立對象的目的不是為了完成一個步驟,而是為了描敘某個事物在整個解決問題的步驟中的行為。

(2)面向過程是把一件事一項工程分解成為一個個小的功能,用一個個函數來實現;面向對象是把事情看成是一個個小的對象組成的,或者說一個個小部分組成的,這些對象之間的相互關系,構成了整個項目.在面向對象的思想中,萬物皆對象。而"類",就是對象的抽象或者說是概括。

14、簡述對象、類、消息、方法的基本概念。

(1)對象是人們要進行研究的任何事物,從最簡單的整數到復雜的飛機等均可看作對象,它不僅能表示具體的事物,還能表示抽象的規則、計划或事件。

(2)類是具有相同或相似性質的對象的抽象。對象的抽象是類,類的具體化就是對象,也可以說類的實例是對象。類具有屬性,它是對象的狀態的抽象,用數據結構來描述類的屬性。 類具有操作,它是對象的行為的抽象,用操作名和實現該操作的方法來描述。

(3)對象之間進行通信的結構叫做消息。在對象的操作中,當一個消息發送給某個對象時,消息包含接收對象去執行某種操作的信息。發送一條消息至少要包括說明接受消息的對象名、發送給該對象的消息名(即對象名、方法名)。一般還要對參數加以說明,參數可以是認識該消息的對象所知道的變量名,或者是所有對象都知道的全局變量名。

(4)類中操作的實現過程叫做方法,一個方法有方法名、參數、方法體。

15、簡述面向對象分析設計的三個模型。

答:三個模型:對象模型、動態模型、功能模型

(1)對象模型描述系統的靜態結構,包括類和對象,它們的屬性和操作,以及它們之間的關系。構造對象模型的目的在於找出與應用程序密切相關的概念。對象模型用包含對象及對象的關系圖表示。

(2)動態模型着重於系統的控制邏輯,考察在任何時候對象及其關系的改變,描述這些涉及時序和改變的狀態。動態模型包括狀態圖和事件跟蹤圖。狀態圖是一個狀態和事件的網絡,側重於描述每一類對象的動態行為。事件跟蹤圖則側重於說明系統執行過程中的一個特點“場景”,也叫做腳本(scenarios),是完成系統某個功能的一個事件序列。腳本通常起始於一個系統外部的輸入事件,結束於一個系統外部的輸出事件。

(3)功能模型着重於系統內部數據的傳送和處理。功能模型表明,通過計算,從輸出數據能得到什么樣的輸出數據,但不考慮參加計算的數據按什么時序執行。功能模型由多個數據流圖組成,它們指明從外部輸出,通過操作和內部存儲,直到外部輸出的整個數據流情況。功能模型還包括了對象模型內部數據間的限制。功能模型中的數據流圖往往形成一個層次結構,一個數據流圖的過程可以由下一層的數據流圖作進一步的說明。

16、UML 里面有哪些圖?

UML 圖包括九種:使用案例圖、類圖、對象圖、構件圖、部署圖、活動圖、協作圖、狀態圖、序列圖。在這些圖中使用案例圖、類圖、序列圖是最有用的。 1、需求 采用用例圖描述需求。 2、 分析 采用類圖描述靜態結構 采用順序圖、合作圖、活動圖、狀態圖描述動態行為 3、設計 采用類圖、包,對類的接口進行設計 4、 實現 將類用某現象對象語言實現 5、繼承與交付 構件圖、包、部署圖 6、 測試 單元測試——類圖和類的說明書

17、 軟件系統的三個測試階段

開發測試:在開發過程中對系統進行測試以發現bug和缺陷。

發布測試: 在系統發布給用戶之前,單獨的測試團隊測試系統的完整版本。

用戶測試 : 其中系統的用戶或潛在用戶在自己的環境中測試系統。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM