首先说明,我既不是公司管理高层,也不是经验资深的开发人员。
只是一个短暂实习对未来充满好奇的学生,而这些所思所想,也仅仅是自己的对庞大的软件体系的一点好奇而已。
思考源泉
最近看了本书《敏捷开发·一千零一夜》,其中感悟已经如下导图所示:
这本书并没有介绍敏捷开发的基本知识,而是根据多人的经验整合成的关于 如何从传统行业转型到敏捷开发,以及敏捷如何实施。
这些故事对于那些还在使用传统开发体系,比如瀑布模型、V模型,而想转型到敏捷开发的朋友有所帮助。
书中一句话,“成功很难复制,失败多有迹可循”,有收获就好。
敏捷过程
(以下均是个人理解,每个公司具体情况都有所不同)
传统行业的大体流程如下:
1 各种分析,各种计划,各种文档
2 开发
3 测试
4 交付
交付的时候问题出来了,按照当初的需求,交付的产品不符合用户的期望,于是开始提出各种各样的要求。有的小改动还可以满足,大的改动基本上不可以。不过有之前的需求文档,如果完全的按照需求文档来开发,也不会产生太大的偏差,但是最后客户总是会提出各种各样的需求。
而对于这种瀑布模型如果想要进行某些修改,流程也是很麻烦的。
这样的过程,在传统行业比如军事或者航天还比较好一些,因为他们的需求与客户最后的效果可能偏差不是很大。但是互联网公司就不同了,每一个小的细节都要受到用户的反馈,而开发者或者产品经理所设计的需求显然不能满足广大用户的要求。
因此敏捷开发出现了,提倡拥抱 变化 与 反馈 ,以尽量短的迭代周期接收用户的意见进行反馈,并尽快的交付一个可用的产品。
那么一般的敏捷开发,也会按照下面的部分进行(每一项都不是必须的,按照特定的情况有所不同):
1 短迭代周期:
这个是最基本的敏捷要素了,开发周期短,一个迭代一般就是1~4周,在一个迭代的时间内,要做到开发、测试、发布可用版本。
这就导致:一方面文档缺乏;另一方面有时候开发任务繁重,测试与开发质量差,潜在BUG多。
2 每日站会:
每天早晨大家聚在一起,说说自己昨天做了什么?今天要做什么?有什么技术难点?等等,一方面可以交流技术,另一方面别人如果有相关的经验也可以给予指导,避免重复造车或者绕弯路。
3 白板:
这个白板一般就是贴上开发相关的标签,比如什么要做,有什么问题,正在解决什么等等,方便大家交流;也可以快速定位开发瓶颈。
4 拆分用户故事:
这里的用户故事也就是业务需求,把业务需求拆分成一个个的小任务;一方面方便预估工作量;另一方面方便开发人员认领任务;另外,也可以根据优先级排序,有限那些优先级高的任务。
5 迭代会议:
用于演示或者进行代码复查,以及结果讨论等等。
6 迭代燃尽图:
显示开发的进度,从而帮助scrum master督促开发进度,了解开发瓶颈。
7 0迭代的设计:
在0迭代周期,应该设计一个短小精悍的系统架构,然后不断的修正完善。切忌一开始就想设计出大而完美的产品架构,这样设计出的基本后来都会被推翻,反而是浪费时间。
上面所说的一些敏捷事项,也仅仅关于快速开发,为了方便与用户交流,还需要提供给用户一个可交付的版本,从而得到反馈进行修正,这才是敏捷最终的目的。
因此 持续集成 就成了敏捷开发中不可缺少的技术:
关于持续集成可以参考之前的博客:
不过敏捷开发并不是软件开发里的银弹,不可能解决所有的问题。
如快速迭代周期,就有可能导致估算的任务不准,开发任务有时繁重,质量下降,从而导致后期的维护成本上升。
而如此快速的开发,快速的修正,也会导致相关文档的稀缺。
还有很多问题,但是关于质量还是应该从开发人员本身抓起,不可能以来测试来提高软件开发的质量,有本书中说这样一个观点,“测试出的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