敏捷开发知识结构整理
2024-01-29 17:43:27 0 举报
AI智能生成
敏捷开发是一种迭代、增量的软件开发方法,强调团队的协作、沟通以及快速响应变化。知识结构整理了敏捷开发的核心概念、最佳实践和工具。 首先,理解敏捷宣言和原则是基础,它强调了响应变化、团队合作、早期交付和持续改进的重要性。接着,掌握Scrum、看板等敏捷方法框架,学习如何进行迭代计划、每日站立会议、回顾会议等实践。 随后,了解如何应用结对编程、测试驱动开发等极限编程技术,来提高软件质量,降低风险。此外,学习如何建立有效的产品 Backlog,并掌握如何利用用户故事来进行需求拆分。 最后,熟悉一些支持敏捷开发的工具,如Jira、Trello等,以帮助团队更高效地进行项目管理和协作。
作者其他创作
大纲/内容
传统瀑布式开发 VS 敏捷
适用场景
敏捷:
瀑布:
- 需求频繁变化的项目;
- 复杂度高的项目;
- 需要快速交付的项目;
- 需要紧密合作的项目。
瀑布:
- 需求稳定的场合
- 稳定低风险项目
- 用户参与需求低的场合
- 二次开发项目
测试介入
敏捷:贯穿整个开发流程
瀑布:阶段性需求编码完成
瀑布:阶段性需求编码完成
需求管理
敏捷:鼓励在开发过程中灵活地调整和优化需求
瀑布:要求在开发前对需求进行详尽的分析和规划
瀑布:要求在开发前对需求进行详尽的分析和规划
进展控制
开发流程
敏捷:
采用线性的开发流程,按照预先规划
的顺序依次进行需求分析、设计、
编码、测试和维护等环节。每个环节都有明确的交付物和里程碑
瀑布:采用迭代和增量的开发方式,将整个开发周期切分为小的时间段,每个时间段内进行一次完整的开发循环
采用线性的开发流程,按照预先规划
的顺序依次进行需求分析、设计、
编码、测试和维护等环节。每个环节都有明确的交付物和里程碑
瀑布:采用迭代和增量的开发方式,将整个开发周期切分为小的时间段,每个时间段内进行一次完整的开发循环
交付时间
敏捷:
迭代周期较短,团队能够在每个迭代周期中交付可用的软件功能,有助于缩短交付时间
瀑布:交付时间较长,整个项目需要在一开始就制定详细的计划和时间表
迭代周期较短,团队能够在每个迭代周期中交付可用的软件功能,有助于缩短交付时间
瀑布:交付时间较长,整个项目需要在一开始就制定详细的计划和时间表
控制方式
敏捷:
使用迭代和冲刺来控制项目进展,强调快速响应和调整
瀑布:使用详细的计划和甘特图来跟踪项目的进展和时间表
使用迭代和冲刺来控制项目进展,强调快速响应和调整
瀑布:使用详细的计划和甘特图来跟踪项目的进展和时间表
团队协作
沟通与合作方式
敏捷:
更加注重团队内外的沟通和合作,团队成员之间会频繁交流,
以确保团队共同理解需求并解决可能出现的问题
瀑布:通常采用较为正式的沟通方式,如书面文档和正式会议
更加注重团队内外的沟通和合作,团队成员之间会频繁交流,
以确保团队共同理解需求并解决可能出现的问题
瀑布:通常采用较为正式的沟通方式,如书面文档和正式会议
变更需求
变更容忍度
敏捷:
有更高的容忍度,团队能够在每个迭代周期中灵活地接
受和适应需求的变化,变才唯一的不变主旨
瀑布:容忍度较低,需求通常在项目开始之前充分明确和稳定
有更高的容忍度,团队能够在每个迭代周期中灵活地接
受和适应需求的变化,变才唯一的不变主旨
瀑布:容忍度较低,需求通常在项目开始之前充分明确和稳定
变更管理
敏捷:
是可以随时进行的,团队可以根据需求的变化进行调整
瀑布:是一个复杂且耗时的过程,需要重新规划和重新设计
是可以随时进行的,团队可以根据需求的变化进行调整
瀑布:是一个复杂且耗时的过程,需要重新规划和重新设计
客户参与
敏捷:客户参与是至关重要的,他们会被要求提供反馈和参与需求优先级的制定
瀑布:更倾向于从客户那里获取初始需求,然后独立进行开发
瀑布:更倾向于从客户那里获取初始需求,然后独立进行开发
风险管理
敏捷:
更加注重持续的风险管理,团队在每个迭代周期中都会进行风险评估,
并根据评估结果调整开发策略和计划
瀑布:项目开始之前会进行全面的风险评估,并在项目初期进行风险规避
更加注重持续的风险管理,团队在每个迭代周期中都会进行风险评估,
并根据评估结果调整开发策略和计划
瀑布:项目开始之前会进行全面的风险评估,并在项目初期进行风险规避
工作流程图
Scrum敏捷
Scrum敏捷
瀑布
分类
Scrum
三大角色
产品负责人(Product Owner 简称:PO)
主要负责确定产品的功能和达到要求的标准,
制定软件的发布日期和交付的内容, 同时
有权利接收或拒绝开发团队的工作成功
主要负责确定产品的功能和达到要求的标准,
制定软件的发布日期和交付的内容, 同时
有权利接收或拒绝开发团队的工作成功
能力要求
产品战略与愿景:能够制定和执行产品的长期战略规划,并将愿景传达给团队和利益相关者。
用户洞察与需求分析:具备深入了解用户需求的能力,能够进行市场调研和用户反馈收集,准确捕捉用户的需求和行为特征。
产品规划与管控:擅长制定详尽的产品计划和优先级,能够合理分配资源、管理风险,确保产品交付按时高质量完成。
产品设计与优化:具备卓越的产品设计思维和用户体验意识,能够参与产品设计决策,优化产品界面和交互,提高用户满意度。
跨部门协作与沟通:善于与开发、设计、测试等团队开展高效协作与沟通,协调资源、有效解决问题,推动项目顺利进行。
数据分析与决策支持:能够运用数据分析方法,挖掘用户数据和市场信息,为产品决策提供科学支持,迭代产品改进方案。
产品推广与营销:有丰富的产品市场化经验,能够制定有效的推广策略,协助市场团队进行产品市场推广和用户获取。
领导与团队管理:具备出色的领导力,能够激发团队成员的潜力,有效指导团队工作,提高团队整体绩效。
技术理解与学习能力:对相关技术有一定的了解,能够与开发团队进行技术对话,关注技术趋势,不断提升自己的技术素养。
敏捷方法与文化:精通敏捷开发方法,能够深入理解敏捷文化,并能在团队中推广敏捷实践的应用。
创新思维与敏锐度:具备敏锐的市场洞察力和创新思维,能够引领团队在产品中引入新的想法和创新点。
自我管理与学习能力:能够高效组织和管理个人工作,持续学习和不断提升自己的专业知识和技能。
用户洞察与需求分析:具备深入了解用户需求的能力,能够进行市场调研和用户反馈收集,准确捕捉用户的需求和行为特征。
产品规划与管控:擅长制定详尽的产品计划和优先级,能够合理分配资源、管理风险,确保产品交付按时高质量完成。
产品设计与优化:具备卓越的产品设计思维和用户体验意识,能够参与产品设计决策,优化产品界面和交互,提高用户满意度。
跨部门协作与沟通:善于与开发、设计、测试等团队开展高效协作与沟通,协调资源、有效解决问题,推动项目顺利进行。
数据分析与决策支持:能够运用数据分析方法,挖掘用户数据和市场信息,为产品决策提供科学支持,迭代产品改进方案。
产品推广与营销:有丰富的产品市场化经验,能够制定有效的推广策略,协助市场团队进行产品市场推广和用户获取。
领导与团队管理:具备出色的领导力,能够激发团队成员的潜力,有效指导团队工作,提高团队整体绩效。
技术理解与学习能力:对相关技术有一定的了解,能够与开发团队进行技术对话,关注技术趋势,不断提升自己的技术素养。
敏捷方法与文化:精通敏捷开发方法,能够深入理解敏捷文化,并能在团队中推广敏捷实践的应用。
创新思维与敏锐度:具备敏锐的市场洞察力和创新思维,能够引领团队在产品中引入新的想法和创新点。
自我管理与学习能力:能够高效组织和管理个人工作,持续学习和不断提升自己的专业知识和技能。
职责要求
整体
确立产品愿景和路线图
需要与公司高层沟通,了解企业的战略方向,确定产品的愿景和路线图,为整个团队提供方向和目标。
制定产品需求
需要负责产品的需求管理,包括收集市场和用户需求,制定产品规格和设计文档,并与开发团队合作,确保产品高质量按时完成
优化产品
需要协调开发、测试、运维等各个团队,前期要作出一些设计决策,后期要关注用户反馈和数据分析,优化产品功能和用户体验。
风险管理
需要关注产品可能会面临的风险,及时发现问题并采取应对措施。
策划发布
需要与市场和销售团队合作,确定产品的推广方案和上市时间,确保发布顺利。
需要与公司高层沟通,了解企业的战略方向,确定产品的愿景和路线图,为整个团队提供方向和目标。
制定产品需求
需要负责产品的需求管理,包括收集市场和用户需求,制定产品规格和设计文档,并与开发团队合作,确保产品高质量按时完成
优化产品
需要协调开发、测试、运维等各个团队,前期要作出一些设计决策,后期要关注用户反馈和数据分析,优化产品功能和用户体验。
风险管理
需要关注产品可能会面临的风险,及时发现问题并采取应对措施。
策划发布
需要与市场和销售团队合作,确定产品的推广方案和上市时间,确保发布顺利。
日常
1、首先能够向团队清楚地传达Product Backlog的内容。
2、确保团队能够理解Product Backlog中的内容。
3、为了达到产品的目标和任务,要对Product Backlog中的内容进行最优排序。
4、确保Product Backlog中的内容是可视化的,透明的,对任何人都是清晰的。同时要告知团队接下来做什么。
5、优化团队工作的价值。
2、确保团队能够理解Product Backlog中的内容。
3、为了达到产品的目标和任务,要对Product Backlog中的内容进行最优排序。
4、确保Product Backlog中的内容是可视化的,透明的,对任何人都是清晰的。同时要告知团队接下来做什么。
5、优化团队工作的价值。
辅助工具
项目管理
- 禅道
- Trello
- GanttProject
- BoardMix
- Zoom
- 腾讯会议
- 邮件
- 墨刀
- Axure RP
- Sketch
- Adobe XD
- Figma
- Justinmind
- UsabilityHub
- Tableau
- Google Analytics
- Mixpanel
- Amplitude
- MindMaster
- Google Trends
- SurveyMonkey
- Tableau
- MindMaster
- Dropbox
- OneDrive
- Google Docs
- Microsoft SharePoint
- Confluence
- Notion
- Todoist
- Wunderlist
- Microsoft To Do
- Toggl - 记录工作时间
- RescueTime - 自动追踪应用和网站使用时间
- Clockify - 记录时间
- Harvest - 记录时间
- Adobe Sign
数量要求
一般情况主备各一人,具体根据敏捷项目拆分规模进行评估控制
流程管理员(Scrum Master)--- 敏捷教练
主要负责整个Scrum流程再项目中的顺利实施和进行,
以及清除挡在客户和开发工作之间的沟通障碍,
使得客户可以直接驱动开发
主要负责整个Scrum流程再项目中的顺利实施和进行,
以及清除挡在客户和开发工作之间的沟通障碍,
使得客户可以直接驱动开发
能力要求
职责要求
Review
检查评审
检查评审
PRD
产品需求
产品需求
ERD
工程需求
工程需求
CODE
代码
代码
CASE
测试用例
测试用例
meeting
主持会议
主持会议
Plan
启动计划会
启动计划会
Standup
日常例会
日常例会
Retrospective
回顾会
回顾会
DOD
辅助工具
项目管理:
禅道/ boardmix
任务面板:
在线文档/svn
人员管理:
微信/钉钉
禅道/ boardmix
任务面板:
在线文档/svn
人员管理:
微信/钉钉
任务面板是“任务状态/工作进程”的二维工作面板,便签颜色可代表团队成员,便签内容代表团队成员所负责的开发任务。
任务状态一般可划分为:ToDo,Doing,Tested,Reviewed,Finished五个状态,在一块方形划分区域中贴满了颜色便签,
随时更新任务面板状态,保证团队所有成员随时随地都可以了解Sprint周期内的整体开发进度
任务状态一般可划分为:ToDo,Doing,Tested,Reviewed,Finished五个状态,在一块方形划分区域中贴满了颜色便签,
随时更新任务面板状态,保证团队所有成员随时随地都可以了解Sprint周期内的整体开发进度
数量要求
一般情况主备各一人,具体根据敏捷项目拆分规模进行评估控制
开发团队(Scrum Team)
主要负责软件产品在Scrum规定流程下进行开发工作,
人数控制在5-10人左右,每个成员可能负责不同的技术方面,
但要求每个成员必须要有很强的自我管理能力。
同时具有一定的表达能力,成员可以采用任何工作方式,
只要能达到Sprint的目标。
主要负责软件产品在Scrum规定流程下进行开发工作,
人数控制在5-10人左右,每个成员可能负责不同的技术方面,
但要求每个成员必须要有很强的自我管理能力。
同时具有一定的表达能力,成员可以采用任何工作方式,
只要能达到Sprint的目标。
能力要求
技术能力:
敏捷开发需要团队成员具备扎实的技术能力,能够熟练运用所需的编程语言、开发工具和技术框架,以及掌握软件开发的基本原理和方法。
团队合作能力:
敏捷开发注重团队合作,团队成员应具备良好的沟通能力,能够有效地与其他成员进行协作和交流,共同解决问题和完成任务。
自组织能力:
敏捷开发鼓励团队成员自主决策和自我管理,因此团队成员应具备自组织能力,能够独立思考问题、制定计划和解决困难。
领导力:
敏捷开发中的团队成员不仅仅是执行者,还需要具备一定的领导力,能够在团队中发挥积极的影响力,引导团队朝着共同的目标努力。
适应能力:
敏捷开发强调快速响应变化,团队成员应具备较强的适应能力,能够灵活应对需求变更和项目调整,及时调整工作计划和方法。
经验积累:
敏捷开发中的团队成员应具备一定的经验积累,能够借鉴以往的经验和教训,避免重复犯错,提高工作效率和质量。
热情和积极性:
敏捷开发需要团队成员对工作充满热情和积极性,能够主动参与和贡献,不断学习和进步,提升个人能力和团队绩效。
敏捷开发需要团队成员具备扎实的技术能力,能够熟练运用所需的编程语言、开发工具和技术框架,以及掌握软件开发的基本原理和方法。
团队合作能力:
敏捷开发注重团队合作,团队成员应具备良好的沟通能力,能够有效地与其他成员进行协作和交流,共同解决问题和完成任务。
自组织能力:
敏捷开发鼓励团队成员自主决策和自我管理,因此团队成员应具备自组织能力,能够独立思考问题、制定计划和解决困难。
领导力:
敏捷开发中的团队成员不仅仅是执行者,还需要具备一定的领导力,能够在团队中发挥积极的影响力,引导团队朝着共同的目标努力。
适应能力:
敏捷开发强调快速响应变化,团队成员应具备较强的适应能力,能够灵活应对需求变更和项目调整,及时调整工作计划和方法。
经验积累:
敏捷开发中的团队成员应具备一定的经验积累,能够借鉴以往的经验和教训,避免重复犯错,提高工作效率和质量。
热情和积极性:
敏捷开发需要团队成员对工作充满热情和积极性,能够主动参与和贡献,不断学习和进步,提升个人能力和团队绩效。
职责要求
核心职责:
- 承诺并完成Sprint的目标。
- 全权负责Sprint目标的实现,包括工作任务的规划、技术方案的确定,确保符合交付质量要求。
- 按照敏捷的原则和实践开展工作。
- 协助产品负责人进行产品Backlog的梳理、完成用户故事的估算,AC编写。
- 参加Sprint计划会议,承诺达成Sprint目标。
- 专注于Sprint目标的实现。
- 召开每日例会,进行昨日回顾、当日计划(讨论和决定每个人当天的工作任务)、发现并记录问题。
- 管理团队看板、跟踪团队进展。
- 迭代结束时,参加Sprint评审会议,向产品负责人和干系人演示工作成果。
- 迭代结束时,参加Sprint回顾会议,识别问题并持续改进。
- 建立和持续维护团队工作协议。
辅助工具
代码编写与调试:Idea
代码调试:junit
接口服务调试:postman
服务部署:基于k8s工具KubeSphere
代码调试:junit
接口服务调试:postman
服务部署:基于k8s工具KubeSphere
数量要求
建议:
前端-1,后端-2,测试-1
前端-1,后端-2,测试-1
三个工件
产品需求列表(Product Backlog)
迭代需求列表(Sprint Backlog)
冲刺燃尽图(Sprint burn down)
五个仪式
待办事项整理会议(Backlog Grooming Meeting)
Sprint计划会(Sprint Planning Meeting)
每日站会(Daily Scrum Meeting)
Sprint评审会(Sprint Review Meeting)
Sprint回顾会(Sprint Retrospective Meeting)
五个价值观
承诺
专注
开放
尊重
勇气
术语
冲刺周期(Sprint)
用户故事(User Story)
开发任务(Task)
XP(极限编程)
Crystal Methods
FDD(特性驱动开发)
经验提炼
完美契合[DDD+微服务]
契合DDD
契合微服务
整体系统架构搭建
系统技术架构
系统业务架构
实现团队虚拟化
团队规模
5~10人
必要角色
产品
产品主管
产品助理
流程管理员/敏捷教练
流程主管
流程助理
开发团队
前端
后端
测试
价值观
个体和互动 高于 流程和工具
工作的软件 高于 详尽的文档
客户合作 高于 合同谈判
响应变化 高于 遵循计划
原则
我们的最高目标是,通过尽早和持续地交付有价值的软件来满足客户
欢迎对需求提出变更——即使是在项目开发后期。要善于利用需求变更,帮助客户获得竞争优势
要不断交付可用的软件,周期从几周到几个月不等,且越短越好
项目过程中,业务人员与开发人员必须在一起工作
要善于激励项目人员,给他们以所需要的环境和支持,并相信他们能够完成任务
无论是团队内还是团队间,最有效的沟通方法是面对面的交谈
可用的软件是衡量进度的主要指标
敏捷过程提倡可持续的开发。项目方、开发人员和用户应该能够保持恒久稳定的进展速度
对技术的精益求精以及对设计的不断完善将提升敏捷性
要做到简洁,即尽最大可能减少不必要的工作。这是一门艺术
最佳的架构、需求和设计出自于自组织的团队
团队要定期反省如何能够做到更有效,并相应地调整团队的行为
生命周期
组建期(Forming)
风暴期(Storming)
规范期(Norming)
发挥期(也叫执行期,Performing)
解散期(也叫修整期,Adjourning)
过程工具
项目管理
包括任务管理、进度跟踪、里程碑设置等功能,帮助团队管理项目的各个方面
包括任务管理、进度跟踪、里程碑设置等功能,帮助团队管理项目的各个方面
禅道
boardmix博思白板
teambition
JIRA
Trello
Scrumwise
团队协作
包括信息共享、实时通讯、文件共享等功能,帮助团队成员更好地协作
包括信息共享、实时通讯、文件共享等功能,帮助团队成员更好地协作
禅道
微信群/钉钉群
confluence
私有服务
云服务
需求管理
包括需求收集、需求分析、需求跟踪等功能,帮助团队更好地理解和满足用户需求
包括需求收集、需求分析、需求跟踪等功能,帮助团队更好地理解和满足用户需求
禅道
svn
.......
代码管理
包括版本控制、代码审查、持续集成等功能,帮助团队更好地管理代码
包括版本控制、代码审查、持续集成等功能,帮助团队更好地管理代码
git
私有服务
云服务
svn
Jenkins
Travis CI
docker/k8s
私有服务
测试管理
包括测试计划、测试执行、缺陷跟踪等功能,帮助团队更好地进行测试
包括测试计划、测试执行、缺陷跟踪等功能,帮助团队更好地进行测试
禅道
junit
postman
Apipost
Apifox
Selenium
报告和度量
包括项目报告、性能度量、质量度量等功能,帮助团队了解项目的状态和进展
包括项目报告、性能度量、质量度量等功能,帮助团队了解项目的状态和进展
禅道
svn
0 条评论
下一页