Su Template de datos para el ciclo de vida de desarrollo de software
Su Template de datos para el ciclo de vida de desarrollo de software
- Atributos recomendados para recopilar
- Actividades clave que debe seguir
- Guía para extraer datos de ServiceNow DevOps
Atributos del ciclo de vida de desarrollo de software
| Nombre | Descripción | ||
|---|---|---|---|
| Elemento de desarrollo DevelopmentItem | Identificador único de una unidad de trabajo, como una funcionalidad, un error o una tarea, que avanza por el ciclo de vida del desarrollo. | ||
| Descripción El elemento de desarrollo es el identificador principal del caso y representa una unidad de trabajo concreta a la que se hace seguimiento. Vincula todas las actividades de ese elemento, desde la concepción y la planificación iniciales hasta el desarrollo, las pruebas y la implementación. En el análisis de Process Mining, este atributo es fundamental para reconstruir el recorrido completo de cada elemento de trabajo. Permite visualizar los flujos del proceso, calcular los tiempos de ciclo totales e identificar variantes del proceso para cada funcionalidad o corrección de errores. Cada evento del registro debe estar asociado a un elemento de desarrollo para crear un mapa de procesos coherente. Por qué es importante Este es el identificador principal que conecta todas las actividades de desarrollo relacionadas en una sola instancia del proceso y permite analizar el ciclo de vida completo de cada elemento de trabajo. Dónde obtenerlo Este identificador suele ser la clave principal de las tablas que gestionan historias, errores o tareas, como las tablas 'rm_story', 'rm_bug' o 'task' de ServiceNow. Ejemplos STRY0010015BUG0034092TASK0050118 | |||
| Hora de inicio EventTime | Marca de tiempo exacta que indica cuándo tuvo lugar una actividad o un evento específico. | ||
| Descripción Este atributo proporciona la fecha y la hora en que se registró cada actividad del ciclo de vida del desarrollo. Es esencial para ordenar cronológicamente los eventos y realizar todos los análisis basados en el tiempo. En Process Mining, la hora de inicio se utiliza para calcular la duración entre actividades, detectar tiempos de espera y medir el tiempo de ciclo total del proceso. Es un componente clave de los Dashboards que analizan el rendimiento, como el análisis del tiempo de ciclo de principio a fin del SDLC, y para calcular indicadores clave de rendimiento como el tiempo de entrega de la revisión del código. Por qué es importante Esta marca de tiempo es esencial para ordenar correctamente los eventos y calcular todas las métricas de rendimiento, incluidos los tiempos de ciclo, las duraciones y los tiempos de espera. Dónde obtenerlo Suele encontrarse en campos de marca de tiempo generados por el sistema, como 'sys_updated_on' o 'sys_created_on', en el registro de auditoría o en las tablas de tareas. Ejemplos 2023-10-26T10:00:00Z2023-10-27T14:35:10Z2023-11-01T09:15:00Z | |||
| Nombre de la actividad ActivityName | Nombre del evento específico del ciclo de vida del desarrollo que tuvo lugar, como 'Desarrollo iniciado' o 'Revisión de código realizada'. | ||
| Descripción Este atributo registra el nombre de cada hito o tarea completada durante el ciclo de vida del desarrollo de software. Estas actividades conforman los pasos secuenciales del proceso, desde la creación hasta la implementación. Analizar la secuencia y la frecuencia de estas actividades es la función principal de Process Mining. Permite construir el mapa de procesos, ayuda a detectar cuellos de botella entre etapas y pone de manifiesto variaciones ineficientes o que no cumplen los estándares. El conjunto de actividades definido incluye etapas clave como diseño, desarrollo, pruebas e implementación. Por qué es importante Define los pasos del mapa de procesos y permite analizar el flujo del proceso, detectar cuellos de botella y descubrir desviaciones del SDLC estándar. Dónde obtenerlo Por lo general, se obtiene al asignar los cambios de estado, los registros de eventos o las entradas del registro de auditoría a una lista estandarizada de nombres de actividades. Por ejemplo, un cambio del campo 'state' a 'In Progress' podría corresponder a 'Desarrollo iniciado'. Ejemplos Desarrollo iniciadoCódigo confirmadoPruebas de control de calidad completadasImplementado en producción | |||
| Sistema de origen SourceSystem | Identifica el sistema del que se extrajeron los datos, que en este caso es ServiceNow DevOps. | ||
| Descripción Este atributo especifica el sistema de origen de los datos de eventos. Para este proceso, el valor será siempre 'ServiceNow DevOps'. Aunque parezca un dato estático, incluir explícitamente el sistema de origen es fundamental para la gobernanza de datos y en entornos donde se combinan datos de varios sistemas, como Jira o Azure DevOps. Aporta claridad sobre la procedencia de los datos y ayuda a diagnosticar problemas de calidad o extracción. Por qué es importante Garantiza la trazabilidad de los datos y es esencial para mantener su integridad, especialmente al integrar datos de varias herramientas de desarrollo. Dónde obtenerlo Es un valor estático que debe añadirse durante el proceso de extracción y transformación de datos. Ejemplos ServiceNow DevOps | |||
| Última actualización de los datos LastDataUpdate | Marca de tiempo que indica cuándo se actualizaron por última vez los datos de este Registro de eventos desde el sistema de origen. | ||
| Descripción Este atributo registra cuándo se extrajo o actualizó por última vez el conjunto de datos desde ServiceNow DevOps. Se aplica al conjunto de datos completo, no a eventos individuales. Esta marca de tiempo es fundamental para conocer la actualidad del análisis. Indica a los usuarios qué tan recientes son las conclusiones sobre el proceso y ayuda a programar las actualizaciones de datos. Mostrar esta información en los Dashboards aporta contexto a todas las métricas y visualizaciones, y permite tomar decisiones con datos actualizados. Por qué es importante Aporta contexto esencial sobre la actualidad de los datos y permite a los usuarios saber qué tan actualizado está el análisis del proceso. Dónde obtenerlo Esta marca de tiempo se genera y se añade durante la extracción de datos para registrar cuándo se realizó. Ejemplos 2023-11-15T08:00:00Z | |||
| Desarrollador asignado AssignedDeveloper | Nombre o ID de la persona desarrolladora o usuaria asignada al elemento de desarrollo en el momento de la actividad. | ||
| Descripción Este atributo identifica a la persona responsable de realizar una tarea o actividad específica. Es dinámico y puede cambiar a medida que el elemento de desarrollo pasa por distintas etapas y equipos. Este atributo es clave para analizar la asignación de recursos, la carga de trabajo y los traspasos. Es compatible directamente con el Dashboard 'Carga de trabajo y traspasos entre desarrolladores' y el KPI 'Volumen de actividades por desarrollador'. Al hacer un seguimiento de los cambios en este campo, es posible medir los tiempos de traspaso y detectar cuellos de botella en la colaboración entre desarrolladores o entre los equipos de desarrollo y control de calidad. Por qué es importante Es esencial para el análisis basado en recursos, incluida la distribución de la carga de trabajo, la eficiencia de los traspasos y la detección de patrones de rendimiento específicos de cada equipo. Dónde obtenerlo Esta información suele almacenarse en el campo 'assigned_to' de las tablas de tareas de ServiceNow. Ejemplos David MillerAnna WilliamsJames Brown | |||
| Es retrabajo IsRework | Indicador booleano que es verdadero si la actividad forma parte de un ciclo de retrabajo, como volver a desarrollo después de las pruebas. | ||
| Descripción Este atributo derivado identifica las actividades que se producen después de que el proceso retrocede a una etapa anterior. Por ejemplo, si para un mismo elemento se registra la actividad 'Desarrollo iniciado' después de 'Pruebas de control de calidad completadas', se marca como retrabajo. Este indicador es esencial para cuantificar y visualizar el retrabajo. Respalda directamente el Dashboard 'Análisis del flujo de retrabajo y rechazo' y se utiliza para calcular el KPI 'Tasa de retrabajo después de las pruebas'. Al marcar estos eventos, los analistas pueden filtrar y analizar fácilmente la frecuencia, las causas y el efecto del retrabajo en el tiempo de ciclo general. Por qué es importante Este indicador facilita la cuantificación y el análisis del retrabajo, lo que ayuda a medir la calidad del proceso e identificar las causas raíz de la repetición del trabajo. Dónde obtenerlo Este atributo se calcula en la herramienta de Process Mining mediante el análisis de la secuencia de actividades de cada caso para detectar retrocesos en el flujo del proceso. Ejemplos truefalse | |||
| Estado del elemento de desarrollo DevelopmentItemState | Estado del elemento de desarrollo en el momento del evento, por ejemplo, 'Abierto', 'En curso' o 'Cerrado'. | ||
| Descripción Este atributo refleja el estado oficial del elemento de desarrollo en ServiceNow. Las actividades representan pasos derivados del proceso, mientras que el estado indica la etapa formal en el flujo de trabajo del sistema. A menudo, el estado es el origen del que se derivan las actividades. Puede utilizarse para validar los datos y crear vistas del proceso más sencillas y de alto nivel. Por ejemplo, analizar el tiempo que se permanece en cada estado ofrece una perspectiva distinta de los cuellos de botella que analizar el tiempo entre actividades. También permite identificar elementos estancados o resueltos. Por qué es importante Proporciona el estado oficial del elemento de trabajo en el sistema. A menudo es el origen del que se derivan las actividades y puede utilizarse para validar datos y analizar estados a alto nivel. Dónde obtenerlo Es un campo estándar, normalmente llamado 'state' o 'stage', en las tablas de ServiceNow relacionadas con tareas. Ejemplos PendienteEn cursoListo para pruebasCerrado y completado | |||
| Grupo de asignación AssignmentGroup | Equipo o grupo responsable del elemento de desarrollo en el momento de la actividad. | ||
| Descripción Este atributo identifica al equipo asignado a un elemento de trabajo, por ejemplo, 'Desarrollo frontend', 'Servicios backend' o 'Equipo de control de calidad'. A medida que avanza, el elemento de trabajo suele pasar de un grupo de asignación a otro. Registrar el grupo de asignación es esencial para comprender la colaboración entre equipos y los traspasos de trabajo. Ayuda a detectar demoras sistémicas que se producen cuando el trabajo pasa de un equipo a otro. Este atributo permite analizar el rendimiento y la carga de trabajo de cada equipo, así como identificar cuáles generan cuellos de botella en el flujo general. Por qué es importante Registra qué equipo es responsable del trabajo y permite analizar su rendimiento, equilibrar la carga de trabajo y evaluar la eficiencia de los traspasos entre equipos. Dónde obtenerlo Esta información se almacena en el campo 'assignment_group', un campo estándar de las tablas de ServiceNow relacionadas con tareas. Ejemplos Ingeniería de plataformasEquipo de aplicaciones móvilesControl de calidadDevOps | |||
| Módulo o componente afectado ModuleComponentAffected | Módulo de software, aplicación o componente específico al que corresponde el elemento de desarrollo. | ||
| Descripción Este atributo clasifica el trabajo de desarrollo según la parte del sistema a la que afecta. Puede tratarse de un microservicio, un componente de la interfaz de usuario o una aplicación de backend. Segmentar el proceso por módulo o componente es fundamental para detectar cuellos de botella localizados. El Dashboard 'Información sobre cuellos de botella por componente' y el KPI 'Duración media de la etapa por componente' utilizan este atributo para determinar si ciertas partes del código se asocian sistemáticamente con ciclos de desarrollo más largos, más retrabajo o más fallos de implementación. Así, es posible centrar las mejoras donde más se necesitan. Por qué es importante Permite segmentar el análisis por aplicación o componente para detectar cuellos de botella o problemas de calidad en partes específicas del sistema. Dónde obtenerlo A menudo se trata de un campo personalizado o una referencia a la base de datos de gestión de la configuración (CMDB), que vincula el elemento de trabajo con un registro 'cmdb_ci'. Consulte la documentación de ServiceNow DevOps. Ejemplos Servicio de facturaciónInterfaz de autenticación de usuariosBase de datos de informesGateway de API | |||
| Prioridad DevelopmentItemPriority | Nivel de prioridad asignado al elemento de desarrollo, como 'Alta', 'Media' o 'Baja'. | ||
| Descripción Este atributo clasifica los elementos de desarrollo según su urgencia para el negocio. Los niveles de prioridad ayudan a los equipos a centrarse en las tareas más críticas y suelen utilizarse para gestionar los SLA y las expectativas de las partes interesadas. En Process Mining, la prioridad es una dimensión clave para el análisis comparativo. Permite filtrar el mapa de procesos para comprobar si los elementos de alta prioridad siguen una ruta más rápida o diferente. Es esencial para el Dashboard y el KPI 'Tiempo de entrega de funcionalidades de alta prioridad', que permiten comprobar si los elementos críticos reciben realmente un tratamiento prioritario. Por qué es importante Permite filtrar y comparar los procesos según el nivel de prioridad, y comprobar si los elementos de alta prioridad se procesan con mayor rapidez y eficiencia. Dónde obtenerlo Es un campo estándar, a menudo llamado 'priority', en las tablas de ServiceNow relacionadas con tareas. Ejemplos 1 - Crítico2 - Alto3 - Moderado4 - Bajo | |||
| Tiempo de ciclo del elemento de desarrollo DevelopmentItemCycleTime | Tiempo total transcurrido desde la creación del elemento de desarrollo hasta su cierre definitivo o implementación. | ||
| Descripción Este atributo es una métrica calculada que representa la duración integral de un elemento de desarrollo. Se calcula restando la marca de tiempo de la primera actividad a la de la última para cada caso. Es un indicador clave de rendimiento para todo el proceso SDLC y respalda directamente el KPI 'Tiempo de ciclo medio de SDLC'. Ofrece una medida general de la velocidad y la eficiencia del proceso. Analizar esta métrica a lo largo del tiempo y según distintas dimensiones, como la prioridad o el equipo, ayuda a evaluar el efecto de las iniciativas de mejora. Por qué es importante Representa la duración total del proceso de un elemento de trabajo, una métrica clave para medir la eficiencia y la velocidad generales del proceso. Dónde obtenerlo No es un campo del sistema de origen. Se calcula en la herramienta de Process Mining restando el StartTime mínimo del StartTime máximo de cada CaseId. Ejemplos 15 días y 4 horas3 días y 12 horas32 días y 8 horas | |||
| Tipo de elemento de desarrollo DevelopmentItemType | Clasificación del elemento de trabajo, por ejemplo, 'Funcionalidad', 'Error', 'Deuda técnica' o 'Task'. | ||
| Descripción Este atributo distingue los distintos tipos de trabajo que avanzan por el proceso SDLC. Por ejemplo, el proceso para corregir un error crítico puede ser distinto y más rápido que el de desarrollar una nueva funcionalidad. Analizar el proceso según el tipo de elemento de trabajo permite comprender mejor el rendimiento. Ayuda a responder preguntas como: '¿Los errores requieren más retrabajo que las nuevas funcionalidades?' o '¿Es aceptable el tiempo de ciclo para reducir la deuda técnica?'. Esta segmentación ofrece conclusiones más detalladas que una única vista del proceso para todos los casos. Por qué es importante Distingue los distintos tipos de trabajo, como las funcionalidades y los errores, que pueden seguir rutas de proceso, tener prioridades y requerir tiempos diferentes. Dónde obtenerlo Puede determinarse a partir de la tabla de origen del registro (por ejemplo, 'rm_story' o 'rm_bug') o de un campo 'type' en una tabla genérica de tareas. Ejemplos FuncionalidadErrorTaskInvestigación técnica | |||
| Estado de la implementación DeploymentStatus | Indica el resultado de una actividad de implementación, normalmente 'Correcta' o 'Fallida'. | ||
| Descripción Este atributo registra el resultado de una implementación en un entorno específico. Es un dato fundamental para comprender la fiabilidad y estabilidad del proceso de lanzamiento. Este atributo es esencial para el Dashboard 'Tendencias de éxito y fallos de implementación' y el KPI 'Tasa de fallos de implementación'. Al analizar la frecuencia y las tendencias de los fallos, las organizaciones pueden detectar problemas subyacentes en las pruebas, la infraestructura o la coordinación de los lanzamientos. Esto ayuda a centrar los esfuerzos en mejorar la calidad y la fiabilidad de la entrega de software. Por qué es importante Mide directamente el éxito de las actividades de implementación, un dato fundamental para calcular la tasa de fallos y analizar la estabilidad de los lanzamientos. Dónde obtenerlo Este estado suele registrarse en tareas de seguimiento de implementaciones o en registros de ejecución de pipelines de CI/CD integrados con ServiceNow DevOps. Ejemplos CorrectaFallidaCompletada con advertencias | |||
| Hora de finalización EventEndTime | Marca de tiempo exacta que indica cuándo se completó una actividad. En los eventos instantáneos, coincide con la hora de inicio. | ||
| Descripción Este atributo proporciona la fecha y la hora en que se completó cada actividad del ciclo de vida del desarrollo. Es especialmente útil para actividades con una duración medible, como 'Revisión de código realizada' o 'Pruebas de control de calidad'. En Process Mining, disponer de las horas de inicio y finalización permite calcular con precisión el tiempo de procesamiento de las actividades y distinguirlo del tiempo de espera entre ellas. Así se puede determinar si las demoras se deben a tareas largas o a la espera de recursos. En eventos considerados instantáneos, como 'Compilación iniciada', la hora de finalización puede coincidir con la hora de inicio. Por qué es importante Permite calcular con precisión el tiempo de procesamiento de las actividades y distinguir el tiempo dedicado al trabajo del tiempo de espera. Dónde obtenerlo Es posible que haya que calcularlo. Puede corresponder a la marca de tiempo de inicio de la actividad siguiente o proceder de un campo independiente de 'fecha de finalización', si el sistema de origen lo incluye. Ejemplos 2023-10-26T18:05:00Z2023-10-28T11:20:15Z2023-11-02T10:00:00Z | |||
| ID de confirmación CommitId | Identificador único de la confirmación de código fuente asociada al trabajo de desarrollo. | ||
| Descripción Este atributo vincula directamente un elemento de desarrollo con un cambio de código específico del repositorio de código fuente, como Git. Se registra cuando se produce la actividad 'Código confirmado'. En Process Mining, el ID de confirmación enriquece el análisis al conectar los datos del proceso con los datos de ingeniería. Permite rastrear una implementación problemática hasta el cambio de código exacto o relacionar las métricas de complejidad del código con los tiempos de ciclo de desarrollo. Esto aporta un nivel de análisis de causas raíz mucho más detallado y técnico. Por qué es importante Vincula el evento del proceso con un cambio de código específico y permite profundizar en el análisis de causas raíz al relacionar las métricas del proceso con detalles del código. Dónde obtenerlo Este dato se captura mediante las integraciones de ServiceNow DevOps con sistemas de gestión de código fuente como Git o SVN. Los datos se encuentran en tablas relacionadas con el elemento de desarrollo. Ejemplos a1b2c3d4e5f6f0e9d8c7b6a59a8b7c6d5e4f | |||
| Motivo del retrabajo ReworkReason | Clasificación o descripción del motivo por el que un elemento de desarrollo requirió retrabajo después de las pruebas. | ||
| Descripción Cuando un elemento no supera el control de calidad o las pruebas de aceptación del usuario (UAT), este atributo registra el motivo. Puede tratarse de una categoría de error específica, una interpretación incorrecta de los requisitos o un problema del entorno. Esta información aporta un contexto fundamental al Dashboard 'Análisis del flujo de retrabajo y rechazo'. Además de saber que hubo retrabajo, los analistas pueden entender por qué ocurrió. Esto permite aplicar mejoras específicas, como definir mejor los requisitos, reforzar las pruebas unitarias o estabilizar los entornos de prueba, para reducir la tasa general de retrabajo. Por qué es importante Aporta información cualitativa sobre los motivos del retrabajo y permite introducir mejoras específicas en el proceso para elevar la calidad y reducir los ciclos de repetición. Dónde obtenerlo Puede registrarse en el campo 'close_notes' cuando falla una prueba o en un campo personalizado específico 'rework_reason'. Consulte la documentación de ServiceNow DevOps. Ejemplos Requisitos mal interpretadosError de regresiónPrueba de rendimiento fallidaProblema de interfaz o experiencia de usuario | |||
| Versión de lanzamiento prevista PlannedReleaseVersion | Versión o lanzamiento de software en el que se prevé entregar el elemento de desarrollo. | ||
| Descripción Este atributo vincula un elemento de desarrollo con un lanzamiento previsto específico, como 'Versión 2.3' o 'Lanzamiento del cuarto trimestre de 2023'. Es un elemento clave para la gestión de proyectos y la planificación de lanzamientos. En Process Mining, este atributo es fundamental para el Dashboard 'Seguimiento del cumplimiento del plan de lanzamientos'. Al comparar las fechas reales de finalización con las fechas previstas, los equipos pueden medir el cumplimiento del calendario, detectar elementos que podrían quedar fuera de un lanzamiento y analizar las causas de las demoras. Así se establece un vínculo directo entre el proceso de desarrollo detallado y los objetivos generales del negocio. Por qué es importante Vincula el trabajo de desarrollo con lanzamientos específicos y permite analizar el cumplimiento del calendario y el efecto de las demoras del proceso en las fechas de lanzamiento. Dónde obtenerlo Esta información suele almacenarse en un campo 'release' o 'planned_release', que a menudo hace referencia a una tabla de gestión de lanzamientos de ServiceNow. Consulte la documentación de ServiceNow DevOps. Ejemplos v3.4.1Lanzamiento del primer trimestre de 2024Puesta en marcha de Project Phoenix | |||
Actividades del ciclo de vida de desarrollo de software
| Actividad | Descripción | ||
|---|---|---|---|
| Desarrollo iniciado | Esta actividad marca el momento en que una persona desarrolladora empieza a programar o implementar el elemento de desarrollo. Por lo general, se deduce de un cambio de estado del elemento a 'In Progress', 'Development' o 'Coding'. | ||
| Por qué es importante Este hito señala el inicio de la fase de construcción que aporta valor. Es fundamental para medir el tiempo de entrega del desarrollo y la duración del ciclo de revisión del código. Dónde obtenerlo Se deduce de la marca de tiempo en que el campo 'State' del registro del elemento de desarrollo, por ejemplo, Story [rm_story], se actualiza a 'In Progress' o a un estado equivalente. Capturar Se basa en la marca de tiempo de un cambio de estado a 'In Progress' o a un valor similar. Tipo de evento inferred | |||
| Elemento de desarrollo creado | Esta actividad marca la creación de un nuevo elemento de desarrollo, como una historia, un error o una épica, en ServiceNow. Este evento suele registrarse explícitamente cuando se inserta un nuevo registro en la tabla correspondiente, como Story [rm_story]. | ||
| Por qué es importante Este es el evento de inicio principal del proceso del SDLC. Permite medir el tiempo de ciclo total de principio a fin y hacer un seguimiento de la entrada inicial de solicitudes. Dónde obtenerlo Se registra en las tablas sys_audit o sys_history_line cuando se crea un registro en una tabla relacionada con el desarrollo, como Story [rm_story], Epic [rm_epic] o Defect [rm_defect]. La marca de tiempo de creación suele estar en el propio registro. Capturar Se obtiene de la marca de tiempo de creación del registro del elemento de desarrollo. Tipo de evento explicit | |||
| Implementación fallida | Indica que no se pudo implementar en producción el elemento de desarrollo. ServiceNow DevOps lo registra explícitamente cuando la canalización de CI/CD informa de un fallo. | ||
| Por qué es importante Este es un evento crítico de finalización por fallo. Analizar su frecuencia y sus causas es clave para mejorar la estabilidad de los lanzamientos y reducir la tasa de fallos de implementación. Dónde obtenerlo Se obtiene del campo 'completion_status' de un registro Pipeline Execution [sn_devops_pipeline_execution]. El evento se marca con el estado 'Failed' a la hora de finalización. Capturar Se registra cuando la canalización de implementación en producción informa de un estado de fallo. Tipo de evento explicit | |||
| Implementado en producción | Este evento marca la finalización correcta de la implementación en el entorno de producción. ServiceNow DevOps lo registra explícitamente cuando la herramienta de CI/CD informa que la canalización se completó correctamente. | ||
| Por qué es importante Este es el principal evento de finalización satisfactoria del proceso del SDLC. Completa el flujo de valor y es esencial para calcular el tiempo de ciclo total. Dónde obtenerlo Se obtiene del campo 'completion_status' de un registro Pipeline Execution [sn_devops_pipeline_execution] o de su Stage Execution Run asociado. El evento se marca con el estado 'Success' a la hora de finalización. Capturar Se registra cuando la canalización de implementación en producción se completa correctamente. Tipo de evento explicit | |||
| Pruebas de control de calidad completadas | Indica que el equipo de control de calidad completó correctamente las pruebas del elemento de desarrollo. Por lo general, se deduce cuando el estado del elemento sale de la fase de pruebas y pasa a un estado como 'Ready for UAT' o 'Done'. | ||
| Por qué es importante Este hito marca la finalización de un punto de control de calidad importante. Es un requisito previo para las etapas siguientes, como las pruebas de aceptación del usuario o la preparación del lanzamiento. Dónde obtenerlo Se deduce de la marca de tiempo de un cambio de estado desde uno de pruebas, como 'In QA', a uno posterior a las pruebas, como 'Ready for UAT' o 'Resolved'. Capturar Se basa en la marca de tiempo de un cambio de estado de 'Testing' a un estado posterior. Tipo de evento inferred | |||
| Revisión de código realizada | Esta actividad indica que se completó una revisión del código por pares, normalmente asociada a una solicitud de extracción o de fusión. El evento puede registrarse explícitamente mediante integraciones de DevOps o deducirse de cambios de estado en registros relacionados. | ||
| Por qué es importante Este es un punto de control de calidad crítico. Analizar su duración ayuda a detectar cuellos de botella en la revisión, una fuente habitual de demoras en el SDLC. Dónde obtenerlo Puede registrarse a partir del evento 'Merged' o 'Completed' de un registro Pull Request en la integración de Git de ServiceNow, o deducirse de un cambio de estado del elemento de desarrollo a 'Code Review Complete'. Capturar Se registra cuando se fusiona una solicitud de extracción vinculada al elemento de trabajo. Tipo de evento explicit | |||
| UAT aprobada | Indica que las partes interesadas del negocio aprobaron formalmente el elemento de desarrollo tras las pruebas de aceptación del usuario. Este hito clave se deduce de un cambio de estado, por ejemplo, de 'In UAT' a 'Ready for Release' o 'Approved'. | ||
| Por qué es importante Esta es la aprobación final del negocio antes de autorizar la implementación de un elemento en producción. Es un punto de control crítico de calidad y gobernanza. Dónde obtenerlo Se deduce de una transición de estado en el registro del elemento de desarrollo que indica que las pruebas de aceptación del usuario se completaron correctamente. El cambio queda registrado en el historial de actividad del elemento. Capturar Se deduce de un cambio de estado de 'UAT' a un estado aprobado o listo para el lanzamiento. Tipo de evento inferred | |||
| Código confirmado | Representa la confirmación de código por parte de una persona desarrolladora en un repositorio de control de versiones vinculado al elemento de desarrollo. ServiceNow DevOps registra explícitamente estos eventos desde herramientas SCM integradas, como Git o GitHub. | ||
| Por qué es importante El seguimiento de las confirmaciones permite conocer en detalle el avance y la frecuencia de las actividades de desarrollo. También ayuda a relacionar cambios de código específicos con el elemento de desarrollo correspondiente. Dónde obtenerlo Se registra como evento explícito en la tabla Commits [sn_devops_commit] de ServiceNow DevOps, que recibe datos de webhooks del sistema integrado de gestión del código fuente. Capturar Se registra cuando se recibe un webhook de confirmación de la herramienta SCM. Tipo de evento explicit | |||
| Compilación iniciada | Este evento señala el inicio de una compilación en la canalización de CI/CD, a menudo activada por una confirmación de código. ServiceNow DevOps la registra como una ejecución de canalización y la vincula con los elementos de desarrollo de origen. | ||
| Por qué es importante Esta actividad conecta el desarrollo con las pruebas automatizadas o la implementación. Analizar el tiempo entre la confirmación y el inicio de la compilación puede revelar demoras en el proceso de CI/CD. Dónde obtenerlo Se registra explícitamente en la tabla Pipeline Execution [sn_devops_pipeline_execution] cuando comienza una compilación en la herramienta integrada de CI/CD, por ejemplo, Jenkins o Azure DevOps. Capturar Se obtiene de la hora de inicio de un registro en la tabla Pipeline Execution. Tipo de evento explicit | |||
| Diseño iniciado | Representa la fase en la que se crea el diseño técnico o la arquitectura de la solución para el elemento de desarrollo. Por lo general, se deduce de un cambio en un campo de estado del registro del elemento de desarrollo a un valor como 'Design' o 'Solutioning'. | ||
| Por qué es importante Analizar la duración de la fase de diseño ayuda a detectar cuellos de botella al traducir los requisitos y planificar la solución, antes de que comience el desarrollo. Dónde obtenerlo Se deduce de las transiciones de estado del registro del elemento de desarrollo, por ejemplo, Story [rm_story]. Busque cambios en el campo 'State' o en un campo personalizado 'Stage' a un valor relacionado con el diseño. Capturar Se deduce de un cambio de estado a 'Design' o a un estado similar. Tipo de evento inferred | |||
| Elemento de desarrollo cancelado | Representa la finalización de un elemento de desarrollo antes de completarse. Es un estado final alternativo que suele deducirse cuando el estado del elemento se establece en 'Cancelled' o 'Closed Incomplete'. | ||
| Por qué es importante El seguimiento de las cancelaciones ayuda a detectar esfuerzos desperdiciados y a comprender los motivos de los cambios de alcance o de prioridades. También ofrece una visión más completa de todos los resultados posibles del proceso. Dónde obtenerlo Se deduce de la marca de tiempo en que el campo 'State' del registro del elemento de desarrollo se actualiza a un estado final sin completar, como 'Cancelled'. Capturar Se deduce de un cambio de estado a 'Cancelled' o a un estado final equivalente. Tipo de evento inferred | |||
| Implementación en producción iniciada | Esta actividad marca el inicio de la canalización de implementación en el entorno de producción. ServiceNow DevOps la registra como un evento explícito cuando comienza la ejecución de la etapa de producción de una canalización de CI/CD. | ||
| Por qué es importante Marca el inicio de la fase final del ciclo de vida, que suele ser la más crítica. Su seguimiento ayuda a analizar la duración de las implementaciones y a detectar oportunidades de automatización. Dónde obtenerlo Se registra explícitamente en la tabla Stage Execution Run [sn_devops_stage_execution], filtrando las etapas relacionadas con el entorno de producción. Capturar Se obtiene de la hora de inicio de una etapa de implementación en producción dentro de una ejecución de Pipeline Execution. Tipo de evento explicit | |||
| Preparado para el lanzamiento | Esta actividad indica que el elemento de desarrollo superó todos los puntos de control de calidad y se incluyó en un lanzamiento específico. Puede deducirse cuando el elemento se asocia a un registro Release o su estado cambia a 'Ready for Deployment'. | ||
| Por qué es importante Este paso indica que el elemento está completo desde el punto de vista técnico y funcional. El tiempo que permanece en este estado puede representar una espera hasta la ventana de implementación programada. Dónde obtenerlo Se deduce cuando el campo 'State' cambia a 'Ready for Release' o al hacer un seguimiento de cuándo se completa o actualiza el campo 'Release' del registro del elemento de desarrollo. Capturar Se deduce de un cambio de estado o de la asociación con un registro Release. Tipo de evento inferred | |||
| Pruebas de aceptación del usuario iniciadas | Representa el inicio de las pruebas de aceptación del usuario (UAT), en las que las partes interesadas del negocio validan la funcionalidad. Este evento se registra al deducir un cambio de estado a 'UAT', 'In UAT' o 'User Acceptance Testing'. | ||
| Por qué es importante Esta fase es fundamental para garantizar que la funcionalidad desarrollada cumpla los requisitos del negocio. Analizar su duración puede revelar problemas de participación de los usuarios o discrepancias con los requisitos. Dónde obtenerlo Se deduce de una transición de estado en el registro del elemento de desarrollo. Para ello, el modelo de estados del cliente debe incluir un estado específico para UAT. Capturar Se deduce de un cambio de estado a 'UAT'. Tipo de evento inferred | |||
| Pruebas de control de calidad iniciadas | Marca el inicio de la fase formal de pruebas de control de calidad. Casi siempre se deduce de un cambio de estado del elemento de desarrollo a un valor como 'In QA', 'Testing' o 'Ready for Test'. | ||
| Por qué es importante Esta actividad señala el traspaso del desarrollo al equipo de control de calidad. Permite medir la duración de las pruebas y detectar cuellos de botella relacionados con la capacidad de prueba. Dónde obtenerlo Se deduce de la marca de tiempo en que el campo 'State' del registro del elemento de desarrollo, por ejemplo, Story o Defect, se actualiza a un estado específico de control de calidad. Capturar Se basa en la marca de tiempo de un cambio de estado a 'Testing' o a un valor equivalente. Tipo de evento inferred | |||
| Retrabajo identificado | Indica que se encontró un problema durante las pruebas y que el elemento debe volver a desarrollo. Este evento se deduce al observar un retroceso en el flujo del proceso, como un cambio de estado de 'In QA' a 'In Progress'. | ||
| Por qué es importante El seguimiento del retrabajo es esencial para comprender los problemas de calidad y las ineficiencias del proceso. Una frecuencia elevada de esta actividad apunta a problemas de desarrollo o a requisitos poco claros. Dónde obtenerlo Se deduce al analizar el historial del campo 'State' en las tablas sys_audit o sys_history_line. Un cambio de un estado de una fase posterior, como 'Testing', a uno anterior, como 'In Progress', indica retrabajo. Capturar Se deduce de una transición de estado hacia una fase anterior, por ejemplo, 'Testing' -> 'In Progress'. Tipo de evento inferred | |||
Guías de extracción
Pasos
- Comprenda su modelo de estados: Antes de crear informes, documente los valores específicos del campo de estado de los elementos de desarrollo (por ejemplo, en la tabla Story
[rm_story]o Defect[rm_defect]) que corresponden a las actividades necesarias. Por ejemplo, el valor de estado 'In Progress' podría corresponder a la actividad 'Development Started'. - Vaya a la creación de informes: Inicie sesión en su instancia de ServiceNow. En el navegador de filtros, vaya a
Reports > View / Runy haga clic en el botónCreate a report. - Cree un informe para los cambios de estado: Cree el primer informe para registrar las actividades derivadas de los cambios de estado. Configúrelo de la siguiente manera:
- Nombre del informe:
ProcessMind - State Change Events - Tipo de origen:
Table - Tabla:
Audit [sys_audit] - Tipo:
List - Configurar columnas: Añada
Document key,Created on,Table name,Field name,Old valueyNew value. - Filtrar: Establezca
Table nameen una de las tablas de elementos de desarrollo (por ejemplo,Story) yField nameen el campo de estado (por ejemplo,State). Aplique un filtro de fecha al campoCreated onpara el período deseado.
- Nombre del informe:
- Cree un informe para la creación de elementos: Cree un informe nuevo para el evento de creación inicial.
- Nombre del informe:
ProcessMind - Item Creation Events - Tipo de origen:
Table - Tabla:
Story [rm_story](o la tabla principal de elementos de desarrollo) - Tipo:
List - Configurar columnas: Añada columnas para los atributos necesarios, como
Número,Created on,Assigned to,Priority,State, etc. - Filtrar: Aplique un filtro de fecha al campo
Created on.
- Nombre del informe:
- Cree un informe para las confirmaciones de código: Cree un informe para los eventos explícitos de DevOps relacionados con las confirmaciones.
- Nombre del informe:
ProcessMind - Commit Events - Tipo de origen:
Table - Tabla:
Commit [sn_devops_commit] - Tipo:
List - Configurar columnas: Añada columnas como
Work item,Commit time,Author, etc. - Filtrar: Aplique un filtro de fecha al campo
Commit time.
- Nombre del informe:
- Cree informes para las compilaciones y las implementaciones: Repita el proceso del paso anterior para las tablas
Build [sn_devops_build]yDeployment [sn_devops_deployment]. Estas tablas contienen registros de las actividadesBuild Triggered,Deployment to Production Started,Deployed to ProductionyDeployment Failed. - Exporte todos los informes: Ejecute por separado cada informe creado. En cada uno, haga clic en el icono del menú contextual (tres puntos o una flecha hacia abajo) y seleccione
Export > CSVoExport > Excel. Guarde todos los archivos. - Combine y transforme los datos: Abra los archivos exportados en una hoja de cálculo o utilice una herramienta de preparación de datos. Combine manualmente los datos de todos los archivos en una sola hoja. Cree las columnas necesarias para el Registro de eventos (
DevelopmentItem,ActivityName,EventTime, etc.) y asigne los datos de las columnas de origen. Por ejemplo, asigneDocument keydel informe de auditoría yNúmerodel informe de Story a la columnaDevelopmentItem. - Asigne nombres a las actividades: Cree la columna
ActivityNametraduciendo los datos de origen. Para el informe de cambios de estado, utilice el modelo de estados documentado para asignar nombres de actividad a los valores deNew value(por ejemplo, asigne el estado 'Testing' a 'QA Testing Started'). En los demás informes, asigne un nombre de actividad fijo a cada fila (por ejemplo, todas las filas de la exportación de confirmaciones pasan a ser 'Code Committed'). - Finalice y guarde el archivo: Añada las columnas
SourceSystemyLastDataUpdatecon valores estáticos para todas las filas. Asegúrese de que todas las marcas de tiempo tengan un formato uniforme. Guarde el archivo combinado final como un único CSV, listo para cargarse en ProcessMind.
Configuración
- Tablas necesarias: Las tablas principales para esta extracción son
Audit [sys_audit]para los eventos inferidos, las tablas específicas de elementos de desarrollo (por ejemplo,Story [rm_story]yDefect [rm_defect]) y las tablas principales de ServiceNow DevOps:Commit [sn_devops_commit],Build [sn_devops_build]yDeployment [sn_devops_deployment]. - Filtros clave: El filtro más importante es el intervalo de fechas, que debe aplicarse de manera uniforme en todos los informes a un campo de marca de tiempo como
Created on,Commit timeoHora de inicio. En el informe desys_audit, es fundamental filtrar porTable name(por ejemplo,rm_story) yField name(por ejemplo,state) para limitar los datos únicamente a los cambios de estado pertinentes. - Período recomendado: Se recomienda extraer datos de un período de 3 a 6 meses para obtener un conjunto representativo sin afectar al rendimiento. En sistemas más grandes, considere extraer los datos en lotes mensuales.
- Definición del modelo de estados: Debe conocer con claridad el modelo de estados de los elementos de trabajo de su organización. Esto es necesario para asignar correctamente los valores de estado registrados en la tabla
sys_audita las actividades de negocio correspondientes, como 'QA Testing Started' o 'UAT Approved'. - Requisitos previos: Las personas que realicen la extracción necesitan el rol
report_usero permisos equivalentes para crear y ejecutar informes. También necesitan acceso de lectura a las tablas de DevOps y de desarrollo de aplicaciones mencionadas. El complemento ServiceNow DevOps debe estar instalado e integrado con sus herramientas de SCM y CI/CD.
Consulta de ejemplo 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.
--- Pasos
- Requisitos previos: Asegúrese de tener acceso de red a su instancia de ServiceNow y de contar con una cuenta de servicio dedicada con permisos de lectura (los roles
itilysn_devops.viewerson un buen punto de partida). Esta cuenta necesitará acceso a tablas comorm_story,sys_audity el esquemasn_devops_*. - Instale el controlador ODBC de ServiceNow: Descargue el controlador ODBC de ServiceNow adecuado para su sistema operativo desde el portal de soporte de ServiceNow. Siga las instrucciones de instalación proporcionadas.
- Configure el DSN: Configure un nuevo DSN del sistema (nombre del origen de datos) en el equipo donde ejecutará la consulta. En el administrador de orígenes de datos ODBC, añada el controlador de ServiceNow y configúrelo con la URL de su instancia (por ejemplo,
yourinstance.service-now.com), su nombre de usuario y su contraseña. - Conéctese con un cliente SQL: Utilice un cliente SQL como DBeaver, Microsoft SQL Server Management Studio (mediante un servidor vinculado) o un lenguaje de scripting como Python con una biblioteca ODBC para conectarse a ServiceNow mediante el DSN configurado.
- Identifique el modelo de estados: Antes de ejecutar la consulta, identifique los valores exactos que utiliza su organización en el campo
statede las tablas de elementos de desarrollo (por ejemplo,rm_story,rm_defect). La consulta proporcionada utiliza ejemplos habituales como 'In Progress' o 'In QA', que deberá sustituir por sus valores específicos. - Personalice la consulta SQL: Copie la consulta SQL proporcionada en su cliente. Modifique los marcadores de posición al principio de la consulta, incluida la fecha de inicio de la extracción y los valores de estado específicos que corresponden a las actividades del ciclo de vida de desarrollo.
- Ejecute la consulta: Ejecute la consulta SQL completa en la base de datos de ServiceNow mediante la conexión ODBC. Según el intervalo de fechas y el volumen de datos, la operación puede tardar bastante.
- Revise los datos: Cuando termine la consulta, revise brevemente el conjunto de datos obtenido. Compruebe que haya distintas actividades y que las columnas clave, como
DevelopmentItem,ActivityNameyEventTime, contengan los valores esperados. - Exporte a CSV: Exporte todo el conjunto de resultados a un archivo CSV. Asegúrese de que esté codificado en UTF-8 y de que los encabezados de columna coincidan con los nombres de atributos que requiere ProcessMind, por ejemplo,
DevelopmentItem,ActivityNameyEventTime. - Prepare la carga: Asegúrese de que el archivo CSV final no tenga filas vacías al final y de que las fechas de
EventTimeyLastDataUpdatetengan un formato uniforme y compatible con ProcessMind (por ejemplo,YYYY-MM-DD HH:MM:SS).
Configuración
- Requisitos previos: Acceso a una instancia de ServiceNow con el módulo DevOps habilitado. Se necesita una cuenta de usuario dedicada con permisos de lectura para las tablas necesarias. El controlador ODBC de ServiceNow debe estar instalado y configurado en el equipo cliente.
- Configuración del controlador ODBC: Para establecer la conexión, necesita la URL de la instancia, un nombre de usuario y una contraseña o un token OAuth. Es fundamental probar la conexión DSN antes de ejecutar consultas complejas.
- Filtro por intervalo de fechas: La consulta proporcionada incluye el marcador de posición
s.sys_created_on >= '2023-01-01'para limitar el volumen de datos extraídos. Se recomienda encarecidamente extraer datos de un período definido, como los últimos 6 a 12 meses, para que las consultas se ejecuten en un tiempo razonable. - Personalización del modelo de estados: La precisión de los eventos inferidos depende por completo del modelo de estados. Debe sustituir los valores de estado de ejemplo (por ejemplo,
[Your 'In Progress' State Value],[Your 'In QA' State Value]) por los valores exactos de su configuración de ServiceNow. Se distingue entre mayúsculas y minúsculas. - Tablas de elementos de trabajo: La consulta está escrita para la tabla Story (
rm_story). Si su organización también utiliza Defects (rm_defect), Enhancements (rm_enhancement) u otros tipos de tareas, debe añadirlos a la expresión de tabla común (CTE) inicialDevItemsmedianteUNION ALL. - Rendimiento: Las consultas directas a una instancia de ServiceNow en producción pueden afectar al rendimiento. Se recomienda ejecutar extracciones grandes fuera de las horas de mayor actividad. Para conjuntos de datos muy grandes, considere una estrategia de extracción incremental basada en el campo
sys_updated_on.
Consulta de ejemplo 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 *** ¿Todo listo para empezar?
Empiece hoy mismo a transformar el ciclo de vida de desarrollo de software. Utilice este Template de datos para descubrir ineficiencias ocultas e impulsar la mejora continua.
No espere más: optimice hoy el ciclo de vida de desarrollo de software
Localice las ineficiencias para reducir un 30 % o más el tiempo de ciclo del SDLC.
No se requiere tarjeta de crédito. Empiece a optimizar hoy mismo.