这周老师在课上讲到了敏捷开发方法,课下我在网上查阅了一些关于敏捷开发方面的文章,并阅读了《构建之法》课本,对敏捷开发有了深入的了解。
敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、可集成和可运行使用的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。
敏捷开发要遵循如下的原则:
1、尽早并持续地交付有价值的软件以满足顾客需求。
2、敏捷流程欢迎需求的变化,并利用这种变化来提高用户的竞争优势。
3、经常发布可用的软件,发布间隔可以从几周到几个月,能短则短。
4、业务人员和开发人员在项目开发过程中应该每天共同工作。
5、以有进取心的人为项目核心,充分支持信任他们 。
6、无论团队内外,面对面的交流始终是最有效的沟通方式 。
7、可用的软件是衡量项目进展的主要指标。
8、敏捷流程应能保持可持续的发展。 领导,团队和用户应该能按照目前步调持续合作下去。
9、只有不断关注技术和设计才能越来越敏捷。
10、保持简明 - 尽可能简化工作量的技艺 - 极为重要。
11、只有能自我管理的团队才能创造优秀的架构,需求和设计。
12、时时总结如何提高团队效率,并付诸行动。
敏捷开发方法有:极限编程XP、Scrum、精益软件开发、动态系统开发、特性驱动开发、水晶开发。
其中,Scrum的英文意思是橄榄球运动的一个专业术语,表示“争球”的动作。Scrum是一个用于开发和维持复杂产品的框架 ,是一个增量的、迭代的开发过程。在这个框架中,整个开发过程由若干个短的迭代周期组成,一个短的迭代周期称为一个Sprint,每个Sprint的建议长度是2到4周(互联网产品研发可以使用1周的Sprint)。在Scrum中,使用产品Backlog来管理产品的需求,产品backlog是一个按照商业价值排序的需求列表,列表条目的体现形式通常为用户故事。Scrum团队总是先开发对客户具有较高价值的需求。在Sprint中,Scrum团队从产品Backlog中挑选最高优先级的需求进行开发。挑选的需求在Sprint计划会议上经过讨论、分析和估算得到相应的任务列表,我们称它为Sprint backlog。在每个迭代结束时,Scrum团队将递交潜在可交付的产品增量。 Scrum起源于软件开发项目,但它适用于任何复杂的或是创新性的项目。
Scrum的特点有以下几个方面:1、是一个敏捷开发流程;2、以团队为基础;3、要求迅速变化情况下迭代和增量开发;4、控制由利益和需求冲突导致的混乱;5、改善交流并最优化合作;6、检测开发过程障碍并将其去除;7、最大化生产率;8、适用于单一的项目到整个组织;9、能让参与者对工作贡献感到满意。
Scrum有三个角色:
1、产品负责人(Product Owner):负责维护产品订单的人,代表利益相关者的利益。
2、Scrum主管(Scrum Master):为Scrum过程负责的人,确保scrum的正确使用并使得Scrum的收益最大化。一般不翻译。
3、开发团队(Team): 由负责自我管理开发产品的人组成的跨职能团队。
三个工件:
1、产品订单(Product Backlog):按照优先级排序的高层需求。
2、冲刺订单(Sprint Backlog):要在冲刺中完成的任务的清单。
3、冲刺燃尽图(Burndown Chart):在冲刺长度上显示所有剩余工作时间逐日递减的图,因整体上总是递减而得名。
四个活动:
1、计划会(Sprint Planning Meeting):在每个冲刺之初,由产品负责人讲解需求,并由开发团队进行估算的计划会议。
2、每日立会(Daily Standup Meeting):团队每天进行沟通的内部短会,因一般只有15分钟且站立进行而得名。
3、评审会(Review Meeting):在冲刺结束前给产品负责人演示并接受评价的会议。
4、反思会/回顾会(Retrospective Meeting):在冲刺结束后召开的关于自我持续改进的会议。
我们在编程序时,需要学会敏捷的原则,打造敏捷的团队,敏捷的工作。