DEC培训Day-1:导论和精益敏捷

2020-10-09  本文已影响0人  MisterCH

2020年9月18日 DEC培训

一、Devops导论(董越)

概述

软件工程

核心思想:工程化。
为了解决软件危机,用工程化方法开发软件。要有严格的计划和周期。

敏捷——>精益:消除各种浪费

精益:定义工作目标,定义价值,识别价值流,流动,拉动,尽善尽美。

将关注点从自身转移到客户,关注价值流。

持续集成

通常狭义、不涉及SIT、UAT等

持续交付

软件可随时发布上线,交付测试。
持续交付是一种能力,能够让给各类变更(如新特性、配置变更、缺陷修复、尝试性内容等)以安全、快速、可持续的方式交付到生产环境或用户手上

架构和技术方面

结构化变成——>面向对象变成——>软件复用
实体机——>虚拟机——>容器——>函数服务
微服务、云原生
思路:尽量做到复用

DevOps诞生

原因:软件交付的形式的巨大变化:本地安装——>在线服务
部门墙:Dev团队与Ops团队
DevOps的目的是期待更顺畅的协作:Dev、QA、Ops
是“法”的维度

广义的DevOps

将Devops在本时代下的实践整合在一起
DevOps = 精益敏捷 + 持续交付 + 容器化 + 微服务
DevOps = Dev + QA + Sec + Ops
DevOps = 软件开发交付运营的最佳实践

DevOps的优化目标

产品定义侧

产品实现侧

——>在具体场景下的多快好省:更高产能、更快响应速度、适当的质量、合理的成本

不是所有项目都适合DevOps

DevOps的十个核心策略

细粒度低耦合

不仅仅是软件架构,也适用于组织架构
组织架构的考量:全栈团队更快速
集中办公的效率?

工具、环境、方法的优化,可以扩张团队的职能,让团队提高自服务的能力

小批量持续流动

瀑布——>Scrum——>以特性为颗粒度的交付(不再赶发布火车)
需求拆分
限制在制品数量
持续集成、持续交付
去掉发布窗口

综合手段保证质量和安全

扩展测试的定义
各阶段的综合保证:综合考虑测试的性质放在合适的位置
“便宜”的测试,尽量左移
"贵"的测试,进行右移

自动化与自助化

自动化好处:省时间、省成本、可重复、完备记录
单个活动的自动化+流程的自动化
自动化——>自助化
工具的稳定性

加速各项活动

硬件能力
并行
避免重复
只关注增量
缓存

关注各个过程活动中的加速

及时修复

涵盖范围:测试阶段、发布后
如何实现:及时通知、优先处置、修不如退、便捷排查

完备记录、充分展现

自动化不仅仅关注往前推动,还关注记录

保持一致性

内容涵盖:可重复性、标准化、组织级统一、运行环境一致性
实现方法:规范化、内化到工具、版本控制、代码化
有章可循的适度灵活
配置参数两类

协调完成整体功能

架构层面:接口定义、接口管理、兼容性
管理层面:SoS、SAFe、LeSS、DAD
工程层面:特性涉及多个部署单元的改动、集成、发布涉及多个部署单元、完整性、顺序、摘除与回退

基于度量的持续改进

组织结构与文化

1.1 关键思路:自主性

特性团队:长期的、具备交付价值所需的各种角色的、可以协同完成完整用户价值交付的团队

1.2 各职能之间的协作

1.3 负责不同开发内容的团队的划分

长期团队
独立完成特性代码改动
运用康威定律:通过组织的改进,来推动产品的改进
有负责公共品的团队
层级:还是需要部分划分来进行层级管理
其他情况

1.4 团队规模

两个披萨原则:5-9人合适
自主 和 专注

DevOps文化

设置共同目标
尊重和信任
及时和充分的沟通
聚焦于解决问题并改进机制
鼓励学习和探索
其他

二、精益敏捷(丁晓娇)

基础

参考书

五大原则:定义价值,识别价值流,流动,拉动,尽善尽美。

拉动:让客户按需求去拉动,而不是硬推给客户不想要的;只有被客户和下游拉动时,价值才流动

流动:从按“部门”和“批量”转化为“生产团队”和“连续流”

价值流中的浪费:

  1. 部分完成的工作(未被集成的代码)
  2. 额外过程
  3. 额外特性:最大化的做当下的需求,不要考虑额外的工作
  4. 任务调换:任务调整、切换时候的浪费
  5. 移动:针对强矩阵组织,打破部门墙。不需要协调资源去做事情。
  6. 缺陷:提前发现问题,成本可降低
  7. 等待:等待开发、等待测试、等待部署,都需要透明化,想办法去消除等待
  8. 管理活动:尽量自主去解决问题

为什么要精益敏捷开发
做到多快好省。通过强调价值、流动和人员,就可以提高质量,降低成本,加快交付速度

敏捷研发模型

Scrum:透明化、检查反馈、持续改进

长期:向团队同步价值、确定使命和目标
中期:制定需求和版本中期规划
迭代前:需求准备,优先级
迭代中:需求池、每日站会时间把握、暴露问题、sprint review还是需要的
两周一回顾
3355:3个角色、3个工件、5个活动、5个价值观

五大常见实践:

看板方法

一种基于精益思想的软件开发方法,其五大实践:

透明化

针对不同公司、不同场景组织架构下,浪费的活动定义不一样
价值活动:需求分析、编码、……、部署
I型浪费:

  1. TO C场景下的编写文档
  2. 跨团队沟通
  3. 系统间联调

II型浪费:

  1. 协调团队排期
  2. 部署申请
限制在制品的价值、原则和方法

什么是在制品
又称WIP,“进行中”能交付客户价值的工作,包括待开发的需求,未被集成的代码,未测试的代码,未部署的制品等。

为什么?

基本原则

思路
限制在制品的过程就是发现问题和驱动改进的过程

方法

管理流动方法
管理并监控看板的工作流动

每个教练要定制适合自己团队的scrum+kanban研发模型

需求管理活动

用户故事 VS 工作故事

用户故事:AS...(角色),I WANT...(活动目标),SO I CAN...(价值原因)
工作故事:WHEN...(场景),I WANT...(活动目标),SO I CAN...(价值原因)

基本要素:标题、描述、验收条件(DoD)、优先级、大小
产品参与验收

六个特性:INVEST
从用户角度拆到最小可测试,可独立交付的最小用户功能

产品经理从用户价值角度拆,RD从独立负责人,风险可控角度去拆

要权衡管理成本,对于技术性团队,下太重管理成本可能做不下去。

需求拆分

需求拆分是后续所有过程的基础

  1. 面临的挑战
  1. 需求拆分方法
    复杂型故事:涉及基础架构型故事,无法拆分,占比较小
    符合型故事:包含多个更小的故事,可以拆分,占比较大
    针对业务人员,需要了解无法拆分的原因。

  2. SPIDR方法

5). Spikes:刺入探索法。在不知道客户需求的情况下
2). Paths:路径分析法。客户如何使用功能,客户路径。
1). Interfaces:场景界面法。理清什么场景下客户的需求,通过什么样的功能来满足痛点。
4). Data:数据因素法。与Rules类似,逐步将数据补充给用户。
3). Rules:规则分析法。在Paths考虑的情况下,可通过迭代的方式逐步增加规则。

INTERFACE法

image.png

PATHS

image.png

DATA

image.png

RULES

image.png

SPKIES
使用MVP来探索用户的需求

  1. 需求估算方法
    建议需求估算不要花费太多时间
    统计各种SIZE需求花费的历史数据,可计算花费人天,适合中长期规划估算
    理想人天:比较难以估准。
    根据自己的团队文化进行估算

  2. 需求规划和发布
    通过用户故事地图,按照场景和大功能进行需求归类,再从每个版本规划功能(产品经理的职责)

跨团队敏捷(Scrum of Scrum)

适用场景:团队需求耦合、团队技术架构耦合,且团队人数也较多的时候,需要拆分多个Scrum小团队,通过SoS方法进行协作

尽量不要走版本火车的模式,通过管理手段应该避免浪费,而不是增加浪费

产品经理团队制定愿景、对齐中长期目标、横向对齐需求优先级并驱动一起做计划

跨团队需求引入特性技术负责人,把控和对齐方案

社区沟通架构和技术演进和成长,促进人员能力提升和跨团队沟通

Sos扩展实践

Sos扩展实践

上一篇 下一篇

猜你喜欢

热点阅读