軟件工程學習之七大實際開發模型的講解,及模塊化設計的理念

因為一些需要,需要把曾經學習過的軟件工程這門課程給從新學習一下,把自己的一些學習分享給大家,希望能夠一起進步

軟件的分類

軟件的發展

軟件危機的表現

為了解決軟件危機,所以誕生了軟件工程這門學科

軟件工程的內容

軟件生存週期

軟件的開發一般需要這8個階段協同發展,但是具體問題具體分析,有些軟件的開發並不一定都是要走這八個步驟,實際從事軟件開發工作時,軟件規模、開發環境及技術方法等因素會影響到階段劃分,及各階段的執行順序,形成不同生存週期模型,又稱過程模型

常用的軟件過程模型

瀑布模型

瀑布模型特點:

1.階段具有順序性和依賴性前一階段結束後一階段開始,前一個階段輸出文檔,後一個階段輸入文檔。

2.推遲實現觀點瀑布模型在編碼前設置系統分析、系統設計,推遲程序物理實現,保證前期工作紮實。

3.質量保證觀點瀑布模型每階段堅持兩個重要做法:是每階段都必須完成完整、準確的文檔。軟件開發時人員間通信、運行時期維護的重要依據。是每階段結束前對文檔評審。

瀑布模型由於是單向的,所以實際開發中如果一個步驟出現問題,是沒有辦法返回處理的,為了解決這個問題,實際開發中的瀑布模型是帶有反饋環的,就是說開發過程中如果之前的一部出現問題的話,還可以回去解決

優缺點

快速模型

根據用戶的主要需求,建立一個軟件原型,然後讓用戶進行評價,然後根據用戶的評價和提出的更多的需求來開發出相應的軟件產品

優缺點

增量模型,漸增模型

瀑布模型和快速模型都是一次性把軟件提交給客戶的,而增量模型是分批的把軟件提交給客戶的,但也要擔一定的風險,就是最後合在一起未必能成功

優缺點

螺旋模型

一個螺旋一個螺旋的開發,每走一圈軟件都會強大一次,而且每一圈都有風險分析,包括成本經濟效益等,一旦風險評估不通過,則開發立即結束,週期較長

優缺點

噴泉模型

每一個圓都是一個階段

優缺點

每個階段中對每個工作流的側重點是不一樣的,有的工作流中對測試側重,有的對其他的側重,比如初始主要業務建模和需求

優缺點

微軟工程

每個工程都有一個里程碑,只要達到里程碑就認為階段結束,就可以進入下一階段了,這五個階段是遞進式的,五個階段完成就形成一個軟件,形成一個版本

這樣安排好處是,假如版本1出現問題,或者想要升級,直接上版本2,這都很迅速的可以實現

需求分析階段

結構化的需求分析

具體步驟

1發現需求的辦法

需求出來之後,就需要根據需求找到最有用的需求,這個過程就是求精,然後我們要為需求建立模型,用圖形符號和阻止規則來描述事務,它有三個圖和一個數據字典組成

規格說明:書寫軟件需求規格說明,作為分析階段最終成果

複審:一定要複審,把需求問題解決,最好不要帶到下一個階段,不然會很費事

結構化設計之概要設計和詳細設計

經過需求分析階段之後,系統已經知道了現在應該怎麼做了。

總體設計就是概括的回答,系統應該如何實現的問題。因此總體設計又背稱為概要設計,或者初步設計。

詳細設計就是具體的實現所要求的數據,也就是說經過這個階段對系統目標,應該對系統目標進行精確描述,從而在編碼階段可以直接把這個設計翻譯成某種設計語言的書寫程序。

結構化設計與分析關係圖

設計的原理,設計應該遵循的基本原理和概念

模塊獨立

模塊的獨立程度可以由兩個定性標準度量,這兩個標準分別稱為內聚和耦合

耦合是模塊和模塊直接的,儘量追求低耦合

內聚是模塊內元素之間的,儘量追求低內聚

耦合

其它情況也屬於耦合

耦合原則

內聚

內聚總結

啟發規則

人們在長期的額軟件開發中積累了經驗,總結出了一些啟發式規則,能夠幫助他們找到改進軟件設計,提高軟件質量

下面介紹一下啟發規則

就是給出設計軟件結構的一個系統化的途徑

人機界面設計,就是如何讓用戶覺得界面用著很舒服

面向數據結構設計,數據結構既影響程序的結構也影響程序的處理過程,可從數據結構導出程序的處理過程,適合詳細

設計。最後可以形成偽代碼描述,根據偽代碼描述進行設計會很方便寫出相應的程序。

面向數據結構設計方法兩種:Jackson和Warnier方法

實現

編碼就是將設計文檔翻譯源代碼

黑盒測試:如果知道產品應具有功能,可通過測試來檢驗是否每個功能都能正常使用。

白盒測試:如果知道產品內部工作過程可通過測試來檢驗產品內部動作是否按照規格說明書的規定正常進行

測試準則

(1)所有測試應能追溯到用戶需求,測試的目的是發現錯誤,其中最嚴重的是不能滿足用戶需求的錯誤。

(2)應儘早地和不斷地進行軟件測試。

(3)充分注意測試中群集現象(Pareto原理)。 測試後程序中殘存錯誤數與程序中已發現錯誤數目成正比,80%錯誤與20%模塊有關。

(4)測試應從小規模開始,逐步進行大規模測試。

(5)不能做到窮舉測試。

(6)第三方測試原則

白盒測試的技術

白盒測試之邏輯覆蓋

白盒測試之控制結構測試

基本路徑測試和循環測試

基本路徑測試:

根據過程設計結果畫出相應流圖

計算流圖的環形複雜度

確定線性獨立路徑的基本集合(n獨立路徑:至少包含一條在定義該路徑之前不曾用過的邊。)

設計測試用例覆蓋基本集合的路徑

循環測試:

黑盒測試技術

因為不明確軟件的內部細節,所以測試軟件功能

黑盒發現錯誤類型

常見黑盒測試技術

(1)等價類劃分;

(2)邊界值分析;

(3)錯誤推測等

測試步驟

調試

軟件調試是在進行了成功的測試之後才開始的工作。它與軟件測試不同,調試的任務是進一步診斷和改正程序中潛在的錯誤

軟件可靠性