您的软件开发生命周期数据模板
您的软件开发生命周期数据模板
- 建议收集的属性
- 需要追踪的关键活动
- 提取指南
软件开发生命周期属性
| 名称 | 描述 | ||
|---|---|---|---|
|
开发项
DevelopmentItem
|
工作单元(如功能、Bug 修复或任务)的唯一标识符,用作主要的 case 标识符。 | ||
|
描述
开发项代表在软件开发生命周期中流转的单个可跟踪工作单元。它将从创建到最终部署的所有相关活动连接成一个连贯的 case。在 GitLab 中,这通常由 Issue 的内部 ID (IID) 表示,该 ID 在项目内是唯一的。 按开发项进行分析支持端到端交付周期的测量、瓶颈识别和流程一致性检查。它是理解从构思到生产的交付效率的基础。
为何重要
这是核心的 case 标识符,它将所有流程 event 关联在一起,从而能够追踪任何给定工作项的全生命周期。
获取方式
这通常是 GitLab Issue 的内部 ID (IID)。可以在 Issues API 响应的“iid”字段中找到。
示例
1024512PRJ-2345
|
|||
|
开始时间
StartTime
|
指示某项活动或事件开始时间的时间戳。 | ||
|
描述
StartTime 标记特定活动发生的精确日期和时间。对于 GitLab 中的 event,这会在各种 timestamp 字段中捕获。例如,“Issue 已创建”活动的 StartTime 是该 issue 的 此 timestamp 是 Process Mining 中的核心时间要素。它用于按时间顺序排列 event、计算活动之间的持续时间、测量交付周期以及分析流程随时间变化的绩效。
为何重要
该属性提供 event 的时间顺序,这对于计算所有基于时间的指标以及理解流程流转至关重要。
获取方式
从 GitLab 的各种 timestamp 字段中提取,如 Issue 上的 'created_at'、'updated_at'、'closed_at' 以及 Merge Request 上的 'merged_at'。
示例
2023-10-26T10:00:00Z2023-11-01T14:35:10Z2023-11-15T09:00:00Z
|
|||
|
活动
Activity
|
发生的特定流程步骤或 event 的名称,例如“Issue 已创建”或“Merge Request 已合并”。 | ||
|
描述
Activity 属性捕获开发项上发生的各个 event。这些 event 不以单一字段形式存储在 GitLab 中,而是通过 Issue、Merge Request 和 CI/CD Pipeline 中的各种操作和 timestamp 字段推导得出。例如,创建 issue、推送 commit、pipeline 失败或批准 merge request 都是不同的活动。 该属性是构建流程图、可视化 workflow 以及分析 event 顺序和频率的基础。它用于识别偏差、步骤间的瓶颈以及常见的流程路径。
为何重要
它定义了流程图中的步骤,支持端到端开发 workflow 的可视化和分析。
获取方式
源自 GitLab 事件流中的事件类型和状态变更,或通过解析 Issue 和 Merge Request 上的 'created_at'、'merged_at' 和 'closed_at' 等 timestamp 字段得出。
示例
问题已创建开发已开始Merge Request 已合并Pipeline 失败已部署到生产环境
|
|||
|
严重性
Severity
|
开发项的严重性级别,通常用于 bug 或事故。 | ||
|
描述
严重性表示 bug 或 issue 的影响程度,从致命到轻微不等。GitLab 没有原生严重性字段,因此这几乎总是通过标签(例如“severity::1”、“severity::2”)来实现。 该属性对于“严重性升级趋势”仪表板及相关 KPI 至关重要。分析生命周期中严重性的变化可以突出最初被低估的问题,或识别出加剧问题的流程。
为何重要
有助于确定工作的优先级,并分析高严重性项目是否得到更快处理。跟踪变更可支持“严重性升级频率”这一 KPI。
获取方式
源自应用在 GitLab Issue 上的“标签”。需要通过映射将“S1”、“S2”等标签解释为严重等级。
示例
1 - 紧急2 - 高3 - 中4 - 低
|
|||
|
受理人
Assignee
|
event 发生时分配给 issue 或 merge request 的用户。 | ||
|
描述
负责人是指在流程中特定时间点负责该工作项的开发人员或用户。在 GitLab 中,这在 Issue 或 Merge Request 的 按负责人分析对于“开发人员工作量与分配”仪表板至关重要。它有助于了解资源利用率,识别过载的个人或团队,并分析不同人员之间的交接情况。
为何重要
追踪各项任务的执行者,以便进行工作负载分析、优化资源分配效率,并识别因交接导致的流程延迟。
获取方式
从 GitLab Issues 和 Merge Requests API 响应中的“assignee.username”或“assignees”字段中获取。
示例
jdoeasmithr.williams
|
|||
|
开发项类型
DevelopmentItemType
|
开发项的分类,例如“功能”、“Bug”、“任务”或“维护”。 | ||
|
描述
该属性对正在执行的工作性质进行分类。在 GitLab 中,这通常通过在 issue 上添加标签来实现。团队使用标签来区分新功能、缺陷修复、技术债和其他工作类型。 按开发项类型进行分析可以比较不同类型工作的流程流转和交付周期。例如,分析人员可以分析 bug 修复是否比功能开发更快,或者技术债任务是否遵循不同的评审流程。
为何重要
按工作类型细分流程有助于识别某些类型的工作是否更容易出现延迟、返工或偏差。
获取方式
通常源自 GitLab Issue 中的“labels”。需要通过映射逻辑将特定的标签转换为标准化的类型。
示例
特性Bug任务技术债
|
|||
|
结束时间
EndTime
|
指示活动或事件完成的时间戳。 | ||
|
描述
EndTime 标记 Activity 完成的精确日期和时间。对于 GitLab 中的许多原子事件(如“Issue Created”),EndTime 与 StartTime 相同。对于有持续时间的 Activity(如“代码审查”),它代表完成时的 timestamp,例如给出最终审批的时间。 此属性对于准确计算单个 Activity 的持续时间(处理时间)至关重要。通过区分在任务上投入的实际工作时间与任务之间的等待时间,它有助于进行详尽的瓶颈分析。
为何重要
支持计算精确的 Activity 持续时间(处理时间),这是识别流程中低效步骤的关键。
获取方式
对于原子 event,这与 StartTime 相同。对于具有持续时间的活动,必须通过在 data 中查找相应的完成 event 来推导。
示例
2023-10-26T10:00:00Z2023-11-01T18:00:15Z2023-11-15T11:30:00Z
|
|||
|
项目名称
ProjectName
|
开发项所属的 GitLab 项目名称。 | ||
|
描述
该属性标识正在进行工作的具体代码仓库或项目。在 GitLab 中,每个 issue 和 merge request 都包含在一个项目中。 按项目名称进行分析可以比较不同产品、组件或服务的绩效。它可以帮助识别某些项目是否拥有比其他项目更健康的 SDLC 流程,并且对于将仪表板筛选到特定的关注区域非常有用。
为何重要
支持按产品、应用或组件进行流程分析切片,有助于开展针对性的改进工作。
获取方式
从 Project API 中的“name”或“path_with_namespace”字段中获取,通过 Issues 和 Merge Requests 中的“project_id”进行关联。
示例
platform/api-gatewayfrontend/customer-portalmobile/ios-app
|
|||
|
Merge Request 状态
MergeRequestStatus
|
与该 event 关联的 Merge Request 状态,例如“已开启”、“已合并”或“已关闭”。 | ||
|
描述
该属性捕获 event 发生时 Merge Request (MR) 的状态。GitLab MR 有不同的状态:“已开启”、“已关闭”、“已合并”或“已锁定”。这与整体开发项状态是分开的。 跟踪 MR 状态对于分析 SDLC 的代码集成阶段至关重要。它直接支持“代码评审交付周期与吞吐量”等仪表板,并有助于精准发现 MR 创建、评审、批准和合并之间的延迟。
为何重要
提供对代码评审和合并过程的可见性,这通常是 SDLC 中的关键瓶颈。
获取方式
从 GitLab Merge Requests API 响应中的“state”字段中获取。
示例
openedmerged已关闭locked
|
|||
|
Pipeline 状态
PipelineStatus
|
CI/CD pipeline 的运行状态,例如“成功”、“失败”或“运行中”。 | ||
|
描述
该属性指示与 commit 或 merge request 关联的 CI/CD pipeline 执行结果。GitLab 中的常见状态包括“运行中”、“待处理”、“成功”、“失败”、“已取消”和“已跳过”。 此 data 对于“返工与重运行分析”仪表板至关重要。频繁的 pipeline 失败可能是返工和延迟的主要来源,分析其频率、位置和影响是提高开发效率和代码质量的关键。
为何重要
追踪自动化构建和测试的成功与失败情况,帮助您识别返工循环以及代码质量或测试自动化中存在的问题。
获取方式
从 GitLab CI/CD Pipelines API 响应中的“status”字段中获取。
示例
成功失败运行中已取消
|
|||
|
交接等待时间
HandoffWaitTime
|
由不同负责人执行的两个连续 Activity 之间的计算空闲时间。 | ||
|
描述
该指标计算一个活动结束与下一个活动开始之间的时间间隔,特别是在负责人发生变更的情况下。例如,它测量开发人员完成工作到评审员开始代码评审之间的时间。 这是“平均交接等待时间”KPI 的关键指标。它有助于揭示资源分配以及团队或个人之间沟通中的隐藏低效问题,突出显示那些不属于任何实际工作部分的延迟。
为何重要
量化不同人员或团队之间交接时的闲置时间,揭示隐藏的延迟和沟通瓶颈。
获取方式
由 Process Mining 工具计算。它需要分析 case 内的连续 event,检查“Assignee”是否不同,然后计算时间差。
示例
1 天 2 小时15 minutes8 小时
|
|||
|
最后数据更新
LastDataUpdate
|
时间戳,表示此事件的数据上次从源系统刷新的时间。 | ||
|
描述
该属性记录 event data 最后一次从 Process Mining 数据集中提取或更新的日期和时间。它不代表 event 发生的时间,而是代表该 event 记录最后一次同步的时间。 此信息对于理解 data 新鲜度和验证流程分析的时效性至关重要。它有助于用户确信仪表板和 KPI 是基于最新 data 的,并告知他们源系统与分析之间可能存在的滞后。
为何重要
提高 data 新鲜度的透明度,确保用户了解流程分析的实时性。
获取方式
此 timestamp 由 data 提取工具或 ETL 流程在 data 刷新时生成并记录。
示例
2024-05-21T02:00:00Z2024-05-22T02:00:00Z
|
|||
|
发布版本
ReleaseVersion
|
与部署关联的计划或实际软件版本标签。 | ||
|
描述
该属性标识开发项所属的具体软件版本。在 GitLab 中,这可以通过里程碑、受保护的标签或“发布 (Releases)”功能中的条目进行关联。 这对于“发布计划准时率跟踪”仪表板至关重要。通过将实际部署日期与发布版本相关的计划日期进行对比,组织可以衡量其按时交付的能力,并诊断发布延迟的原因。
为何重要
将开发项连接到特定的软件发布版本,这对于跟踪发布进度和进度遵循情况至关重要。
获取方式
这可以源自 GitLab Releases、Git 标签名称或用于发布计划的里程碑标题。
示例
v1.2.0v3.0.0-beta2023.4.1
|
|||
|
周期时间
CycleTime
|
开发项从第一个活动到最后一个活动所经过的总时间。 | ||
|
描述
Cycle Time 是一个衡量 case 总时长的计算指标。它通常计算单个开发项从第一个事件(例如“Issue Created”)到最后一个事件(例如“Deployed to Production”)之间的时间差。 这是衡量整体流程效率的主要 KPI。它是“SDLC 端到端周期时间”等 dashboard 中的核心指标,用于跟踪改进情况并识别可能指示系统性问题的长时间运行 case。
为何重要
这是 Process Mining 的核心 KPI,用于衡量开发生命周期的端到端效率。
获取方式
由 Process Mining 工具针对每个唯一的 CaseId,用最大 StartTime 减去最小 StartTime 计算得出。
示例
10天4小时23 小时 15 分钟35天
|
|||
|
团队名称
TeamName
|
与项目或负责人关联的开发团队。 | ||
|
描述
团队名称代表负责开发项的小组或分队。此信息通常不是 GitLab 中的标准字段,往往通过项目命名规范、群组结构或使用外部参考表将负责人映射到其相应团队来得出。 该属性用于在团队层面分析流程绩效。它有助于比较不同团队之间的效率、工作负载和流程遵循情况,为“特定阶段瓶颈分析”等仪表板提供团队维度的视角。
为何重要
支持跨不同团队的绩效分析和流程对比,有助于识别特定团队的瓶颈或最佳实践。
获取方式
通常通过将项目名称或负责人映射到 GitLab 外部定义的团队结构,或从 GitLab 群组层级推断得出。
示例
前端-Alpha后端服务平台基础设施
|
|||
|
处理时间
ProcessingTime
|
单个活动的持续时间,计算为结束时间与开始时间之差。 | ||
|
描述
处理时间测量特定活动的实际工作时间,与活动之间的等待时间相区别。对于单个 event 记录,其计算方式为 EndTime 减去 StartTime。对于瞬时 event,处理时间为零。 该指标对于“特定阶段瓶颈分析”至关重要。通过汇总某个阶段(如代码评审)内活动的处理时间,分析人员可以准确判断实际执行工作所花费的时间,从而帮助精准定位低效的流程步骤。
为何重要
测量单个活动的持续时间,有助于区分实际工作时间和闲置等待时间,从而进行精确的瓶颈分析。
获取方式
由 Process Mining 工具计算得出,为 Activity 的 EndTime 与 StartTime 之差。
示例
2 hours 30 minutes0 分钟3 天 8 小时
|
|||
|
开发项状态
DevelopmentItemStatus
|
event 发生时开发项的状态,例如“开启”、“进行中”或“已关闭”。 | ||
|
描述
该属性反映主要工作项的状态,在 GitLab 中通常是 Issue。GitLab Issue 有一个 跟踪状态变更对于理解 case 生命周期至关重要。它有助于识别项目在每种状态下花费的时间,并可用于在“SDLC 端到端交付周期”等仪表板中筛选进行中或已完成的工作。
为何重要
提供 case 状态的快照,支持分析各阶段耗时,并可筛选进行中与已完成的工作。
获取方式
主要状态来自 GitLab Issue 的“state”字段(“opened”、“closed”)。更细粒度的状态通常从标签推导得出。
示例
opened已关闭进行中审核中
|
|||
|
是否返工
IsRework
|
一个布尔值标志,指示活动是否属于返工循环的一部分。 | ||
|
描述
该计算属性标记代表流程倒退的活动,例如在测试开始后又返回开发阶段。此标记的逻辑通常涉及检测特定的活动序列,例如在同一个 case 中,“Pipeline 失败”或“QA 测试开始”之后发生了“开始开发”event。 该属性直接支持“返工与重运行分析”仪表板和“测试后返工率”KPI。它允许对返工进行轻松筛选和量化,帮助团队了解其频率、原因以及对项目时间表的影响。
为何重要
直接标记并量化 rework,从而轻松分析流程低效和质量问题的起因及影响。
获取方式
由 Process Mining 工具通过分析每个 case 的 Activity 序列并识别指示 rework 的模式计算得出。
示例
truefalse
|
|||
|
源系统
SourceSystem
|
标识 data 的来源系统。 | ||
|
描述
该属性指定流程 data 的来源。对于此数据模型,其值将始终为“GitLab”。 在可能合并来自多个系统(例如用于计划的 Jira 和用于执行的 GitLab)的流程 data 的环境中,包含此属性至关重要。它支持筛选、细分,并有助于维护数据血缘。
为何重要
确保数据来源清晰,这对于数据治理以及集成来自多个企业系统的数据至关重要。
获取方式
这是一个静态值“GitLab”,在 data 转换过程中添加。
示例
GitLab
|
|||
|
目标分支
TargetBranch
|
Merge Request 的目标分支名称。 | ||
|
描述
目标分支是变更打算合并入的分支,例如“main”、“develop”或类似“release/1.5”的发布分支。这是任何 Merge Request 的核心信息。 按目标分支进行分析可以揭示针对不同合并目的地的不同流程行为。例如,合并到“main”分支可能比合并到功能分支具有更严格的审批流程和更长的交付周期。它还有助于将生产环境部署与其他类型的代码集成区分开。
为何重要
有助于区分不同的开发和发布 workflow,因为流程会根据目标分支的不同而显著变化。
获取方式
从 GitLab Merge Requests API 响应中的“target_branch”字段中获取。
示例
maindeveloprelease/v2.1.0hotfix/user-auth-bug
|
|||
|
里程碑标题
MilestoneTitle
|
开发项所属的里程碑或 Sprint 的标题。 | ||
|
描述
GitLab 中的 Milestone 用于根据特定目标或时间框(如 sprint 或发布版本)跟踪工作。此属性用于捕获该 Milestone 的名称或标题。 该属性允许在特定 sprint 或规划周期的背景下分析流程绩效。它可以用来查看周期时间是否从一个 sprint 到下一个 sprint 有所改善,或者过滤流程视图以仅显示与即将发布版本相关的工作。
为何重要
将开发工作与 Sprint 或发布等计划周期关联,从而分析实际表现与计划时间框的对比。
获取方式
从 GitLab Issues 或 Merge Requests API 响应中的“milestone.title”字段中获取。
示例
2023年第四季度发布Sprint 23.11第一阶段:MVP
|
|||
软件开发生命周期活动
| 活动 | 描述 | ||
|---|---|---|---|
|
Merge Request 已创建
|
表示初始开发工作已完成,代码已准备好进行评审和集成。这是 GitLab workflow 中的一个明确核心 event,在开发人员创建新的 Merge Request (MR) 时捕获。 | ||
|
为何重要
这是一个关键里程碑,标志着从开发到评审和测试的交接。它是分析整个代码评审和 CI/CD pipeline 周期的切入点。
获取方式
这是通过 Merge Requests API 或从“merge_requests”表中的“created_at” timestamp 捕获的明确 event。
捕获
使用 Merge Request 的 'created_at' 时间戳。
事件类型
explicit
|
|||
|
Merge Request 已合并
|
此活动标志着代码评审和集成过程的成功完成。这是当用户将 Merge Request 的分支合并到目标分支时发生的一个明确 event。 | ||
|
为何重要
这是一个重大里程碑,表明开发和评审已完成。它既是衡量开发周期的终点,也是衡量部署前置时间的起点。
获取方式
这是从“merge_requests”表中的“merged_at” timestamp 捕获的明确 event。合并时系统还会生成一条备注。
捕获
使用 Merge Request 的 'merged_at' 时间戳。
事件类型
explicit
|
|||
|
已部署到生产环境
|
此活动标志着代码成功部署到线上生产环境并交付最终用户使用。当 GitLab CI/CD pipeline 中特定的“部署到生产环境”作业成功完成时,系统会捕获此活动。 | ||
|
为何重要
这是流程的主要结束 event,标志着价值已交付。它对于测量总的端到端 SDLC 交付周期和发布频率至关重要。
获取方式
从专门指定的生产部署 CI/CD job 成功运行后的 'finished_at' timestamp 中捕获。GitLab 的 Environments 功能会明确跟踪此信息。
捕获
使用生产环境部署成功的 CI job 中的 'finished_at' 时间戳。
事件类型
explicit
|
|||
|
问题已创建
|
此活动标志着开发生命周期的开始,代表创建了一个新的工作项(如功能、bug 或任务)。当用户在 GitLab 中创建新 issue 时,系统会显式捕获该操作并记录创建 timestamp。 | ||
|
为何重要
这是端到端流程的主要起始 event。分析从 issue 创建到部署的时间,可以完整展现 SDLC 交付周期。
获取方式
这是通过 Issues API 或从“issues”表中的“created_at” timestamp 捕获的明确 event。系统备注也会记录此创建 event。
捕获
使用 Issue 的 'created_at' 时间戳。
事件类型
explicit
|
|||
|
Pipeline 失败
|
此活动发生在 CI/CD pipeline 执行在任何阶段失败时,例如构建错误或测试失败。GitLab 会显式记录每个 pipeline 的最终状态,使得故障易于识别。 | ||
|
为何重要
Pipeline 失败是导致返工的主要原因。分析其频率、持续时间和原因有助于识别质量问题、不稳定的测试以及向开发人员反馈循环中的瓶颈。
获取方式
通过“ci_pipelines”表中的 pipeline 记录状态为“failed”来识别。“finished_at” timestamp 指示故障发生的时间。
捕获
筛选状态为“failed”的 pipeline 记录,并使用“finished_at” timestamp。
事件类型
explicit
|
|||
|
Pipeline 已开始
|
代表自动 CI/CD pipeline 的启动,通常运行构建、测试和安全扫描。每当 pipeline 被触发(例如通过 commit 或 MR 创建)时,GitLab 都会显式创建一个带有开始 timestamp 的 pipeline 记录。 | ||
|
为何重要
跟踪 pipeline 执行情况对于监控自动化测试和集成过程的健康度与效率至关重要。它有助于识别在自动化验证上花费了多少时间。
获取方式
从 'ci_pipelines' 表中的流水线记录或通过 Pipelines API 获取 'created_at' 或 'started_at' timestamp。
捕获
使用与 MR 分支关联的 Pipeline 执行记录中的时间戳。
事件类型
explicit
|
|||
|
代码审查已开始
|
标记 Merge Request 同行评审流程的开始。该 event 是根据首个评审相关操作推断的,例如作者以外的人员发布的第一个评论或线程。 | ||
|
为何重要
测量从 MR 创建到开始评审的时间可以突出排队延迟。减少这段等待时间是缩短整个代码评审周期的关键。
获取方式
根据 Merge Request 上非作者的首条评论或评审线程的 timestamp 推断。此 data 可通过系统备注或 Notes API 获取。
捕获
在 MR 中查找非作者用户的首次评论 timestamp。
事件类型
inferred
|
|||
|
已添加审批
|
代表评审员对 Merge Request 中的代码变更进行了正式批准。这是 GitLab 在用户点击“批准”按钮时捕获的一个明确 event。 | ||
|
为何重要
审批是关键的质量关卡。通过跟踪审批,有助于分析获取必要签字所需的时间,并确保符合审查政策。
获取方式
从 Merge Request 审批事件中捕获。这些信息可以通过 Approvals API 获取,或在 MR 历史记录中查看。
捕获
使用 Merge Request 审批事件日志中的时间戳。
事件类型
explicit
|
|||
|
开发已开始
|
此活动标志着针对该 issue 的实际编码工作的开始。由于 GitLab 没有显式的“开始开发”按钮,这通常根据推送到与该 issue 关联分支的首个代码 commit 来推断。 | ||
|
为何重要
精准定位增值开发工作的确切起点,从而准确测量纯编码阶段,并将其与计划或排队时间区分开。
获取方式
通过查找与该 issue 链接的功能分支上的首个 commit timestamp 来推断。这需要将 issue 与分支关联,通常通过命名规范或元数据实现。
捕获
在与 issue ID 关联的分支上查找首次 commit 的 timestamp。
事件类型
inferred
|
|||
|
部署已开始
|
代表开始将代码发布到特定环境(如预发布或生产环境)的过程。在 GitLab 中,这对应于 CI/CD pipeline 中“部署”作业的开始。 | ||
|
为何重要
跟踪部署的开始有助于分离部署阶段的持续时间。这对于测量和优化部署前置时间至关重要。
获取方式
从配置为部署 job 的 CI/CD job 的 'started_at' timestamp 中捕获。这是 GitLab Environments 和 Deployments 功能的一部分。
捕获
使用部署任务 CI job 日志中的 'started_at' 时间戳。
事件类型
explicit
|
|||
|
问题已关闭
|
代表工作项的最终管理性关闭,通常在变更已部署并验证之后。这是在用户于 GitLab 中关闭 issue 时捕获的明确 event。 | ||
|
为何重要
关闭 Issue 通常意味着所有相关工作的最终结束。将其与部署时间进行对比,可以揭示部署后验证或行政流程中的延迟。
获取方式
这是从“issues”表中的“closed_at” timestamp 或相应的系统备注中捕获的明确 event。
捕获
使用 Issue 的 'closed_at' 时间戳。
事件类型
explicit
|
|||
|
问题已分配
|
代表将 issue 分配给特定的开发人员或团队,表示已确立工作的归属。每当 issue 的负责人字段被填写或更改时,GitLab 都会记录这一明确 event。 | ||
|
为何重要
跟踪指派情况对于分析资源分配、团队工作量和交接时间至关重要。它有助于识别从工作创建到被接手之间的延迟。
获取方式
从 GitLab Issue 的系统备注中捕获,该备注记录了添加或更改“负责人”的时间。事件的 timestamp 记录在备注中。
捕获
从 Issue 的系统备注中提取“负责人变更”事件。
事件类型
explicit
|
|||