Ihr Software Development Lifecycle Daten-Template
Ihr Software Development Lifecycle Daten-Template
- Empfohlene Attribute zur Erfassung
- Wichtige Aktivitäten zur Verfolgung
- Extraktionsanleitung für ServiceNow DevOps
Software Development Lifecycle Attribute
| Name | Beschreibung | ||
|---|---|---|---|
| Aktivitätsname ActivityName | Der Name des spezifischen Software Development Lifecycle Events, das aufgetreten ist, wie 'Development Started' oder 'Code Review Performed'. | ||
| Beschreibung Dieses Attribut erfasst den Namen jedes Meilensteins oder Tasks, der innerhalb des Software Development Lifecycle abgeschlossen wurde. Diese Aktivitäten bilden die sequenziellen Schritte des Prozesses, von der Erstellung bis zum Deployment. Die Analyse der Reihenfolge und Häufigkeit dieser Aktivitäten ist die primäre Funktion von Process Mining. Es ermöglicht den Aufbau der Prozesslandkarte, hilft Bottlenecks zwischen den Schritten zu identifizieren und hebt nicht-konforme oder ineffiziente Prozessvarianten hervor. Die definierte Menge an Aktivitäten umfasst Schlüsselphasen wie Design, Entwicklung, Testing und Deployment. Bedeutung Es definiert die Schritte in der Prozesslandkarte und ermöglicht die Analyse des Prozessflusses, die Identifizierung von Bottlenecks sowie die Erkennung von Abweichungen vom Standard-SDLC. Datenquelle Dies wird typischerweise durch das Mapping von Statusänderungen, Event-Datensätzen oder Audit-Trail-Einträgen auf eine standardisierte Liste von Aktivitätsnamen abgeleitet. Zum Beispiel könnte ein 'state'-Feld, das sich zu 'In Progress' ändert, auf 'Development Started' abgebildet werden. Beispiele Entwicklung gestartetCode CommittedQA-Tests abgeschlossenIn Produktion bereitgestellt | |||
| Entwicklungselement DevelopmentItem | Die eindeutige Kennung für eine einzelne Arbeitseinheit, wie ein Feature, ein Bug oder ein Task, die den Entwicklungszyklus durchläuft. | ||
| Beschreibung Das Development Item dient als primärer Case-Identifier und repräsentiert eine zu verfolgende, eigenständige Arbeitseinheit. Es verknüpft alle Aktivitäten, von der initialen Konzeption und Planung über Entwicklung, Testing und Deployment für dieses spezifische Item. In der Process Mining Analyse ist dieses Attribut fundamental für die Rekonstruktion der End-to-End-Journey jedes Work Items. Es ermöglicht die Visualisierung von Prozessflüssen, die Berechnung der gesamten Zykluszeiten und die Identifizierung von Prozessvarianten für einzelne Funktionen oder Bugfixes. Jedes Event im Log muss mit einem Development Item verknüpft sein, um eine kohärente Prozesslandkarte zu erstellen. Bedeutung Dies ist der zentrale Identifier, der alle zusammenhängenden Entwicklungsaktivitäten zu einer einzigen Prozessinstanz verbindet und es somit ermöglicht, den gesamten Lifecycle jedes Work Items zu analysieren. Datenquelle Dieser Identifier ist typischerweise der Primärschlüssel aus Tabellen, die Stories, Bugs oder Tasks verwalten, wie die Tabellen 'rm_story', 'rm_bug' oder 'task' in ServiceNow. Beispiele STRY0010015BUG0034092TASK0050118 | |||
| Startzeit EventTime | Der genaue Timestamp, der angibt, wann eine spezifische Aktivität oder ein Event stattgefunden hat. | ||
| Beschreibung Dieses Attribut liefert Datum und Uhrzeit, wann jede Aktivität im Software Development Lifecycle aufgezeichnet wurde. Es ist essenziell für die chronologische Reihenfolge der Events und für alle zeitbasierten Analysen. Im Process Mining wird die Start Time verwendet, um Dauern zwischen Aktivitäten zu berechnen, Wartezeiten zu identifizieren und die gesamte Zykluszeit des Prozesses zu messen. Es ist eine kritische Komponente für Dashboards, die die Performance analysieren, wie die SDLC End-to-End Cycle Time Analysis, und für die Berechnung von Key Performance Indicators wie Code Review Lead Time. Bedeutung Dieser Timestamp ist essenziell für die korrekte Reihenfolge der Events und die Berechnung aller Performance-Metriken, einschließlich Zykluszeiten, Dauern und Wartezeiten. Datenquelle Typischerweise in systemgenerierten Timestamp-Feldern wie 'sys_updated_on' oder 'sys_created_on' aus dem Audit-Trail oder Task-Tabellen zu finden. Beispiele 2023-10-26T10:00:00Z2023-10-27T14:35:10Z2023-11-01T09:15:00Z | |||
| Letzte Datenaktualisierung LastDataUpdate | Timestamp, der angibt, wann die Daten für dieses Event Log zuletzt aus dem Quellsystem aktualisiert wurden. | ||
| Beschreibung Dieses Attribut zeichnet auf, wann der Datensatz zuletzt aus ServiceNow DevOps extrahiert oder aktualisiert wurde. Es bezieht sich auf den gesamten Datensatz und nicht auf einzelne Events. Dieser Timestamp ist entscheidend für das Verständnis der Aktualität der Analyse. Er informiert Benutzer darüber, wie aktuell die Process Erkenntnisse sind, und hilft bei der Planung von Datenaktualisierungen. Die Anzeige dieser Informationen auf Dashboards bietet Kontext zu allen Metriken und Visualisierungen und stellt sicher, dass Entscheidungen auf Basis zeitnaher Daten getroffen werden. Bedeutung Bietet wichtigen Kontext zur Aktualität der Daten und stellt sicher, dass Benutzer verstehen, wie aktuell die Prozessanalyse ist. Datenquelle Dieser Timestamp wird während des Datenextraktionsprozesses generiert und hinzugefügt, wobei aufgezeichnet wird, wann die Extraktion ausgeführt wurde. Beispiele 2023-11-15T08:00:00Z | |||
| Quellsystem SourceSystem | Identifiziert das System, aus dem die Daten extrahiert wurden, in diesem Fall ServiceNow DevOps. | ||
| Beschreibung Dieses Attribut gibt das Ursprungssystem für die Event-Daten an. Für diesen Prozess wird es durchgängig 'ServiceNow DevOps' sein. Obwohl es statisch erscheinen mag, ist die explizite Angabe des Quellsystems entscheidend für die Data Governance und in Umgebungen, in denen Daten aus mehreren Systemen, wie Jira oder Azure DevOps, zusammengeführt werden könnten. Es gewährleistet Klarheit über die Datenherkunft und hilft bei der Diagnose von Datenqualitäts- oder Extraktionsproblemen. Bedeutung Gewährleistet die Datenrückverfolgbarkeit und ist wesentlich für die Aufrechterhaltung der Datenintegrität, insbesondere bei der Integration von Daten aus mehreren Entwicklungstools. Datenquelle Dies ist ein statischer Wert, der während des Datenextraktions- und Transformationsprozesses hinzugefügt werden sollte. Beispiele ServiceNow DevOps | |||
| Bearbeitungsgruppe AssignmentGroup | Das Team oder die Gruppe, die zum Zeitpunkt der Aktivität für das Entwicklungselement verantwortlich ist. | ||
| Beschreibung Dieses Attribut identifiziert das einem Work Item zugewiesene Team, z. B. 'Frontend Developers', 'Backend Services' oder 'QA Team'. Im Verlauf eines Work Items wird es oft zwischen verschiedenen Zuweisungsgruppen übergeben. Die Verfolgung der Zuweisungsgruppe ist entscheidend für das Verständnis der abteilungsübergreifenden Zusammenarbeit und Übergaben. Sie hilft, systemische Verzögerungen zu identifizieren, die auftreten, wenn Arbeit von einem Team zum anderen wechselt. Dieses Attribut unterstützt die Analyse der Teamleistung, der Workload und die Identifizierung, welche Teams Bottlenecks im Gesamtfluss darstellen. Bedeutung Verfolgt, welches Team für die Arbeit verantwortlich ist, und ermöglicht die Analyse der Teamleistung, des Workload-Ausgleichs und der Effizienz von Übergaben zwischen Teams. Datenquelle Diese Informationen werden im Feld 'assignment_group' gespeichert, das ein Standardfeld in Task-bezogenen Tabellen in ServiceNow ist. Beispiele Plattform-EngineeringMobile App TeamQualitätssicherungDevOps | |||
| Betroffenes Modul/Komponente ModuleComponentAffected | Das spezifische Softwaremodul, die Anwendung oder Komponente, auf die sich das Entwicklungselement bezieht. | ||
| Beschreibung Dieses Attribut kategorisiert die Entwicklungsarbeit nach dem Teil des Systems, den sie betrifft. Dies könnte ein spezifischer Microservice, eine UI-Komponente oder eine Backend-Anwendung sein. Die Segmentierung des Prozesses nach Modul oder Komponente ist entscheidend für die Identifizierung lokalisierter Bottlenecks. Das 'Component-Specific Bottleneck Erkenntnisse' Dashboard und der 'Avg Stage Duration by Component' KPI stützen sich auf dieses Attribut, um festzustellen, ob bestimmte Teile der Codebasis konsistent mit längeren Entwicklungszyklen, höheren Nacharbeitsraten oder häufigeren Deployment-Fehlern verbunden sind. Dies hilft, Verbesserungsmaßnahmen dort zu konzentriert werden, wo sie am dringendsten benötigt werden. Bedeutung Ermöglicht die Segmentierung der Analyse nach Anwendung oder Komponente, um Bottlenecks oder Qualitätsprobleme, die spezifisch für bestimmte Systemteile sind, zu isolieren. Datenquelle Dies ist oft ein benutzerdefiniertes Feld oder eine Referenz zur Configuration Management Database (CMDB), die das Work Item mit einem 'cmdb_ci'-Datensatz verknüpft. Konsultieren Sie die ServiceNow DevOps Dokumentation. Beispiele Billing ServiceBenutzerauthentifizierungs-UIReporting DatabaseAPI Gateway | |||
| Entwicklungselement-Zykluszeit DevelopmentItemCycleTime | Die gesamte verstrichene Zeit von der Erstellung des Entwicklungselements bis zu dessen finalem Abschluss oder Deployment. | ||
| Beschreibung Dieses Attribut ist eine berechnete Metrik, die die End-to-End-Dauer für ein einzelnes Entwicklungselement darstellt. Es wird berechnet, indem die Differenz zwischen dem Timestamp der allerersten Aktivität und der allerletzten Aktivität für jeden Case ermittelt wird. Dies ist ein primärer Key Performance Indicator für den gesamten SDLC-Prozess und unterstützt direkt den 'Average SDLC Cycle Time' KPI. Es bietet ein High-Level-Maß für die Prozessgeschwindigkeit und -effizienz. Die Analyse dieser Metrik über die Zeit und über verschiedene Dimensionen, wie Priorität oder Team, hilft, die Auswirkungen von Prozessverbesserungsinitiativen zu verfolgen. Bedeutung Stellt die gesamte End-to-End-Dauer für ein Work Item dar, eine Schlüsselmetrik zur Messung der gesamten Prozesseffizienz und -geschwindigkeit. Datenquelle Dies ist kein Feld im Quellsystem. Es wird im Process Mining Tool berechnet, indem die minimale StartTime von der maximalen StartTime für jede CaseId subtrahiert wird. Beispiele 15 Tage 4 Stunden3 Tage 12 Stunden32 Tage 8 Stunden | |||
| Ist Nacharbeit IsRework | Ein Boolesches Flag, das `true` ist, wenn die Aktivität Teil einer Nacharbeitsschleife ist, z.B. die Rückkehr zur Entwicklung nach dem Testen. | ||
| Beschreibung Dies ist ein abgeleitetes Attribut, das Aktivitäten identifiziert, die auftreten, nachdem ein Prozess zu einer früheren Phase zurückgekehrt ist. Zum Beispiel, wenn eine 'Development Started' Aktivität nach einer 'QA Testing Completed' Aktivität für dasselbe Element auftritt, wird es als Nacharbeit gekennzeichnet. Dieses Flag ist essentiell für die Quantifizierung und Visualisierung von Nacharbeit. Es unterstützt direkt das 'Rework and Rejection Flow Analysis' Dashboard und wird zur Berechnung des 'Rework Rate after Testing' KPI verwendet. Durch das Kennzeichnen dieser Events können Analysten einfach nach der Häufigkeit, Ursachen und Auswirkungen von Nacharbeit auf die gesamte Zykluszeit filtern und diese analysieren. Bedeutung Dieses Flag erleichtert die Quantifizierung und Analyse von Nacharbeit und hilft dabei, die Prozessqualität zu messen und die Ursachen wiederholter Arbeit zu identifizieren. Datenquelle Dieses Attribut wird innerhalb des Process Mining Tools berechnet, indem die Abfolge der Aktivitäten für jeden Case analysiert wird, um Rückwärtsbewegungen im Prozessfluss zu erkennen. Beispiele truefalsch | |||
| Priorität DevelopmentItemPriority | Die Prioritätsstufe, die dem Entwicklungselement zugewiesen ist, wie 'Hoch', 'Mittel' oder 'Niedrig'. | ||
| Beschreibung Dieses Attribut kategorisiert Entwicklungselemente basierend auf ihrer geschäftlichen Dringlichkeit. Prioritätsstufen helfen Teams, sich auf die kritischsten Aufgaben zu konzentrieren, und werden oft zur Verwaltung von SLAs und Stakeholder-Erwartungen verwendet. Im Process Mining ist die Priorität eine Schlüsseldimension für die vergleichende Analyse. Sie ermöglicht es, die Prozesslandkarte zu filtern, um zu sehen, ob hochpriorisierte Items einen schnelleren oder anderen Pfad nehmen. Sie ist essentiell für das 'High-Priority Feature Delivery Time' Dashboard und KPI, um zu validieren, ob kritische Elemente tatsächlich beschleunigt werden. Bedeutung Ermöglicht das Filtern und Vergleichen von Prozessen für verschiedene Prioritätsstufen, um zu überprüfen, ob hochprioritäre Elemente schneller und effizienter verarbeitet werden. Datenquelle Dies ist ein Standardfeld, oft 'priority' genannt, in Task-bezogenen Tabellen in ServiceNow. Beispiele 1 - Kritisch2 - Hoch3 - Moderat4 - Niedrig | |||
| Status des Entwicklungselements DevelopmentItemState | Der Status oder Zustand des Entwicklungselements zum Zeitpunkt des Events, wie 'Offen', 'In Progress' oder 'Geschlossen'. | ||
| Beschreibung Dieses Attribut spiegelt den offiziellen Status des Entwicklungselements innerhalb von ServiceNow wider. Während Aktivitäten abgeleitete Prozessschritte sind, repräsentiert der Zustand die formale Phase im Workflow des Systems. Der Zustand ist oft die Quelle, aus der Aktivitäten abgeleitet werden. Er kann zur Datenvalidierung und zur Erstellung einfacherer, High-Level-Ansichten des Prozesses verwendet werden. Zum Beispiel kann die Analyse der in jedem Zustand verbrachten Zeit eine andere Sicht auf Bottlenecks bieten als die Analyse der Zeit zwischen Aktivitäten. Er ist auch nützlich, um Elemente zu identifizieren, die ins Stocken geraten oder gelöst wurden. Bedeutung Gibt den offiziellen Systemstatus eines Work Items an, der oft die Quelle für die Ableitung von Aktivitäten ist und zur Validierung sowie für eine High-Level-Statusanalyse genutzt werden kann. Datenquelle Dies ist ein Standardfeld, üblicherweise 'state' oder 'stage' genannt, in Task-bezogenen Tabellen in ServiceNow. Beispiele PendingIn BearbeitungBereit für den TestVollständig geschlossen | |||
| Typ des Entwicklungselements DevelopmentItemType | Die Klassifizierung des Work Items, wie 'Feature', 'Bug', 'Technical Debt' oder 'Task'. | ||
| Beschreibung Dieses Attribut unterscheidet zwischen verschiedenen Arten von Arbeiten, die den SDLC-Prozess durchlaufen. Zum Beispiel könnte der Prozess zur Behebung eines kritischen Bugs anders und schneller sein als der Prozess zur Entwicklung eines neuen Funktionen. Die Analyse des Prozesses basierend auf dem Work Item Typ ermöglicht ein nuancierteres Verständnis der Performance. Sie hilft, Fragen zu beantworten wie: 'Haben Bugs eine höhere Nacharbeitsrate als neue Funktionen?' oder 'Ist unsere Zykluszeit zur Reduzierung technischer Schulden akzeptabel?'. Diese Segmentierung bietet tiefere Erkenntnisse als eine allgemeine Prozessansicht. Bedeutung Unterscheidet zwischen verschiedenen Arten von Arbeiten, wie Funktionen und Bugs, die unterschiedliche Prozesspfade, Prioritäten und erwartete Dauern haben können. Datenquelle Dies kann aus der Quelltabelle des Datensatzes (z. B. 'rm_story' vs. 'rm_bug') oder aus einem 'type'-Feld in einer generischen Task-Tabelle bestimmt werden. Beispiele FeatureBugAufgabeSpike | |||
| Zugewiesener Entwickler AssignedDeveloper | Der Name oder die ID des Entwicklers oder Benutzers, der dem Entwicklungselement zum Zeitpunkt der Aktivität zugewiesen war. | ||
| Beschreibung Dieses Attribut identifiziert die für die Ausführung einer bestimmten Task oder Aktivität verantwortliche Person. Es ist dynamisch und kann sich ändern, wenn das Entwicklungselement zwischen verschiedenen Phasen und Teams wechselt. Dieses Attribut ist entscheidend für die Analyse von Ressourcenallokation, Workload und Übergaben. Es unterstützt direkt das 'Developer Workload and Handoffs' Dashboard und den 'Activity Volume per Developer' KPI. Durch die Verfolgung von Änderungen in diesem Feld ist es möglich, Übergabezeiten zu messen und Kollaborations-Bottlenecks zwischen Entwicklern oder zwischen Entwicklungs- und QA-Teams zu identifizieren. Bedeutung Dies ist essenziell für ressourcenbasierte Analysen, einschließlich Workload-Verteilung, Übergabeeffizienz und der Identifizierung teamspezifischer Performance-Muster. Datenquelle Diese Informationen werden typischerweise im Feld 'assigned_to' in Task-bezogenen Tabellen in ServiceNow gespeichert. Beispiele David MillerAnna WilliamsJames Brown | |||
| Bereitstellungsstatus DeploymentStatus | Gibt das Ergebnis einer Bereitstellungsaktivität an, typischerweise 'Erfolg' oder 'Fehler'. | ||
| Beschreibung Dieses Attribut erfasst das Ergebnis eines Deployments in eine bestimmte Umgebung. Es ist eine kritische Information für das Verständnis der Zuverlässigkeit und Stabilität des Release-Prozesses. Dieses Attribut ist essentiell für das 'Deployment Success and Failure Trends' Dashboard und den 'Deployment Failure Rate' KPI. Durch die Analyse der Häufigkeit und Trends von Deployment-Fehlern können Organisationen zugrunde liegende Probleme in ihrem Testing, ihrer Infrastruktur oder Release-Koordination identifizieren. Es hilft, Anstrengungen auf die Verbesserung der Qualität und Zuverlässigkeit der Softwareauslieferung zu konzentrieren. Bedeutung Misst direkt den Erfolg von Bereitstellungsaktivitäten, was entscheidend für die Berechnung der Bereitstellungsfehlerquote und die Analyse der Release-Stabilität ist. Datenquelle Dieser Status wird typischerweise in Deployment Tracking Tasks oder CI/CD Pipeline Ausführungsdatensätzen erfasst, die in ServiceNow DevOps integriert sind. Beispiele ErfolgFehlerMit Warnungen abgeschlossen | |||
| Commit-ID CommitId | Der eindeutige Identifier des Source Code Commit, der mit der Entwicklungsarbeit verbunden ist. | ||
| Beschreibung Dieses Attribut bietet eine direkte Verknüpfung von einem Entwicklungselement zu der spezifischen Code-Änderung im Source Code Repository, wie Git. Es wird erfasst, wenn eine 'Code Committed' Aktivität auftritt. Im Process Mining bereichert die Commit ID die Analyse, indem sie Prozessdaten mit Engineering-Daten verbindet. Sie ermöglicht es Analysten, ein problematisches Deployment auf die exakte Code-Änderung zurückzuführen oder Code-Komplexitätsmetriken mit Entwicklungszykluszeiten zu korrelieren. Dies bietet eine viel tiefere, technischere Ebene der Root Cause Analysis. Bedeutung Verknüpft das Process Event mit einer spezifischen Code-Änderung und ermöglicht eine tiefere Ursachenanalyse, indem Prozessmetriken mit Code-Ebene-Details korreliert werden. Datenquelle Dies wird durch ServiceNow DevOps-Integrationen mit Source Code Management Systemen wie Git oder SVN erfasst. Die Daten befinden sich in verwandten Tabellen, die mit dem Entwicklungselement verknüpft sind. Beispiele a1b2c3d4e5f6f0e9d8c7b6a59a8b7c6d5e4f | |||
| Endzeit EventEndTime | Der genaue Timestamp, der angibt, wann eine Aktivität abgeschlossen wurde. Bei sofortigen Events ist dieser identisch mit dem Start Time. | ||
| Beschreibung Dieses Attribut liefert Datum und Uhrzeit, wann jede Aktivität im Software Development Lifecycle abgeschlossen wurde. Es ist besonders nützlich für Aktivitäten mit messbarer Dauer, wie 'Code Review Performed' oder 'QA Testing'. Im Process Mining ermöglicht das Vorhandensein von Start- und Endzeit eine präzise Berechnung der Aktivitätsbearbeitungszeiten, wodurch diese von der Wartezeit zwischen Aktivitäten unterschieden werden. Dies hilft festzustellen, ob Verzögerungen auf lange Tasks oder lange Wartezeiten auf Ressourcen zurückzuführen sind. Für Events, die als augenblicklich gelten, wie 'Build Triggered', kann die End Time identisch mit der Start Time sein. Bedeutung Ermöglicht die präzise Berechnung der Aktivitätsbearbeitungszeit, was hilft, zwischen Arbeitszeit und Wartezeit zu unterscheiden. Datenquelle Dies muss möglicherweise abgeleitet werden. Es könnte der Timestamp der Startzeit der nächsten Aktivität sein, oder es könnte aus einem separaten 'end date'-Feld stammen, falls im Quellsystem verfügbar. Beispiele 2023-10-26T18:05:00Z2023-10-28T11:20:15Z2023-11-02T10:00:00Z | |||
| Geplante Release-Version PlannedReleaseVersion | Das Ziel-Software-Release oder die Version, in der das Entwicklungselement geliefert werden soll. | ||
| Beschreibung Dieses Attribut verknüpft ein Entwicklungselement mit einem spezifischen, geplanten Release, wie 'Version 2.3' oder 'Q4 2023 Release'. Es ist ein Schlüsselelement für Projektmanagement und Release-Planung. Für Process Mining ist dieses Attribut entscheidend für das 'Release Plan Adherence Monitoring' Dashboard. Durch den Vergleich der tatsächlichen Abschlussdaten mit den geplanten Release-Daten können Teams die Termintreue messen, Elemente identifizieren, die Gefahr laufen, ein Release zu verpassen, und die Ursachen von Release-Verzögerungen analysieren. Es stellt eine direkte Verbindung zwischen dem Low-Level-Entwicklungsprozess und High-Level-Geschäftszielen her. Bedeutung Verbindet Entwicklungsarbeit mit spezifischen Releases und ermöglicht die Analyse der Termineinhaltung und des Einflusses von Prozessverzögerungen auf Release-Zeitpläne. Datenquelle Diese Informationen werden typischerweise in einem 'release'- oder 'planned_release'-Feld gespeichert, das oft auf eine Release Management Tabelle in ServiceNow verweist. Konsultieren Sie die ServiceNow DevOps Dokumentation. Beispiele v3.4.1Q1 2024 ReleaseProjekt Phoenix Go-Live | |||
| Nacharbeitsgrund ReworkReason | Eine Klassifizierung oder Beschreibung, warum ein Entwicklungselement nach dem Testen nachbearbeitet werden musste. | ||
| Beschreibung Wenn ein Element QA oder UAT fehlschlägt, erfasst dieses Attribut den Grund für den Fehler. Dies könnte eine spezifische Bug-Kategorie, ein Missverständnis der Anforderungen oder ein Umgebungsproblem sein. Diese Informationen liefern kritischen Kontext für das 'Rework and Rejection Flow Analysis' Dashboard. Anstatt nur zu wissen, dass Nacharbeit aufgetreten ist, können Analysten verstehen, warum sie aufgetreten ist. Dies ermöglicht gezielte Verbesserungen, wie bessere Anforderungsdefinitionen, erweitertes Unit Testing oder stabilere Testumgebungen, um die gesamte Nacharbeitsrate zu reduzieren. Bedeutung Bietet qualitative Einblicke, warum Nacharbeit auftritt, und ermöglicht gezielte Prozessverbesserungen zur Steigerung der Qualität und Reduzierung von Nacharbeits-Schleifen. Datenquelle Dies kann in einem 'close_notes'-Feld erfasst werden, wenn ein Test fehlschlägt, oder in einem dedizierten benutzerdefinierten Feld 'rework_reason'. Konsultieren Sie die ServiceNow DevOps Dokumentation. Beispiele Anforderung falsch interpretiertRegression BugPerformance-Test fehlgeschlagenUI/UX-Problem | |||
Software Development Lifecycle Aktivitäten
| Aktivität | Beschreibung | ||
|---|---|---|---|
| Bereitstellung fehlgeschlagen | Zeigt an, dass der Versuch, das Entwicklungselement in Produktion bereitzustellen, erfolglos war. Dies wird von ServiceNow DevOps explizit erfasst, wenn die CI/CD-Pipeline einen Fehler meldet. | ||
| Bedeutung Dies ist ein kritischer Fehler-Endpunkt. Die Analyse seiner Häufigkeit und Ursachen ist entscheidend für die Verbesserung der Release-Stabilität und die Reduzierung der Deployment-Fehlerrate. Datenquelle Erfasst aus dem 'completion_status' eines Pipeline Execution Erfassen Protokolliert, wenn die Produktions-Deployment-Pipeline einen Fehlerstatus meldet. Ereignistyp explicit | |||
| Code-Review durchgeführt | Diese Aktivität kennzeichnet den Abschluss eines Peer Code Reviews, der typischerweise mit einem Pull oder Merge Request verbunden ist. Dieses Event kann explizit über DevOps-Integrationen erfasst oder aus Statusänderungen verwandter Datensätze abgeleitet werden. | ||
| Bedeutung Dies ist ein kritisches Quality Gate. Die Analyse seiner Dauer hilft, Bottlenecks im Review-Prozess zu identifizieren, was eine häufige Ursache für Verzögerungen im SDLC ist. Datenquelle Kann vom 'Merged'- oder 'Completed'-Event eines Pull Request-Datensatzes in der Git-Integration von ServiceNow erfasst oder aus einer Statusänderung des Entwicklungselements zu 'Code Review Complete' abgeleitet werden. Erfassen Protokolliert, wenn ein mit dem Work Item verknüpfter Pull Request gemerged wird. Ereignistyp explicit | |||
| Entwicklung gestartet | Diese Aktivität markiert den Zeitpunkt, an dem ein Entwickler aktiv mit dem Codieren oder Implementieren des Entwicklungselements beginnt. Dies wird typischerweise durch eine Statusänderung des Items zu 'In Progress', 'Development' oder 'Coding' abgeleitet. | ||
| Bedeutung Dies ist ein entscheidender Meilenstein, der den Beginn der wertschöpfenden Konstruktionsphase signalisiert. Er ist essenziell für die Messung von Developer Lead Time und Code Review Zykluszeiten. Datenquelle Abgeleitet vom Timestamp, wann das Feld 'State' im Entwicklungs-Item-Datensatz (z. B. Story [rm_story]) auf den Status 'In Progress' oder einen gleichwertigen Status aktualisiert wird. Erfassen Basiert auf dem Timestamp einer Statusänderung zu 'In Progress' oder einem ähnlichen Wert. Ereignistyp inferred | |||
| Entwicklungselement erstellt | Diese Aktivität markiert die Erstellung eines neuen Entwicklungselements, wie einer Story, eines Bugs oder eines Epics, innerhalb von ServiceNow. Dieses Event wird typischerweise explizit erfasst, wenn ein neuer Datensatz in die entsprechende Tabelle, wie die Story [rm_story] Tabelle, eingefügt wird. | ||
| Bedeutung Dies ist das primäre Start Event für den SDLC-Prozess. Es ermöglicht die Messung der gesamten End-to-End-Zykluszeit und verfolgt die initiale Bedarfsaufnahme. Datenquelle Protokolliert in den Tabellen sys_audit oder sys_history_line bei der Erstellung eines Datensatzes in einer entwicklungsbezogenen Tabelle, wie Story [rm_story], Epic [rm_epic] oder Defect [rm_defect]. Der Erstellungs-Timestamp befindet sich typischerweise auf dem Datensatz selbst. Erfassen Erfasst vom Erstellungs-Timestamp des Entwicklungselement-Datensatzes. Ereignistyp explicit | |||
| In Produktion bereitgestellt | Dieses Event markiert den erfolgreichen Abschluss des Deployments in die Produktionsumgebung. Es wird explizit von ServiceNow DevOps erfasst, wenn das CI/CD-Tool einen erfolgreichen Pipeline-Abschluss meldet. | ||
| Bedeutung Dies ist der primäre Erfolgs-Endpunkt des SDLC-Prozesses. Er vervollständigt den Value Stream und ist essenziell für die Berechnung der Gesamtzykluszeit. Datenquelle Erfasst aus dem 'completion_status' eines Pipeline Execution Erfassen Protokolliert, wenn die Produktions-Deployment-Pipeline erfolgreich abgeschlossen wird. Ereignistyp explicit | |||
| QA-Tests abgeschlossen | Bedeutet, dass das Quality Assurance Team seine Testaktivitäten für das Entwicklungselement erfolgreich abgeschlossen hat. Dies wird typischerweise abgeleitet, wenn der Zustand des Elements aus einer Testphase in einen Status wie 'Ready for UAT' oder 'Done' übergeht. | ||
| Bedeutung Dieser Meilenstein markiert den Abschluss eines wichtigen Quality Gates. Er ist eine Voraussetzung für nachfolgende Phasen wie User Acceptance Testing oder Release-Vorbereitung. Datenquelle Abgeleitet vom Timestamp einer Statusänderung von einem Teststatus (z. B. 'In QA') zu einem Status nach dem Test (z. B. 'Ready for UAT' oder 'Resolved'). Erfassen Basiert auf dem Timestamp einer Statusänderung von 'Testing' zu einem nachfolgenden Status. Ereignistyp inferred | |||
| UAT genehmigt | Zeigt an, dass die geschäftlichen Stakeholder das Entwicklungselement nach dem User Acceptance Testing formell genehmigt haben. Dies ist ein wichtiger Meilenstein, der aus einer Statusänderung abgeleitet wird, wie z.B. dem Übergang von 'In UAT' zu 'Bereit für Release' oder 'Approved'. | ||
| Bedeutung Dies ist die finale geschäftliche Genehmigung, bevor ein Item für das Produktions-Deployment freigegeben wird. Es ist ein kritischer Qualitäts- und Governance-Checkpoint. Datenquelle Abgeleitet aus einem Statusübergang im Entwicklungselement-Datensatz, der den erfolgreichen Abschluss des UAT signalisiert. Dies wird in der Aktivitätshistorie des Elements protokolliert. Erfassen Abgeleitet aus einer Statusänderung von 'UAT' zu einem genehmigten oder release-bereiten Status. Ereignistyp inferred | |||
| Bereitstellung in Produktion gestartet | Diese Aktivität markiert den Start der Deployment-Pipeline in die Produktionsumgebung. ServiceNow DevOps erfasst dies als explizites Event, wenn die Produktionsphase einer CI/CD-Pipeline die Ausführung beginnt. | ||
| Bedeutung Dies markiert den Beginn der finalen und oft kritischsten Phase des Lifecycle. Die Verfolgung hilft bei der Analyse von Deployment-Dauern und der Identifizierung von Automatisierungsmöglichkeiten. Datenquelle Explizit in der Tabelle Stage Execution Run [sn_devops_stage_execution] protokolliert, gefiltert nach Stages, die sich auf die Produktionsumgebung beziehen. Erfassen Erfasst von der Startzeit einer Produktionsbereitstellungsphase in einer Pipeline Execution. Ereignistyp explicit | |||
| Build ausgelöst | Dieses Event signalisiert den Start eines CI/CD-Pipeline-Builds, oft ausgelöst durch einen Code Commit. ServiceNow DevOps protokolliert dies als Pipeline-Ausführung und verknüpft es mit den ursprünglichen Entwicklungselementen. | ||
| Bedeutung Diese Aktivität ist die Brücke zwischen Entwicklung und automatisiertem Testing oder Deployment. Die Analyse der Zeit zwischen Commit und Build-Start kann Verzögerungen im CI/CD-Prozess aufzeigen. Datenquelle Explizit in der Tabelle Pipeline Execution [sn_devops_pipeline_execution] protokolliert, wenn ein Build im integrierten CI/CD-Tool (z. B. Jenkins, Azure DevOps) gestartet wird. Erfassen Erfasst von der Startzeit eines Datensatzes in der Pipeline Execution-Tabelle. Ereignistyp explicit | |||
| Code Committed | Stellt einen Entwickler dar, der Code in ein Versionskontrollsystem-Repository committet, das mit dem Entwicklungselement verknüpft ist. ServiceNow DevOps erfasst diese Events explizit von integrierten SCM-Tools wie Git oder GitHub. | ||
| Bedeutung Das Verfolgen von Commits bietet eine granulare Sicht auf den Entwicklungsfortschritt und die Aktivitätshäufigkeit. Es hilft, spezifische Code-Änderungen dem übergeordneten Entwicklungselement zuzuordnen. Datenquelle Als explizites Event in der ServiceNow DevOps Commits Erfassen Protokolliert, wenn ein Commit-Webhook vom SCM-Tool empfangen wird. Ereignistyp explicit | |||
| Design gestartet | Stellt die Phase dar, in der das technische Design oder die Lösungsarchitektur für das Entwicklungselement erstellt wird. Dies wird üblicherweise aus einer Status- oder Zustandsfeldänderung im Entwicklungs-Item-Datensatz zu einem Wert wie 'Design' oder 'Solutioning' abgeleitet. | ||
| Bedeutung Die Analyse der Dauer der Designphase hilft, Bottlenecks bei der Anforderungsübersetzung und Lösungsplanung zu identifizieren, bevor die Entwicklungsarbeit beginnt. Datenquelle Abgeleitet von Statusübergängen im Entwicklungs-Item-Datensatz (z. B. Story [rm_story]). Achten Sie auf Änderungen des Feldes 'State' oder eines benutzerdefinierten 'Stage'-Feldes zu einem designrelevanten Wert. Erfassen Abgeleitet aus einer Statusänderung zu 'Design' oder einem ähnlichen Status. Ereignistyp inferred | |||
| Entwicklungselement abgebrochen | Stellt die Beendigung eines Entwicklungselements vor dessen Abschluss dar. Dies ist ein alternativer Endzustand, typischerweise abgeleitet vom Zustand des Elements, der auf 'Cancelled' oder 'Closed Incomplete' gesetzt ist. | ||
| Bedeutung Das Verfolgen von Abbrüchen hilft, verschwendete Mühe zu identifizieren und die Gründe für Scope-Änderungen oder Repriorisierungen zu verstehen. Es bietet ein vollständigeres Bild aller möglichen Prozessergebnisse. Datenquelle Abgeleitet vom Timestamp, wann das Feld 'State' im Entwicklungs-Item-Datensatz auf einen abschließenden, nicht-vollständigen Status wie 'Cancelled' aktualisiert wird. Erfassen Abgeleitet aus einer Statusänderung zu einem 'Cancelled' oder gleichwertigen Endstatus. Ereignistyp inferred | |||
| Für Release vorbereitet | Diese Aktivität bedeutet, dass das Entwicklungselement alle Qualitätsprüfungen bestanden hat und in ein spezifisches Release verpackt wird. Dies kann abgeleitet werden, wenn das Element mit einem Release-Datensatz verknüpft ist oder sein Status zu 'Ready for Deployment' wechselt. | ||
| Bedeutung Dieser Schritt zeigt an, dass ein Element technisch und funktional abgeschlossen ist. Die in diesem Zustand verbrachte Zeit kann Wartezeit vor einem geplanten Deployment-Fenster darstellen. Datenquelle Abgeleitet aus der Änderung des Feldes 'State' zu 'Ready for Release' oder durch Verfolgung, wann das Feld 'Release' im Entwicklungs-Item-Datensatz gefüllt oder aktualisiert wird. Erfassen Abgeleitet aus einer Statusänderung oder Verknüpfung mit einem Release-Datensatz. Ereignistyp inferred | |||
| Nacharbeit identifiziert | Zeigt an, dass während des Tests ein Problem gefunden wurde, das erfordert, dass das Element zur Entwicklung zurückgesendet wird. Dieses Event wird durch die Beobachtung einer Rückwärtsbewegung im Prozessfluss abgeleitet, z.B. eine Statusänderung von 'In QA' zurück zu 'In Progress'. | ||
| Bedeutung Das Verfolgen von Nacharbeit ist essenziell, um Qualitätsprobleme und Prozesseffizienz zu verstehen. Eine hohe Häufigkeit dieser Aktivität weist auf Probleme in der Entwicklung oder der Klarheit der Anforderungen hin. Datenquelle Abgeleitet aus der Analyse des Verlaufs des Feldes 'State' in den Tabellen sys_audit oder sys_history_line. Eine Änderung von einem späteren Status (z. B. 'Testing') zu einem früheren (z. B. 'In Progress') deutet auf Nacharbeit hin. Erfassen Abgeleitet aus einer Rückwärts-Statusübergabe, z.B. 'Testing' -> 'In Progress'. Ereignistyp inferred | |||
| QA-Tests gestartet | Markiert den Beginn der formalen Quality Assurance Testphase. Dies wird fast immer aus der Zustandsänderung des Entwicklungs-Items zu einem Wert wie 'In QA', 'Testing' oder 'Ready for Test' abgeleitet. | ||
| Bedeutung Diese Aktivität signalisiert die Übergabe von der Entwicklung an das QA-Team. Sie ermöglicht die Messung der Dauer der Testphase und die Identifizierung von Engpässen in der Testkapazität. Datenquelle Abgeleitet vom Timestamp, wann das Feld 'State' im Entwicklungs-Item-Datensatz (z. B. Story, Defect) auf einen QA-spezifischen Status aktualisiert wird. Erfassen Basiert auf dem Timestamp einer Statusänderung zu 'Testing' oder einem Äquivalent. Ereignistyp inferred | |||
| UAT gestartet | Stellt den Beginn des User Acceptance Testing dar, bei dem Business-Stakeholder die Funktionalität validieren. Dieses Event wird erfasst, indem eine Statusänderung zu 'UAT', 'In UAT' oder 'User Acceptance Testing' abgeleitet wird. | ||
| Bedeutung Diese Phase ist entscheidend, um sicherzustellen, dass das entwickelte Feature die Geschäftsanforderungen erfüllt. Die Analyse ihrer Dauer kann Probleme mit der Benutzerbeteiligung oder Anforderungsfehlern aufzeigen. Datenquelle Abgeleitet aus einem Statusübergang im Entwicklungselement-Datensatz. Dies basiert darauf, dass das Statusmodell des Kunden einen eigenen Status für UAT enthält. Erfassen Abgeleitet aus einer Statusänderung zu einem 'UAT'-Status. Ereignistyp inferred | |||
Extraktionsleitfäden
Schritte
- Ihr Statusmodell verstehen: Dokumentieren Sie vor dem Erstellen von Berichten die spezifischen Werte im Statusfeld Ihres Entwicklungselements (z.B. in der Story-Tabelle
[rm_story]oder Defect-Tabelle[rm_defect]), die den erforderlichen Aktivitäten entsprechen. Zum Beispiel könnte ein Statuswert 'In Progress' der Aktivität 'Entwicklung gestartet' zugeordnet werden. - Zur Berichtserstellung navigieren: Melden Sie sich bei Ihrer ServiceNow-Instanz an. Gehen Sie im Filter-Navigator zu
Reports > View / Runund klicken Sie auf die SchaltflächeCreate a report. - Bericht für Statusänderungen erstellen: Erstellen Sie den ersten Bericht, um statusgesteuerte Aktivitäten zu erfassen. Konfigurieren Sie ihn wie folgt:
- Berichtsname:
ProcessMind - State Change Events - Quelltyp:
Table - Tabelle:
Audit [sys_audit] - Typ:
List - Spalten konfigurieren: Fügen Sie
Document key,Created on,Table name,Field name,Old valueundNew valuehinzu. - Filter: Setzen Sie
Table nameauf eine Ihrer Entwicklungselementtabellen (z.B.Story) undField nameauf Ihr Statusfeld (z.B.State). Fügen Sie einen Datumsfilter für das FeldCreated onfür den gewünschten Zeitraum hinzu.
- Berichtsname:
- Bericht für Elementerstellung erstellen: Erstellen Sie einen neuen Bericht für das initiale Erstellungsereignis.
- Berichtsname:
ProcessMind - Item Creation Events - Quelltyp:
Table - Tabelle:
Story [rm_story](oder Ihre primäre Entwicklungselementtabelle) - Typ:
List - Spalten konfigurieren: Fügen Sie Spalten für die erforderlichen Attribute wie
Number,Created on,Assigned to,Priority,Stateusw. hinzu. - Filter: Wenden Sie einen Datumsfilter auf das Feld
Created onan.
- Berichtsname:
- Bericht für Code-Commits erstellen: Erstellen Sie einen Bericht für explizite DevOps-Events, die sich auf Commits beziehen.
- Berichtsname:
ProcessMind - Commit Events - Quelltyp:
Table - Tabelle:
Commit [sn_devops_commit] - Typ:
List - Spalten konfigurieren: Fügen Sie Spalten wie
Work item,Commit time,Authorusw. hinzu. - Filter: Wenden Sie einen Datumsfilter auf das Feld
Commit timean.
- Berichtsname:
- Berichte für Builds und Deployments erstellen: Wiederholen Sie den Vorgang vom vorherigen Schritt für die Tabellen
Build [sn_devops_build]undDeployment [sn_devops_deployment]. Diese Tabellen enthalten Datensätze für die AktivitätenBuild Triggered,Deployment to Production Started,Deployed to ProductionundDeployment Failed. - Alle Berichte exportieren: Führen Sie jeden der erstellten Berichte einzeln aus. Klicken Sie für jeden Bericht auf das Kontextmenü-Symbol (drei Punkte oder ein Abwärtspfeil) und wählen Sie
Export > CSVoderExport > Excel. Speichern Sie alle Dateien. - Daten kombinieren und transformieren: Öffnen Sie die exportierten Dateien in einem Tabellenkalkulationsprogramm oder verwenden Sie ein Datenvorbereitungstool. Kombinieren Sie die Daten aus allen Dateien manuell in einem einzigen Blatt. Erstellen Sie die erforderlichen Event Log Spalten (
DevelopmentItem,ActivityName,EventTimeusw.) und ordnen Sie die Daten aus den Quellspalten zu. Ordnen Sie beispielsweise denDocument keyaus dem Audit-Bericht und dieNumberaus dem Story-Bericht derDevelopmentItem-Spalte zu. - Aktivitätsnamen zuordnen: Erstellen Sie die
ActivityName-Spalte, indem Sie die Quelldaten übersetzen. Verwenden Sie für den Statusänderungsbericht Ihr dokumentiertes Statusmodell, umNew value-Einträge Aktivitätsnamen zuzuordnen (z.B. ordnen Sie den Status 'Testing' der Aktivität 'QA-Test gestartet' zu). Weisen Sie für die anderen Berichte jeder Zeile einen festen Aktivitätsnamen zu (z.B. werden alle Zeilen aus dem Commit-Export zu 'Code Committed'). - Finalize and Save: Fügen Sie die Spalten
SourceSystemundLastDataUpdatemit statischen Werten für alle Zeilen hinzu. Stellen Sie sicher, dass alle Timestamps in einem konsistenten Format vorliegen. Speichern Sie die endgültige kombinierte Datei als eine einzige CSV, die nun bereit ist, in ProcessMind hochgeladen zu werden.
Konfiguration
- Erforderliche Tabellen: Die primären Tabellen für diese Extraktion sind
Audit [sys_audit]für abgeleitete Events, Ihre spezifischen Entwicklungselementtabellen (z.B.Story [rm_story],Defect [rm_defect]) sowie die zentralen ServiceNow DevOps-Tabellen:Commit [sn_devops_commit],Build [sn_devops_build]undDeployment [sn_devops_deployment]. - Wichtige Filter: Der wichtigste Filter ist der Datumsbereich, der konsistent auf alle Berichte und auf ein Timestamp-Feld wie
Created on,Commit timeoderStart timeangewendet werden sollte. Für densys_audit-Bericht ist es entscheidend, nachTable name(z.B.rm_story) undField name(z.B.state) zu filtern, um die Daten auf relevante Statusänderungen zu beschränken. - Empfehlung zum Datumsbereich: Es wird empfohlen, Daten für einen Zeitraum von 3 bis 6 Monaten zu extrahieren, um einen repräsentativen Datensatz zu gewährleisten, ohne Leistungsprobleme zu verursachen. Für größere Systeme sollten Sie eine monatliche Stapelverarbeitung in Betracht ziehen.
- Definition des Statusmodells: Sie müssen ein klares Verständnis des Statusmodells Ihrer Organisation für Arbeitselemente haben. Dies ist erforderlich, um die in der
sys_audit-Tabelle erfassten Statuswerte korrekt den entsprechenden Geschäftsaktivitäten wie 'QA-Test gestartet' oder 'UAT genehmigt' zuzuordnen. - Voraussetzungen: Benutzer, die die Extraktion durchführen, benötigen die Rolle
report_useroder gleichwertige Berechtigungen, um Berichte zu erstellen und auszuführen. Sie benötigen außerdem Lesezugriff auf die oben genannten DevOps- und Anwendungsentwicklungstabellen. Das ServiceNow DevOps-Plugin muss installiert und aktiv mit Ihren SCM- und CI/CD-Tools integriert sein.
a Beispielabfrage config
/*
This extraction method uses the ServiceNow report builder UI. The following sections describe the configuration for each report that must be created and exported.
The exported data must then be manually combined and transformed into a single event log file.
*/
---
-- REPORT 1: Item Creation Events
---
Report_Name: ProcessMind - Item Creation Events
Source_Table: rm_story
Report_Type: List
Columns:
- Number (maps to DevelopmentItem)
- sys_created_on (maps to EventTime)
- 'Development Item Created' (create a formula or static column for ActivityName)
- Assigned to (maps to AssignedDeveloper)
- Priority (maps to DevelopmentItemPriority)
- State (maps to DevelopmentItemState)
- cmdb_ci (maps to ModuleComponentAffected)
- Type (maps to DevelopmentItemType)
- Assignment group (maps to AssignmentGroup)
Filters:
- sys_created_on ON Last 6 months
---
-- REPORT 2: Inferred State Change Events
---
Report_Name: ProcessMind - State Change Events
Source_Table: sys_audit
Report_Type: List
Columns:
- documentkey (maps to DevelopmentItem)
- sys_created_on (maps to EventTime)
- newvalue (maps to ActivityName, requires translation)
- user (maps to AssignedDeveloper)
ActivityName_Mapping_Logic (Example):
- WHEN newvalue IS '[Your Design State]' THEN 'Design Started'
- WHEN newvalue IS '[Your In Progress State]' THEN 'Development Started'
- WHEN newvalue IS '[Your QA State]' THEN 'QA Testing Started'
- WHEN oldvalue IS '[Your QA State]' AND newvalue IS '[Your In Progress State]' THEN 'Rework Identified'
- WHEN oldvalue IS '[Your QA State]' AND newvalue IS '[Your UAT State]' THEN 'QA Testing Completed'
- WHEN newvalue IS '[Your UAT State]' THEN 'UAT Started'
- WHEN newvalue IS '[Your UAT Approved State]' THEN 'UAT Approved'
- WHEN newvalue IS '[Your Release Ready State]' THEN 'Prepared For Release'
- WHEN newvalue IS '[Your Cancelled State]' THEN 'Development Item Cancelled'
Filters:
- tablename = 'rm_story'
- fieldname = 'state'
- sys_created_on ON Last 6 months
---
-- REPORT 3: Code Commit Events
---
Report_Name: ProcessMind - Commit Events
Source_Table: sn_devops_commit
Report_Type: List
Columns:
- work_item.number (maps to DevelopmentItem)
- commit_time (maps to EventTime)
- 'Code Committed' (create a formula or static column for ActivityName)
- author.name (maps to AssignedDeveloper)
Filters:
- commit_time ON Last 6 months
---
-- REPORT 4: Build Events
---
Report_Name: ProcessMind - Build Events
Source_Table: sn_devops_build
Report_Type: List
Columns:
- work_item.number (maps to DevelopmentItem)
- start_time (maps to EventTime)
- 'Build Triggered' (create a formula or static column for ActivityName)
Filters:
- start_time ON Last 6 months
---
-- REPORT 5: Deployment Events
---
Report_Name: ProcessMind - Deployment Events
Source_Table: sn_devops_deployment
Report_Type: List
Columns:
- work_item.number (maps to DevelopmentItem)
- start_time (maps to EventTime for 'Started' activities)
- end_time (maps to EventTime for 'Completed' or 'Failed' activities)
- state (maps to ActivityName, requires translation)
ActivityName_Mapping_Logic:
- WHEN state IS 'in_progress' THEN 'Deployment to Production Started'
- WHEN state IS 'successful' THEN 'Deployed to Production'
- WHEN state IS 'failed' THEN 'Deployment Failed'
Filters:
- start_time ON Last 6 months
- [Filter for production deployments based on your environment configuration]
---
-- Additional events like 'Code Review Performed' may require a separate report
-- on a table like `sn_devops_pull_request` if available and configured.
--- Schritte
- Voraussetzungen: Stellen Sie sicher, dass Sie Netzwerkzugriff auf Ihre ServiceNow-Instanz haben und Ihnen ein dediziertes Service-Konto mit Leseberechtigungen (die Rollen
itilundsn_devops.viewersind ein guter Ausgangspunkt) zur Verfügung gestellt wurde. Dieser Benutzer benötigt Zugriff auf Tabellen wierm_story,sys_auditund dassn_devops_*-Schema. - ServiceNow ODBC-Treiber installieren: Laden Sie den geeigneten ServiceNow ODBC-Treiber für Ihr Betriebssystem vom ServiceNow-Supportportal herunter. Befolgen Sie die bereitgestellten Installationsanweisungen.
- DSN konfigurieren: Richten Sie einen neuen System-DSN (Data Source Name) auf dem Rechner ein, auf dem Sie die Abfrage ausführen werden. Fügen Sie im ODBC-Datenquellen-Administrator den ServiceNow-Treiber hinzu und konfigurieren Sie ihn mit Ihrer Instanz-URL (z.B.
yourinstance.service-now.com), Benutzernamen und Passwort. - Mit einem SQL-Client verbinden: Verwenden Sie ein SQL-Client-Tool wie DBeaver, Microsoft SQL Server Management Studio (mit einem verknüpften Server) oder eine Skriptsprache wie Python mit einer ODBC-Bibliothek, um sich über den konfigurierten DSN mit ServiceNow zu verbinden.
- Statusmodell identifizieren: Bevor Sie die Abfrage ausführen, müssen Sie die genauen Werte identifizieren, die Ihre Organisation für das
state-Feld in Ihren Entwicklungselementtabellen (z.B.rm_story,rm_defect) verwendet. Die bereitgestellte Abfrage verwendet gängige Beispiele wie 'In Progress' oder 'In QA', die Sie durch Ihre spezifischen Werte ersetzen müssen. - SQL-Abfrage anpassen: Kopieren Sie die bereitgestellte SQL-Abfrage in Ihren Client. Ändern Sie die Platzhalter am Anfang der Abfrage, einschließlich des Startdatums für die Extraktion und der spezifischen Statuswerte, die Ihren Aktivitäten im Entwicklungslebenszyklus entsprechen.
- Abfrage ausführen: Führen Sie die vollständige SQL-Abfrage über die ODBC-Verbindung gegen die ServiceNow-Datenbank aus. Dies kann je nach Datumsbereich und Datenvolumen eine erhebliche Zeit in Anspruch nehmen.
- Daten überprüfen: Sobald die Abfrage abgeschlossen ist, führen Sie eine kurze Überprüfung des zurückgegebenen Datensatzes durch. Überprüfen Sie eine Vielzahl von Aktivitäten und stellen Sie sicher, dass Schlüsselspalten wie
DevelopmentItem,ActivityNameundEventTimewie erwartet gefüllt sind. - Als CSV exportieren: Exportieren Sie das gesamte Ergebnis als CSV-Datei. Stellen Sie sicher, dass die Datei UTF-8-kodiert ist und dass die Spaltenüberschriften den von ProcessMind benötigten Attributnamen entsprechen, z.B.
DevelopmentItem,ActivityName,EventTime. - Für den Upload vorbereiten: Stellen Sie sicher, dass die endgültige CSV-Datei am Ende keine leeren Zeilen enthält und dass das Datumsformat für
EventTimeundLastDataUpdatekonsistent und von ProcessMind unterstützt wird (z.B.YYYY-MM-DD HH:MM:SS).
Konfiguration
- Voraussetzungen: Zugriff auf eine ServiceNow-Instanz mit aktiviertem DevOps-Modul. Ein dediziertes Benutzerkonto mit Leseberechtigungen für die erforderlichen Tabellen ist notwendig. Der ServiceNow ODBC-Treiber muss auf dem Client-Rechner installiert und konfiguriert sein.
- ODBC-Treiber-Konfiguration: Die Verbindung erfordert die Instanz-URL, einen Benutzernamen und ein Passwort oder einen OAuth-Token. Es ist entscheidend, die DSN-Verbindung zu testen, bevor Sie versuchen, komplexe Abfragen auszuführen.
- Datumsbereichsfilterung: Die bereitgestellte Abfrage enthält einen Platzhalter
s.sys_created_on >= '2023-01-01', um die Menge der extrahierten Daten zu begrenzen. Es wird dringend empfohlen, Daten für einen definierten Zeitraum, z.B. die letzten 6 bis 12 Monate, zu extrahieren, um überschaubare Abfrageausführungszeiten zu gewährleisten. - Anpassung des Statusmodells: Die Genauigkeit der Abfrage für abgeleitete Events hängt vollständig vom Statusmodell ab. Sie müssen Platzhalter-Statuswerte (z.B.
[Your 'In Progress' State Value],[Your 'In QA' State Value]) durch die exakten Werte ersetzen, die in Ihrer ServiceNow-Konfiguration verwendet werden. Diese sind Groß-/Kleinschreibung-sensitiv. - Arbeitselement-Tabellen: Die Abfrage ist für die Story-Tabelle (
rm_story) geschrieben. Wenn Ihre Organisation auch Defects (rm_defect), Enhancements (rm_enhancement) oder andere Aufgabentypen verwendet, müssen Sie diese zum initialenDevItemsCommon Table Expression (CTE) mittelsUNION ALLhinzufügen. - Performance: Direkte Abfragen gegen eine ServiceNow-Produktionsinstanz können die Performance beeinträchtigen. Es wird empfohlen, große Extraktionen außerhalb der Spitzenzeiten durchzuführen. Für sehr große Datensätze sollten Sie eine inkrementelle Extraktionsstrategie basierend auf dem Feld
sys_updated_onin Betracht ziehen.
a Beispielabfrage sql
WITH DevItems AS (
-- This CTE selects the base set of development items to analyze.
-- Add other tables like rm_defect or rm_enhancement here using UNION ALL if needed.
SELECT
s.sys_id,
s.number,
s.sys_created_on,
s.sys_updated_on,
s.assigned_to,
s.priority,
s.state,
s.cmdb_ci, -- Module/Component Affected
s.sys_class_name, -- Development Item Type
s.assignment_group,
DATEDIFF(second, s.sys_created_on, s.closed_at) AS cycle_time_seconds
FROM rm_story s
WHERE s.sys_created_on >= '2023-01-01' -- *** Placeholder: Set your desired start date ***
),
StateChanges AS (
-- This CTE unnests the audit trail for state changes, which are used for inferred activities.
SELECT
a.documentkey AS item_sys_id,
a.sys_created_on AS change_time,
a.oldvalue,
a.newvalue,
-- *** Placeholder: Define the numeric order of your states to detect rework. Adjust values and names. ***
CASE a.oldvalue
WHEN '1' THEN 1 -- Open
WHEN '[Your 'Design' State Value]' THEN 2
WHEN '[Your 'In Progress' State Value]' THEN 3
WHEN '[Your 'In QA' State Value]' THEN 4
WHEN '[Your 'In UAT' State Value]' THEN 5
ELSE 0
END AS old_state_order,
CASE a.newvalue
WHEN '1' THEN 1 -- Open
WHEN '[Your 'Design' State Value]' THEN 2
WHEN '[Your 'In Progress' State Value]' THEN 3
WHEN '[Your 'In QA' State Value]' THEN 4
WHEN '[Your 'In UAT' State Value]' THEN 5
ELSE 0
END AS new_state_order
FROM sys_audit a
WHERE a.tablename = 'rm_story' AND a.fieldname = 'state'
)
-- 1. Development Item Created
SELECT
i.number AS DevelopmentItem,
'Development Item Created' AS ActivityName,
i.sys_created_on AS EventTime,
'ServiceNow DevOps' AS SourceSystem,
GETDATE() AS LastDataUpdate,
us.name AS AssignedDeveloper,
i.priority AS DevelopmentItemPriority,
i.state AS DevelopmentItemState,
ci.name AS ModuleComponentAffected,
i.sys_class_name AS DevelopmentItemType,
grp.name AS AssignmentGroup,
i.cycle_time_seconds AS DevelopmentItemCycleTime,
CAST(0 AS BIT) AS IsRework
FROM DevItems i
LEFT JOIN sys_user us ON i.assigned_to = us.sys_id
LEFT JOIN cmdb_ci ci ON i.cmdb_ci = ci.sys_id
LEFT JOIN sys_user_group grp ON i.assignment_group = grp.sys_id
UNION ALL
-- 2. Design Started
SELECT i.number, 'Design Started', sc.change_time, 'ServiceNow DevOps', GETDATE(), us.name, i.priority, sc.newvalue, ci.name, i.sys_class_name, grp.name, i.cycle_time_seconds, CAST(0 AS BIT)
FROM StateChanges sc JOIN DevItems i ON sc.item_sys_id = i.sys_id
LEFT JOIN sys_user us ON i.assigned_to = us.sys_id LEFT JOIN cmdb_ci ci ON i.cmdb_ci = ci.sys_id LEFT JOIN sys_user_group grp ON i.assignment_group = grp.sys_id
WHERE sc.newvalue = '[Your ''Design'' State Value]' -- *** Placeholder: Adjust state value ***
UNION ALL
-- 3. Development Started
SELECT i.number, 'Development Started', sc.change_time, 'ServiceNow DevOps', GETDATE(), us.name, i.priority, sc.newvalue, ci.name, i.sys_class_name, grp.name, i.cycle_time_seconds, CAST(0 AS BIT)
FROM StateChanges sc JOIN DevItems i ON sc.item_sys_id = i.sys_id
LEFT JOIN sys_user us ON i.assigned_to = us.sys_id LEFT JOIN cmdb_ci ci ON i.cmdb_ci = ci.sys_id LEFT JOIN sys_user_group grp ON i.assignment_group = grp.sys_id
WHERE sc.newvalue = '[Your ''In Progress'' State Value]' AND sc.old_state_order < 3 -- *** Placeholder: Adjust state value and order ***
UNION ALL
-- 4. Code Committed
SELECT i.number, 'Code Committed', c.committed_time, 'ServiceNow DevOps', GETDATE(), us.name, i.priority, i.state, ci.name, i.sys_class_name, grp.name, i.cycle_time_seconds, CAST(0 AS BIT)
FROM sn_devops_commit c JOIN DevItems i ON c.work_item = i.sys_id
LEFT JOIN sys_user us ON i.assigned_to = us.sys_id LEFT JOIN cmdb_ci ci ON i.cmdb_ci = ci.sys_id LEFT JOIN sys_user_group grp ON i.assignment_group = grp.sys_id
UNION ALL
-- 5. Build Triggered
SELECT i.number, 'Build Triggered', b.start_time, 'ServiceNow DevOps', GETDATE(), us.name, i.priority, i.state, ci.name, i.sys_class_name, grp.name, i.cycle_time_seconds, CAST(0 AS BIT)
FROM sn_devops_build b JOIN sn_devops_commit_build cb ON b.sys_id = cb.build JOIN sn_devops_commit c ON cb.commit = c.sys_id JOIN DevItems i ON c.work_item = i.sys_id
LEFT JOIN sys_user us ON i.assigned_to = us.sys_id LEFT JOIN cmdb_ci ci ON i.cmdb_ci = ci.sys_id LEFT JOIN sys_user_group grp ON i.assignment_group = grp.sys_id
UNION ALL
-- 6. Code Review Performed
SELECT i.number, 'Code Review Performed', pr.closed_at, 'ServiceNow DevOps', GETDATE(), us.name, i.priority, i.state, ci.name, i.sys_class_name, grp.name, i.cycle_time_seconds, CAST(0 AS BIT)
FROM sn_devops_pull_request pr JOIN DevItems i ON pr.work_item = i.sys_id
LEFT JOIN sys_user us ON i.assigned_to = us.sys_id LEFT JOIN cmdb_ci ci ON i.cmdb_ci = ci.sys_id LEFT JOIN sys_user_group grp ON i.assignment_group = grp.sys_id
WHERE pr.state = 'merged' -- Or 'closed', depending on process
UNION ALL
-- 7. QA Testing Started
SELECT i.number, 'QA Testing Started', sc.change_time, 'ServiceNow DevOps', GETDATE(), us.name, i.priority, sc.newvalue, ci.name, i.sys_class_name, grp.name, i.cycle_time_seconds, CAST(0 AS BIT)
FROM StateChanges sc JOIN DevItems i ON sc.item_sys_id = i.sys_id
LEFT JOIN sys_user us ON i.assigned_to = us.sys_id LEFT JOIN cmdb_ci ci ON i.cmdb_ci = ci.sys_id LEFT JOIN sys_user_group grp ON i.assignment_group = grp.sys_id
WHERE sc.newvalue = '[Your ''In QA'' State Value]' -- *** Placeholder: Adjust state value ***
UNION ALL
-- 8. Rework Identified
SELECT i.number, 'Rework Identified', sc.change_time, 'ServiceNow DevOps', GETDATE(), us.name, i.priority, sc.newvalue, ci.name, i.sys_class_name, grp.name, i.cycle_time_seconds, CAST(1 AS BIT)
FROM StateChanges sc JOIN DevItems i ON sc.item_sys_id = i.sys_id
LEFT JOIN sys_user us ON i.assigned_to = us.sys_id LEFT JOIN cmdb_ci ci ON i.cmdb_ci = ci.sys_id LEFT JOIN sys_user_group grp ON i.assignment_group = grp.sys_id
WHERE sc.new_state_order < sc.old_state_order AND sc.new_state_order > 1 -- Moved to an earlier state
UNION ALL
-- 9. QA Testing Completed
SELECT i.number, 'QA Testing Completed', sc.change_time, 'ServiceNow DevOps', GETDATE(), us.name, i.priority, sc.newvalue, ci.name, i.sys_class_name, grp.name, i.cycle_time_seconds, CAST(0 AS BIT)
FROM StateChanges sc JOIN DevItems i ON sc.item_sys_id = i.sys_id
LEFT JOIN sys_user us ON i.assigned_to = us.sys_id LEFT JOIN cmdb_ci ci ON i.cmdb_ci = ci.sys_id LEFT JOIN sys_user_group grp ON i.assignment_group = grp.sys_id
WHERE sc.oldvalue = '[Your ''In QA'' State Value]' AND sc.new_state_order > sc.old_state_order -- *** Placeholder: Adjust state value ***
UNION ALL
-- 10. UAT Started
SELECT i.number, 'UAT Started', sc.change_time, 'ServiceNow DevOps', GETDATE(), us.name, i.priority, sc.newvalue, ci.name, i.sys_class_name, grp.name, i.cycle_time_seconds, CAST(0 AS BIT)
FROM StateChanges sc JOIN DevItems i ON sc.item_sys_id = i.sys_id
LEFT JOIN sys_user us ON i.assigned_to = us.sys_id LEFT JOIN cmdb_ci ci ON i.cmdb_ci = ci.sys_id LEFT JOIN sys_user_group grp ON i.assignment_group = grp.sys_id
WHERE sc.newvalue = '[Your ''In UAT'' State Value]' -- *** Placeholder: Adjust state value ***
UNION ALL
-- 11. UAT Approved
SELECT i.number, 'UAT Approved', sc.change_time, 'ServiceNow DevOps', GETDATE(), us.name, i.priority, sc.newvalue, ci.name, i.sys_class_name, grp.name, i.cycle_time_seconds, CAST(0 AS BIT)
FROM StateChanges sc JOIN DevItems i ON sc.item_sys_id = i.sys_id
LEFT JOIN sys_user us ON i.assigned_to = us.sys_id LEFT JOIN cmdb_ci ci ON i.cmdb_ci = ci.sys_id LEFT JOIN sys_user_group grp ON i.assignment_group = grp.sys_id
WHERE sc.oldvalue = '[Your ''In UAT'' State Value]' AND sc.new_state_order > sc.old_state_order -- *** Placeholder: Adjust state value ***
UNION ALL
-- 12. Prepared For Release
SELECT i.number, 'Prepared For Release', sc.change_time, 'ServiceNow DevOps', GETDATE(), us.name, i.priority, sc.newvalue, ci.name, i.sys_class_name, grp.name, i.cycle_time_seconds, CAST(0 AS BIT)
FROM StateChanges sc JOIN DevItems i ON sc.item_sys_id = i.sys_id
LEFT JOIN sys_user us ON i.assigned_to = us.sys_id LEFT JOIN cmdb_ci ci ON i.cmdb_ci = ci.sys_id LEFT JOIN sys_user_group grp ON i.assignment_group = grp.sys_id
WHERE sc.newvalue = '[Your ''Ready for Release'' State Value]' -- *** Placeholder: Adjust state value ***
UNION ALL
-- 13. Deployment to Production Started
SELECT i.number, 'Deployment to Production Started', se.start_time, 'ServiceNow DevOps', GETDATE(), us.name, i.priority, i.state, ci.name, i.sys_class_name, grp.name, i.cycle_time_seconds, CAST(0 AS BIT)
FROM sn_devops_step_execution se JOIN sn_devops_artifact_build sab ON se.deployable = sab.sys_id JOIN sn_devops_commit_build cb ON sab.build = cb.build JOIN sn_devops_commit c ON cb.commit = c.sys_id JOIN DevItems i ON c.work_item = i.sys_id
LEFT JOIN sys_user us ON i.assigned_to = us.sys_id LEFT JOIN cmdb_ci ci ON i.cmdb_ci = ci.sys_id LEFT JOIN sys_user_group grp ON i.assignment_group = grp.sys_id
WHERE se.stage_name = 'Production' -- *** Placeholder: Adjust stage name ***
UNION ALL
-- 14. Deployed to Production
SELECT i.number, 'Deployed to Production', se.end_time, 'ServiceNow DevOps', GETDATE(), us.name, i.priority, i.state, ci.name, i.sys_class_name, grp.name, i.cycle_time_seconds, CAST(0 AS BIT)
FROM sn_devops_step_execution se JOIN sn_devops_artifact_build sab ON se.deployable = sab.sys_id JOIN sn_devops_commit_build cb ON sab.build = cb.build JOIN sn_devops_commit c ON cb.commit = c.sys_id JOIN DevItems i ON c.work_item = i.sys_id
LEFT JOIN sys_user us ON i.assigned_to = us.sys_id LEFT JOIN cmdb_ci ci ON i.cmdb_ci = ci.sys_id LEFT JOIN sys_user_group grp ON i.assignment_group = grp.sys_id
WHERE se.stage_name = 'Production' AND se.result = 'SUCCESS' -- *** Placeholder: Adjust stage name and result value ***
UNION ALL
-- 15. Deployment Failed
SELECT i.number, 'Deployment Failed', se.end_time, 'ServiceNow DevOps', GETDATE(), us.name, i.priority, i.state, ci.name, i.sys_class_name, grp.name, i.cycle_time_seconds, CAST(0 AS BIT)
FROM sn_devops_step_execution se JOIN sn_devops_artifact_build sab ON se.deployable = sab.sys_id JOIN sn_devops_commit_build cb ON sab.build = cb.build JOIN sn_devops_commit c ON cb.commit = c.sys_id JOIN DevItems i ON c.work_item = i.sys_id
LEFT JOIN sys_user us ON i.assigned_to = us.sys_id LEFT JOIN cmdb_ci ci ON i.cmdb_ci = ci.sys_id LEFT JOIN sys_user_group grp ON i.assignment_group = grp.sys_id
WHERE se.stage_name = 'Production' AND se.result = 'FAILURE' -- *** Placeholder: Adjust stage name and result value ***
UNION ALL
-- 16. Development Item Cancelled
SELECT i.number, 'Development Item Cancelled', sc.change_time, 'ServiceNow DevOps', GETDATE(), us.name, i.priority, sc.newvalue, ci.name, i.sys_class_name, grp.name, i.cycle_time_seconds, CAST(0 AS BIT)
FROM StateChanges sc JOIN DevItems i ON sc.item_sys_id = i.sys_id
LEFT JOIN sys_user us ON i.assigned_to = us.sys_id LEFT JOIN cmdb_ci ci ON i.cmdb_ci = ci.sys_id LEFT JOIN sys_user_group grp ON i.assignment_group = grp.sys_id
WHERE sc.newvalue = '[Your ''Cancelled'' State Value]'; -- *** Placeholder: Adjust state value ***