Home DevCloud敏捷开发
DevCloud敏捷开发
取消

DevCloud敏捷开发

敏捷

敏捷宣言

  • 个体和交互             胜过       过程和工具
  • 可以工作的软件     胜过      面面俱到的文档
  • 客户合作                 胜过       合同谈判
  • 响应变化                 胜过       遵循计划


敏捷开发原则

  • 客户满意(有价值软件)
  • 结果导向(可工作软件)
  • 拥抱变化(需求变化)
  • 保持节奏
  • 短迭代交付
  • 追求卓越
  • 业务参与(业务人员+开发人员)
  • 简单务实(以简洁为本)
  • 以人为本
  • 团队自组织
  • 面对面沟通
  • 持续改进

敏捷=理念+优秀实践+具体应用

  • 聚焦客户价值
  • 激发团队
  • 适应变化

聚焦客户价值

  • 消除浪费
  • 交付刚刚好系统
  • 随时构建质量,不容忍缺陷
  • 及时消除技术债务,持续保持快速响应

激发团队

  • 认清团队的基本事实
  • 敏捷方式下管理者的转变
  • 敏捷方式下团队成员的转变
  • 认清:客户是逐步发现真正需求

适应变化

  • 小批量是快速交付的关键
  • 通过迭代计划不断调整以适应需求变化
  • 持续保持良好的软件架构
  • 利用多层次反馈不断调整以逼近目标

 

敏捷实践

迭代开发 + 团队 + 工作件 + 管理实践 + 技术实践

角色职责

  • PO:产品负责人
  • Scrum:教练
  • Team:开发团队

敏捷工作件

  • 产品Backlog
    • 通过优先级排序的动态刷新的产品需求清单
    • 用来制定发布计划和迭代计划
  • 迭代Backlog
    • 一轮迭代中的任务清单
    • 从产品backlog中挑选出来要在本轮迭代中实现的
    • 每项任务信息包括当前剩余工作量和责任人
  • 完成标准
    • 基于随时可向用户发布的目标判定的标准
  • 迭代计划会议
    • 迭代启动前,输入是产品Backlog,输出是团队Backlog
  • 每日站立会议
    • 我昨天为项目做了什么
    • 我计划今天为项目做什么
    • 我需要什么帮助可以更高效的工作
  • 可视化管理
    • 将项目状态通过白板,屏幕实时展示
  • 迭代验收
    • 每次迭代结束时,通过演示可工作的软件检查需求是否满足客户需求
  • 迭代回顾会议
    • 每轮迭代结束时的会议,来总结经验
    • 全员参加
  • PSP
    • 潜在可交付产品增量

 

敏捷工程实践

  • 用户故事
    • 站在用户角度描述需求
    • 用户故事便于团队站在用户角度分解细化需求并制定验收标准
    • 作为一个XXX客户角色,我需要XXX功能,带来XXX好处
  • 结对编程
    • 一个编程,一个检查编程
    • 经常切换
    • 一个新的story开发时可以变换搭档
  • 测试驱动开发(TDD)
    • 以测试作为编程的中心
    • 在编写任何代码之前,首先编写定义代码功能的测试用例
    • 测试要完全可以自动化运行
    • 提高代码的安全性和可测试性
  • 持续集成(CI)
    • 团队的成员经常集成他们的工作,每人每天至少集成一次
    • 每次集成通过自动化构建完成
    • 提供大量短期反馈,避免最终集成时爆发大量问题
  • Anatomy系统解剖
    • 从用户角度全面展示复杂产品系统的功能依赖表
    • 整个系统的功能按自底向上逐步有序的开发和集成

 

精益

精益软件开发七项原则(代码简化)

  • 消除浪费
    • 缺陷:导致昂贵的返工,没有增加价值的浪费(未完成的工作)
      • 预防缺陷:测试
      • 发现缺陷:找到根源,避免再次出现
        • 自动化测试
        • 创建新的测试来监视这个缺陷
    • 过度生成:消除额外的特征(未应用的特性)
    • 运输:避免传递,减少知识的丢失(传递)
    • 等待:减少延迟(延迟)
      • 设置包含所有成员的集成式产品队伍:包括客户(代表)
    • 库存:减少半成品工作(未落地的工作)
      • 使用单件流
      • 不让半成品堆积
    • 移动:减少任务切换和中断(任务切换)
    • 过渡:减少不必要流程(过度作业)
  • 内建质量
    • 不要推迟缺陷
    • 使用测试驱动,提前解决缺陷
  • 创建知识
    • 不要忘记已经学到的经验教训
    • 记录团队的经验
  • 推迟决策
    • 得到足够可用信息时才进行决策
    • 但是不能阻碍项目其他方面的发展
    • 基于集合的设计
  • 快速交付
    • 以较短的迭代,以小批量的方式开发功能,并快速交付给客户
  • 对人尊重
    • 积极投身其中,并思考着的人,提供了最可持续发展的竞争优势
    • 不要浪费最宝贵的资源:团队成员的智慧
  • 全局优化
    • 在优化过程时应该总是试图包含尽可能多的价值流


移过等过库运缺

消内创推快对全

 

精益实践

MVP(最小可用产品)& MVF(最小可用特性)

  • 使用最小的资源,实现一个体现核心价值或创新点的产品
  • 用户只能通过实际使用中验证
  • 核心是通过快速迭代来测试商业模式并获取用户反馈

产品功能特性探索与验证

  • 实现产品特性快速验证和完善
  • 通过反馈调整产品

看板管理展现价值流

  • 通过拉动式管理,消除瓶颈与等待,提升交

建立输入节奏,实现研发价值聚焦

 

敏捷与精益的区别

敏捷:尽快交付可用的产品,与客户写作,及时获得反馈

精益:开发最小可用产品,基于看板梳理价值流,消除价值流中的浪费

敏捷的角度窄

精益的角度宽:关注整个业务环境

 

微服务

松耦合+可并行开发、部署、运行的小产品

关键实践

  • 运作模式从“集团军作战”——>“班长的战争”
  • 去中心化的服务化架构(云系统)和嵌入式系统的组件化架构
  • 采用微服务架构,服务间全解耦,10000+服务,数万人的并行开发

 

DevOps理念

 

华为敏捷项目管理实践

 

从重型IPD转向“敏捷+精益+微服务+DevOps”轻量级敏捷开发模式

华为敏捷是端到端敏捷

  • 不只是开发阶段敏捷
  • 而是从市场,到开发、运维、运营的端到端敏捷

端到端敏捷实施依赖于全自动化的DevOps持续交付流水线

 

华为敏捷项目管理流程

  1. 准备阶段
    1. 组建全功能团队,实现快速自我决策
    2. 选择DevOps敏捷项目管理平台
  2. 计划阶段
    1. 发布计划&迭代计划来消除浪费
    2. 确立迭代周期,形成交付节奏
  3. 开发阶段
    1. 召开迭代计划会议,全员需求串讲
    2. 架构解耦,最小可运行产品
    3. 每日站会,通过看板梳理并消除堆积
    4. 持续开展自动化代码检查,提前构筑质量,避免后续修复
    5. 通过自动化流水线实现持续交付,显著提升交付效率和质量
    6. 以用户故事为主线的 需求-设计-代码-用例-缺陷 双向追溯系统,实现需求的可视化跟踪
  4. 反馈阶段
    1. 开展ShowCase会议,现场验收和反馈
    2. 通过燃尽图、统计报表跟踪项目进展
    3. 开展全员质量回溯会议

 

 

考题

 

  1. 需求列表的优先级
    1. PD(产品经理)建立并维护Backlog并进行优先级排序(1)
    2. 在每轮迭代前,回顾需求列表,并选出高优先级需求进入本轮迭代Backlog
    3. 每次迭代1-4周(1)
  2. 迭代回顾会议
    1. 是促进团队持续改进的最有效手段(1)
    2. 每轮迭代结束后举行的会议,team全员参加
  3. 精益的七大原则(简化代码)
    1. 消除浪费
    2. 内建质量
    3. 创建知识
    4. 推迟决策
    5. 快速交付
    6. 对人尊重
    7. 整体优化
  4. MVP
    1. 最小可用产品
    2. 属于精益
    3. 通过MVP快速获得客户反馈,并不断改进产品
    4. 是一个刚刚能够体现创新点或核心价值的产品
    5. 客户需求只有在实际使用中才能得到验证
    6. 核心是通过快速原型迭代来测试商业模式并获取用户反馈
  5. 版本交付(更替)不会减少测试(1)
  6. 浪费
    1. 部分完成的工作
    2. 没有落地的工作
    3. 未应用的特性
    4. 过度作业
    5. 传递
    6. 任务切换
  7. 一个team有各种各样人
    1. 减少任务切换的浪费
  8. 激励方法
    1. 站立会议
    2. 看板管理
    3. 结对编程
    4. 迭代验收
    5. 迭代回顾会议
    6. 用户故事
    7. 持续集成

 

拥抱变化:产品Backlog;迭代Backlog

团队实践:团队成员;Backlog

管理实践:站立会议,迭代回顾会议;迭代验收会议;迭代回顾会议;看板管理;PSP;可视化

技术实践:TDD,CI,结对编程,用户story;系统解剖

 

敏捷

拥抱变化

用户参加

消除浪费 

 

1、为了管理好敏捷开发有哪些有效的实践手段

  • 每日站立会议
  • 迭代回顾会议
  • 看板管理
  • 产品backlog&迭代backlog
  • 迭代验收会议
  • 可视化管理

2、 迭代有哪些主要的过程和动作

3、敏捷和精益的不同点

  • 敏捷:尽快交付可用的产品,与客户协作,及时获得反馈(反馈)
  • 精益:开发最小可用产品,基于看板梳理价值流,消除价值流中的浪费(消除浪费)
  • 敏捷的角度窄
  • 精益的角度宽:关注整个业务环境

4、SOA和微服务的关系

5、要按照服务功能组合()和()团队,而不是像传统的方法进行分层

6、以下哪些是微服务的关键实践

7、敏捷理念提及的技术债务有哪些

  • 日趋不稳定的架构
  • 圈复杂度高的代码
  • 低的测试自动化率
  • 不及时清楚的静态检查警告

8、在敏捷工程实践中,以下哪个不是测试驱动开发的关键要点

  • 代码要简洁,可读性好
  • 测试用例的设计要保证完备,覆盖被测试单元的所有功能
  • 每个测试用例尽量保持独立,减少依赖,提高用例的可维护性
  • 当功能单元较大时,为维护难度,可分解为多个更小的功能单元,并逐一用TDD实现

9、敏捷开发中的迭代有哪些主要过程和动作

10、对于敏捷开发团队来说,沟通效率是非常重要的以下哪些是高效的

11、以下哪个是对DevOps不正确的描述

12、在软件开发实践中,以下哪个不属于常见的技术债务

13、软件行业中的库存问题

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

该博客文章由作者通过 CC BY 4.0进行授权。