- agile使用user story捕捉需求,UP使用use case(文件,不是diagram)
- agile工程師往往一人身兼多職,從design architecture、designer、programmer
- UP並沒有強調是否一人身兼多職,但是往往將腳色獨立出來
- agile很強調Test,不是只有Unit Test還包含ATDD、BTDD
- agile認為文件必須要很精簡,UP則是比較鉅細靡遺
- agile很重視客戶合作,強調客戶需要配合軟體開發
- agile將"關係"維護在人之間,UP則是將關係落實到文件內
- Iterative方式
- 重視User Feedback
- 重視需求文件
- Risk driven
- 重視Architecture
- 重視business goal
agile實施起來未必比UP容易,agile裡的programmer往往一人身兼多種腳色,因此agile的programmer往往能力需要比較強,這也是為何早期XP強調pair programming的方式,一方面可以有feedback,另外一方面可以帶起新手
如果今天團隊內有人離職,UP因為將所有內容都記錄在文件上,理論上只要詳讀文件就可以理解,但是agile則是將一些隱含的關係放在人之間,一個programmer離職,恐怕新手只有user story以及code/test code可以讀取,有沒有design...等等的文件,則是看當時狀況
agile將某些資訊放到人之間,有個好處,由於資訊是共享的所以可以減少誤解,同時人在資訊上的更新,某種程度是比文件來的有彈性以及快速
agile最核心的難度恐怕在於改變人,因為過去客戶往往不瞭解他們的需求,同時也不了解軟體開發的一些資訊,客戶認為軟體專案如同販賣機一樣,只要錢投下去,軟體就會跑出來,agile正嘗試改變這一點
最後補上一個軟體工程的V-mode,由於agile很重視test,同時如果理解的話,應該就知道CMMI的 V&V在要求啥了。也就是只要了解軟體工程,自然可以滿足CMMI的Level 2, 3(除了4個跟organization相關的GG之外)