軟考筆記--軟件開發模型

軟件開發模型給出了軟件開發活動各個階段之間的關系,它是軟件開發過程的概括,是軟件工程的重要內容。軟件開發模型為軟件工程管理提供了里程碑和進度表,為軟件開發過程提供了原則和方法。

一.軟件開發模型概述

軟件開發模型可分為三種類型:1.以軟件需求完全確定為前提的瀑布模型;2.在軟件開發初期只能提供基本需求是采用的迭代式開發模型(如噴泉模型,螺旋模型,統一開發過程和敏捷方法等);3是以 形式化開發方法為基礎的變換模型。

1.瀑布模型

瀑布模型是一種嚴格定義方法,它將軟件開發的過程分為軟件計劃、需求分析、軟件設計、編碼實現、軟件測試,運行維護六個階段,最終得到軟件產品。

在瀑布模型中,依賴于早期進行的需求調查,不能適應需求的變化,由于是單一流程,開發中的經驗教訓不能反饋于本產品的過程,風險往往到后期的開發階段才顯露出來。

2.演化模型

演化模型主要針對事先不能完整定義需求的軟件開發,是在快速開發一個原型的基礎上,根據用戶在調用原型的過程中提出的反饋意見和建議,對原型進行改進,獲得原型的新版本,重復這一過程,直到演化成最終的軟件產品。演化模型的主要優點是:任何功能一經開發就能進入測試,以便驗證是否符合產品需求,其缺點是,如果不加以控制地讓用戶接觸開發中尚未穩定的功能,可能對開發人員及用戶都會產生負面影響。

3.螺旋模型

螺旋模型是瀑布模型與演化模型的結合,并加入兩者所忽略的風險分析所建立的一種軟件開發模型。螺旋模型是一種演化軟件過程模型,它將原型實現的迭代特征與線性順序模型中的控制的和系統化的方面結合起來,軟件開發是一系列的增量發布。螺旋模型沿著螺線進行若干次迭代,每次迭代包括制定計劃、風險分析、施工工程和客戶評價4個方面的工作。

4.噴泉模型

噴泉模型是一種以用戶需求為動力,以對象為驅動的模型,主要用于描述面向對象的軟件開發過程。該模型認為軟件開發過程自下而上的各階段是相互重疊呵呵多次反復的,就像水噴上去又可以落下來,類似噴泉。在噴泉模型中,各活動之間無明顯邊界,例如,分析和設計之間就沒有明顯的邊界。這種特性稱為無間隙性。

5.變換模型

變換模型是基于形式化規格說明語言和程序變換的軟件開發模型,它對形式化的軟件規格說明進行一系列自動或半自動的程序變換,最后映射為計算機能夠接受的軟件系統。

6.智能模型

智能模型也稱為基于知識的軟件開發模型,它綜合了上述若干模型,并把專家系統結合在一起,該模型應用基于規則的系統,采用規約和推理機制,幫助開發人員完成開發工作,并使維護在系統規格說明一級進行。

7.V模型

V模型是在快速應用開發的基礎上演變而來,由于將整個開發過程中構成一個V字而得名。V模型應用在軟件測試方面,和瀑布模型有一些共同的特征。V模型中的過程從左到右,描述了基本的開發過程和測試行為,其價值在于它非常明確地標明了測試過程中存在的不同級別,并清楚描述了這些測試階段和開發過程各階段的對應關系。

V模型強調軟件開發的協作和速度,將軟件實現和驗證有機結合起來,在保證較高的軟件質量情況下縮短開發周期。V模型適合企業級的軟件開發,它更清楚地揭示了軟件開發過程的特性及本質。

二.快速應用開發

快速應用開發RAD是一種比傳統生命周期法快得多的開發方法,它強調極短的開發周期。RAD模型是瀑布模型的一個高速變種,通過使用基于構件的開發方法獲得快速開發。

1.RAD的基本思想

RAD的基本思想主要體現在以下4個方面:

(1)讓用戶更主動的參與到系統分析、設計和構造活動中來。

(2)將項目開發組織成一系列重點突出的研討會,讓項目投資方、用戶、系統分析師、設計人員和開發人員一起參加。

(3)通過一種迭代的構造方法,加速需求分析和設計階段。

(4)讓用戶提前看到一個可以工作的系統。

2.RAD的開發階段

RAD的業務流程主要有業務建模,數據建模,過程建模,應用生成,測試與交付。

3.RAD的特點

RAD采用基于構件的開發方法,復用已有的程序結構或使用構件,或者創建可以復用的構件。RAD通過大量使用可復用構件,加快了開發速度,但是也有一些局限性:首先,并非所有應用都適合RAD,RAD對模塊化要求比較高,如果有些功能不能被模塊化,那么RAD所需要的構件就會有問題。其次,開發者和客戶必須在很短的時間內完成一些列需求分析;最后RAD只能適用于管理信息系統的開發,不適合技術風險很高的情況。

三.統一過程

統一過程UP是一個通用過程框架,可以用于種類廣泛的軟件系統,不同的應用領域、不同的組織類型、不同的性能水平和不同的項目規模,UP是基于構件的,在為軟件系統建模時,使用的是UML。UP具有三個顯著的特點:用例驅動,以構建為中心,迭代和增量。

1.RUP概述

RUP將項目管理、業務建模、分析與設計等統一起來,貫穿整個開發過程,采用Internet技術,可以增強團隊的開發效率,并為所有成員提供最佳的軟件實現方案。RUP中的軟件過程在時間上被分解為4個順序的階段:初始階段,細化階段,構件階段和交付階段。

2.初始階段

初始階段的任務是為系統建立業務模型并確定項目的邊界。在初始階段必須識別所有與系統交互的外部實體,定義系統與外部實體的特性。初始階段的實現過程包括:明確項目規模,評估項目風險,制定項目計劃,階段技術評審。

3.細化階段

細化階段的任務就是分析問題領域,建立完善的架構,淘汰項目中最高風險的元素。細化階段的實施過程包括:確定架構,制定構件階段計劃,建立支持環境,選擇構件,階段技術評審。

4.構件階段

在構件階段,要開發所有剩余的構件和應用程序功能,把這些構件集成為產品,并進行詳細測試。

5.移交階段

當基線已經足夠完善,可以安裝到最終與用戶實際環境中時,則進入交付階段。交付階段的重點是確保軟件對最終用戶是可以使用的。

四.敏捷方法

敏捷方法強調開發團隊與用戶之間的緊密協作、面對面的溝通、頻繁交付新的軟件版本、緊湊而自我組織型的團隊,更注重人的作用。

1.敏捷宣言

敏捷宣言認為個體和交互勝過過程和工具,可工作的軟件勝過大量的文檔,客戶合作勝過合同談判;響應變化勝過遵循計劃。敏捷方法強調讓客戶滿意和軟件盡早增量發布;小而高度自主的項目團隊;非正式的方法;最小化軟件工程工作產品以及整體精簡開發。

目前主要的敏捷方法:極限編程XP,自適應軟件開發,水晶方法,特性驅動開發FDD。

2.敏捷方法的特點

敏捷方法是一種以人為本、迭代、循序漸進的開發方法。在敏捷方法中,軟件項目的構件被切分為多個子項目,各個子項目成果經過測試,具備集成和可運行的特征。雖然敏捷方法發展很快,但是也暴露出了一些問題:客戶參與往往依賴于客戶參與的意愿和客戶自身的代表性;團隊成員的性格可能不適合激烈的投入;對系統的變更做出優先級排序可能是很困難的;維護系統的簡潔性往往需要額外的工作,可能沒時間執行系統簡化過程。

3.XP方法

敏捷方法中最有名的就是XP,XP是一種輕量級,高效,低風險,柔性,可預測的軟件開發方式,適用于中小型項目軟件開發團隊,并且客戶的需求模糊或者需求多變,與其他方法相比,具有一下不同點:

在更短的周期內,更早提出具體持續的反饋信息;迭代地進行計劃編制,首先在最開始迅速生成一個總體計劃,然后在整個項目開發過程中不斷發展;依賴于自動測試程序來監控開發進度,及早捕獲缺陷;依賴口頭交流,測試和源程序進行溝通;倡導持續的演化式的設計;依賴開發團隊內部的緊密合作。

XP的核心是其總結的四大價值觀,溝通,簡單,反饋,勇氣。

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

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

相關文章

第十一屆藍橋杯省賽第一場C++ A組 / B組《整數拼接》(c++)

1.題目說明 給定一個長度為 n 的數組 A1,A2,???,An。 你可以從中選出兩個數 Ai 和 Aj(i 不等于 j),然后將 Ai 和 Aj 一前一后拼成一個新的整數。 例如 12 和 345 可以拼成 12345 或 34512。 注意交換 Ai 和 Aj 的順序總是被視為 2 種拼法,即便是 …

考研倒計時半年:如何高效安排學習計劃?

距離考研還有半年的時間,這是一個既緊張又充滿希望的階段。如何利用好這段時間,制定一個高效的學習計劃,成為了每位考生關注的焦點。下面,我將為大家提供一些關于政治、英語和專業課的學習建議,希望能對大家有所幫助。…

曲線的凹凸性與拐點【高數筆記】

1.什么是曲線的凹凸性 2.什么是曲線的拐點 3.拐點的特征 4.拐點與駐點有什么不同 5.拐點的表示方法與駐點有什么不一樣 6.拐點與凹凸區間怎么求

力扣121題: 買賣股票的最佳時機

【題目描述】 給定一個數組 prices ,它的第 i 個元素 prices[i] 表示一支給定股票第 i 天的價格。你只能選擇 某一天 買入這只股票,并選擇在 未來的某一個不同的日子賣出該股票。設計一個算法來計算你所能獲取的最大利潤。返回你可以從這筆交易中獲取的最…

Mathtype安裝時word啟動顯示“文件未找到:MathPage.WLL”

背景 由于老板布置的臨時工作,需要安裝Mathtype,但嘗試了3個不同的版本后(每次都卸載干凈了),均未能成功安裝,出現的報錯3個版本各不相同: ①解壓安裝過程中失敗(這個版本不再嘗試…

GoFrame:如何簡單地搭建一個簡單地微服務

一切資料來源于GoFrame官網, 感興趣的, 可以直接去官網查閱相關資料。 首先下載框架工具, 下載地址:https://github.com/gogf/gf/releases 然后進入你想要放置的項目文件夾, 執行命令行 gf init {project_name} #project_name為你的項目名 執行完后項目結構如圖所示 然…

同等學力申碩專業介紹——教育學碩士

同等學力申碩的專業很多。 目前有十三大門類,分別是醫學、法學、管理學、工學、教育學、經濟學、藝術學、文學、歷史學、理學、哲學、農學、軍事學等,每個大門類中都有很多的細分專業。 今天為大家介紹同等學力申碩專業——教育學。 專業介紹 教育學該…

基于java+springboot動物檢疫信息管理系統設計和實現

基于java SSM springboot動物檢疫信息管理系統設計和實現 博主介紹:多年java開發經驗,專注Java開發、定制、遠程、文檔編寫指導等,csdn特邀作者、專注于Java技術領域 作者主頁 央順技術團隊 Java畢設項目精品實戰案例《1000套》 歡迎點贊 收藏 ?留言 文…

【寸鐵的刷題筆記】樹、dfs、bfs、回溯、遞歸(三)

【寸鐵的刷題筆記】樹、dfs、bfs、回溯、遞歸(三) 大家好 我是寸鐵👊 金三銀四,樹、dfs、bfs、回溯、遞歸是必考的知識點? 快跟著寸鐵刷起來!面試順利上岸👋 喜歡的小伙伴可以點點關注 💝 530. 二叉搜索樹的最小絕對差…

考研政治這樣復習更高效

政治復習是考研備考中的重要一環,需要考生制定科學的復習計劃,注重知識點的掌握和解題技巧的提升。以下是一些政治復習的建議: 梳理知識框架:首先,需要梳理政治學科的知識框架,了解各個章節之間的內在聯系…

【Vue3】自定義 Vue3 插件(全局實現頁面加載動畫)

// main.ts import { createApp } from vue import App from ./App.vue import Loading from "./components/Loading/index.ts";const app createApp(App) type Lod {show: () > void,hide: () > void } //編寫ts loading 聲明文件放置報錯 和 智能提示 decl…

python實現常見一元隨機變量的概率分布

一. 隨機變量 隨機變量是一個從樣本空間 Ω \Omega Ω到實數空間 R R R的函數,比如隨機變量 X X X可以表示投骰子的點數。隨機變量一般可以分為兩類: 離散型隨機變量:隨機變量的取值為有限個。連續型隨機變量:隨機變量的取值是連…

Redis 群集部署

1.關系型數據庫 關系型數據庫是一個結構化的數據庫,創建在關系模型基礎上,-般面向記錄。它借助于集合代數等數學概念和方法來處理數據庫中的數據。關系模型指二維表格模型,因而一個關系型數據庫就是由二維表及其之間的聯系組成的一個數據組織。現實世界中…

python及編程范式

編程范式 編程范式是一種基于特定的理論和原則來指導程序設計和開發風格的模型。它定義了編程語言的結構、風格、元素以及編寫程序時應遵循的規則。不同的編程范式提供了不同視角來解決問題,影響著代碼組織方式、執行流程以及如何表達程序邏輯。 OOP和FP 函數式編…

vue3監聽input保留兩位小數點

監聽input輸入框校驗 再次記錄下&#xff0c;這里沒封裝&#xff0c;僅演示~ 保留2位小數 只能輸入數字和兩位小數 <el-inputv-model"form.amount"oninput"valuevalue.replace(/[^0-9.]/g,).replace(/\.{2,}/g,.).replace(/^(\-)*(\d)\.(\d\d).*$/,$1$2.$3…

(2024,MixLoRA,任務干擾,獨立因子選擇,條件因子選擇)使用 LoRA 的條件混合進行多模態指令調優

Multimodal Instruction Tuning with Conditional Mixture of LoRA 公和眾和號&#xff1a;EDPJ&#xff08;進 Q 交流群&#xff1a;922230617 或加 VX&#xff1a;CV_EDPJ 進 V 交流群&#xff09; 目錄 0. 摘要 3. 任務干擾在多模態指令調優中的 LoRA 應用 3.1 背景&am…

小甲魚Python07 函數初級

一、創建和調用函數 pass語句表示一個空的代碼塊&#xff0c;我們經常先寫好函數&#xff0c;pass占一個坑&#xff0c;等規劃好之后再來填坑。 函數也是可以指定參數的&#xff0c;我們會把參數傳進去用來替代形參。 在Python里如果想要返回值&#xff0c;不需要指定函數的返…

仿牛客網項目---顯示評論和添加評論功能的實現

這篇文章&#xff0c;我來介紹一下我的項目中的另外一個功能&#xff1a;顯示評論和添加評論。 其實這兩個功能都不怎么重要&#xff0c;我感覺最重要的應該是用戶注冊登錄功能&#xff0c;這個也了解一下&#xff0c;知道這么一回事兒就好。 首先設計DAO層。 Mapper public …

python實現AES加密解密

1. 前言 AES是一種對稱加密&#xff0c;所謂對稱加密就是加密與解密使用的秘鑰是一個。 之前寫過一片關于python AES加密解密的文章&#xff0c;但是這里面細節實在很多&#xff0c;這次我從 參數類型、加密模式、編碼模式、補全模式、等等方面 系統的說明如何使用AES加密解密…

直觀理解卷積

卷積直觀理解 原文來自最容易理解的對卷積(convolution)的解釋 &#x1f3ac;個人簡介&#xff1a;一個全棧工程師的升級之路&#xff01; &#x1f4cb;個人專欄&#xff1a;計算機雜記 &#x1f380;CSDN主頁 發狂的小花 &#x1f304;人生秘訣&#xff1a;學習的本質就是極致…