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