




已閱讀5頁,還剩74頁未讀, 繼續(xù)免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
敏捷軟件開發(fā)方法簡介 以極限編程為例,宋揚 北京大學地球與空間科學學院 2003年5月18日,主 要 內 容,敏捷方法的含義 軟件過程的比較 極限編程( eXtreme Programming ,XP)簡介 準則 法則 活動 實踐 討論和應用實例,“敏捷”的含義,輕巧、機敏、迅捷、靈活、活力、高效 敏捷過程很容易適應變化并迅速做出自我調整,在保證質量的前提下,做到文檔、度量適度。 適用于各類軟件企業(yè),敏捷方法產生的背景,現(xiàn)代軟件的 復雜性 軟件越來越復雜 可變性 需求越來越多變 一致性 過程越來越規(guī)范,軟件開發(fā)過程敏捷化趨勢,據(jù)國際著名咨詢機構Cutter Consortium對全球200位IS/IT經理所做的調查 3個占優(yōu)的重載方法: 51% Rational Unified Process 27% CMM 26% ISO 9000 大約50%的被調查者預計到2003年其50%以上的項目會使用敏捷方法;14%的被調查者認為其所有的項目會使用敏捷方法。 From THE DECISION IS IN: AGILE VERSUS HEAVY METHODOLOGIES, VOL. 2, NO. 19, by Robert Charette,Senior Consultant, Cutter Consortium,敏捷價值觀,“注重個人及互動勝于過程和工具” “注重可用的軟件勝于詳盡的文檔” “注重客戶協(xié)作勝于合同談判” “注重響應變化勝于恪守計劃” ,敏捷宣言12條原則,1.最優(yōu)先的目標是通過盡早地、持續(xù)地交付有價值的軟件來滿足客戶。 2.歡迎需求變化,甚至在開發(fā)后期。敏捷過程控制、利用變化幫助客戶取得競爭優(yōu)勢。 3.頻繁交付可用的軟件,間隔從兩周到兩個月,偏愛更短的時間尺度。 4.在整個項目中業(yè)務人員和開發(fā)人員必須每天在一起工作。 5.以積極主動的員工為核心建立項目,給予他們所需的環(huán)境和支持,信任他們能夠完成工作。 6.在開發(fā)團隊內外傳遞信息最有效率和效果的方法是面對面的交流。,7.可用的軟件是進展的主要度量指標。 8.敏捷過程提倡可持續(xù)發(fā)展。發(fā)起人、開發(fā)者和用戶應始終保持穩(wěn)定的步調。 9.簡化使必要的工作最小化的藝術是關鍵。 10.持續(xù)關注技術上的精益求精和良好的設計以增強敏捷性。 11.最好的架構、需求和設計產生于自我組織的團隊。 12.團隊定期地對運作如何更加有效進行反思,并相應地調整、校正自己的行為。,代表方法,瑞理統(tǒng)一開發(fā)過程:Rational Unified Process 敏捷建模:Agile Modeling 極限編程:eXtreme Programming 自適應軟件開發(fā):Adaptive Software Development 水晶方法體系:Crystal etc.,RUP(Rational Unified Process),需求,設計,實現(xiàn),測試,分析,核心工作流程,先啟,精化,構造,轉移,精化過程中的反復過程,初步的反復過程,反復序列,RUP是Rational公司的改進過程的規(guī)范,它被設計成一種由用例驅動的、以體系結構為中心的軟件開發(fā)過程,它以迭代的方式前進,通過執(zhí)行工作流程遞增地產生結果。 它的主要四個階段是先啟、精化、構建和轉移,五個核心工作流程為需求、分析、設計、實現(xiàn)和測試。 由于RUP是一種框架,你可以以不同的方式來使用它,如象非常傳統(tǒng)的“瀑布” 式開發(fā)方式,或敏捷式,如dX。你可以把用得輕捷靈便,也可把它弄成繁文縟節(jié)。這取決于你如何在你的環(huán)境中對它裁剪運用。,XP到RUP的映射,CRC卡片:Class-Responsibility-Collaborator,Agile Modeling,AM是一種最近才出現(xiàn)的軟件思想 AM是一種輕方法論 XP實踐既給了AM靈感,也是AM的一種具體實現(xiàn),AM核心原則,主張簡單 擁抱變化. 你的第二個目標是可持續(xù)性。簡單的說,你在開發(fā)的時候,你要能想象到未來。 遞增的變化 令投資人的投資最大化 有目的的建模 多種模型 高質量的工作 快速反饋 軟件是項目的主要目標 輕裝前進,AM補充原則,內容比表示更重要 三人行必有我?guī)?了解你的模型 了解你的工具 局部調整 開放誠實的溝通,自適應軟件開發(fā),ASD的核心是三個非線性的、重迭的開發(fā)階段:猜測,合作與學習。,水晶方法體系,水晶方法體系與XP一樣,都有以人為中心的理念,但在實踐上有所不同。水晶方法體系考慮到人們一般很難嚴格遵循一個紀律約束很強的過程,因此,與XP的高度紀律性不同,水晶方法體系探索了用最少紀律約束而仍能成功的方法,從而在產出效率與易于運作上達到一種平衡。也就是說,雖然水晶系列不如XP那樣的產出效率,但會有更多的人能夠接受并遵循它。,ISO9000,PDCA循環(huán),即由計劃(PLAN)、實施(DO)、檢查(CHECK)、處理(ACTION)這四個密切相關的階段所構成的工作方式 持續(xù)改進,面向對象軟件工程概念模型,極限編程( eXtreme Programming ) 輕量級敏捷軟件開發(fā)方法,極限編程(XP)是一種全新而快捷的軟件開發(fā)方法。XP團隊使用現(xiàn)場客戶、特殊計劃方法和持續(xù)測試來提供快速的反饋和全面的交流。這可以幫助團隊最大化地發(fā)揮他們的價值。,XP誕生了大概有5年 XP是以開發(fā)符合客戶需要的軟件為目標而產生的一種方法論 XP是一種以實踐為基礎的軟件工程過程和思想 XP認為代碼質量的重要程度超出人們一般所認為的程度 XP特別適合于小型的有責任心的、自覺自勵的團隊開發(fā)需求不確定或者迅速變化的軟件,XP準則 XP軟件開發(fā)是什么樣的,溝通 簡單 反饋 勇氣 有益的潛在補充準則: 尊重 謙遜,溝通,XP認為項目成員之間的溝通是項目成功的關鍵,并把溝通看作項目中間協(xié)調與合作的主要推動因素。,簡單,XP假定未來不能可靠地預測,在現(xiàn)在考慮它從經濟上是不明智的,所以不應該過多考慮未來的問題而是應該集中力量解決燃眉之急。,反饋,XP認為系統(tǒng)本身及其代碼是報告系統(tǒng)開發(fā)進度和狀態(tài)的可靠依據(jù)。系統(tǒng)開發(fā)狀態(tài)的反饋可以作為一種確定系統(tǒng)開發(fā)進度和決定系統(tǒng)下一步開發(fā)方向的手段。,勇氣,代表了XP認為人是軟件開發(fā)中最重要的一個方面的觀點。在一個軟件產品的開發(fā)中人的參與貫穿其整個生命周期,是人的勇氣來排除困境,讓團隊把局部的最優(yōu)拋之腦后,達到更重大的目標。 表明了XP對“人讓項目取得成功”的基本信任態(tài)度。,XP的法則 一項實踐在XP環(huán)境中成功使用的依據(jù),快速反饋 假設簡單性 遞增更改 提倡更改 優(yōu)質工作,快速反饋,XP提倡盡可能早地、迅速地每天反饋,讓編程人員始終把注意力放在最重要的軟件功能上,促使系統(tǒng)快速演進。,XP迭代過程,假設簡單性,XP試圖把注意力集中在能工作的盡可能最簡單的實現(xiàn)上;另一方面,可以根據(jù)給定的項目資源條件,最優(yōu)地分配項目資源。,遞增更改,XP認為首次更改就嘗試重大更改絕對不會成功,提倡以重構概念為基礎做小改動,用期望的功能逐步增強系統(tǒng)。,提倡更改,最佳策略是在實際解決最重要的問題的前提下保留最多選項的那一個,在交付最需要的東西上保留選擇余地。,優(yōu)質工作,XP活動 XP軟件開發(fā)的基石,編碼 測試 傾聽 設計,編碼,作為一種輕量級方法論,XP明確放棄了系統(tǒng)建檔和分析以外的任何外在活動。分析保留為一種相當簡單,但是在和客戶的日常溝通中發(fā)生的持續(xù)活動。文檔則明確不予鼓勵,所以編碼成為XP最主要的活動。,測試,為了確保編寫好的代碼能實踐工作,XP提倡編寫大量測試來檢查代碼是否正確。,傾聽,XP編程人員傾聽客戶和其他編程人員的需求和意圖。,設計,從日常的編碼中返回來進行一些一般性設計,小的設計成為XP編程人員日常事務的一部分。,XP的實踐 項目成員用戶成功執(zhí)行XP活動的技術,1.現(xiàn)場客戶(On-site Customer) 2.計劃游戲(Planning Game) 3.系統(tǒng)隱喻(System Metaphor) 4.簡單設計(Simple Design) 5.代碼集體所有(Collective Code Ownership) 6.結對編程(Pair Programming) 7.測試驅動(Test-driven) 8.小型發(fā)布(Small Releases) 9.重構(Refactoring) 10.持續(xù)集成(Continuous integration) 11.每周40小時工作制(40-hour Weeks) 12.代碼規(guī)范(Coding Standards),XP層次結構,過程,團隊實踐,編程,現(xiàn)場客戶、測試、計劃游戲、小型發(fā)布,簡單設計、測試、重構、編碼標準,代碼集體所有、持續(xù)集成、隱喻、編碼標準、每周40小時工作制、結對編程、小型發(fā)布,1 現(xiàn)場客戶,始終在開發(fā)團隊中有一位客戶。 現(xiàn)場客戶的工作: 回答問題 編寫驗收測試 運行驗收測試 指導迭代 接受版本,2 計劃游戲,以業(yè)務優(yōu)先級和技術估計為基礎,決定下一版本發(fā)布的范圍。,3 系統(tǒng)隱喻,在XP中,隱喻是一種概念框架并提供名稱的描述系統(tǒng),類似于其他方法中的體系結構(或體系結構基準)。 共識 共享的術語空間 例子:Windows風格的界面、網(wǎng)上購物站點的購物車,4 簡單設計,系統(tǒng)應設計得盡可能簡單。,聚沙成塔,集腋成裘,5 代碼集體所有,整個團隊擁有所有代碼。任何人都可以更改他們需要更改的部分。沒有唯一對代碼有所有權的人。,題外話一 編程的樂趣(F P. Brooks),創(chuàng)造的快樂 開發(fā)對他人有用的東西 整體過程的魅力 持續(xù)學習的快樂 來自于易于駕馭的介質上工作 編程的快樂在于它不僅滿足了我們內心深處進行創(chuàng)造的渴望,而且還喚醒了每個人內心的情感。,題外話二 編程的苦惱(F P. Brooks),來自追求完美 來自由他人設定目標、供給資源、提供信息。 陷入瑣碎的重復性勞動 持續(xù)學習的快樂 無用功 這,就是編程,一個許多人痛苦掙扎的焦油坑以及一種樂趣和苦惱共存的創(chuàng)造性活動。,6 結對編程,結對編程是讓兩個人共同設計和開發(fā)代碼的實踐。結對者是全職合作者,輪流執(zhí)行鍵入和監(jiān)視;這提供了持續(xù)的設計和代碼評審。 不是兩個人做一個人的事情。,積極影響,經濟性 滿意度 提高設計質量:分享不同的先驗知識、理解和角色 持續(xù)復查 問題解決更快:集思廣益和配對接力 學習:耳濡目染 團隊建設和溝通 有利于人員和項目管理,卡車問題,一個項目組集體外出,不幸被卡車撞上。有多少人受傷使項目不得不停止?,最壞的情況是一個!,結對編程工作區(qū),一般工作區(qū),學到的經驗,程序員和設計人員協(xié)調人結對編程更有效。 鍵盤輸入效率! 自愿結對編程,我們行業(yè)的主要問題實質上更側重于社會學而不是科學技術。 人件,9 重構,重構是XP的一個重要組成部分。所謂重構是指在不改變代碼外在行為的前提下對代碼做出的修改,以改進代碼的內部結構。重構是一種有紀律的、經過訓練的、有條不紊的代碼整理方法,可以將整理過程中不小心引入錯誤的可能性降到最低。從本質上說,重構就是在代碼寫好之后改進它的設計。 重構的節(jié)奏:重新推理、小的更改、重新推理、小的更改、重新推理,7 測試驅動,結對和簡單設計,常見問題和解答,測試,編碼,重構,集成或者丟棄,8 小型發(fā)布,XP推薦小而頻繁的有意義發(fā)布。,10 持續(xù)集成,持續(xù)集成的思想是任何時候只有一項任務完成,就集成新代碼,構造系統(tǒng)并測試。持續(xù)集成是每日構建每晚構建的一種極限形式,是XP的重要基礎。 每日構建每晚構建是將一個軟件項目的所有最新代碼取出,從頭開始編譯、鏈接,用安裝軟件包將鏈接好的程序安裝好,運行安裝后的軟件,使用測試工具對主要功能進行測試,發(fā)現(xiàn)錯誤并報告錯誤的完整過程。,讓開發(fā)人員在第一時間了解到軟件的錯誤,并迅速排除錯誤,是每日構建每晚構建最重要的目標之一。 每日構建每晚構建必須出日志和報告,并發(fā)布構建結果的有關信息,最好能夠使用自動化工具發(fā)出電子郵件通知。,每日構建是項目的心跳。如果一個項目的心跳停止了,這個項目就死亡了。 Treat the daily build as the heartbeat of the project. If there is no heartbeat, the project is dead.,作用,降低集成風險 加強錯誤診斷 降低不確定性 加快開發(fā)速度 增強團隊合作 對項目參與者是重要激勵,11 每周四十小時工作制,在這里40是一個概數(shù),不是確數(shù)。 如果能夠努力地工作8小時,超過這個時間后就不適于有效地工作了8小時燃燒 再學習 你無法改變時間,但是可以改變你的任務。,12 代碼規(guī)范,XP討論: XP和軟件設計,XP提倡循序漸進的軟件設計方法,以避免在前置設計中花費巨大的精力。 但這不是回到編碼加修正(Code and Fix)的開發(fā)方式。,如果你聆聽代碼,好的設計就會出現(xiàn)。,不變的只是愿望,變化才是永恒。,計劃設計,柔性設計,初始設計不可能面面具到 受人員變動影響 設計人員和編碼人員之間存在協(xié)同問題 設計人員和編碼人員之間存在技能差異 不能適應變化的需求,缺乏整體性 設計可能不可控 潛在的缺陷可能會引起其它缺陷 修正缺陷的代價可能會呈指數(shù)增長 對設計和編碼人員要求更高,XP中對柔性設計的支持,簡單設計 測試先行 持續(xù)集成 重構,計劃設計,重構,簡單的價值,效益 輕裝上陣,做可能有效的最簡單的事情 Do the Simplest Thing That Could Possibly Work 你將不會需要它 You Arent Going to need it,XP衡量簡單的標準,通過所有的測試 代碼體現(xiàn)所有設計意圖:Clever Code 避免重復 類或方法的數(shù)量最少,做且僅做一次 Once and Only Once 不要自我重復 Dont Repeat Yourself,模式反模式和XP,模式 反模式 對初學者 重構的目標之一模式 選擇使用模式的時機 模式和簡單性,UML和XP,最好的UML圖也不是產品!,XP應用之一: XP在高??蒲兄械膽?高校研究室組人員的一般構成: 一名以上的教授副教授 博士生 碩士生 附屬工作人員 臨時教學或研究的學生 臨時合作人員,高??蒲杏美龍D(理工類),高??蒲许椖恐械囊恍﹩栴},高校軟件(原型、項目)往往顯示很差的軟件工程質量: 需求不明確 缺乏客戶參與 人員的持續(xù)波動或突變 沒有一個適用于高校的質量體系 總是處于人員培訓階段 研發(fā)過程不連續(xù),積累困難 往往沒有激勵機制,高校中的XP,首選結對編程學習:指定核心;知識流動的不確定性;吸引力隨著團隊規(guī)模的減小而下降。 高年級低年級,不太有效 高年級高年級 教師學生,不太有效 持續(xù)集成 代碼集體所有 重構 設計和文檔重要性上升,XP應用之二: XP在大型項目中的應用 層次結構的X
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 五人股權合同范例
- 兼職工作合同范例
- 書委托代銷合同范例
- 公司網(wǎng)簽合同范例
- 企業(yè)投融資合同范例
- 企業(yè)借貸合同質押合同范例
- AlMgB14-TiB2復合陶瓷材料在多環(huán)境中的摩擦學性能研究
- 關于配送合同范例
- 基于界面調控的高性能銅鋅錫硫硒太陽能電池研究
- 保姆合同范例內容
- (一模)哈三中2025屆高三第一次模擬考試 語文試題(含答案)
- 2025安徽省投資集團控股有限公司校園招聘34人筆試參考題庫附帶答案詳解
- 2025年湖南司法警官職業(yè)學院單招職業(yè)技能測試題庫審定版
- 2023版《思想道德與法治》(緒論-第一章)緒論 擔當復興大任 成就時代新人;第一章 領悟人生真諦 把握人生方向 第3講 創(chuàng)造有意義的人生
- HGT 20714-2023 管道及儀表流程圖(P ID)安全審查規(guī)范 (正式版)
- 《三氣周瑜》兒童故事繪本ppt課件(圖文演講)
- 兵團科技管理信息系統(tǒng)PPT課件
- 來料檢驗報告表格(1)(共1頁)
- 國家職業(yè)技能標準 (2020年版) 航空發(fā)動機制造工
- 徹卻----劉立千居士文集
- 泵站自動化系統(tǒng)的運行現(xiàn)況與及發(fā)展建議
評論
0/150
提交評論