Ihr Daten-Template für den Softwareentwicklungslebenszyklus
Ihr Daten-Template für den Softwareentwicklungslebenszyklus
- Empfohlene Attribute für die Datenerfassung
- Wichtige Aktivitäten für die Nachverfolgung
- Anleitung zur Datenextraktion aus ServiceNow DevOps
Attribute des Softwareentwicklungslebenszyklus
| Name | Beschreibung | ||
|---|---|---|---|
| Aktivitätsname ActivityName | Der Name des konkreten Ereignisses im Entwicklungslebenszyklus, etwa „Entwicklung begonnen“ oder „Code-Review durchgeführt“. | ||
| Beschreibung Dieses Attribut erfasst den Namen jedes Meilensteins oder Tasks, der im Softwareentwicklungszyklus abgeschlossen wurde. Diese Aktivitäten bilden die aufeinanderfolgenden Prozessschritte von der Erstellung bis zur Bereitstellung. Die Analyse der Abfolge und Häufigkeit dieser Aktivitäten ist die zentrale Aufgabe von Process Mining. Sie ermöglicht die Erstellung der Prozessdarstellung, hilft Engpässe zwischen Schritten zu erkennen und macht Abweichungen von Vorgaben oder ineffiziente Prozessvarianten sichtbar. Die festgelegten Aktivitäten umfassen wichtige Phasen wie Entwurf, Entwicklung, Testen und Bereitstellung. Warum das wichtig ist Das Attribut legt die Schritte in der Prozessdarstellung fest. So lassen sich der Prozessfluss analysieren, Engpässe erkennen und Abweichungen vom Standard-SDLC aufdecken. Woher beziehen Dieses Attribut wird üblicherweise abgeleitet, indem Statusänderungen, Ereignisdatensätze oder Audit-Trail-Einträge einer standardisierten Liste von Aktivitätsnamen zugeordnet werden. Eine Änderung des Felds „state“ auf „In Progress“ kann beispielsweise der Aktivität „Entwicklung begonnen“ zugeordnet werden. Beispiele Entwicklung begonnenCode committetQA-Test abgeschlossenIn der Produktion bereitgestellt | |||
| Entwicklungselement DevelopmentItem | Die eindeutige Kennung einer einzelnen Arbeitseinheit, etwa einer Funktion, eines Bugs oder eines Tasks, die den Entwicklungslebenszyklus durchläuft. | ||
| Beschreibung Das Entwicklungselement dient als primäre Case-ID und steht für eine klar abgegrenzte Arbeitseinheit, deren Verlauf erfasst wird. Es verknüpft alle Aktivitäten für dieses Element, von der ersten Idee und Planung über Entwicklung und Tests bis zur Bereitstellung. In der Process-Mining-Analyse ist dieses Attribut grundlegend, um den End-to-End-Verlauf jedes Arbeitselements zu rekonstruieren. Es ermöglicht die Visualisierung von Prozessabläufen, die Berechnung der gesamten Zykluszeiten und die Ermittlung von Prozessvarianten für einzelne Funktionen oder Fehlerbehebungen. Jedes Ereignis im Event Log muss einem Entwicklungselement zugeordnet sein, damit sich der Prozessablauf schlüssig abbilden lässt. Warum das wichtig ist Diese zentrale Kennung verknüpft alle zugehörigen Entwicklungsaktivitäten zu einer einzelnen Prozessinstanz. So lässt sich der gesamte Lebenszyklus jedes Arbeitselements analysieren. Woher beziehen Diese Kennung ist üblicherweise der Primärschlüssel aus Tabellen für Stories, Bugs oder Tasks, etwa den Tabellen „rm_story“, „rm_bug“ oder „task“ in ServiceNow. Beispiele STRY0010015BUG0034092TASK0050118 | |||
| Startzeit EventTime | Der genaue Zeitstempel, der angibt, wann eine bestimmte Aktivität oder ein Ereignis stattgefunden hat. | ||
| Beschreibung Dieses Attribut enthält Datum und Uhrzeit, zu denen jede Aktivität im Entwicklungslebenszyklus erfasst wurde. Es ist entscheidend, um Ereignisse chronologisch zu ordnen und zeitbasierte Analysen durchzuführen. Beim Process Mining dient die Startzeit dazu, die Dauer zwischen Aktivitäten zu berechnen, Wartezeiten zu ermitteln und die gesamte Zykluszeit des Prozesses zu messen. Sie ist eine wichtige Grundlage für Dashboards zur Leistungsanalyse, etwa für die Analyse der SDLC-End-to-End-Zykluszeit, und für Kennzahlen wie die Durchlaufzeit von Code-Reviews. Warum das wichtig ist Dieser Zeitstempel ist entscheidend, um Ereignisse korrekt zu ordnen und alle Leistungskennzahlen zu berechnen, darunter Zykluszeiten, Dauern und Wartezeiten. Woher beziehen Steht üblicherweise in systemgenerierten Zeitstempelfeldern wie „sys_updated_on“ oder „sys_created_on“ in Audit-Trail- oder Task-Tabellen. Beispiele 2023-10-26T10:00:00Z2023-10-27T14:35:10Z2023-11-01T09:15:00Z | |||
| Letzte Datenaktualisierung LastDataUpdate | Zeitstempel der letzten Aktualisierung dieses Event Logs aus dem Quellsystem. | ||
| Beschreibung Dieses Attribut erfasst, wann der Datensatz zuletzt aus ServiceNow DevOps extrahiert oder aktualisiert wurde. Es gilt für den gesamten Datensatz und nicht für einzelne Ereignisse. Dieser Zeitstempel ist wichtig, um die Aktualität der Analyse einzuschätzen. Er zeigt Benutzern, wie aktuell die Prozesserkenntnisse sind, und hilft bei der Planung von Datenaktualisierungen. Wird diese Information in Dashboards angezeigt, liefert sie den Kontext für alle Kennzahlen und Visualisierungen. So beruhen Entscheidungen auf aktuellen Daten. Warum das wichtig ist Liefert wichtigen Kontext zur Aktualität der Daten, damit Benutzer einschätzen können, wie aktuell die Prozessanalyse ist. Woher beziehen Dieser Zeitstempel wird während der Datenextraktion erzeugt und ergänzt. Er hält fest, wann die Extraktion ausgeführt wurde. Beispiele 2023-11-15T08:00:00Z | |||
| Quellsystem SourceSystem | Gibt das System an, aus dem die Daten extrahiert wurden. In diesem Fall ist es ServiceNow DevOps. | ||
| Beschreibung Dieses Attribut gibt das Ursprungssystem der Ereignisdaten an. Für diesen Prozess lautet der Wert immer „ServiceNow DevOps“. Auch wenn der Wert statisch erscheint, ist die ausdrückliche Angabe des Quellsystems für die Data Governance wichtig, insbesondere wenn Daten aus mehreren Systemen wie Jira oder Azure DevOps zusammengeführt werden. Sie schafft Klarheit über die Herkunft der Daten und hilft, Probleme mit der Datenqualität oder der Extraktion zu untersuchen. Warum das wichtig ist Sichert die Rückverfolgbarkeit der Daten und trägt zur Datenintegrität bei, insbesondere wenn Daten aus mehreren Entwicklungstools zusammengeführt werden. Woher beziehen Dies ist ein statischer Wert, der während der Datenextraktion und -transformation ergänzt werden sollte. Beispiele ServiceNow DevOps | |||
| Betroffenes Modul oder betroffene Komponente ModuleComponentAffected | Das konkrete Softwaremodul, die Anwendung oder Komponente, auf die sich das Entwicklungselement bezieht. | ||
| Beschreibung Dieses Attribut ordnet die Entwicklungsarbeit dem betroffenen Teil des Systems zu. Dabei kann es sich um einen bestimmten Microservice, eine UI-Komponente oder eine Backend-Anwendung handeln. Die Aufschlüsselung des Prozesses nach Modul oder Komponente ist wichtig, um lokale Engpässe zu erkennen. Das Dashboard „Erkenntnisse zu komponentenspezifischen Engpässen“ und die KPI „Durchschnittliche Phasendauer nach Komponente“ verwenden dieses Attribut, um festzustellen, ob bestimmte Teile der Codebasis regelmäßig mit längeren Entwicklungszyklen, mehr Nacharbeit oder häufigeren Bereitstellungsfehlern verbunden sind. So können Verbesserungsmaßnahmen gezielt dort ansetzen, wo sie am dringendsten gebraucht werden. Warum das wichtig ist Ermöglicht die Aufschlüsselung der Analyse nach Anwendung oder Komponente, sodass sich Engpässe und Qualitätsprobleme in bestimmten Systembereichen gezielt untersuchen lassen. Woher beziehen Dabei handelt es sich häufig um ein benutzerdefiniertes Feld oder einen Verweis auf die Configuration Management Database (CMDB), der das Arbeitselement mit einem „cmdb_ci“-Datensatz verknüpft. Weitere Informationen finden Sie in der ServiceNow-DevOps-Dokumentation. Beispiele AbrechnungsdienstBenutzeroberfläche für die BenutzerauthentifizierungBerichtsdatenbankAPI-Gateway | |||
| Ist Nacharbeit IsRework | Ein boolesches Kennzeichen, das den Wert „true“ hat, wenn die Aktivität Teil einer Nacharbeitsschleife ist, etwa wenn die Arbeit nach dem Test in die Entwicklung zurückgeht. | ||
| Beschreibung Dieses abgeleitete Attribut kennzeichnet Aktivitäten, die auftreten, nachdem der Prozess zu einer früheren Phase zurückgekehrt ist. Wird beispielsweise für dasselbe Element nach der Aktivität „QA-Test abgeschlossen“ die Aktivität „Entwicklung gestartet“ erfasst, wird sie als Nacharbeit gekennzeichnet. Das Kennzeichen ist wichtig, um Nacharbeit zu quantifizieren und sichtbar zu machen. Es unterstützt direkt das Dashboard „Analyse des Nacharbeits- und Ablehnungsflusses“ und dient zur Berechnung der KPI „Nacharbeitsquote nach dem Test“. Analysten können die gekennzeichneten Ereignisse filtern und Häufigkeit, Ursachen sowie Auswirkungen der Nacharbeit auf die gesamte Zykluszeit untersuchen. Warum das wichtig ist Mit diesem Kennzeichen lässt sich Nacharbeit einfach quantifizieren und analysieren. So können Sie die Prozessqualität messen und die Ursachen wiederholter Arbeit erkennen. Woher beziehen Dieses Attribut wird im Process-Mining-Tool berechnet. Dazu wird die Aktivitätsreihenfolge für jeden Case analysiert, um Rückschritte im Prozessablauf zu erkennen. Beispiele truefalse | |||
| Priorität DevelopmentItemPriority | Die dem Entwicklungselement zugewiesene Prioritätsstufe, etwa „Hoch“, „Mittel“ oder „Niedrig“. | ||
| Beschreibung Dieses Attribut ordnet Entwicklungselemente nach ihrer geschäftlichen Dringlichkeit. Prioritätsstufen helfen Teams, sich auf die wichtigsten Aufgaben zu konzentrieren, und dienen häufig dazu, SLAs und Erwartungen der Stakeholder zu steuern. Beim Process Mining ist die Priorität eine wichtige Dimension für Vergleichsanalysen. Sie ermöglicht es, die Prozessdarstellung zu filtern und zu prüfen, ob Elemente mit hoher Priorität einen schnelleren oder anderen Ablauf nehmen. Sie ist entscheidend für das Dashboard und die Kennzahl „Bereitstellungszeit für Funktionen mit hoher Priorität“ und hilft zu überprüfen, ob kritische Elemente tatsächlich bevorzugt bearbeitet werden. Warum das wichtig ist Ermöglicht es, Prozesse nach Prioritätsstufen zu filtern und zu vergleichen. So lässt sich prüfen, ob Elemente mit hoher Priorität schneller und effizienter bearbeitet werden. Woher beziehen Dies ist ein Standardfeld in ServiceNow, das in Tabellen mit Aufgabenbezug häufig „priority“ heißt. Beispiele 1 - Kritisch2 - Hoch3 - Mittel4 - Niedrig | |||
| Status des Entwicklungselements DevelopmentItemState | Der Status des Entwicklungselements zum Zeitpunkt des Ereignisses, zum Beispiel „Open“, „In Progress“ oder „Closed“. | ||
| Beschreibung Dieses Attribut gibt den offiziellen Status des Entwicklungselements in ServiceNow wieder. Aktivitäten bilden abgeleitete Prozessschritte ab, während der Status die formale Phase im Workflow des Systems bezeichnet. Der Status ist häufig die Grundlage für die Ableitung von Aktivitäten. Er lässt sich zur Datenvalidierung und für einfachere, übergeordnete Prozessansichten verwenden. So zeigt die Analyse der Verweildauer in den einzelnen Statuswerten eine andere Perspektive auf Engpässe als die Analyse der Zeit zwischen Aktivitäten. Außerdem lassen sich damit Elemente erkennen, deren Bearbeitung ins Stocken geraten ist oder die bereits abgeschlossen wurden. Warum das wichtig ist Gibt den offiziellen Systemstatus eines Arbeitselements an. Dieser dient häufig als Grundlage für die Ableitung von Aktivitäten und kann zur Validierung sowie für übergeordnete Statusanalysen verwendet werden. Woher beziehen Dies ist ein Standardfeld in ServiceNow, das in Tabellen mit Aufgabenbezug meist „state“ oder „stage“ heißt. Beispiele AusstehendIn BearbeitungBereit für den TestVollständig abgeschlossen | |||
| Typ des Entwicklungselements DevelopmentItemType | Die Klassifizierung des Arbeitselements, zum Beispiel „Funktion“, „Fehler“, „Technische Schulden“ oder „Aufgabe“. | ||
| Beschreibung Dieses Attribut unterscheidet die verschiedenen Arten von Arbeit, die den SDLC-Prozess durchlaufen. Die Behebung eines kritischen Fehlers kann beispielsweise einem anderen und schnelleren Ablauf folgen als die Entwicklung einer neuen Funktion. Die Analyse nach Arbeitselementtyp ermöglicht ein differenzierteres Verständnis der Prozessleistung. Sie hilft bei Fragen wie: „Ist die Nacharbeitsquote bei Fehlern höher als bei neuen Funktionen?“ oder „Ist unsere Zykluszeit für den Abbau technischer Schulden akzeptabel?“. Diese Aufschlüsselung liefert genauere Erkenntnisse als eine einheitliche Prozessansicht für alle Arbeitselemente. Warum das wichtig ist Unterscheidet verschiedene Arbeitsarten wie Funktionen und Fehler, für die unterschiedliche Prozessabläufe, Prioritäten und erwartete Bearbeitungszeiten gelten können. Woher beziehen Der Typ lässt sich anhand der Quelltabelle des Datensatzes bestimmen, zum Beispiel „rm_story“ oder „rm_bug“, oder über ein Feld „type“ in einer generischen Aufgabentabelle. Beispiele FunktionFehlerTaskTechnische Untersuchung | |||
| Zugewiesener Entwickler AssignedDeveloper | Der Name oder die ID des Entwicklers oder Benutzers, der zum Zeitpunkt der Aktivität dem Entwicklungselement zugewiesen war. | ||
| Beschreibung Dieses Attribut gibt an, wer für die Ausführung eines bestimmten Tasks oder einer Aktivität verantwortlich ist. Es kann sich ändern, wenn das Entwicklungselement verschiedene Phasen und Teams durchläuft. Das Attribut ist wichtig für die Analyse der Ressourcenzuweisung, der Arbeitslast und der Übergaben. Es unterstützt direkt das Dashboard „Arbeitslast und Übergaben der Entwickler“ sowie die Kennzahl „Aktivitätsvolumen pro Entwickler“. Durch die Erfassung von Änderungen dieses Felds lassen sich Übergabezeiten messen und Engpässe in der Zusammenarbeit zwischen Entwicklern oder zwischen Entwicklungs- und QA-Teams erkennen. Warum das wichtig ist Unverzichtbar für ressourcenbezogene Analysen, etwa zur Verteilung der Arbeitslast und zur Effizienz von Übergaben. Außerdem lassen sich damit Leistungsmuster einzelner Teams erkennen. Woher beziehen Diese Information steht üblicherweise im Feld „assigned_to“ entwicklungselementbezogener Tabellen in ServiceNow. Beispiele David MillerAnna WilliamsJames Brown | |||
| Zuweisungsgruppe AssignmentGroup | Das Team oder die Gruppe, die zum Zeitpunkt der Aktivität für das Entwicklungselement verantwortlich ist. | ||
| Beschreibung Dieses Attribut kennzeichnet das Team, dem ein Arbeitselement zugewiesen ist, zum Beispiel „Frontend-Entwicklung“, „Backend-Services“ oder „Qualitätssicherung“. Im Verlauf der Bearbeitung wird ein Arbeitselement häufig zwischen verschiedenen Zuweisungsgruppen übergeben. Die Zuweisungsgruppe zu erfassen, ist wichtig, um die teamübergreifende Zusammenarbeit und Übergaben zu verstehen. So lassen sich systembedingte Verzögerungen erkennen, die beim Wechsel der Arbeit von einem Team zum anderen entstehen. Das Attribut unterstützt die Analyse der Teamleistung und Arbeitsauslastung und zeigt, welche Teams den Gesamtprozessfluss bremsen. Warum das wichtig ist Zeigt, welches Team für die Arbeit verantwortlich ist. Damit lassen sich Teamleistung, Arbeitsauslastung und die Effizienz von Übergaben zwischen Teams analysieren. Woher beziehen Diese Information steht im Feld „assignment_group“, einem Standardfeld in Tabellen mit Aufgabenbezug in ServiceNow. Beispiele Plattform-EngineeringTeam für mobile AppsQualitätssicherungDevOps | |||
| Zykluszeit des Entwicklungselements DevelopmentItemCycleTime | Die gesamte Zeit von der Erstellung des Entwicklungselements bis zu seinem endgültigen Abschluss oder seiner Bereitstellung. | ||
| Beschreibung Dieses Attribut ist eine berechnete Kennzahl für die durchgängige Dauer eines einzelnen Entwicklungselements. Dazu wird für jeden Case die Differenz zwischen dem Timestamp der ersten und dem der letzten Aktivität ermittelt. Diese Kennzahl ist ein zentraler Leistungsindikator für den gesamten SDLC-Prozess und bildet die Grundlage für die KPI „Durchschnittliche SDLC-Zykluszeit“. Sie gibt einen übergeordneten Überblick über Geschwindigkeit und Effizienz des Prozesses. Wird die Kennzahl im Zeitverlauf und nach verschiedenen Dimensionen wie Priorität oder Team analysiert, lässt sich die Wirkung von Prozessverbesserungen verfolgen. Warum das wichtig ist Gibt die gesamte Durchlaufzeit eines Arbeitselements an und ist damit eine wichtige Kennzahl für die Effizienz und Geschwindigkeit des Gesamtprozesses. Woher beziehen Dieses Feld ist im Quellsystem nicht vorhanden. Das Process-Mining-Tool berechnet den Wert für jeden Case, indem es den kleinsten StartTime-Wert vom größten StartTime-Wert abzieht. Beispiele 15 Tage, 4 Stunden3 Tage, 12 Stunden32 Tage, 8 Stunden | |||
| Bereitstellungsstatus DeploymentStatus | Gibt das Ergebnis einer Bereitstellungsaktivität an, üblicherweise „Erfolgreich“ oder „Fehlgeschlagen“. | ||
| Beschreibung Dieses Attribut erfasst das Ergebnis einer Bereitstellung in einer bestimmten Umgebung. Es ist wichtig, um die Zuverlässigkeit und Stabilität des Release-Prozesses zu beurteilen. Das Attribut ist eine zentrale Grundlage für das Dashboard „Trends bei erfolgreichen und fehlgeschlagenen Bereitstellungen“ sowie für die KPI „Fehlerquote bei Bereitstellungen“. Durch die Analyse der Häufigkeit und Entwicklung von Bereitstellungsfehlern können Unternehmen grundlegende Probleme beim Testen, in der Infrastruktur oder bei der Release-Koordination erkennen. So lassen sich Maßnahmen gezielt auf eine höhere Qualität und Zuverlässigkeit der Softwarebereitstellung ausrichten. Warum das wichtig ist Misst direkt den Erfolg von Bereitstellungen. Das ist entscheidend, um die Fehlerquote bei Bereitstellungen zu berechnen und die Stabilität von Releases zu analysieren. Woher beziehen Dieser Status wird üblicherweise in Aufgaben zur Nachverfolgung von Bereitstellungen oder in Ausführungsdatensätzen von CI/CD-Pipelines erfasst, die in ServiceNow DevOps integriert sind. Beispiele ErfolgreichFehlgeschlagenMit Warnungen abgeschlossen | |||
| Commit-ID CommitId | Die eindeutige Kennung des Commits im Quellcode, der mit der Entwicklungsarbeit verknüpft ist. | ||
| Beschreibung Dieses Attribut stellt eine direkte Verbindung zwischen einem Entwicklungselement und der zugehörigen Codeänderung im Quellcode-Repository, etwa Git, her. Es wird erfasst, wenn die Aktivität „Code committet“ auftritt. Beim Process Mining ergänzt die Commit-ID die Analyse, indem sie Prozessdaten mit Engineering-Daten verknüpft. Analysten können damit eine problematische Bereitstellung bis zur konkreten Codeänderung zurückverfolgen oder Kennzahlen zur Codekomplexität mit Entwicklungszykluszeiten vergleichen. Das ermöglicht eine deutlich detailliertere technische Ursachenanalyse. Warum das wichtig ist Verknüpft das Prozessereignis mit einer konkreten Codeänderung. So lassen sich Prozesskennzahlen mit Details auf Codeebene abgleichen und Ursachen genauer analysieren. Woher beziehen Diese Information wird über ServiceNow-DevOps-Integrationen mit Quellcodeverwaltungssystemen wie Git oder SVN erfasst. Die Daten stehen in verknüpften Tabellen zum Entwicklungselement. Beispiele a1b2c3d4e5f6f0e9d8c7b6a59a8b7c6d5e4f | |||
| Endzeit EventEndTime | Der genaue Zeitstempel, der angibt, wann eine Aktivität abgeschlossen wurde. Bei Ereignissen ohne Dauer entspricht er der Startzeit. | ||
| Beschreibung Dieses Attribut enthält Datum und Uhrzeit, zu denen jede Aktivität im Entwicklungslebenszyklus abgeschlossen wurde. Besonders nützlich ist es für Aktivitäten mit messbarer Dauer, etwa „Code-Review durchgeführt“ oder „QA-Test“. Beim Process Mining ermöglichen Start- und Endzeit die genaue Berechnung der Verarbeitungszeit einer Aktivität. So lässt sie sich von der Wartezeit zwischen Aktivitäten unterscheiden. Dadurch erkennen Sie, ob Verzögerungen durch langwierige Aufgaben oder durch Wartezeiten auf Ressourcen entstehen. Bei Ereignissen ohne Dauer, etwa „Build gestartet“, kann die Endzeit der Startzeit entsprechen. Warum das wichtig ist Ermöglicht die genaue Berechnung der Verarbeitungszeit einer Aktivität. So lässt sich unterscheiden, wie viel Zeit auf die Arbeit und wie viel auf das Warten entfällt. Woher beziehen Dieser Wert muss möglicherweise abgeleitet werden. Dafür kann der Zeitstempel der Startzeit der nächsten Aktivität verwendet werden. Alternativ lässt er sich einem separaten Feld für das Enddatum entnehmen, sofern das Quellsystem ein solches Feld enthält. Beispiele 2023-10-26T18:05:00Z2023-10-28T11:20:15Z2023-11-02T10:00:00Z | |||
| Geplante Release-Version PlannedReleaseVersion | Das Software-Release oder die Version, in der das Entwicklungselement ausgeliefert werden soll. | ||
| Beschreibung Dieses Attribut verknüpft ein Entwicklungselement mit einem geplanten Release, zum Beispiel „Version 2.3“ oder „Release Q4 2023“. Es ist ein wichtiger Bestandteil des Projekt- und Release-Managements. Für Process Mining ist dieses Attribut entscheidend für das Dashboard „Überwachung der Einhaltung des Release-Plans“. Durch den Abgleich der tatsächlichen Abschlussdaten mit den geplanten Release-Terminen können Teams die Termineinhaltung messen, gefährdete Elemente erkennen und die Ursachen für Release-Verzögerungen analysieren. So wird der Entwicklungsprozess auf niedriger Ebene direkt mit übergeordneten Geschäftszielen verknüpft. Warum das wichtig ist Verknüpft Entwicklungsarbeit mit bestimmten Releases und ermöglicht so die Analyse der Termineinhaltung sowie der Auswirkungen von Prozessverzögerungen auf den Release-Zeitplan. Woher beziehen Diese Information steht üblicherweise in einem Feld namens „release“ oder „planned_release“, das häufig auf eine Release-Management-Tabelle in ServiceNow verweist. Weitere Informationen finden Sie in der ServiceNow-DevOps-Dokumentation. Beispiele v3.4.1Release Q1 2024Go-live von Project Phoenix | |||
| Grund für Nacharbeit ReworkReason | Eine Klassifizierung oder Beschreibung des Grundes, aus dem nach dem Test Nacharbeit am Entwicklungselement erforderlich war. | ||
| Beschreibung Wenn ein Element die Qualitätssicherung (QA) oder den Abnahmetest (UAT) nicht besteht, erfasst dieses Attribut den Grund dafür. Das kann eine bestimmte Fehlerkategorie, ein Missverständnis bei den Anforderungen oder ein Problem mit der Testumgebung sein. Diese Information liefert wichtigen Kontext für das Dashboard „Analyse des Nacharbeits- und Ablehnungsflusses“. Analysten erfahren nicht nur, dass Nacharbeit angefallen ist, sondern auch warum. Dadurch lassen sich gezielte Verbesserungen umsetzen, etwa präzisere Anforderungen, bessere Unit-Tests oder stabilere Testumgebungen, um die Nacharbeitsquote insgesamt zu senken. Warum das wichtig ist Liefert qualitative Erkenntnisse zu den Ursachen von Nacharbeit. So können gezielte Prozessverbesserungen die Qualität erhöhen und wiederholte Arbeitsschleifen reduzieren. Woher beziehen Der Grund kann bei einem fehlgeschlagenen Test im Feld „close_notes“ oder in einem eigens dafür vorgesehenen benutzerdefinierten Feld „rework_reason“ erfasst werden. Weitere Informationen finden Sie in der ServiceNow-DevOps-Dokumentation. Beispiele Anforderung falsch verstandenRegressionsfehlerLeistungstest nicht bestandenProblem mit UI/UX | |||
Aktivitäten im Softwareentwicklungslebenszyklus
| Aktivität | Beschreibung | ||
|---|---|---|---|
| Bereitstellung fehlgeschlagen | Zeigt an, dass die Bereitstellung des Entwicklungselements in der Produktion fehlgeschlagen ist. ServiceNow DevOps erfasst dies ausdrücklich, sobald die CI/CD-Pipeline einen Fehler meldet. | ||
| Warum das wichtig ist Dies ist ein wichtiger Endpunkt für fehlgeschlagene Bereitstellungen. Die Analyse ihrer Häufigkeit und Ursachen ist entscheidend, um die Release-Stabilität zu verbessern und die Fehlerquote bei Bereitstellungen zu senken. Woher beziehen Wird anhand des Felds „completion_status“ eines Datensatzes in Pipeline Execution [sn_devops_pipeline_execution] erfasst. Ein Status „Failed“ zum Endzeitpunkt kennzeichnet dieses Ereignis. Erfassung Wird protokolliert, wenn die Bereitstellungspipeline für die Produktion einen Fehlerstatus meldet. Ereignistyp explicit | |||
| Code-Review durchgeführt | Diese Aktivität zeigt den Abschluss eines Peer-Code-Reviews an, das üblicherweise mit einem Pull Request oder Merge Request verknüpft ist. Das Ereignis lässt sich über DevOps-Integrationen ausdrücklich erfassen oder aus Statusänderungen zugehöriger Datensätze ableiten. | ||
| Warum das wichtig ist Dies ist ein entscheidender Qualitätsschritt. Die Analyse seiner Dauer hilft, Engpässe im Review-Prozess zu erkennen, der häufig zu Verzögerungen im SDLC führt. Woher beziehen Lässt sich anhand des Ereignisses „Merged“ oder „Completed“ eines Pull-Request-Datensatzes in der Git-Integration von ServiceNow erfassen. Alternativ kann es aus einer Statusänderung des Entwicklungselements auf „Code Review Complete“ abgeleitet werden. Erfassung Wird protokolliert, wenn ein mit dem Arbeitselement verknüpfter Pull Request zusammengeführt wird. Ereignistyp explicit | |||
| Entwicklung begonnen | Diese Aktivität kennzeichnet den Zeitpunkt, an dem ein Entwickler mit dem Programmieren oder der Umsetzung des Entwicklungselements beginnt. Sie wird üblicherweise aus einer Statusänderung des Elements auf „In Progress“, „Development“ oder „Coding“ abgeleitet. | ||
| Warum das wichtig ist Dieser wichtige Meilenstein markiert den Beginn der wertschöpfenden Umsetzungsphase. Er ist entscheidend, um die Durchlaufzeit der Entwickler und die Zykluszeit von Code-Reviews zu messen. Woher beziehen Wird anhand des Zeitstempels abgeleitet, zu dem das Feld „State“ im Datensatz des Entwicklungselements, zum Beispiel Story [rm_story], auf „In Progress“ oder einen entsprechenden Status gesetzt wird. Erfassung Basiert auf dem Zeitstempel einer Zustandsänderung auf „In Progress“ oder einen ähnlichen Wert. Ereignistyp inferred | |||
| Entwicklungselement erstellt | Diese Aktivität kennzeichnet die Erstellung eines neuen Entwicklungselements in ServiceNow, etwa einer Story, eines Bugs oder eines Epics. Das Ereignis wird in der Regel ausdrücklich erfasst, wenn ein neuer Datensatz in die entsprechende Tabelle eingefügt wird, beispielsweise in die Tabelle Story [rm_story]. | ||
| Warum das wichtig ist Dies ist das primäre Start-Event des SDLC-Prozesses. Es ermöglicht die Messung der gesamten End-to-End-Zykluszeit und erfasst den Eingang des ursprünglichen Bedarfs. Woher beziehen Die Erstellung wird in den Tabellen sys_audit oder sys_history_line erfasst, wenn ein Datensatz in einer entwicklungsspezifischen Tabelle angelegt wird, etwa Story [rm_story], Epic [rm_epic] oder Defect [rm_defect]. Der Erstellungszeitstempel steht in der Regel direkt im Datensatz. Erfassung Wird anhand des Erstellungszeitstempels des Datensatzes zum Entwicklungselement erfasst. Ereignistyp explicit | |||
| In der Produktion bereitgestellt | Dieses Ereignis kennzeichnet den erfolgreichen Abschluss der Bereitstellung in der Produktionsumgebung. ServiceNow DevOps erfasst es ausdrücklich, sobald das CI/CD-Tool den erfolgreichen Abschluss der Pipeline meldet. | ||
| Warum das wichtig ist Dies ist der zentrale Endpunkt für einen erfolgreichen SDLC-Prozess. Er schließt den Value Stream ab und ist entscheidend für die Berechnung der gesamten Zykluszeit. Woher beziehen Wird anhand des Felds „completion_status“ eines Datensatzes in Pipeline Execution [sn_devops_pipeline_execution] oder des zugehörigen Stage Execution Run erfasst. Ein Status „Success“ zum Endzeitpunkt kennzeichnet dieses Ereignis. Erfassung Wird protokolliert, wenn die Bereitstellungspipeline für die Produktion erfolgreich abgeschlossen wurde. Ereignistyp explicit | |||
| QA-Test abgeschlossen | Zeigt an, dass das Qualitätssicherungsteam die Tests für das Entwicklungselement erfolgreich abgeschlossen hat. Üblicherweise wird dies abgeleitet, wenn der Zustand des Elements die Testphase verlässt und auf einen Status wie „Ready for UAT“ oder „Done“ wechselt. | ||
| Warum das wichtig ist Dieser Meilenstein markiert den Abschluss eines wichtigen Qualitätsschritts. Er ist Voraussetzung für nachfolgende Phasen wie User Acceptance Testing oder die Release-Vorbereitung. Woher beziehen Wird anhand des Zeitstempels einer Zustandsänderung von einem Teststatus, etwa „In QA“, zu einem Status nach dem Testen abgeleitet, zum Beispiel „Ready for UAT“ oder „Resolved“. Erfassung Basiert auf dem Zeitstempel einer Zustandsänderung von „Testing“ zu einem nachfolgenden Zustand. Ereignistyp inferred | |||
| UAT genehmigt | Zeigt an, dass die Fachverantwortlichen das Entwicklungselement nach dem User Acceptance Testing formell freigegeben haben. Dieser wichtige Meilenstein wird aus einer Statusänderung abgeleitet, etwa von „In UAT“ zu „Ready for Release“ oder „Approved“. | ||
| Warum das wichtig ist Dies ist die abschließende fachliche Freigabe, bevor ein Element für die Bereitstellung in der Produktion freigegeben wird. Sie ist ein wichtiger Prüfpunkt für Qualität und Governance. Woher beziehen Wird aus einem Zustandswechsel im Datensatz des Entwicklungselements abgeleitet, der den erfolgreichen Abschluss des UAT kennzeichnet. Der Wechsel wird im Aktivitätsverlauf des Elements protokolliert. Erfassung Wird aus einer Zustandsänderung von „UAT“ zu einem freigegebenen oder für das Release bereiten Zustand abgeleitet. Ereignistyp inferred | |||
| Bereitstellung in der Produktion begonnen | Diese Aktivität kennzeichnet den Start der Bereitstellungspipeline für die Produktionsumgebung. ServiceNow DevOps erfasst sie ausdrücklich, sobald die Produktionsphase einer CI/CD-Pipeline ausgeführt wird. | ||
| Warum das wichtig ist Damit beginnt die letzte und oft wichtigste Phase des Lebenszyklus. Die Erfassung hilft, die Dauer der Bereitstellung zu analysieren und Möglichkeiten zur Automatisierung zu erkennen. Woher beziehen Wird ausdrücklich in der Tabelle Stage Execution Run [sn_devops_stage_execution] protokolliert, gefiltert nach Phasen der Produktionsumgebung. Erfassung Wird anhand der Startzeit einer Bereitstellungsphase für die Produktion in einer Pipeline Execution erfasst. Ereignistyp explicit | |||
| Build gestartet | Dieses Ereignis kennzeichnet den Start eines CI/CD-Pipeline-Builds, der häufig durch einen Code-Commit ausgelöst wird. ServiceNow DevOps protokolliert den Vorgang als Pipeline-Ausführung und verknüpft ihn mit den auslösenden Entwicklungselementen. | ||
| Warum das wichtig ist Diese Aktivität bildet die Verbindung zwischen Entwicklung und automatisierten Tests oder der Bereitstellung. Die Analyse der Zeit zwischen Commit und Build-Start kann Verzögerungen im CI/CD-Prozess aufdecken. Woher beziehen Wird ausdrücklich in der Tabelle Pipeline Execution [sn_devops_pipeline_execution] erfasst, sobald ein Build im integrierten CI/CD-Tool startet, zum Beispiel Jenkins oder Azure DevOps. Erfassung Wird anhand der Startzeit eines Datensatzes in der Tabelle Pipeline Execution erfasst. Ereignistyp explicit | |||
| Code committet | Diese Aktivität bezeichnet das Committen von Code durch einen Entwickler in ein Versionskontroll-Repository, das mit dem Entwicklungselement verknüpft ist. ServiceNow DevOps erfasst solche Ereignisse ausdrücklich über integrierte SCM-Tools wie Git oder GitHub. | ||
| Warum das wichtig ist Die Erfassung von Commits macht Fortschritt und Häufigkeit der Entwicklungsaktivitäten detailliert sichtbar. So lassen sich bestimmte Codeänderungen dem übergeordneten Entwicklungselement zuordnen. Woher beziehen Wird als ausdrückliches Ereignis in der ServiceNow-DevOps-Tabelle Commits [sn_devops_commit] erfasst. Diese wird über Webhooks aus dem integrierten Quellcodeverwaltungssystem befüllt. Erfassung Wird protokolliert, sobald ein Commit-Webhook vom SCM-Tool eingeht. Ereignistyp explicit | |||
| Entwicklungselement abgebrochen | Bezeichnet die Beendigung eines Entwicklungselements vor dessen Abschluss. Dieser alternative Endzustand wird üblicherweise daraus abgeleitet, dass der Zustand des Elements auf „Cancelled“ oder „Closed Incomplete“ gesetzt wird. | ||
| Warum das wichtig ist Die Erfassung abgebrochener Elemente hilft, unnötigen Aufwand zu erkennen und die Gründe für Änderungen am Umfang oder für eine neue Priorisierung zu verstehen. So entsteht ein vollständigeres Bild aller möglichen Prozessergebnisse. Woher beziehen Wird anhand des Zeitstempels abgeleitet, zu dem das Feld „State“ im Datensatz des Entwicklungselements auf einen abschließenden, nicht erfolgreichen Status wie „Cancelled“ gesetzt wird. Erfassung Wird aus einer Zustandsänderung auf „Cancelled“ oder einen entsprechenden Endzustand abgeleitet. Ereignistyp inferred | |||
| Entwurf begonnen | Diese Aktivität bezeichnet die Phase, in der der technische Entwurf oder die Lösungsarchitektur für das Entwicklungselement erstellt wird. Sie wird üblicherweise aus einer Änderung des Status- oder Zustandsfelds im Datensatz abgeleitet, etwa auf „Design“ oder „Solutioning“. | ||
| Warum das wichtig ist Die Dauer der Entwurfsphase zeigt Engpässe bei der Übertragung von Anforderungen und der Lösungsplanung auf, bevor die Entwicklungsarbeit beginnt. Woher beziehen Wird aus Zustandsänderungen im Datensatz des Entwicklungselements abgeleitet, zum Beispiel in Story [rm_story]. Achten Sie auf Änderungen des Felds „State“ oder eines benutzerdefinierten Felds „Stage“ auf einen entwurfsbezogenen Wert. Erfassung Wird aus einer Statusänderung auf „Design“ oder einen ähnlichen Zustand abgeleitet. Ereignistyp inferred | |||
| Für das Release vorbereitet | Diese Aktivität zeigt an, dass das Entwicklungselement alle Qualitätsschritte durchlaufen hat und einem bestimmten Release zugeordnet wurde. Sie lässt sich daraus ableiten, dass das Element mit einem Release-Datensatz verknüpft wird oder sein Status auf „Ready for Deployment“ wechselt. | ||
| Warum das wichtig ist Dieser Schritt zeigt an, dass ein Element technisch und funktional abgeschlossen ist. Die Verweildauer in diesem Zustand kann die Wartezeit bis zu einem geplanten Bereitstellungsfenster darstellen. Woher beziehen Wird aus einer Änderung des Felds „State“ auf „Ready for Release“ abgeleitet. Alternativ lässt sich verfolgen, wann das Feld „Release“ im Datensatz des Entwicklungselements befüllt oder aktualisiert wird. Erfassung Wird aus einer Statusänderung oder der Verknüpfung mit einem Release-Datensatz abgeleitet. Ereignistyp inferred | |||
| Nacharbeit festgestellt | Zeigt an, dass beim Testen ein Problem gefunden wurde und das Element zur Entwicklung zurückgeschickt werden muss. Das Ereignis wird aus einer rückwärts gerichteten Bewegung im Prozessablauf abgeleitet, etwa einer Statusänderung von „In QA“ zurück zu „In Progress“. | ||
| Warum das wichtig ist Die Erfassung von Nacharbeit ist wichtig, um Qualitätsprobleme und ineffiziente Abläufe zu verstehen. Eine hohe Häufigkeit dieser Aktivität weist auf Probleme in der Entwicklung oder unklare Anforderungen hin. Woher beziehen Wird aus der Änderungshistorie des Felds „State“ in den Tabellen sys_audit oder sys_history_line abgeleitet. Eine Änderung von einem späteren Status, etwa „Testing“, zu einem früheren Status wie „In Progress“ kennzeichnet Nacharbeit. Erfassung Wird aus einem rückwärts gerichteten Statuswechsel abgeleitet, zum Beispiel „Testing“ -> „In Progress“. Ereignistyp inferred | |||
| QA-Test begonnen | Kennzeichnet den Beginn der formalen Qualitätssicherungsphase. Fast immer wird diese Aktivität aus einer Änderung des Zustands des Entwicklungselements auf einen Wert wie „In QA“, „Testing“ oder „Ready for Test“ abgeleitet. | ||
| Warum das wichtig ist Diese Aktivität markiert die Übergabe von der Entwicklung an das QA-Team. Sie ermöglicht es, die Dauer der Testphase zu messen und Engpässe bei der Testkapazität zu erkennen. Woher beziehen Wird anhand des Zeitstempels abgeleitet, zu dem das Feld „State“ im Datensatz des Entwicklungselements, zum Beispiel Story oder Defect, auf einen QA-spezifischen Status gesetzt wird. Erfassung Basiert auf dem Zeitstempel einer Zustandsänderung auf „Testing“ oder einen entsprechenden Wert. Ereignistyp inferred | |||
| UAT begonnen | Bezeichnet den Beginn des User Acceptance Testing, bei dem Fachverantwortliche die Funktionalität prüfen. Das Ereignis wird aus einer Statusänderung auf „UAT“, „In UAT“ oder „User Acceptance Testing“ abgeleitet. | ||
| Warum das wichtig ist Diese Phase ist entscheidend, um sicherzustellen, dass die entwickelte Funktion die Geschäftsanforderungen erfüllt. Die Analyse ihrer Dauer kann Probleme bei der Beteiligung der Benutzer oder Abweichungen von den Anforderungen aufdecken. Woher beziehen Wird aus einem Zustandswechsel im Datensatz des Entwicklungselements abgeleitet. Voraussetzung ist, dass das Zustandsmodell des Kunden einen eigenen UAT-Status enthält. Erfassung Wird aus einer Zustandsänderung auf einen „UAT“-Status abgeleitet. Ereignistyp inferred | |||
Anleitungen zur Datenextraktion
Schritte
- Zustandsmodell verstehen: Dokumentieren Sie vor dem Erstellen von Berichten die konkreten Werte im Statusfeld Ihres Entwicklungselements, etwa in der Tabelle
Story [rm_story]oderDefect [rm_defect]. Ordnen Sie diese den erforderlichen Aktivitäten zu. Der Statuswert „In Progress“ kann beispielsweise der Aktivität „Entwicklung gestartet“ entsprechen. - Zur Berichtserstellung navigieren: Melden Sie sich bei Ihrer ServiceNow-Instanz an. Öffnen Sie im Navigator „Filtern“ den Bereich
Reports > View / Runund klicken Sie auf die SchaltflächeCreate a report. - Bericht für Statusänderungen erstellen: Erstellen Sie zunächst einen Bericht, der statusbasierte Aktivitäten erfasst. 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. - Filtern: Legen Sie für
Table nameeine Ihrer Tabellen für Entwicklungselemente fest, zum BeispielStory. Wählen Sie fürField namedas Statusfeld, zum BeispielState. Filtern Sie das FeldCreated onnach dem gewünschten Zeitraum.
- Berichtsname:
- Bericht für die Erstellung von Elementen erstellen: Erstellen Sie einen neuen Bericht für das Ereignis, bei dem ein Element angelegt wird.
- Berichtsname:
ProcessMind - Item Creation Events - Quelltyp:
Table - Tabelle:
Story [rm_story](oder Ihre primäre Tabelle für Entwicklungselemente) - Typ:
List - Spalten konfigurieren: Fügen Sie Spalten für die erforderlichen Attribute hinzu, zum Beispiel
Number,Created on,Assigned to,PriorityundState. - Filtern: Filtern Sie das Feld
Created onnach einem Zeitraum.
- Berichtsname:
- Bericht für Code-Commits erstellen: Erstellen Sie einen Bericht zu expliziten DevOps-Ereignissen für Commits.
- Berichtsname:
ProcessMind - Commit Events - Quelltyp:
Table - Tabelle:
Commit [sn_devops_commit] - Typ:
List - Spalten konfigurieren: Fügen Sie Spalten wie
Work item,Commit timeundAuthorhinzu. - Filtern: Filtern Sie das Feld
Commit timenach einem Zeitraum.
- Berichtsname:
- Berichte für Builds und Deployments erstellen: Wiederholen Sie den vorherigen Schritt für die Tabellen
Build [sn_devops_build]undDeployment [sn_devops_deployment]. Diese Tabellen enthalten Datensätze zu den AktivitätenBuild Triggered,Deployment to Production Started,Deployed to ProductionundDeployment Failed. - Alle Berichte exportieren: Führen Sie jeden erstellten Bericht einzeln aus. Klicken Sie im jeweiligen Bericht auf das Kontextmenü (drei Punkte oder Abwärtspfeil) und wählen Sie
Export > CSVoderExport > Excel. Speichern Sie alle Dateien. - Daten zusammenführen und umwandeln: Öffnen Sie die exportierten Dateien in einem Tabellenkalkulationsprogramm oder verwenden Sie ein Datenaufbereitungstool. Führen Sie die Daten aus allen Dateien manuell in einem Tabellenblatt zusammen. Erstellen Sie die erforderlichen Spalten für das Event Log, etwa
DevelopmentItem,ActivityNameundEventTime, und ordnen Sie die Quelldaten den passenden Spalten zu. Übernehmen Sie beispielsweiseDocument keyaus dem Audit-Bericht undNumberaus dem Story-Bericht in die SpalteDevelopmentItem. - Aktivitätsnamen zuordnen: Erstellen Sie die Spalte
ActivityName, indem Sie die Quelldaten in Aktivitätsnamen überführen. Verwenden Sie für den Bericht zu Statusänderungen das dokumentierte Zustandsmodell, um Einträge inNew valueden Aktivitäten zuzuordnen. Ordnen Sie beispielsweise den Status „Testing“ der Aktivität „QA-Tests gestartet“ zu. Weisen Sie den übrigen Berichten für jede Zeile einen festen Aktivitätsnamen zu, etwa „Code committet“ für alle Zeilen des Commit-Exports. - Abschließen und speichern: Fügen Sie die Spalten
SourceSystemundLastDataUpdatehinzu und tragen Sie für alle Zeilen statische Werte ein. Achten Sie auf ein einheitliches Timestamp-Format. Speichern Sie die zusammengeführte Datei als einzelne CSV-Datei. Sie können sie nun in ProcessMind hochladen.
Konfiguration
- Erforderliche Tabellen: Für diese Extraktion benötigen Sie vor allem
Audit [sys_audit]für abgeleitete Ereignisse, die jeweiligen Tabellen für Entwicklungselemente, zum BeispielStory [rm_story]undDefect [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 Zeitraum. Wenden Sie ihn einheitlich auf alle Berichte an und verwenden Sie dafür ein Timestamp-Feld wie
Created on,Commit timeoderStartzeit. Filtern Sie im Bericht zusys_auditunbedingt nachTable name(zum Beispielrm_story) undField name(zum Beispielstate), damit nur relevante Statusänderungen erfasst werden. - Empfohlener Zeitraum: Extrahieren Sie Daten aus einem Zeitraum von 3 bis 6 Monaten, um einen repräsentativen Datensatz zu erhalten, ohne die Leistung zu beeinträchtigen. Bei größeren Systemen empfiehlt es sich, die Daten monatsweise zu extrahieren.
- Zustandsmodell definieren: Machen Sie sich mit dem Zustandsmodell Ihrer Organisation für Arbeitselemente vertraut. Nur so können Sie die in der Tabelle
sys_auditerfassten Statuswerte den passenden Geschäftsaktivitäten wie 'QA Testing Started' oder 'UAT Approved' korrekt zuordnen. - Voraussetzungen: Für die Extraktion benötigen Benutzer die Rolle
report_useroder gleichwertige Berechtigungen, um Berichte zu erstellen und auszuführen. Außerdem benötigen sie Lesezugriff auf die oben genannten DevOps- und Anwendungsentwicklungstabellen. Das ServiceNow-DevOps-Plugin muss installiert und mit Ihren SCM- und CI/CD-Tools verbunden sein.
a Beispielabfrage sql
/*
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 ein dediziertes Dienstkonto mit Leseberechtigungen erhalten haben. Die Rollen
itilundsn_devops.viewersind ein guter Ausgangspunkt. Dieses Benutzerkonto benötigt Zugriff auf Tabellen wierm_story,sys_auditund das Schemasn_devops_*. - ServiceNow-ODBC-Treiber installieren: Laden Sie im ServiceNow-Supportportal den passenden ServiceNow-ODBC-Treiber für Ihr Betriebssystem herunter. Folgen Sie den Installationsanweisungen.
- DSN konfigurieren: Richten Sie auf dem Rechner, auf dem Sie die Abfrage ausführen, einen neuen System-DSN (Data Source Name) ein. Fügen Sie in der ODBC-Datenquellenverwaltung den ServiceNow-Treiber hinzu und konfigurieren Sie ihn mit der URL Ihrer Instanz (zum Beispiel
yourinstance.service-now.com), Ihrem Benutzernamen und Ihrem Passwort. - Mit einem SQL-Client verbinden: Verwenden Sie einen SQL-Client wie DBeaver oder Microsoft SQL Server Management Studio (über einen Verbindungsserver). Alternativ können Sie mit einer Programmiersprache wie Python und einer ODBC-Bibliothek über den konfigurierten DSN eine Verbindung zu ServiceNow herstellen.
- Zustandsmodell ermitteln: Ermitteln Sie vor der Abfrage die genauen Werte, die Ihre Organisation im Feld
stateder Tabellen für Entwicklungselemente verwendet, zum Beispielrm_storyoderrm_defect. Die bereitgestellte Abfrage enthält gängige Beispiele wie „In Progress“ oder „In QA“. Ersetzen Sie diese durch Ihre konkreten Werte. - SQL-Abfrage anpassen: Kopieren Sie die bereitgestellte SQL-Abfrage in Ihren Client. Passen Sie die Platzhalter am Anfang der Abfrage an, darunter das Startdatum für die Extraktion und die konkreten Statuswerte für die Aktivitäten Ihres Entwicklungslebenszyklus.
- Abfrage ausführen: Führen Sie die vollständige SQL-Abfrage über die ODBC-Verbindung für die ServiceNow-Datenbank aus. Je nach Zeitraum und Datenmenge kann dies längere Zeit dauern.
- Daten prüfen: Prüfen Sie den zurückgegebenen Datensatz kurz nach Abschluss der Abfrage. Kontrollieren Sie, ob verschiedene Aktivitäten enthalten sind und wichtige Spalten wie
DevelopmentItem,ActivityNameundEventTimewie erwartet befüllt wurden. - Als CSV exportieren: Exportieren Sie das vollständige Ergebnis in eine CSV-Datei. Achten Sie auf UTF-8-Codierung und darauf, dass die Spaltenüberschriften den von ProcessMind benötigten Attributnamen entsprechen, zum Beispiel
DevelopmentItem,ActivityNameundEventTime. - Upload vorbereiten: Stellen Sie sicher, dass die CSV-Datei am Ende keine leeren Zeilen enthält und die Datumsformate für
EventTimeundLastDataUpdateeinheitlich und mit ProcessMind kompatibel sind, zum BeispielYYYY-MM-DD HH:MM:SS.
Konfiguration
- Voraussetzungen: Sie benötigen Zugriff auf eine ServiceNow-Instanz mit aktiviertem DevOps-Modul sowie ein dediziertes Benutzerkonto mit Leseberechtigungen für die erforderlichen Tabellen. Der ServiceNow-ODBC-Treiber muss auf dem Clientrechner installiert und konfiguriert sein.
- ODBC-Treiber konfigurieren: Für die Verbindung benötigen Sie die URL der Instanz, einen Benutzernamen und ein Passwort oder OAuth-Token. Testen Sie die DSN-Verbindung unbedingt, bevor Sie komplexe Abfragen ausführen.
- Nach Zeitraum filtern: Die bereitgestellte Abfrage enthält den Platzhalter
s.sys_created_on >= '2023-01-01', um die extrahierte Datenmenge zu begrenzen. Es empfiehlt sich dringend, einen festgelegten Zeitraum wie die letzten 6 bis 12 Monate zu verwenden, damit die Abfrage in angemessener Zeit ausgeführt werden kann. - Zustandsmodell anpassen: Die Genauigkeit der abgeleiteten Ereignisse hängt vollständig vom Zustandsmodell ab. Ersetzen Sie die Platzhalter für Statuswerte, etwa
[Your 'In Progress' State Value]und[Your 'In QA' State Value], durch die exakten Werte Ihrer ServiceNow-Konfiguration. Bei diesen Werten wird zwischen Groß- und Kleinschreibung unterschieden. - Tabellen für Arbeitselemente: 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 mitUNION ALLin die anfängliche Common Table Expression (CTE)DevItemsaufnehmen. - Leistung: Direkte Abfragen einer produktiven ServiceNow-Instanz können die Leistung beeinträchtigen. Führen Sie umfangreiche Extraktionen möglichst außerhalb der Spitzenzeiten aus. Bei sehr großen Datensätzen empfiehlt sich eine inkrementelle Extraktion anhand des Felds
sys_updated_on.
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 *** Möchten Sie loslegen?
Beginnen Sie noch heute damit, Ihren Softwareentwicklungslebenszyklus zu verbessern. Mit diesem Daten-Template decken Sie verborgene Ineffizienzen auf und treiben die kontinuierliche Verbesserung voran.
Warten Sie nicht länger: Optimieren Sie noch heute Ihren Softwareentwicklungslebenszyklus
Ermitteln Sie Ineffizienzen, um die Zykluszeit Ihres SDLC um mindestens 30 % zu verkürzen.
Keine Kreditkarte erforderlich. Beginnen Sie noch heute mit der Optimierung.