軟件工程---2.軟件過程

三個模型

  1. 瀑布模型
  2. 增量模型
  3. 集成和配置模型

沒有適用于所有不同類型軟件開發的過程模型。

瀑布模型

在這里插入圖片描述

  • 需求定義
  • 系統和軟件的設計
  • 實現與單元測試
  • 集成與系統測試
  • 運行與維護

瀑布模型的特征

  1. 從上一項活動中接受該項活動的工作成果(工作產品),作為輸入。
  2. 利用這一輸入實施該項活動應完成的內容
  3. 給出該項活動的工作成果,作為輸出傳給下一項活動
  4. 對該項活動實施的工作進行評審。若其工作得到確認,則繼續下一項活動。

瀑布模型的優點:

1.強調開發的階段性;
2.強調早期計劃及需求調查;
3.強調產品測試。

瀑布模型的缺點:

  • 從認識論角度看,人的認識是一個多次反復循環的過程,不可能一次完成。但瀑布模型中劃分的幾個階段,沒有反映出這種認識過程的反復性。 特別是瀑布模型過于依賴早期進行的唯一一次需求調查,不能適應需求的變化;
  • 軟件開發是一個知識密集型的開發活動,需要相互合作完成,但瀑布模型沒有體現這一點。特別是由于瀑布模型是單一流程,開發中的經驗教訓不能反饋應用于本產品的過程。

瀑布模型適合的系統種類

  • 嵌入式系統:軟件必須和硬件連接、交互,由于硬件不靈活,將軟件功能的決策推遲到開發階段通常不可行。
  • 關鍵性系統:要求在早期對軟件規格說明和設計的安全性和信息安全進行全面分析,在實現階段處理安全性問題通常代價非常大。
  • 大型軟件系統:需要完整的規格說明以使不同的子系統可以獨立開發。

增量模型

增量模型的特點

  • 增量模型又稱產品改進模型(Incremental Model)
  • 從給定需求開始,通過構造一系列中間版本來實施開發活動,依次類推,直到系統完成。
  • 每一個中間版本都是需求分析、設計、編碼和測試的過程。
  • 某些中間版本的開發可以并行進行。

增量模型的優點

  1. 降低了實現需求變更的成本。較瀑布模型而言,重新分析和修改文檔的工作流要少很多。
  2. 在開發過程中更容易得到客戶對已完成的開發工作的反饋意見。客戶可以對軟件的已有版本進行評價,并可以判斷項目進度;客戶通常會覺得從軟件設計文檔中評價項目、判斷項目進度很困難。
  3. 即使并未實現所有功能,也可以在早期向客戶交付有用的軟件,相對瀑布模型而言,客戶可以更早地使用軟件

增量模型的缺點

  1. 過程不可見。管理人員需要常規的交付物來掌握進度。如果系統是快速開發的,那么要產生每個版本的文檔就很不劃算。
  2. 伴隨新的增量的加入,系統結構會退化。敏捷方法建議定期對軟件重構。
  3. 面對大型、復雜以及長生命周期的系統,增量模型的以上缺點更為突出。大型系統不同部分由不同團隊開發,需要穩定的框架或體系結構,這種體系結構需要事先進行計劃而不是增量地開發。

集成與配置模型

尋找可復用的代碼,按照需求對他們進行修改,并將他們與新代碼相集成。

優點與缺點

優點

  • 基于配置和集成的面向復用的軟件工程在降低軟件開發量以及降低成本和風險方面有著明顯的優勢。
  • 可以實現更快的軟件交付

缺點

  • 系統可能不完全滿足用戶的真實需求
  • 可能失去對系統演化的控制,因為可復用構建的新版本并不在使用該構件的組織的控制之下。

軟件過程

軟件過程中的四個活動(牢記)

  1. 軟件需求規格說明(可行性分析、需求獲取、需求分析)
  2. 軟件開發(總體設計、詳細設計、實現)
  3. 軟件確認(測試)
  4. 軟件演化(維護)

應對變化(牢記)

  1. 變化預測:軟件過程包括可以在要求大量返工之前預見或預測可能的變化的活動,如原型。
  2. 變化容忍:基于過程和軟件設計手段,使系統修改變得容易。如增量模型、重構、框架。

過程改進的方法

  1. 過程成熟度方法。關注改進過程和項目管理,并將好的軟件工程實踐引入到組織中。目標是提高產品質量和過程的可預測性。
  2. 敏捷方法。關注迭代化的開發以及降低軟件工程中的額外開銷。主要特點是快速交付功能以及對客戶需求變更的快速響應。其哲學思想:最好的過程是那些額外開銷最低的過程。

過程成熟度方法:

CMM是指“能力成熟度模型"其英文全稱為Capability Maturity Model for Software,英文縮寫為SW-CMM,簡稱CMM
正式的過程改進中的額外開銷過高,小企業不用,有些大企業在實踐。

如何選擇軟件過程模型

  1. 前期需求明確的情況下盡量采用瀑布模型或改進型的瀑布模型.
  2. 在用戶無信息系統使用經驗,需求分析人員技能不足情況下一定要借助原型.
  3. 在不確定性因素很多,很多東西前面無法計劃情況下盡量采用RUP和螺旋模型
  4. 在需求不穩定情況下盡量采用RUP模型
  5. 在資金和成本無法一次到位情況下可以采用增量模型,軟件產品分多個版本進行發布
  6. 對于完全多個獨立功能開發可以在需求階段就分功能并行,但每個功能內都應該遵循瀑布模型
  7. 對于全新系統的開發必須在總體設計完成后再開始增量或并行.
  8. 對于編碼人員經驗較少情況下建議不要采用敏捷或迭代等生命周期模型.
  9. 增量,迭代和原型可以綜合使用,但每一次增量或迭代都必須有明確的交付和出口準則.

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/383116.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/383116.shtml
英文地址,請注明出處:http://en.pswp.cn/news/383116.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

軟件工程---3.敏捷軟件開發

敏捷軟件開發 極限編程(XP, Beck1999)Scrum方法(Schwaber and Beedle 2001)DSDM方法(Stapleton 2003) 敏捷軟件的開發宣言 個體和交互勝過過程和工具可以工作的軟件勝過面面俱到的文檔客戶合…

軟件工程---4.需求工程

需求工程定義 找出、分析、文檔化并且檢查需求的過程被稱為需求工程 需求的兩個描述層次 用戶需求,指高層的抽象需求。使用自然語言、圖形描述需求。系統需求,指底層的詳細需求。使用系統需求文檔(有時被稱為功能規格說明)應該…

軟件工程---5.系統建模

從不同視角對系統建模 外部視角,上下文模型,對系統上下文或環境建模交互視角,交互模型(功能模型),對系統與參與者或系統內構件之間的交互建模結構視角,結構模型(靜態模型&#xff0…

軟件工程---6.體系結構設計

體系結構模型是什么? 體系結構模型,該模型描述系統如何被組織為一組相互通信的構件 體系結構分類 小體系結構關注單個程序的體系結構。在這個層次上,我們關注單個的程序是如何補分解為構件的。大體系結構關注包括其他系統、程序和程序構件…

【劍指offer】_06 變態跳臺階

題目描述 一只青蛙一次可以跳上1級臺階,也可以跳上2級……它也可以跳上n級。求該青蛙跳上一個n級的臺階總共有多少種跳法。 解題思路 鏈接:https://www.nowcoder.com/questionTerminal/22243d016f6b47f2a6928b4313c85387 關于本題,前提是…

【劍指offer】_07 矩形覆蓋

題目描述 我們可以用21的小矩形橫著或者豎著去覆蓋更大的矩形。請問用n個21的小矩形無重疊地覆蓋一個2*n的大矩形,總共有多少種方法? 解題思路 依舊是斐波那契數列 2n的大矩形,和n個21的小矩形 其中target*2為大矩陣的大小 有以下幾種情形…

軟件工程---07.設計與實現

軟件設計和軟件實現 軟件設計是一個創造性的活動,在此活動中需要基于客戶需求識別軟件構件及其關系。軟件實現是將設計實現為一個程序的過程 為開發一個系統設計,你需要 理解并定義上下文模型以及系統的外部交互設計系統體系結構識別系統中的主要對象…

軟件工程---08.軟件測試

測試 測試的正向思維(確認測試) 向開發人員和客戶展示軟件滿足其需求測試的逆向思維(缺陷測試)找出可能導致軟件行為不正確原因。測試是更廣闊的軟件確認和驗證( Verification and Validation; V & V)過程的一部分。驗證和確…

軟件工程---15.軟件復用

復用的圖(牢記) 軟件復用的好處 開發加速有效的專家利用提高可依賴性降低開發成本降低過程風險符合標準 軟件復用的缺點 創建,維護以及使用一個構件庫查找,理解以及適配可復用構件維護成本增加缺少工具支持“不是在這里發明的”綜合癥 應用框架 現在…

軟件工程---16.基于構件的軟件工程

CBSE CBSE是定義、實現、集成或組裝松散耦合的獨立構件成為系統的過程。 基于構件的軟件工程的要素有: 完全由接口進行規格說明的獨立構件。構件標準使構件集成變得更為容易。中間件為構件集成提供軟件支持。開發過程適合基于構件的軟件工程。 CBSE的設計原則 構件是獨立的…

軟件工程---17.分布式軟件工程

分布式系統的5個優點 資源共享開放性并發性可伸縮性容錯性 分布式計算中必須考慮的設計問題 透明性:隱藏底層分布 開放性 可伸縮性 三個維度 規模:又分為增強擴展(單挑),增加擴展(群毆)分布可靠性 信息安全性 主要防止以下類型的攻擊 攔…

軟件工程---18.面向服務的軟件工程

什么是Web服務 一個松耦合、可復用的軟件構件,封裝了離散的功能,該功能是分布式的并且可以被程序訪問。Web服務是通過標準互聯網和基于XML的協議被訪問的服務。 服務和軟件構件之間的一個重要的區別是 服務應該總是獨立的和松耦合的Web 服務沒有“請求…

【劍指offer】_08.數值的整數次方

題目描述 給定一個double類型的浮點數base和int類型的整數exponent。求base的exponent次方。 保證base和exponent不同時為0 解題思路 首先一個數的任意次方,這個數有可能是負數和正數和零,然后次方也有可能是負數和正數和零 當這個數是零時&#xff…

【劍指offer】_09二叉搜索樹的后序遍歷序列

題目描述 輸入一個整數數組,判斷該數組是不是某二叉搜索樹的后序遍歷的結果。如果是則輸出Yes,否則輸出No。假設輸入的數組的任意兩個數字都互不相同。 解題思路 比如下面的這棵二叉搜索樹 它的后序遍歷為0214369875; 我們設當前根節點為root; 第一次…

【劍指offer】_10二叉樹和為某一路徑值

題目描述 輸入一顆二叉樹的跟節點和一個整數,打印出二叉樹中結點值的和為輸入整數的所有路徑。路徑定義為從樹的根結點開始往下一直到葉結點所經過的結點形成一條路徑。 解題思路 要求一路徑的和,那么必然終止條件為葉子結點,從根結點出發…

【劍指offer】_11整數中1出現的次數

題目描述 求出1~13的整數中1出現的次數,并算出100~1300的整數中1出現的次數?為此他特別數了一下1~13中包含1的數字有1、10、11、12、13因此共出現6次,但是對于后面問題他就沒轍了。ACMer希望你們幫幫他,并把問題更加普遍化,可以很快的求出任意非負整數區間中1出現的…

【劍指offer】_12 數組中的逆序對

題目描述 在數組中的兩個數字,如果前面一個數字大于后面的數字,則這兩個數字組成一個逆序對。輸入一個數組,求出這個數組中的逆序對的總數P。并將P對1000000007取模的結果輸出。 即輸出P%1000000007 解題思路 劍指offer的解法 看到這個題目&#xff0…

詳解Linux下通過yum安裝Mariadb/MySQL數據庫(騰訊云也適用)

1. 安裝Mariadb 安裝命令 yum -y install mariadb mariadb-server安裝完成MariaDB,首先啟動MariaDB systemctl start mariadb設置開機啟動 systemctl enable mariadbMariaDB的相關簡單配置 此命令進入到配置相關界面 mysql_secure_installation首先是設置密碼…

【劍指offer】_13 圓圈中最后的數

題目描述 年六一兒童節,牛客都會準備一些小禮物去看望孤兒院的小朋友,今年亦是如此。HF作為牛客的資深元老,自然也準備了一些小游戲。其中,有個游戲是這樣的:首先,讓小朋友們圍成一個大圈。然后,他隨機指定一個數m,讓編號為0的小朋友開始報數。每次喊到m-1的那個小朋友要出列唱…

【劍指offer】_14 不用加減乘除做加法

題目描述 寫一個函數,求兩個整數之和,要求在函數體內不得使用、-、*、/四則運算符號。 解題思路 首先看十進制是如何做的: 5712,三步走 第一步:相加各位的值,不算進位,得到2。 第二步&#x…