軟件工程面試題


轉載:https://www.kanzhun.com/k-mianshitimu/530929.html

一、軟件分析:是一個對用戶的需求進行去粗取精去偽存真、正確理解,然后把它用軟件工程開發語言表達出來的過程,基本任務是和用戶一起確定要解決的問題,建立軟件的邏輯模型,編寫需求規格說明書文檔並最終得到用戶的認可。

 

二、軟件設計(概要設計和詳細設計):主要任務就是將軟件分解成模塊使之能實現某個功能的數據和程序說明、可執行程序的程序單元。

數據流圖——


三、軟件編碼(單元測試):指把軟件設計轉換成計算機可以接受的程序,即寫成以某一程序設計語言表示的"源程序清單"。
四、軟件測試:目的是以較小的代價發現盡可能多的錯誤。要實現這個目標的關鍵在於設計一套出色的測試用例(測試數據和預期的輸出結果組成了測試用例)。

五、軟件維護:指在已完成對軟件的研制(分析、設計、編碼和測試)工作並交付使用以后,對軟件產品所進行的一些軟件工程的活動。根據軟件運行的情況,對軟件進行適當修改,以適應新的要求,以及糾正運行中發現的錯誤。

 

IPO圖

瀑布模型

測試覆蓋

判定表

PAD圖

SA 方法

DFD

 

三、簡答題(簡要回答下列問題,每小題4分)

1、什么是軟件工程?它目標和內容是什么?

軟件工程就是用科學的知識和技術原理來定義,開發,維護軟件的一門學科。

軟件工程目標:付出較低開發成本;達到要求的功能;取得較好的性能;開發的軟件易於移植;只需較低的維護費用;能按時完成開發任務,及時交付使用;開發的軟件可靠性高。

軟件工程內容:包括開發技術和開發管理兩個方面。

 

2、軟件開發中有哪幾種過程模型?哪些適用於面向對象的軟件開發?

軟件開發中常見的軟件過程模型有瀑布模型、原型模型、螺旋模型、噴泉模型、統一軟件過程等。

其中噴泉模型、統一軟件過程適用於面向對象的軟件開發。

 

3、什么是結構分析方法?該方法使用什么描述工具?

結構化分析:簡稱SA,面向數據流進行數據分析的方法。采用自頂向下逐層分解的分析策略。頂層抽象地描述整個系統,底層具體地畫出系統工程的每個細節。中間層則是從抽象到具體的過渡。使用數據流圖,數據字典,作為描述工具,使用結構化語言,判定表,判定樹描述加工邏輯。

 

4、什么是軟件概要設計?該階段的基本任務是什么?
把一個軟件需求轉換為軟件表示時,首先設計出軟件總的體系結構。稱為概要設計或結構設計。

基本任務:

⑴設計軟件系統結構

⑵進行數據結構及數據庫的設計

⑶編寫概要設計的文檔

⑷評審

 

5、軟件維護有哪些內容?

(1)校正性維護。在軟件交付使用后,一些隱含的錯誤在某些特定的使用環境下會暴露出來。為了識別和糾正錯誤,修改軟件性能上的缺陷,應進行確定和修改錯誤的過程,這個過程就稱為校正性維護。

(2)適應性維護。為了使應用軟件適應計算機硬件、軟件環境及數據環境的不斷發生的變化而修改軟件的過程稱為適應性維護。

(3)完善性維護。為增加軟件功能、增強軟件性能、提高軟件運行效率而進行的維護活動稱為完善性維護。

(4)預防性維護。為了提高軟件的可維護性和可靠性而對軟件進行的修改稱為預防性維護。

 

6、軟件測試要經過哪些步驟?這些測試與軟件開發各階段之間有什么關系?

軟件測試要經過的步驟是:單元測試→集成測試→確認測試→系統測試。

單元測試對源程序中每一個程序單元進行測試,檢查各個模塊是否正確實現規定的功能,從而發現模塊在編碼中或算法中的錯誤。該階段涉及編碼和詳細設計文檔。

集成測試是為了檢查與設計相關的軟件體系結構的有關問題,也就是檢查概要設計是否合理有效。

確認測試主要是檢查已實現的軟件是否滿足需求規格說明書中確定了的各種需求。

系統測試是把已確認的軟件與其他系統元素(如硬件、其他支持軟件、數據、人工等)結合在一起進行測試。以確定軟件是否可以支付使用。

 

7、什么是軟件生存周期?它有哪幾個活動?

軟件生存周期:一個軟件從提出開發要求開始直到該軟件報廢為止的整個時期。

包括:可行性分析和項目開發計划,需求分析,概要設計,詳細設計,編碼,測試,維護。

 

8、衡量模塊獨立性的兩個標准是什么?各表示什么含義?

內聚和耦合。

內聚:又稱為塊內聯系,指模塊內部各成分之間相互關聯的程度,以高內聚為設計目標。

耦合:也稱塊間聯系,模塊之間相互聯系程度的度量,聯系越緊密,耦合性越強,獨立性越差,以低耦合為設計目標。

 

9、什么是結構分析方法?結構化分析方法通過哪些步驟來實現?

結構化分析:簡稱SA,面向數據流進行數據分析的方法。采用自頂向下逐層分解的分析策略。頂層抽象地描述整個系統,底層具體地畫出系統工程的每個細節。中間層則是從抽象到具體的過渡。

實現的步驟:⑴了解當前系統的工作流程,獲得當前系統的物理模型。 ⑵抽象出當前系統的邏輯模型。 ⑶建立目標系統的邏輯模型。 ⑷作進一步補充和優化。

1、什么是需求分析?需求分析階段的基本任務是什么?

需求分析:開發人員准確地理解用戶的要求,進行細致的調查分析,將用戶非形式的需求陳述轉化為完整的需求定義,再由需求定義轉換到相應的需求規格說明的過程。

基本任務:

⑴問題識別

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

⑶編寫文檔

 

11、什么樣是”事物流”?什么是”變換流”?

數據流圖(DFD)一般可分為”變換流”,”事物流”兩種。

̶變換流”:由輸入﹑輸出﹑變換(或稱處理)三部分組成,是一順序結構。

̶事物流”:它的某個加工,分離成許多發散的數據流,形成許多加工路徑,並且根據輸入值選擇其中一個路徑來執行。(這人加工稱為事務處理中心)

 

12、單元測試有哪些內容?

單元測試主要針對模塊的以下五個基本特征進行測試:

(1)模塊接口

(2)局部數據結構

(3)重要的執行路徑

(4)錯誤處理

(5)邊界條件

 

13、什么是軟件生存周期模型?有哪些主要模型?

生存周期模型:描述軟件開發過程中各種活動如何執行的模型。對軟件開發提供強有力的支持,為開發過程中的活動提供統一的政策保證,為參與開發的人員提供幫助和指導,是軟件生存周期模型化技術的基礎,也是建立軟件開發環境的核心。

主要有:瀑布模型,增量模型,螺旋模型,噴泉模型,基於知識的模型,變換模型。

 

14、軟件設計的基本原理包括哪些內容?

⑴模塊化:模塊是軟件的組成部分,是具有獨立功能且可命名的一段程序,所有模塊組成整體,可以滿足問題的要求。

⑵抽象:認識復雜現象過程所使用權的工具,只考慮事物本質的共同特性,忽略細節和其它因素。通過抽象確定組成軟件的過程實體。

⑶信息隱蔽:將模塊實現自身功能的細節與數據”隱蔽”起來。模塊間僅交換為完成系統功能所必須的信息。

⑷模塊獨立性:每個模塊只完成系統要求的獨立的子功能。

 

15、結構化程序設計的基本要點是什么?

主要有三個:

1、采用自頂向下、逐步求精的程序設計方法

2、使用三種基本控制結構構造程序。任何程序都可以由順序、選擇、重復(循環)三種基本控制結構構造,這三種基本結構的共同點是單入口、單出口。

3、主程序員組的組織形式。

 

16、詳細設計有哪幾種描述方法?

詳細設計的描述方法有圖形、表格和語言,其中圖形常用結構化程序流程圖、盒圖和PAD(問題分析圖)為描述工具,語言常用過程設計語言(PDL)來作為工具。

 

17、單元測試中采用什么方法?

測試的方法是為被測試模塊編寫驅動模塊和樁模塊來實現被測試單元的可運行。通過驅動模塊來模擬被測試模塊的上級調用模塊,以上級模塊調用被測模塊的格式驅動被測模塊,接收被測模塊的測試結構並輸出。樁模塊則用來代替被測試模塊所調用的模塊。它的作用是返回被測模塊所需的信息。

 

18、什么是軟件配置管理?什么是基線?

軟件配置管理,簡稱SCM(Software Configuration Management),是指一組管理整個軟件生存期各階段中變更的活動。軟件配置管理技術可以使軟件變更所產生的錯誤達到最小並最有效地提高生產率。

基線:是軟件生存期中各開發階段的一個特定點,它的作用是把開發各階段工作的划分更加明確化,使本來連續的工作在這些點上斷開,以便於檢查與肯定階段成果。

 

19、簡述文檔在軟件工程中的作用?

文檔在軟件工程中的作用如下:

(1)提高軟件開發過程的能見度

(2)提高開發效率

(3)作為開發人員階段工作成果和結束標志

(4)記錄開發過程的有關信息便於使用與維護;

(5)提供軟件運行、維護和培訓有關資料;

(6)便於用戶了解軟件功能、性能。

 

20、軟件工程三要素之間的關系?

軟件質量是軟件工程的生命線,軟件工程以質量保證為基礎。

質量管理促進了過程的改進,創造了許多行之有效的軟件開發方法和工具。

軟件工程釆用層次化的方法,每個層次都包括過程、方法、工具三要素。

方法支撐過程和工具,過程和工具又促進方法學的研究。

 

21、說明面向對象的特征?

面向對象的特征是:

(1)對象唯一性。每個對象都有自身唯一的標識,在對象生存期中,其標識不變,不同的對象不能有不同的標識。

(2)分類性。是指將具有一致的數據結構(屬性)和行為(操作)的對象抽象成類

(3)繼承性。是子類自動共享父類數據結構和方法的機制,這是類之間的一種關系。

(4)多態性。是指相同的操作或函數過程可以作用於多種類型的對象上並獲得不同的結果。

 

22、簡述”變換分析”設計步驟。

⑴確定變換中心,邏輯輸入和輸出。

⑵設計軟件結構的頂層和第一層–變換結構。

⑶設計中﹑下層模塊,對第一層的模塊自頂向下分解。

⑷設計的優化 :輸入部分求精,每個物理輸入設置專門模塊,以體現系統的外部接口。其它輸入模塊與轉換數據模塊都很簡單時,可將它們合並。

 

23、請簡述可行性研究有哪些步驟?

復查系統規模和目標;研究當前的系統;導出新系統的高層邏輯模型;重新定義問題;導出和評價可供選擇的解決方案;推薦可行的行動方案;草擬開發計划;書寫文檔並提交審查。

 

24、請簡述黑盒測試和白盒測試有何區別,黑盒測試有哪些常用方法?

黑盒測試和白盒測試的區別:前者基於功能,后者基於結構;

黑盒測試常用方法有:邊界值、等價類、因果圖、錯誤推測法等。

 

25、什么是軟件可維護性?常見的軟件維護活動有哪幾類?

軟件可維護性的定義:軟件能夠被理解、校正、適應及增強功能的容易程度;

常見的軟件維護活動有:改正型、適應型、完善型、預防型。

 

26、CMM全稱是什么?分為哪幾個級別?

CMM全稱是軟件能力成熟度模型;

從無序到有序的進化分成5個級別,分別為:

1 初始級;2 可重復級;3 已定義級;4 已管理級;5 優化級。

 

27、什么是數據字典?簡述數據字典與數據流圖的關系。

數據字典是關於數據的信息的集合,對數據流程圖中的各個元素做完整的定義與說明,是數據流程圖的補充工具;

數據字典與數據流圖的關系:數據流圖和數據字典共同構成系統的邏輯模型,沒有數據字典數據流圖就不嚴格,然而沒有數據流圖數據字典也難於發揮作用。 數據流圖和對數據流圖中每個元素的精確定義放在一起,才能共同構成系統的規格說明。

 

28、軟件生命周期划分為哪幾個階段?

軟件生命周期分為三個時期八個階段:

軟件定義:問題定義、可行性研究;

軟件開發:需求分析、概要設計、詳細設計、編碼、測試;

軟件運行:軟件維護

 

29、簡述三種面向對象模型的主要功能?

①對象模型:表示了靜態的結構化的系統數據性質,描繪了系統的靜態結構,從客觀世界實體的對象關系角度來描繪對象。

②動態模型:該模型描述了系統的控制結構,它表示了瞬間的、行為化的系統控制性質,它關心的是系統的控制及操作的執行順序,它從對象的事件和狀態的角度出發,表現了對象的交互行為。

③功能模型:表示變化的系統“功能”性質,它指明系統應該“做什么”,因此功能模型更直接的反映了用戶對目標系統的要求。

 

30、詳細設計的基本任務是什么?

詳細設計的基本任務包括:為每個模塊進行詳細的算法設計;為模塊內的數據結構進行設計;對數據庫進行物理設計;其他設計;編寫詳細設計說明書;評審。

 

31、黑盒測試和白盒測試有什么區別?

(1)黑盒測試法: 把程序看作一個黑盒子,完全不考慮程序的內部結構和處理過程。它只檢查程序功能是否能按照規格說明書的規定正常使用,程序是否能適當地接收輸入數據並產生正確的輸出信息,程序運行過程中能否保持外部信息的完整性。黑盒測試又稱為功能測試,包含等價類划分法、邊界值法、錯誤推測法、因果圖法等。

(2)白盒測試法: 是把程序看成裝在一個透明的白盒子里,測試者完全知道程序的結構和處理算法。這種方法按照程序內部的邏輯測試程序,檢測程序中的主要執行通路是否都能按預定要求正確工作。白盒測試又稱為結構測試,包含邏輯覆蓋法和基本路徑測試法。

 

32、什么是軟件工程?軟件工程面臨的問題是什么?

軟件工程就是用科學的知識和技術原理來定義,開發,維護軟件的一門學科。

軟件工程面臨的問題:軟件的費用,可靠性,可維護性,軟件生產率和軟件的重用。

 

33、軟件工程三要素之間的關系?

軟件質量是軟件工程的生命線,軟件工程以質量保證為基礎。

質量管理促進了過程的改進,創造了許多行之有效的軟件開發方法和工具。

軟件工程釆用層次化的方法,每個層次都包括過程、方法、工具三要素。

方法支撐過程和工具,過程和工具又促進方法學的研究。

 

34、簡述結構化程序設計方法的基本要點。

(1)采用自頂向下,逐步求精的程序設計方法。

(2)使用三種基本控制結構構造程序,分別是順序,選擇和循環

(3)采用主程序員組的組織形式。

 

35、顧客在自動櫃員機中插入銀行卡,執行提款的服務項目;銀行職員要求自動櫃員機打印所有的提款數據。畫出自動櫃員機的Use Case圖。?

 

36、簡述提高可維護性的方法。

(1)建立明確的軟件質量目標;

(2)利用先進的軟件開發技術和工具;

(3)建立明確的質量保證工作;

(4)選擇可維護的程序設計語言;

(5)改進程序文檔。

 

37、簡述文檔在軟件工程中的作用。

(1)提高軟件開發過程的能見度;

(2)提高開發效率;

(3)作為開發人員階段工作成果和結束標志;

(4)記錄開發過程的有關信息便於使用與維護;

(5)提供軟件運行、維護和培訓有關資料;

(6)便於用戶了解軟件功能、性能。

 

38、什么是軟件危機?產生原因是什么?

軟件開發技術的進步未能滿足發展的要求。在軟件開發中遇到的問題找不到解決的辦法,問題積累起來,形態尖銳的矛盾,導致了軟件危機。

產生原因:

⑴ 軟件規模越來越大,結構越來越復雜。

⑵ 軟件開發管理困難而復雜。

⑶ 軟件包開發費用不斷增加。

⑷ 軟件開發技術落后。

⑸ 生產方式落后,仍采用手工方式。

⑹ 開發工具落后,生產率提高緩慢。

 

39、調試的目的是什么?調試有哪些技術手段?

調試則是在進行了成功的測試之后才開始的工作。調試的目的是確定錯誤的原因和位置,並改正錯誤,因此調試也稱為糾錯(Debug)。調試的技術手段有簡單的調試方法、歸納法、演繹法和回溯法等。

4、在傳統軟件工程方法指導下,數據流圖和數據字典的關系如何?

數據字典是關於數據的信息的集合,對數據流程圖中的各個元素做完整的定義與說明,是數據流程圖的補充工具。

數據流圖和數據字典共同構成系統的邏輯模型,沒有數據字典數據流圖就不嚴格,然而沒有數據流圖數據字典也難於發揮作用。 數據流圖和對數據流圖中每個元素的精確定義放在一起,才能共同構成系統的規格說明


免責聲明!

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



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