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