軟件工程(敏捷過程和極限編程)

1,敏捷過程

為了使軟件開發團隊具有高效工作和快速響應變化的能力,17位著名的軟件專家于2001年2月聯合起草了敏捷軟件開發宣言。

敏捷軟件開發宣言由下述4個簡單的價值觀聲明組成

(1)個體和交互勝過過程和工具

優秀的團隊成員是軟件開發項目獲得成功的最重要因素;當然,不好的過程和工具也會使最優秀的團隊成員無法發揮作用。

團隊成員的合作、溝通以及交互能力要比單純的軟件編程能力更重要。

正確的做法是,首先致力于構建軟件開發團隊(包括成員和交互方式等),然后再根據需要為團隊配置項目環境(包括過程和工具)。

(2)可以工作的軟件勝過面面俱到的文檔

軟件開發的主要目標是向用戶提供可以工作的軟件而不是文檔;但是,完全沒有文檔的軟件也是種災難。開發人員應該把主要精 力放在創建可工作的軟件上面,僅當迫切需要并且具有重大意義時,才進行文檔編制工作,而且所編制的內部文檔應該盡量簡明扼要、主題突出。

(3)客戶合作勝過合同談判

客戶通常不可能做到一次性地把他們的需求完整準確地表述在合同中。能夠滿足客戶不斷變化的需求的切實可行的途徑是,開發團隊與客戶密切協作,因此,能指導開發團隊與客戶協同工作的合同才是最好的合同。

(4)響應變化勝過遵循計劃

軟件開發過程中總會有變化,這是客觀存在的現實。一個軟件過程必須反映現實,因此,軟件過程應該有足夠的能力及時響應變化。然而沒有計劃的項目也會因陷入混亂而失敗,關鍵是計劃必須有足夠的靈活性和可塑性,在形勢發生變化時能迅速調整,以適應業務和技術等方面發生的變化。

在理解上述4個價值觀時應該注意,這些聲明只不過是對不同因素在保證軟件開發成功方面所起作用的大小做了比較,說一個元素更重要并不是說其他因素不重要,更不是說某個因素可以被其他因素代替。

根據上述價值觀提出的軟件過程統稱為敏捷過程,其中最重要的是極限編程

2,極限編程

極限編程(eXtreme Programming,XP)是敏捷過程中最富盛名的一個,其名稱中“極限”二字的含義是指把好的開發實踐運用到極致。目前.極限編程已經成為種典型的開發方法,廣泛應用于需求模糊且經常改變的場合。

(1)極限編程的有效實踐

下面簡述極限編程方法采用的有效的開發實踐。

客戶作為開發團隊的成員

必須至少有一名客戶代表在項目的整個開發周期中與開發人員在- -起緊密地配合工作,客戶代表負責確定需求、回答開發人員的問題并且設計功能驗收測試方案。

使用用戶素材

所謂用戶素材就是正在進行的關于需求的談話內容的助記符。根據用戶素材可以合理地安排實現該項需求的時間。

短交付周期

每兩周完成一次的迭代過程實現了用戶的一些需求,交付出目標系統的-個可工作的版本。通過向有關的用戶演示迭代生成的系統,獲得他們的反饋意見。

驗收測試

通過執行由客戶指定的驗收測試來捕獲用戶素材的細節。

結對編程

結對編程就是由兩名開發人員在同一臺計算機上共同編寫解決同-個問題的程序代碼,通常一個人編碼,另一個人對代碼進行審查與測試,以保證代碼的正確性與可讀性。結對編程是加強開發人員相互溝通與評審的一種方式。

測試驅動開發

極限編程強調“測試先行”。在編碼之前應該首先設計好測試方案,然后再編程,直至有測試都獲得通過之后才 可以結束工作。

集體所有

極限編程強調程序代碼屬于各個開發小組集體所有,小組每個成員都有更改代碼的權利,每個成員都對全部代碼的質量負責。

持續集成

極用編程主張在一天之內多次集成系統,而且隨著需求的變更 .應該不斷地進行回歸測試

可持續的開發速度

開發人員以能夠長期維持的速度努力工作,XP規定開發人員每周工作時間不超過40小時 、連續加班不可以超過兩周,以免降低生產率。

開放的工作空間

XP項目的全體參與者(開發人員、客戶等)一起在個開放的場所中工作。項目組成員在這個場所中自由地交流和討論。

及時調整計劃

計劃應該是靈活的、循序漸進的。制定出項目計劃之后.必須根據項目進展情況及時進行調整,沒有一成不變的計劃。

簡單的設計

開發人員應該使設計與計劃要在本次迭代過程中完成的用戶索材完全匹配,設計時不需要考慮未來的用戶素材。在一次次的迭代過程中,項目組成員不斷變更系統設計,使之相對于正在實現的用戶素材而言始終處于最優狀態。

重構

所謂代碼重構就是在不改變系統行為的前提下,重新調整和優化系統的內部結構,以降低復雜性、消除冗余、增加靈活性和提高性能。應該注意的是.在開發過程中不要過分依賴重構。特別是不能輕視設計,對于大中型系統而言,如果推遲設計或者干脆不做設計,將造成一場災難。

使用隱喻

可以將隱喻看作把整個系統聯系在一起的全局視圖,它描述系統如何運作,以及用何種方式把新功能加人到系統中。

(2)極限編程的整體開發過程

上圖描述了極限編程的整體開發過程。首先,項目組針對客戶代表提出的“用戶故事"(用戶故事類似于用例,但比用例更簡單,通常僅描述功能需求)進行討論,提出隱喻,在此項話動中可能需要對體系結構進行“試探"(所謂試探就是提出相關技術難點的試探性解決方案)。然后,項目組在隱喻和用戶故事的基礎上,根據客戶設定的優先級制訂交付計劃(為了制訂出切實可行的交付計劃,可能需要對某些技術難點進行試探)。接下來開始多個選代過程(通常每個迭代歷時1~3周),在迭代期內產生的新用戶故事不在本次迭代內解決,以保證本次開發過程不受干擾。開發出的新版本軟件通過驗收測試之后交付用戶使用。

(3)極限編程的迭代過程

上圖描述了極限編程的迭代開發過程。項目組根據交付計劃和“項目速率”(即實際開發時間和估計時間的比值),選擇需要優先完成的用戶故事或待消除的差錯,將其分解成可在1~2天內完成的任務,制訂出本次迭代計劃。然后通過每天舉行一次的“站立會議”(與會人員站著開會以縮短會議時間,提高工作效率),解決遇到的問題,調整迭代計劃,會后進行代碼共享式的開發工作。所開發出的新功能必須100%通過單元測試,并且立即進行集成,得到的新的可運行版本由客戶代表進行驗收測試。開發人員與客戶代表交流此次代碼共享式編程的情況,討論所發現的問題,提出新的用戶故事,算出新的項目速率,并把相關的信息提交給站立會議。

綜上所述,以極限編程為杰出代表的敏捷過程,具有對變化和不確定性的更快速、更敏捷的反應特性,而且在快速的同時仍然能夠保持可持續的開發速度。上述這些特點使得敏捷過程能夠較好地適應商業競爭環境下對小型項目提出的有限資源和有限開發時間的約束。

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

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

相關文章

軟件工程(可行性研究講解)

可行性研究 可行性研究的目的,就是用最小的代價在盡可能短的時間內確定問題是否能夠解決。(只是尋找客戶所提需求的解決方案,能干還是不能干的問題。) 可行性研究實質上是要進行一次大大壓縮簡化了的系統分析和設計的過程。 GB…

軟件工程(系統流程圖講解)

系統流程圖是概括地模型物理系統的工具。 基本符號 系統符號 系統流程圖的習慣畫法是使信息在圖中從頂向下或從左到右流動。 例子 某裝配廠有一座存放零件的倉庫,倉庫中現有的各種零件的數量以及每種零件的庫存量臨界值等數據記錄在庫存清單主文件中。當倉庫中零…

軟件工程(數據流圖)

數據流圖有4種基本符號: 正方形或(立方體)表示數據的源點或者終點; 圓角矩形(或圓形)代表變換數據的處理; 開口矩形(或兩條平行橫縣)代表數據存儲; 箭頭表…

網絡互聯基礎(1)

網絡互聯的基本概念 計算機網絡起始于20世紀60年代,當時網絡的概念主要是基于主機(Host)架構的低速串行(Serial)連接,提供應用程序執行、遠程打印和數據服務功能。IBM的系統網絡架構(System Network Architecture,SNA)于非IBM公司的X.25公用…

Python二級筆記(9)

知識點: 1,算法的空間復雜點是指算法在執行過程中所需要的內存空間。 2,結構化程序設計的思想包括:自頂向下、逐步求精、模塊化,限制使用goto語句。 3,字典中的“鍵”可以是整數或者字符串,但…

Python二級筆記(10)

知識點: 1,線性表的鏈式存儲結構中每個結點都由數據域與指針域兩部分組成,增加了存儲空間,所以一般要多于順序存儲結構。 2,軟件測試是為了發現錯誤而執行程序的過程,測試要以查找錯誤為中心。 3&#x…

Qt圖形界面編程入門(6)

類的私有繼承方式 ①基類公有成員和保護成員都作為私有成員被派生類繼承,派生類自身的函數可直接訪問他們,但是派生類對象則只能通過本類的公有函數間接地訪問它們。 ②基類的私有成員成為派生類中更加封閉的私有成員,派生類內部成員函數也…

Qt圖形界面編程入門(7)

派生類的構造函數和析構函數 基類的構造函數和析構函數不能被繼承。 在派生類中,如果派生類新增的成員進行初始化,就必須加入新的構造函數。與此同時,對所有從基類繼承下來的成員的初始化工作還是由基類的構造函數完成,必須在派…

Python二級筆記(11)

知識點: 1,在棧中,棧頂指針top動態反映了棧中元素的變化情況,在循環隊列中,隊尾指針和隊頭指針的動態變化決定隊列的長度,在鏈式存儲結構中.無論是循環鏈表還是線性鏈表,插入和刪除元素時&…

Python二級筆記(12)

知識點: 1,機器周期的同步標準是指CPU訪問存儲器一次所需要的時間 2,int()函數可以將整數字符串轉換成整數,也可以將浮點數轉化為整數,但是不能將其他字符串轉換成整數。 3,當max(函數的參數是字典時&am…

Python二級筆記(13)

知識點: 1,機器數,不管是正數還是負數,其補碼的符號位取反即是偏移碼。 2,循環隊列是隊列的一種順序存儲結構 3, break語句會跳出break所在的最內層循環; try中 的語句出錯時會被捕獲異常,執行except下的…

Python二級筆記(14)

知識點: 1,在循環鏈表中,只要指出表中任何一個結點的位置,就可以從它出發不重復地訪問到表中其他所有的結點。 單向鏈表只有從頭指針開始,沿各結點的指針掃描鏈表中的所有結點。 雙向鏈表從任何一一個結點位置出發就可以訪問到表中其他所有結…

Python二級筆記(15)

知識點: 1,數據流圖(DFD)的作用是支持系統功能建模 2,一個數據庫可以有多個外模型(也稱子模式或用戶模型),但概念模型和內模式(物理模式)只能有一個。 3&a…

Linux基礎(管道符、重定向、轉義字符與環境變量)

1、輸入輸出重定向 簡而言之,輸入重定向是指把文件導入到命令中,而輸出重定向則是指把原本要輸出到屏幕的數據信息寫入到指定文件中。 標準輸入重定向(STDIN,文件描述符為0):默認從鍵盤輸入,也…

軟件工程(數據流圖例題詳解)

假設一家工廠的采購部每天需要一張訂貨報表,報表按零件編號排序,表中列出所有需要再次訂貨的零件。對于每個需要再次訂貨的零件應該列出下述的數據:零件編號,零件名稱,訂貨數量,目前價格,主要供…

軟件工程(數據流圖的命名、用途和自動化邊界)

數據流圖中每個成分的命名是否恰當,直接影響數據流圖的可理解性。因此,給這些成分起名字時應該仔細推敲。 命名 1.為數據流(或數據存儲)命名 (1)名字應代表整個數據流(或數據存儲)的內容,而不是僅僅反映它的某些成分。 (2)不要使用空洞的…

軟件工程(數據字典)

數據字典 數據字典是關于數據的信息的集合,也就是對數據流圖中包含的所有元素的定義的集合。 任何字典最主要的用這都是供人查閱對不了解的條目的解釋,數據字典的作用也正是在軟件分析和設計的過程中給人提供關于數據的描述信息。 數據流圖和數據字典共…

Qt圖形界面編程入門(Qt的歷史、Qt安裝資源鏈接、Qt Creator簡介)

Qt的歷史淵源 Qt是1991年由挪威的奇趣科技(Trolltech)公司開發的跨平臺C圖形用戶界面(GUI)用程序開發框架,2008年,奇趣科技公司被諾基亞公可收購,Qt也因此成為諾基亞公司旗下的編程語言工具,曾稱霸一時的Symbian手機操作系統就是…

Qt圖形界面編程入門(創建一個簡單的程序)

1,手工編碼方式 利用手工編碼方式建立“Hello Qt!”程序 第一步: 得到界面 2,無UI的向導方式 從圖中,我們發現向導為窗口程序提供了3個基類,分別外QMainWindow、QWidget、QDialog,3個基類的區…

Linux基礎(Vim編輯器與Shell命令腳本)

1、Vim文本編輯器 Vim文本編輯器有三種模式 命令模型:控制光標移動,可對文本進行復制、粘貼、刪除和查找得等工作。 輸入模式:正常的文本錄入 末行模式:保存或退出文檔,以及設置編輯環境。 在每次運行Vim編輯器時&…