2013年3月30日 星期六

UP與Agile process的比較

以個人經驗提出兩者的差異
  • agile使用user story捕捉需求,UP使用use case(文件,不是diagram)
  • agile工程師往往一人身兼多職,從design architecture、designer、programmer
  • UP並沒有強調是否一人身兼多職,但是往往將腳色獨立出來
  • agile很強調Test,不是只有Unit Test還包含ATDD、BTDD
  • agile認為文件必須要很精簡,UP則是比較鉅細靡遺
  • agile很重視客戶合作,強調客戶需要配合軟體開發
  • agile將"關係"維護在人之間,UP則是將關係落實到文件內
現在process其實有些相同的方向是
  • 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之外)

沒有留言:

張貼留言