考研複試面試問題---軟件工程

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和缺陷。

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

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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章