对于敏捷软件开发的认识
关于敏捷软件开发
一,基本软件开发过程
1, 瀑布软件开发
2, 迭代软件开发
3, 原型软件开发
4, 极限编程(xp)
二,敏捷软件开发基本概念和特性
敏捷软件开发,是一种应对快速变化的需求的一种软件开发能力,更强调程序员团队与业务专家之间的紧密协作、面对面的沟通(认为比书面的文档更有效)、频繁交付新的软件版本、紧凑而自我组织型的团队、能够很好地适应需求变化的代码编写和团队组织方法,也更注重作为软件开发中人的作用。
敏捷软件开发的价值观:
(1) 人和交互重于过程和工具
(2) 可以工作的软件重于求全责备的文档
(3) 客户协作重于合同谈判
(4) 随时应对变化重于循规蹈钜
敏捷软件开发的基本原则:
(1) 对我们而言,最重要的是通过尽早和不断交付有价值的软件满足客户需要
(2) 我们欢迎需要的变化,即使在开发后期。敏捷过程能够驾驭变化,保持客户的竞争优势
(3) 经常交付可以工作的软件,从几个星期到几个月,时间尺度越短越好
(4) 业务人员和开发者应该在整个项目过程中始终朝夕在一起工作
(5) 围绕斗志高昂的人进行软件开发,给开发者提供适宜的环境,满足他们的需要,并相信他们能够完成任务
(6) 在开发小组中最有效率也最有效果的信息传达方式是面对面的交谈
(7) 可以工作的软件是进度的主要度量标准
(8) 敏捷过程提倡可持续开发。出资人、卡覅人员和用户应该总是维持不变的节奏
(9) 对卓越技术和良好设计的不断追求将有助于提高敏捷性
(10) 简单-----尽可能减少工作量的艺术至关重要
(11) 最好的架构、需求和设计都源自自我组织的团队
(12) 每隔一定时间,团队都需要总结如何更有效率,然后相应地调整自己的行为
三,敏捷软件开发要求
拥抱变化
迎接问题
注重协作和沟通
四,敏捷软件开发实施过程
关于民敏捷软件开发的几个会议
1, 迭代规划会议
由po制定和公布该迭代周期中需要完成的任务和达到的目标。基本要求:
(1) 迭代周期的时间长度(2-6周)
(2) 会议时间(2-4h)
(3) Po公布该迭代周期需要达到的计划目标,并细分各计划需要完成的故事点,同时给出故事点完成时的检验目标(how to demo)。PO需要制定各故事点的优先级顺序。
(4) 团队成员进行故事点的细分,将故事点划分为占据0.5-4天的工作点,工作点贴条,并进行时间估算。
(5) 将写有任务和时间的贴条张贴到计划板上。
会议流程:
(1) 会议之前,打印本次迭代过程中需要完成的feature,团队成员会前需要阅读各项feature
(2) 会议开始,由团队PO讲解各项feature。完后,离开迭代规划会议。
(3) 由团队master组织并主持迭代讨论会议,分解各项feature,分解包括开发、测试、文档编写、其他辅助工作等。并用估算扑克估算时间。用估算扑克估算时间时,各团队成员估算当前feature或当前feature分解后的一个小故事点所花费的时间。然后,分析团队成员中时间偏离比较大的时间。定出该feature或该feature分解出的故事点所需要花费的最终时间。
(4) 所有feature所花费的总时间占本次迭代所占用时间的80%,给本次迭代预留20%的时间。
(5) 所有feature时间估算和分解完成后,将feature分解出来的故事点和所需要的时间写到便签上。
(6) 将便签张贴起来,绘制燃尽图。
2, 每日站立会议
团队成语陈述昨天的工作内容、今天的工作计划和昨天工作中遇到的问题,基本要求:
(1) 时间要求,15分钟左右。注意时间的控制。
(2) 团队成员需要清晰明确地讲出各自昨天的工作任务、遇到的问题、今日的工作任务,需要的协作和帮助等。对于问题的具体情况和需要寻求的帮助可以在会后进行协调和安排。
(3) 变更贴条
(4) 更新燃尽图
会议流程:
(1) 发起规划会议通知。在会议通知前,预留时间给团队成员,让团队成员思考昨天工作,包括工作进展情况、工作中遇到的问题、今日工作安排,以及处理昨天工作中一些琐碎。
(2) 站立会议。团队各成员简略讲述昨天的工作内容、工作进展情况、遇到的问题以及今天的工作内容,并更新便签上的时间。对遇到的问题和需要的协作需要做个简要的说明。
(3) 更新燃尽图。
3, 验收、演示会议
团队成员演示工作成果,需要注意:
(1) 时间要求,2h之内。
(2) Po根据设定的目标进行故事点的验收,并提出相关的意见和建议
(3) 故事点的演示不需要一定要团队的po和master进行
会议流程:
(1) 会议演示准备。准备会议演示系统或相关材料。
(2) 演示会议。由PO简略阐述当前迭代所需要达到的目标,并针对各个目标进行演示。记录会议中,提出的意见和建议。
(3) 当前迭代过程中,其他工作成果的验收。包括迭代突发任务、迭代feature衍生任务等
(4) 会议总结。由PO宣布当前迭代各任务的验收情况。
4, 质量改进会议或回顾总结会议
团队成员陈述该迭代周期中,工作体会,需要注意:
(1) 时间要求,2h之内。
(2) 团队成员可以陈述在这个迭代周期中认为做得好的、不好需要改进的、遇到的问题等。
(3) 对团队成员提出的问题,进行归类和总结,并作出这些问题的解决方案,同时制定实施计划。
会议流程:
(1) 在迭代过程中,团队各成员需要记下在迭代过程中,遇到的问题,工作中相关总结和心得体会,工作过程或工作内容的改进点等。
(2) 会议前,整理各自在迭代过程中的记录,以及该迭代过程中产生的数据,包括代码行数、测试覆盖率、缺陷解决情况。
(3) 会议开始。会议成员讲解在该迭代过程中产生的数据,以及由数据分析出的问题。并解释在给迭代过程中,解决了哪些障碍backlog。
(4) 会议主持,领导大家提出各自的问题和建议,发表各自的看法。团队成员就各问题提出解决方案,以及各自的见解。
(5) 统计会议中的各种问题和改良点,并进行整理和记录,整理障碍backlog。并选取其中几个值得特殊关注的问题,作为下一个迭代需要解决的一项任务。
五,敏捷软件开发基本角色
在敏捷软件开发中,定义了三种角色:po、master、其他团队成员。
Po(Product owner),需要对产品负责。负责产品的开发需求、进度和质量,制定每个迭代的需要完成的故事点,以及每个故事点完成的目标,制定产品的backlog。
Master,负责工作的安排和协调,工作任务的跟踪等,同时完成工作任务。
其他团队成员,具体的工作任务完成者,没有明确的开发人员、测试人员、资料开发人员之分。
六,敏捷软件开发过程中使用到的工具
便利贴,用粗的信号笔书写任务点和需要完成的估算时间
产品Backlog,列出产品的功能点,规定了功能点的具体操作细节和演示细节
迭代sprint,列出迭代周期需要完成的故事点,规定了如何演示和验收目标,优先级和估算的完成时间周期
故障Backlog,列出了开发过程中遇到的问题,任务开发进行中可能遇到的问题
燃尽图,迭代周期时间里利用和剩余时间的坐标图,横轴代表迭代周期中具体的那一天,纵轴表示在横轴这个点还需要多少天完成该迭代的故事点。
七,如何较好的实施敏捷软件开发
结合敏捷软件开发具体的实施情况,可以总结为以下几点:
(1) 团队成员需要全心投入,积极参入相关的过程。
(2) 时间预留,为迭代过程中突发事件和估算时间不准确的任务预期完成时间。
(3) 工作时间估算精确,避免占用过多的预留时间和在团队协作方面带来延迟。
(4) 团队成员间的相互协作和信任,
(5) 即时、有效的沟通,
(6) 问题即时暴露和即时解决,不要积压问题
(7) 任务跟踪,
(8) 软件开发人员需要对任务负责,对任务完成的目标严格要求。
(9) 团队需要良好的领导力和凝聚力
八,敏捷软件开发优化
1, 团队成员需要明确团队工作目标,并相信团队各成员能有效的、较好的完成各项目标,也即团队成员间要相互信任。
2, 团队的工作性质或团队某次迭代所需要完成的工作内容,会具有一定的偏差,需要根据特性动态的更改团队成员的工作。此时,敏捷过程中定义的某些流程或许不适用,需要适当对开发过程进行改良。