軟體工程期末複習總結
軟體工程期末複習
1.什麼是軟體危機,為什麼會出現軟體危機?
2.什麼是軟體工程?
軟體工程是建立和使用一套合理的工程原則,以便經濟地獲得可靠的、可以在實際機器上高效執行的軟體。
軟體工程是(1)將系統化的、規範的、可量化的方法應用於軟體的開發、執行和維護,即將工程化方法應用於軟體。
(2)在(1)中所述方法的研究。
3.什麼是過程模型?常用的過程模型舉5個例子。每種模型的作用(使用範圍、優點、缺點)?
當開發產品或構建系統時,遵循一系列可預測的步驟(即路線圖)是非常重要的,它有助於及時交付高質量的產品。軟體開發中所遵循的路線圖就稱為“軟體過程”。
(1)通用過程模型。
(2)慣用過程模型:瀑布模型、增量過程模型、演化過程模型、螺旋模型、協同模型。
1.瀑布模型
瀑布模型的優點:有利於大型軟體開發過程中人員的組織、管理,有利於軟體開發方法和工具的研究,從而提高了大型軟體專案開發的質量和效率。
瀑布模型的缺點:(1)開發過程一般不能逆轉,否則代價太大;(2)實際的專案開發很難嚴格按該模型進行;(3)客戶往往很難清楚地給出所有的需求,而該模型卻要求如此。(4)軟體的實際情況必須到專案開發的後期客戶才能看到,這要求客戶有足夠的耐心。
瀑布模型的使用範圍:(1)使用者的需求非常清楚全面,且在開發過程中沒有或很少變化;(2)開發人員對軟體的應用領域很熟悉;(3)使用者的使用環境非常穩定;(4)開發工作對使用者參與的要求很低。
2.增量模型
增量模型的優點:
增量模型的缺點:(1)並行開發構件有可能遇到不能整合的風險,軟體必須具備開放式的體系結構;(2)增量模型的靈活性可以使其適應這種變化的能力大大優於瀑布模型和快速原型模型,但也很容易退化為邊做邊改模型,從而是軟體過程的控制失去整體性。
增量模型的使用範圍:(1)進行已有產品升級或新版本開發,增量模型是非常適合的;(2)對完成期限嚴格要求的產品,可以使用增量模型;(3)對所開發的領域比較熟悉而且已有原型系統,增量模型也是非常適合的。
3.螺旋模型。
螺旋模型的優點:(1)設計上的靈活性,可以在專案的各個階段進行變更;(2)以小的分段來構建大型系統,使成本計算變得簡單容易;(3)客戶始終參與每個階段的開發,保證了專案不偏離正確方向以及專案的可控性;(4) 隨著專案推進,客戶始終掌握專案的最新資訊 , 從而他或她能夠和管理層有效地互動。
螺旋模型的缺點:(1)採用螺旋模型需要具有相當豐富的風險評估經驗和專門知識,在風險較大的專案開發中,如果未能夠及時標識風險,勢必造成重大損失;(2)過多的迭代次數會增加開發成本,延遲提交時間。
螺旋模型的使用範圍:螺旋模型只適合於大規模的軟體專案。
4.快速原型模型
快速原型模型的優點:(1)可以得到比較良好的需求定義,容易適應需求的變化;(2)有利於開發與培訓的同步;(3)開發費用低、開發週期短且對使用者更友好。
快速原型模型的缺點:(1)客戶與開發者對原型理解不同;(2) 準確的原型設計比較困難;(3) 不利於開發人員的創新。
快速原型模型的使用範圍:(1)對所開發的領域比較熟悉而且有快速的原型開發工具;(2)專案招投標時,可以以原型模型作為軟體的開發模型;(3)進行產品移植或升級時,或對已有產品原型進行客戶化工作時,原型模型是非常適合的。
(3)專用過程模型:形式化方法模型。
4.什麼是RUP(統一過程)(特點、有點、缺點)
統一過程嘗試著從傳統的軟體過程中挖掘最好的特質和性質,但是以敏捷軟體開發中許多最好的原則來實現。統一過程認識到與客戶溝通以及從使用者的角度描述系統並保持該描述的一致性的重要性。它建立了迭代的、增量的過程流,提供了演進的特性。
RUP 具有很多長處:提高了團隊生產力,在迭代的開發過程、需求管理、基於元件的體系結構、視覺化軟體建模、驗證軟體質量及控制軟體變更等方面,針對所有關鍵的開發活動為每個開發成員提供了必要的準則、模板和工具指導,並確保全體成員共享相同的知識基礎。它建立了簡潔和清晰的過程結構,為開發過程提供較大的通用性。
但同時它也存在一些不足: RUP只是一個開發過程,並沒有涵蓋軟體過程的全部 內容,例如它缺少關於軟體執行和支援等方面的內容;此外,它沒有支援多專案的開發結構,這在一定程度上降低了在開發組織內大範圍實現重用的可能性。可以說 RUP是一個非常好的開端,但並不完美,在實際的應用中可以根據需要對其進行改進並可以用OPEN和OOSP等其他軟體過程的相關內容對RUP進行補充和完善。
5.特徵與特徵集(分析與設計題)
特徵驅動開發(FDD)描述了一個可用於中、大型軟體專案的適應性敏捷過程。
在FDD中,特徵“是可以在2周或更短時間實現的具有客戶價值的功能”。強調特徵的定義是為了如下好處:
特徵是小塊可交付功能,使用者可以更容易地對其進行描述、輕鬆地理解他們之間的相互關係,更好地評審以發現歧義性、錯誤和遺漏。
特徵可以組織為具有層次關係的業務相關的分組。
由於特徵是FDD可以交付的軟體增量,團隊每兩週便可以開發出可供使用的特徵。
由於特徵很小,其設計和程式碼表示都可以很容易、很有效地檢查。
專案計劃、進度和跟蹤都由特徵層次驅動,而不是可任意調整的軟體工程任務集。
例如:一個電子商務應用專案的特徵可能如下所示:
將產品加入購物車
顯示產品詳細技術說明
為顧客儲存購物資訊
一個特徵集將相關特徵分在一個業務相關的類別中。
例如:出售一件商品是一個特徵集,它包含上面提到的及其他特徵。
7.什麼是需求工程,哪些主要內容
需求工程是指致力於不斷理解需求的大量任務和技術。從軟體過程的角度來看,需求工程是一個軟體工程動作,開始於溝通活動並持續到建模活動。它必須適應於過程、專案、產品和人員工作的需要。
需求工程過程通過執行七個不同的活動來實現:起始、匯出、精化、協商、規格說明、確認和管理。
8.場景建模用例圖、E-R圖、資料字典、資料流圖、類圖
9.SRS的主要內容有哪些?
10.執行器-感測器的順序圖
11.設計概念(列舉5個,並解釋)
12.23個設計模式(5個並解釋),什麼是設計模式?
設計模式(Design pattern)是一套被反覆使用、多數人知曉的、經過分類編目的、程式碼設計經驗的總結。使用設計模式是為了可重用程式碼、讓程式碼更容易被他人理解、保證程式碼可靠性。 毫無疑問,設計模式於己於他人於系統都是多贏的;設計模式使程式碼編制真正工程化;設計模式是軟體工程的基石脈絡,如同大廈的結構一樣。
設計模式分為三種類型,共23種。
建立型模式:單例模式、抽象工廠模式、建造者模式、工廠模式、原型模式。
結構型模式:介面卡模式、橋接模式、裝飾模式、組合模式、外觀模式、享元模式、代理模式。
行為型模式:模版方法模式、命令模式、迭代器模式、觀察者模式、中介者模式、備忘錄模式、直譯器模式(Interpreter模式)、狀態模式、策略模式、職責鏈模式(責任鏈模式)、訪問者模式。
13.體系結構型別、風格、模式。
14.管道-過濾器。
15.資料流圖,對映。
16.程式流圖、盒圖、PAD圖、偽碼、判定表。
17.面對物件分析與結構化分析的異同?
其中部分圖片沒有顯示,完整文件下載地址: