SAFe(Scaled Agile Framework)学习笔记
1.SAFe 概述
SAFe(Scaled Agile Framework)是一种面向大型企业的敏捷开发框架,旨在协调多个团队和部门的协同工作,以实现高效的软件开发和交付。下面是SAFe框架的简单介绍总结:
SAFe框架包括以下四个层次:
- Portfolio层:在这个层次上,管理人员确定公司的战略和目标,并负责管理整个组织的资金和资源分配。
- Program层:在这个层次上,多个团队协同开发一个或多个产品,形成一个“敏捷发布列车(Agile Release Train)”。
- Team层:在这个层次上,各个团队负责完成特定的功能或任务,并将其集成到产品中。
- Individual层:在这个层次上,个人在团队中负责实现具体的任务和功能。
SAFe框架的核心理念包括:
- 敏捷思想:SAFe框架是建立在敏捷思想之上的,包括以人为本、持续交付、迭代和增量开发等。
- 系统思考:SAFe框架鼓励团队和组织从整体上考虑问题,将复杂的系统分解为更小、更可管理的部分。
- 持续改进:SAFe框架鼓励团队和组织不断地反思和改进自己的工作方法和流程。

SAFe框架中的一些重要概念包括:
- Agile Release Train(ART):ART是SAFe框架中的一个核心概念,它是一个由多个团队组成的敏捷团队,共同协同开发和交付一个或多个产品。
- PI Planning:PI Planning是SAFe框架中的一个重要活动,旨在协调多个团队的计划和开发工作,确保整个组织在每个Program Increment期间都能够交付高质量的产品。
- Feature:在SAFe框架中,Feature指的是一个独立的、完整的、可验证的业务价值,是产品开发的基本单位。
- Epic:Epic是一个大型的、跨部门的功能集合,需要分解为更小的特性和故事点来实现。
2. SAFe精髓
SAFe(Scaled Agile Framework)是一种广泛使用的敏捷开发框架,SAFe框架的精髓在于它提供了一种协调大规模敏捷开发的方式,并强调价值导向、持续集成和持续交付等敏捷开发的核心原则。它的完整的框架可以帮助团队更好地实施敏捷开发,并提高团队的效率和质量。它的精髓在于:
-
能够协调大规模敏捷开发:SAFe框架提供了一种能够协调多个团队、多个项目和多个部门的方式,让大规模的敏捷开发变得可行。它提供了一种标准化的流程、角色和术语,使得不同团队之间的协作变得更加容易。
-
强调价值导向:SAFe框架始终强调价值导向,将客户价值放在最高的位置。它通过价值流分析和价值流管理,帮助团队了解客户需求,同时确保团队开发的功能都是有价值的。
-
强调持续集成和持续交付:SAFe框架支持敏捷开发的核心原则,包括持续集成和持续交付。它鼓励团队在开发过程中频繁集成代码和测试,使得团队能够快速地检测和解决问题,并让功能能够快速地交付给客户。
-
提供完整的框架:SAFe框架不仅仅是一种方法论,它是一整套完整的框架,包括组织结构、角色和职责、流程、工具和方法等。这种完整的框架能够帮助团队更好地实施敏捷开发,从而提高团队的效率和质量。

3. SAFe和SCRUM敏捷流程的相同点和区别
SAFe(Scaled Agile Framework)和Scrum都是敏捷开发的流程方法,它们有一些相同点和区别。
相同点:
- 都强调团队合作和迭代开发。
- 都强调在变化和不确定性的环境下快速适应客户需求。
- 都强调持续集成和自我组织的团队。
区别:
- 适用范围不同:SAFe框架适用于大规模的企业级应用开发,而Scrum适用于中小型团队的应用开发。
- 团队组织方式不同:SAFe框架采用了分层的组织结构,包括组织层、价值流层、程序层和团队层;而Scrum则是一种基于团队自我组织的方法,没有固定的组织结构。
- 角色不同:SAFe框架包括多个角色,如产品经理、产品所有者、系统架构师等;而Scrum则只有三个角色:Scrum Master、产品所有者和开发团队。
- 流程和文档不同:SAFe框架在流程和文档上比Scrum更加详细和丰富。SAFe框架提供了完整的开发流程、工具和方法,同时也包括了详细的文档,如特性、冲刺计划、冲刺评审、需求文档等;而Scrum只有简单的流程和文档,如产品待办事项、冲刺计划和冲刺回顾等。
SAFe框架和Scrum都是敏捷开发流程方法,它们有相同点和区别。SAFe适用于大规模的企业级应用开发,采用了分层的组织结构、多个角色和详细的流程和文档;而Scrum适用于中小型团队的应用开发,采用了团队自我组织、简单的流程和文档。选择哪种方法应该根据实际需求和项目规模来决定。
4. SAFe框架的完整的开发流程、工具和方法
SAFe(Scaled Agile Framework)框架是一种大规模敏捷开发框架,它包括多个层次和组件,提供了一个完整的、可重复使用的开发流程,旨在帮助组织以一种更加协调的方式交付高质量的软件产品。以下是SAFe框架的完整的开发流程、工具和方法的详细阐述。

-
建立组织层(The Organizational Level):SAFe框架的第一步是建立组织层,这是指整个企业或组织的顶层管理,它为整个框架提供了领导力、财务和战略方向。在这一层次,通常需要定义组织的愿景、使命和价值观,并确定企业战略和产品路线图。
-
建立价值流层(The Value Stream Level):组织层下面是价值流层,它是指一系列相关的价值交付活动,包括产品经理、需求分析、开发、测试和发布等。在这一层次,需要识别所有的价值流和价值流中的价值流程,并为每个流程定义相应的角色、负责人和流程。
-
建立程序层(The Program Level):程序层是指跨团队的多个敏捷团队,共同协作交付一个共同的产品或解决方案。在这一层次,需要创建一个价值流程组合(Value Stream Solution),并且由一个主要的团队负责领导协调。在程序层中,通常需要制定一个特性路线图(Feature Roadmap),并为每个冲刺(Sprint)制定计划。
-
建立团队层(The Team Level):团队层是指单个敏捷团队,负责实现特定的需求和开发功能。在这一层次,通常需要采用Scrum方法,包括每日站立会议、Sprint回顾和Sprint计划等。此外,团队层也需要采用XP(Extreme Programming)方法,如测试驱动开发、持续集成等。
采用工具和方法:SAFe框架提供了一些工具和方法,以帮助组织实现敏捷开发。这些工具和方法包括:
-
Agile Release Train:它是一个跨团队的敏捷开发流程,由多个敏捷团队组成,它们协作完成一个共同的目标。
-
PI Planning:它是一个两天的活动,旨在帮助整个团队在一个特定的时间段内协同制定产品
以下是SAFe的三个核心概念Feature Roadmap、Agile Release Train、PI Planning的详细描述。
- Feature Roadmap
Feature Roadmap是一个逐步建立的特性路线图,它描述了在一个时间范围内需要交付的所有特性,以及它们的交付时间表。在SAFe框架中,特性是指一个独立的、完整的、可验证的业务价值。Feature Roadmap用于支持跨团队的特性计划,并为组织提供一个总体的特性视图。
在建立Feature Roadmap时,需要从顶层组织开始,确定组织的战略和产品愿景,然后将其转化为特性的清单。接下来,需要将特性按照其优先级排序,并将它们分配给不同的版本和时间框架,以支持持续的特性开发和交付。
Feature Roadmap是SAFe框架中的一个重要概念,用于协调多个团队的特性计划,并提供整个组织的特性视图。Feature Roadmap是一个逐步建立的特性路线图,它描述了在一个时间范围内需要交付的所有特性,以及它们的交付时间表。在SAFe框架中,特性是指一个独立的、完整的、可验证的业务价值。
下面是一个例子来说明Feature Roadmap的使用。
假设我们是一个电商公司,我们决定使用SAFe框架来开发我们的电商平台。首先,我们需要确定我们的产品愿景和战略目标,例如,“成为一个全球领先的电商平台,提供最好的购物体验和服务”。
接下来,我们需要将这个战略目标转化为可行的特性清单。例如,我们的特性清单可能包括:
购物车功能:允许用户将多个商品添加到购物车中,然后一起结账。
支付系统:提供多种支付方式,并确保安全的支付流程。
会员中心:允许用户注册成为会员,并提供个性化的推荐服务和折扣。
物流跟踪:允许用户跟踪他们的订单,并提供实时的物流信息。
社交媒体功能:允许用户分享他们的购物体验,并与其他用户互动。
接下来,我们需要将这些特性按照优先级进行排序,并将它们分配到不同的版本和时间框架中。例如,我们可以将购物车功能和支付系统功能分配到第一个PI(Program Increment),会员中心和物流跟踪功能分配到第二个PI,社交媒体功能分配到第三个PI。
在制定Feature Roadmap时,我们还需要考虑到不同团队的资源和能力。例如,我们可以将购物车功能分配给前端开发团队,支付系统分配给后端开发团队,会员中心分配给个性化推荐团队等等。
通过Feature Roadmap,我们可以实现多个团队的协同开发,使得整个电商平台的开发过程更加协调和高效。同时,Feature Roadmap还可以帮助我们确保开发出的特性是有价值的,并符合我们的战略目标。
- Agile Release Train
Agile Release Train(ART)是一个跨团队的敏捷开发流程,它由多个敏捷团队组成,这些团队协同完成一个共同的目标。ART是一个按照时间表和版本进行协调的团队集合,它的目标是为客户和利益相关者提供一个可预测的交付周期。
ART的时间表通常是由PI(Program Increment)计划来确定的,PI计划是一个12周的开发周期,用于支持跨团队的协同计划。ART中的所有团队都必须遵循共同的开发流程和规范,包括同步冲刺计划、协作开发、持续集成、系统演示和回顾等。
ART是SAFe框架的核心,它提供了一种可重复使用的、可预测的交付方法,使团队能够快速适应不断变化的市场需求。
假设一个公司正在开发一个电子商务平台,该平台需要多个团队的协同开发。为了实现高效的协同开发和交付,公司决定采用SAFe框架,并将所有相关团队组织成一个Agile Release Train(ART)。
在这个ART中,每个Program Increment(PI)的时间长度为12周。在每个PI开始之前,所有的团队都会参加一次PI Planning活动,以确定该PI期间的目标和计划。
在这个例子中,ART包括以下四个团队:
-
Web团队:负责开发和维护电子商务平台的网站前端,包括网页设计、交互设计、前端开发等工作。
-
API团队:负责开发和维护电子商务平台的API接口,包括后端开发、数据库设计等工作。
-
移动端团队:负责开发和维护电子商务平台的移动端应用,包括iOS和Android两个平台。
-
测试团队:负责进行各种类型的测试,包括自动化测试、手动测试、性能测试等工作。
在每个PI期间,每个团队都会完成一些特定的Feature和User Story。在每个团队内部,他们会采用Scrum框架进行敏捷开发,包括Daily Scrum、Sprint Planning、Sprint Review和Sprint Retrospective等活动。
在ART层面,所有团队的工作会在PI Planning活动中进行协调,以确保整个平台能够在每个PI期间内按时交付高质量的软件产品。同时,ART还会定期进行系统演示、系统整合和系统验证等活动,以确保各个团队的工作能够顺利集成和交付。
- PI Planning
PI Planning是一个由整个ART团队参与的两天活动,旨在帮助整个团队在一个特定的时间段内协同制定产品和特性的开发计划。PI Planning在SAFe框架中是非常重要的,因为它为团队提供了一个统一的、协同的计划视图。
在PI Planning期间,团队将一起评估当前的状态,审查特性清单,并确定下一个PI的目标。团队会根据当前的业务需求和愿景,制定一个可行的开发计划,并将计划分配给不同团队。
在PI Planning活动中,所有团队会参加一个两天的会议。第一天会议的重点是确定ART的目标和里程碑,以及确定每个团队的贡献和计划。在这个过程中,团队会制定一个PI Objectives,也就是该PI期间希望完成的具体目标和计划。
例如,在上面的例子中,前端团队的PI Objectives可能是实现一些新的UI特效和优化用户体验,后端团队的PI Objectives可能是实现一些新的数据处理和查询功能,移动端团队的PI Objectives可能是实现一些新的移动端特性和提升应用性能。
第二天的会议重点是确定团队的迭代计划和任务分配。在这个过程中,团队会制定一个详细的迭代计划,包括迭代期间需要完成的具体User Story和任务,以及团队成员之间的工作分配和时间安排。
例如,在这个例子中,前端团队的迭代计划可能包括实现一个新的购物车功能和一个商品详情页面,后端团队的迭代计划可能包括实现一个新的用户登录和数据备份功能,移动端团队的迭代计划可能包括实现一个新的消息推送和应用性能优化。
通过PI Planning活动,所有团队能够清晰地了解ART的目标和计划,以及各自的贡献和任务分配。
相关文章:
SAFe(Scaled Agile Framework)学习笔记
1.SAFe 概述 SAFe(Scaled Agile Framework)是一种面向大型企业的敏捷开发框架,旨在协调多个团队和部门的协同工作,以实现高效的软件开发和交付。下面是SAFe框架的简单介绍总结: SAFe框架包括以下四个层次:…...
Redis 集群搭建
前缀参考文章1:Centos7 安装并启动 Redis-6.2.6 前缀参考文章2:Redis 主从复制-服务器搭建【薪火相传/哨兵模式】 管道符查看所有redis进程:ps -ef|grep redis 杀死所有redis进程:killall redis-server 1. 首先修改 redis.conf 配…...
【Unity VR开发】结合VRTK4.0:创建物理按钮
语录: 如今我努力奔跑,不过是为了追上那个曾经被寄予厚望的自己 前言: 使用线性关节驱动器和碰撞体从动器可以轻松创建基于物理的按钮,以使交互者能够在物理上按下按钮控件,然后挂钩到驱动器事件中以了解按钮何时被按…...
【软件测试】web自动化测试如何开展合适?自动化测试用例如何设计?资深测试的总结......
目录:导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜)前言 首先,还…...
ARouter::Compiler The user has configuration the module name, it was
学习组件化使用的是阿里的ARouter,我是照着案例敲的,在编译的时候报了这么一个错。 我查了好多资料,大部分都是说build.gradle 配置出现了问题,比如没有配置 javaCompileOptions {annotationProcessorOptions {arguments [AROUTE…...
Jmeter(GUI模式)详细教程
Jmeter(GUI模式)详细教程 目录:导读 一、安装Jmeter 二、Jmeter工作原理 三、Jmeter操作步骤 Jmeter界面 1、测试计划 2、线程组 3、HTTP请求 4、监听器 四、压力测试 写在最后 前些天,领导让我做接口的压力测试。What…...
2023年CDGA考试-第14章-大数据和数据科学(含答案)
2023年CDGA考试-第14章-大数据和数据科学(含答案) 单选题 1.MapReduce模型有三个主要步骤 () A.剖析、关联、聚类 B.提取、转换、加载 C.映射、修正、转换 D.映射、洗牌、归并 答案 D 2.以下哪种技术已经成为面向数据科学的大数据集分析标准平台。 A.MPP技术。 B.Hado…...
【阿旭机器学习实战】【36】糖尿病预测---决策树建模及其可视化
【阿旭机器学习实战】系列文章主要介绍机器学习的各种算法模型及其实战案例,欢迎点赞,关注共同学习交流。 【阿旭机器学习实战】【36】糖尿病预测—决策树建模及其可视化 目录【阿旭机器学习实战】【36】糖尿病预测---决策树建模及其可视化1. 导入数据并…...
简易黑客初级教程:黑客技术,分享教学
第一节,伸展运动。这节操我们要准备道具,俗话说:“工欲善其事,必先利其器”(是这样吗?哎!文化低……)说得有道理,我们要学习黑客技术,一点必要的工具必不可少。 1,一台属于自己的可以上网的电…...
日本公派访问学者的具体申请流程
公派日本访问学者的具体申请流程,知识人网整理了相关的资料以供大家参考。第一、申请材料一般申请CSC日本访问学者,截止日是每年的1月15号左右,但是学院在1月10号之前就审查材料了。材料包括:CSC网页的报名表,教授邀请…...
投票点赞链接制作投票链接在线制作投票图文链接制作点赞
用户在使用微信投票的时候,需要功能齐全,又快捷方便的投票小程序。而“活动星投票”这款软件使用非常的方便,用户可以随时使用手机微信小程序获得线上投票服务,很多用户都很喜欢“活动星投票”这款软件。“活动星投票”小程序在使…...
PHY设备驱动
1. 概述 MAC控制器的驱动使用的是platform总线的连接方式,PHY设备驱动是基于device、driver、bus的连接方式。 其驱动涉及如下几个重要部分: 总线 - sturct mii_bus (mii stand for media independent interface) 设备 - struct phy_device 驱动 - struc…...
Linux——UDP协议与相关套接字编程
一.概念在网络通信中,传输层中最常用的通信协议有两个:TCP协议与UDP协议。这两种协议虽然都可以用于网络通信,但是通信方式不同决定了应用场景的不同。与TCP协议相比,UDP协议最具特色的不同点有两个:无连接与面向数据报…...
EM算法 简明理解
E:Expection,期望步,利用估计的参数,来确定未知因变量的概率,并利用其来计算期望值。 M:Maximization,最大化,使用最大似然法更新参数值,使E步中期望值出现的概率最大。…...
论坛项目小程序和h5登录
项目中安装uview出现npm安装uview 直接报错:创建一个package.json配置文件在进行安装。cmd到项目。初始化一个package.json文件(vue项目的配置文件) npm init --yes 安装uview项目点击关注进入管页面,需要验证用户是否登录查用户是…...
kubernetes集群pod中的pause容器作用
kubernetes集群pod中的pause容器作用 我们搭建完集群了以后,可以使用最简单的方式创建一个pod,随意你建立什么pod,去访问相应node上执行docker ps 就会看到有一种pause容器,但是你可能从来没有启用 etrics-scraper_dashboard-me…...
【2.24】malloc()分配内存、MySQL事务、项目、动态规划
malloc是如何分配内存的? 在 Linux 操作系统中,虚拟地址空间的内部又被分为内核空间和用户空间两部分,不同位数的系统,地址空间的范围也不同。比如最常见的 32 位和 64 位系统,如下所示: 内核空间与用户空…...
Unity——使用铰链关节制作悬挂物体效果
目的在场景中创建一个悬挂的物体,是把多个模型悬挂在一起可以自由摇摆,类似链条的效果效果图前言什么是铰链关节?铰链关节 将两个刚体(Rigid body)组会在一起,从而将其约束为如同通过铰链连接一样进行移动。…...
plsql过程语言之uxdb与oracle语法差异
序号场景uxdboracle1在存储过程中使用goto子句create or replace procedure uxdbc_oracle_extension_plsql_goto_0001_procedure01(t1 int) language plsql as $$ begin if t1%20 then goto even_number; else goto odd_number; end if; <<even_number>> raise…...
file_get_contents 打开本地文件报错: failed to open stream: No such file or directory
php 使用file_get_contents时报错 failed to open stream: No such file or directory (打开流失败,没有这样的文件或目录) 1. 首先确保文件路径没问题 最好是直接复制一下文件的路径 2. windows电脑可以右键该文件 → 属性→安全 →对象名称 选中后复制一下 3. 然后…...
C++初阶-list的底层
目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...
TDengine 快速体验(Docker 镜像方式)
简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能,本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用 安装包的方式快…...
<6>-MySQL表的增删查改
目录 一,create(创建表) 二,retrieve(查询表) 1,select列 2,where条件 三,update(更新表) 四,delete(删除表…...
golang循环变量捕获问题
在 Go 语言中,当在循环中启动协程(goroutine)时,如果在协程闭包中直接引用循环变量,可能会遇到一个常见的陷阱 - 循环变量捕获问题。让我详细解释一下: 问题背景 看这个代码片段: fo…...
【位运算】消失的两个数字(hard)
消失的两个数字(hard) 题⽬描述:解法(位运算):Java 算法代码:更简便代码 题⽬链接:⾯试题 17.19. 消失的两个数字 题⽬描述: 给定⼀个数组,包含从 1 到 N 所有…...
屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!
5月28日,中天合创屋面分布式光伏发电项目顺利并网发电,该项目位于内蒙古自治区鄂尔多斯市乌审旗,项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站,总装机容量为9.96MWp。 项目投运后,每年可节约标煤3670…...
学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1
每日一言 生活的美好,总是藏在那些你咬牙坚持的日子里。 硬件:OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写,"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...
土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等
🔍 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术,可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势,还能有效评价重大生态工程…...
鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/
使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题:docker pull 失败 网络不同,需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...
Unit 1 深度强化学习简介
Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库,例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体,比如 SnowballFight、Huggy the Do…...
