UP還是敏捷方法?
hongkong2007
目前UP或RUP軟體開發過程已經被很多企業所採用,敏捷方法也逐漸被很多公司使用,究竟是採用UP(RUP)還是敏捷方法呢?哪個更有效呢?
最有效的方法其實是根據企業自身的實際情況,來綜合採用這兩種方法,選擇最適合你的最佳實踐。
所謂最佳實踐,是指人們在多年的實踐過程中總結出來的最佳的開發軟體的一些方法。
RUP中的最佳實踐有:迭代式的開發、管理需求、使用構件架構、視覺化建模、檢驗質量、控制變更,和使用Rational工具等。
敏捷方法以XP為例:
四大價值有:溝通(Communication)、簡單(Simplicity)、反饋(Feedback)、勇氣(Courage)。
五個原則:提供快速反饋、簡單假設、製造增量式的變化、包容變化、質保工作。
十二個實踐原則:計劃的制定、小版本、簡單設計、測試、持續整合、重構、配對程式設計、程式碼共享、每週只工作40小時、現場客戶、隱喻、編碼標準。
從文字上看兩種方法中一致的有:迭代式開發、質量保證工作(檢驗質量,質保工作)。
下面就來分析一下這些最佳實踐。
1. 視覺化建模
XP雖然沒有明確指出,需要進行視覺化建模,但在實施過程中,編碼之前,一般會在紙上劃出要實現部分的草圖,而且也使用UML,儘管是簡單設計,但無論簡單設計與否,這實際上就是在進行視覺化建模。所以,在這點上與RUP是一致的。
2. 使用構件架構
RUP提倡利用構件提高可重用性。
XP提倡重構、配對程式設計,這實際上是利用這些手段來提高程式碼的質量,而提高可重用性,進行可重用的構件的設計,實際上是最主要的工作,包括設計模式的使用等等。
所以,在這一點上,兩種方法的觀點是一致的。
3. 控制變更
變更控制工具在軟體開發企業中已經廣泛使用,這一點不存在爭議。儘管XP沒有把它明確提出來。
4. 管理需求
XP沒有管理需求的說法,但事實上對於關乎軟體專案的全域性的重要的功能需求,和非功能需求,是一定需要控制的,否則,如果專案進行到一半,然後推倒重來,即便是神仙恐怕也沒辦法讓專案成功;至於對全域性影響不大的變化,自然可以靈活處理,擁抱也好,放到下一個版本釋出都是可行的。
所以,在這一點上兩種方法也並不矛盾。
5. CASE工具的使用
RUP當然想讓你是用他們RATIONAL的工具了。
XP擁護者中有人認為用紙和筆是最好的方法,但是如果用CASE工具可以提高效率的話,為什麼要拒絕使用呢?
建議根據企業中員工都習慣的方式來決定是否使用,以及使用什麼工具。
6. 簡單設計
這恐怕是爭議較多的一點,RUP提倡先進行系統分析,設計,然後再進行編碼;XP則覺得只要畫張草圖,就可以編碼了,之後就重構,擁抱變化吧。
其實我們要根據專案的複雜情況來決定設計工作要進行的程度。如果專案很複雜,一張草圖恐怕真的沒有辦法闡述清楚,也沒有辦法成為涉眾之間進行交流的工作產品。這樣就必須對這個複雜的問題進行抽象,提取,簡化複雜程度,直到簡化到可以被人們容易理解,這個過程就是系統分析設計。
對於簡單問題自然不需要進行詳細的分析設計。
7. 重構
重構是提高程式碼質量的有效手段,因為迫於進度壓力等原因,通常一次就寫出優秀的程式碼確實不太可能,因此,重構可以發揮很好的促進作用。
RUP中的程式碼審查,走查等手段從檢驗的角度來進行程式碼質量保證,當然這都是事後的手段,如果程式碼質量不合格,自然需要修改,這可以算作一種促進重構的推動力。
8. 配對程式設計
兩個人的智慧勝一人,在這一條上得到了充分的體現,但對人員素質要求還是較高的,如果人員素質參差不齊,可能就變成一個人指導另一個人,或者兩個人沒辦法達成一致意見。
所以,通過程式碼審查,走查等手段同樣可以起到對程式碼質量進行監督,檢驗的目的。
9. 測試
XP中提倡的測試先行,的確可以在沒有良好的設計模型的情況下,起到一個明確思路的作用。但如果有設計模型,在功能和介面都已經明確設計好了的情況下,測試先行或後行區別可能並不大,但一定要有測試程式,這有利於進行迴歸測試。
10. 持續整合
持續整合是檢驗工作成果的有效手段,在不影響正常工作進度的情況下,整合工作做得越早越好,這樣可以及時發現整合過程中的問題。
11. 小版本釋出
RUP也提倡每個迭代週期釋出一個可以執行的版本,當然這個迭代週期是多長時間,可以根據專案的具體情況來決定。
總之,要靈活使用這些最佳實踐,任何方法都不是簡單的教條,一定要具體問題具體分析,這樣才能保證軟體專案的成功。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/14639675/viewspace-402109/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SOA和敏捷:是朋友?還是敵人?敏捷
- 敏捷,是靈丹妙藥還是又一個忽悠?敏捷
- 敏捷開發與文件:互補還是互斥?敏捷
- Fowler:敏捷還是精益?——毫無意義的問題敏捷
- 敏捷是什麼?敏捷
- typeof是一個方法還是一個運算子
- 神馬是敏捷?(4)——敏捷不能當飯吃敏捷
- 檢視 Oracle 是32位還是64位的方法Oracle
- RUP是敏捷的嗎?敏捷
- 敏捷和DevOps:是敵是友?敏捷dev
- 敏捷與 DevOps:是敵是友?敏捷dev
- 敏捷-新方法論敏捷
- 最流行的敏捷方法敏捷
- 你大概走了假敏捷:《手繪敏捷寶典》在此,還不來收!敏捷
- 什麼是敏捷估計?敏捷
- 敏捷測試是什麼?敏捷測試
- 敏捷史話(四):敏捷是人的天性 —— Arie van Bennekum敏捷
- 神馬是敏捷?(3)——敏捷在中國的水土不服敏捷
- 做FMEA,到底是方法論重要?還是技術重要?
- 敏捷開發方法綜述敏捷
- 敏捷史話(十二):你現在接觸的敏捷也許是“黑暗敏捷”——Ron Jeffries敏捷
- Scrum是脆弱的,不敏捷的Scrum敏捷
- 什麼是敏捷專案管理?敏捷專案管理
- Linux下判斷磁碟是SSD還是HDD的3種方法Linux
- 大衛談學習3:方法還是問題,這是個問題!
- win10 heic還是看不了怎麼辦_win10 heic還是看不瞭解決方法Win10
- Scrum敏捷開發方法實踐Scrum敏捷
- 軟體開發-敏捷方法論敏捷
- js如何判斷一個方法是內建的還是自定義的JS
- 什麼是敏捷軟體測試敏捷
- RUP是如何輸給敏捷Agile的?敏捷
- 敏捷DevOps是反康威定律? - rna敏捷dev
- wake up
- Level Up
- 【日常分享】Linux系統檢視是32位還是64位的方法Linux
- 通訊是個大問題,還好我們有方法。
- 敏捷測試的方法與實踐敏捷測試
- win10怎麼看硬碟是機械還是固態_win10看電腦磁碟是固態硬碟還是機械盤的方法Win10硬碟