我所理解的敏捷
首先說明,我既不是公司管理高層,也不是經驗資深的開發人員。
只是一個短暫實習對未來充滿好奇的學生,而這些所思所想,也僅僅是自己的對龐大的軟件體系的一點好奇而已。
思考源泉
最近看了本書《敏捷開發·一千零一夜》,其中感悟已經如下導圖所示:
這本書并沒有介紹敏捷開發的基本知識,而是根據多人的經驗整合成的關于 如何從傳統行業轉型到敏捷開發,以及敏捷如何實施。
這些故事對于那些還在使用傳統開發體系,比如瀑布模型、V模型,而想轉型到敏捷開發的朋友有所幫助。
書中一句話,“成功很難復制,失敗多有跡可循”,有收獲就好。
敏捷過程
(以下均是個人理解,每個公司具體情況都有所不同)
傳統行業的大體流程如下:
1 各種分析,各種計劃,各種文檔
2 開發
3 測試
4 交付
交付的時候問題出來了,按照當初的需求,交付的產品不符合用戶的期望,于是開始提出各種各樣的要求。有的小改動還可以滿足,大的改動基本上不可以。不過有之前的需求文檔,如果完全的按照需求文檔來開發,也不會產生太大的偏差,但是最后客戶總是會提出各種各樣的需求。
而對于這種瀑布模型如果想要進行某些修改,流程也是很麻煩的。
這樣的過程,在傳統行業比如軍事或者航天還比較好一些,因為他們的需求與客戶最后的效果可能偏差不是很大。但是互聯網公司就不同了,每一個小的細節都要受到用戶的反饋,而開發者或者產品經理所設計的需求顯然不能滿足廣大用戶的要求。
?
因此敏捷開發出現了,提倡擁抱?變化?與?反饋?,以盡量短的迭代周期接收用戶的意見進行反饋,并盡快的交付一個可用的產品。
那么一般的敏捷開發,也會按照下面的部分進行(每一項都不是必須的,按照特定的情況有所不同):
1 短迭代周期:
這個是最基本的敏捷要素了,開發周期短,一個迭代一般就是1~4周,在一個迭代的時間內,要做到開發、測試、發布可用版本。
這就導致:一方面文檔缺乏;另一方面有時候開發任務繁重,測試與開發質量差,潛在BUG多。
2 每日站會:
每天早晨大家聚在一起,說說自己昨天做了什么?今天要做什么?有什么技術難點?等等,一方面可以交流技術,另一方面別人如果有相關的經驗也可以給予指導,避免重復造車或者繞彎路。
3 白板:
這個白板一般就是貼上開發相關的標簽,比如什么要做,有什么問題,正在解決什么等等,方便大家交流;也可以快速定位開發瓶頸。
4 拆分用戶故事:
這里的用戶故事也就是業務需求,把業務需求拆分成一個個的小任務;一方面方便預估工作量;另一方面方便開發人員認領任務;另外,也可以根據優先級排序,有限那些優先級高的任務。
5 迭代會議:
用于演示或者進行代碼復查,以及結果討論等等。
6 迭代燃盡圖:
顯示開發的進度,從而幫助scrum master督促開發進度,了解開發瓶頸。
7 0迭代的設計:
在0迭代周期,應該設計一個短小精悍的系統架構,然后不斷的修正完善。切忌一開始就想設計出大而完美的產品架構,這樣設計出的基本后來都會被推翻,反而是浪費時間。
?
上面所說的一些敏捷事項,也僅僅關于快速開發,為了方便與用戶交流,還需要提供給用戶一個可交付的版本,從而得到反饋進行修正,這才是敏捷最終的目的。
因此?持續集成 就成了敏捷開發中不可缺少的技術:
關于持續集成可以參考之前的博客:CI持續集成的魅力
?
不過敏捷開發并不是軟件開發里的銀彈,不可能解決所有的問題。
如快速迭代周期,就有可能導致估算的任務不準,開發任務有時繁重,質量下降,從而導致后期的維護成本上升。
而如此快速的開發,快速的修正,也會導致相關文檔的稀缺。
還有很多問題,但是關于質量還是應該從開發人員本身抓起,不可能以來測試來提高軟件開發的質量,有本書中說這樣一個觀點,“測試出的BUG越多,那么潛在的BUG也會越多”,因此并不是測試出的BUG越多,軟件質量就越高。
敏捷僅僅是為了適應用戶的想法,應需而變所產生的軟件開發體系,他并不是開發軟件的工具,而僅僅是一套思想,因此如何快速的開發出符合自己公司業務需求的產品才是敏捷與軟件工程想要解決的問題。
推薦書籍
《硝煙中的Scrum和XP》
《贏》 杰克·韋爾奇
《敏捷無敵》
《IT項目管理那些事兒》
《精益創業》
《跨越鴻溝》
參考
【1】敏捷開發XP:http://blog.sina.com.cn/s/blog_4ac69eaa0100r45w.html
【2】敏捷開發Scrum:http://www.cnblogs.com/taven/archive/2010/10/17/1853386.html
【3】PDCA戴明環:http://baike.baidu.com/link?url=fnVUmTobSMtHApM61g7Ul_lyia8QEIM_MztOLJ89LncZK-eNwXTx69-WZPN-4ClpS_YWpIUcJpn_7GAcvvNh4K
【4】敏捷宣言以及12條原則:http://developer.51cto.com/art/201009/225390.htm
【5】SOLID原則:http://www.cnblogs.com/ShaYeBlog/archive/2013/08/05/3237529.html
轉載于:https://www.cnblogs.com/xing901022/p/4515091.html
總結
- 上一篇: 写在最前面
- 下一篇: MYsql优化where子句