Seu Template de dados do ciclo de vida do desenvolvimento de software
Seu Template de dados do ciclo de vida do desenvolvimento de software
- Atributos recomendados para coleta
- Principais atividades a acompanhar
- Orientações para extrair dados do ServiceNow DevOps
Atributos do ciclo de vida do desenvolvimento de software
| Nome | Descrição | ||
|---|---|---|---|
| Hora de início EventTime | Data e hora exatas em que uma atividade ou um evento específico ocorreu. | ||
| Descrição Este atributo informa a data e a hora em que cada atividade do ciclo de vida do desenvolvimento foi registrada. Ele é essencial para ordenar os eventos cronologicamente e realizar todas as análises baseadas em tempo. No Process Mining, a hora de início é usada para calcular a duração entre atividades, identificar tempos de espera e medir o tempo total de ciclo do processo. Ela é um componente essencial dos Dashboards que analisam a performance, como a análise do tempo de ciclo de ponta a ponta do SDLC, e do cálculo de indicadores-chave de performance, como o tempo de atravessamento da revisão de código. Por que isso importa Essa data e hora são essenciais para ordenar os eventos corretamente e calcular todas as métricas de performance, incluindo tempos de ciclo, durações e tempos de espera. Onde encontrar Geralmente encontrado em campos de data e hora gerados pelo sistema, como 'sys_updated_on' ou 'sys_created_on', na trilha de auditoria ou nas tabelas de tarefas. Exemplos 2023-10-26T10:00:00Z2023-10-27T14:35:10Z2023-11-01T09:15:00Z | |||
| Item de desenvolvimento DevelopmentItem | Identificador exclusivo de uma unidade de trabalho, como uma funcionalidade, um bug ou uma tarefa, que percorre o ciclo de vida do desenvolvimento. | ||
| Descrição O item de desenvolvimento funciona como o principal identificador do caso e representa uma unidade específica de trabalho acompanhada ao longo do processo. Ele conecta todas as atividades desse item, da concepção e do planejamento iniciais ao desenvolvimento, aos testes e à implantação. Na análise de Process Mining, esse atributo é fundamental para reconstruir a jornada completa de cada item de trabalho. Ele permite visualizar os fluxos do processo, calcular o tempo total de ciclo e identificar variantes do processo para funcionalidades ou correções de bugs. Cada evento do Event Log precisa estar associado a um item de desenvolvimento para formar um mapa de processo coerente. Por que isso importa Este é o identificador principal que conecta todas as atividades de desenvolvimento relacionadas em uma única instância do processo, permitindo analisar o ciclo de vida completo de cada item de trabalho. Onde encontrar Esse identificador costuma ser a chave primária das tabelas que gerenciam histórias, bugs ou tarefas, como as tabelas 'rm_story', 'rm_bug' ou 'task' do ServiceNow. Exemplos STRY0010015BUG0034092TASK0050118 | |||
| Nome da atividade ActivityName | Nome do evento específico do ciclo de vida do desenvolvimento que ocorreu, como 'Desenvolvimento iniciado' ou 'Revisão de código realizada'. | ||
| Descrição Este atributo registra o nome de cada marco ou tarefa concluída no ciclo de vida do desenvolvimento de software. Essas atividades formam as etapas sequenciais do processo, da criação à implantação. Analisar a sequência e a frequência dessas atividades é a principal função do Process Mining. Isso permite construir o mapa do processo, identificar gargalos entre as etapas e destacar variações ineficientes ou que não seguem as regras do processo. O conjunto de atividades definido inclui etapas importantes, como design, desenvolvimento, testes e implantação. Por que isso importa Ele define as etapas do mapa do processo e permite analisar o fluxo do processo, identificar gargalos e descobrir desvios em relação ao SDLC padrão. Onde encontrar Em geral, esse atributo é obtido ao associar mudanças de status, registros de eventos ou entradas da trilha de auditoria a uma lista padronizada de nomes de atividades. Por exemplo, uma mudança do campo 'state' para 'In Progress' pode corresponder a 'Desenvolvimento iniciado'. Exemplos Desenvolvimento iniciadoCódigo enviado ao repositórioTestes de controle de qualidade concluídosImplantado em produção | |||
| Sistema de origem SourceSystem | Identifica o sistema de onde os dados foram extraídos, que neste caso é o ServiceNow DevOps. | ||
| Descrição Este atributo especifica o sistema de origem dos dados de eventos. Neste processo, o valor será sempre 'ServiceNow DevOps'. Embora pareça estático, incluir explicitamente o sistema de origem é fundamental para a governança de dados e para ambientes que combinam dados de vários sistemas, como Jira ou Azure DevOps. Isso esclarece a procedência dos dados e ajuda a diagnosticar problemas de qualidade ou extração. Por que isso importa Garante a rastreabilidade dos dados e é essencial para manter sua integridade, especialmente ao integrar dados de várias ferramentas de desenvolvimento. Onde encontrar Este é um valor estático que deve ser adicionado durante o processo de extração e transformação dos dados. Exemplos ServiceNow DevOps | |||
| Última atualização dos dados LastDataUpdate | Data e hora da última atualização dos dados deste Event Log a partir do sistema de origem. | ||
| Descrição Este atributo registra quando o conjunto de dados foi extraído ou atualizado pela última vez a partir do ServiceNow DevOps. Ele se aplica ao conjunto de dados inteiro, não a eventos individuais. Essa data e hora são essenciais para entender o quanto a análise está atualizada. Elas informam aos usuários a atualidade dos insights sobre o processo e ajudam a programar as atualizações dos dados. Exibir essa informação nos Dashboards contextualiza todas as métricas e visualizações, ajudando a garantir que as decisões sejam tomadas com base em dados atualizados. Por que isso importa Oferece um contexto importante sobre a atualidade dos dados e ajuda os usuários a entender o quanto a análise do processo está atualizada. Onde encontrar Essa data e hora são geradas e adicionadas durante a extração dos dados, registrando quando a extração foi executada. Exemplos 2023-11-15T08:00:00Z | |||
| Desenvolvedor responsável AssignedDeveloper | Nome ou ID do desenvolvedor ou usuário responsável pelo item de desenvolvimento no momento da atividade. | ||
| Descrição Este atributo identifica a pessoa responsável por executar uma tarefa ou atividade específica. Ele é dinâmico e pode mudar conforme o item de desenvolvimento passa por diferentes etapas e equipes. Este atributo é essencial para analisar a alocação de recursos, a carga de trabalho e as transferências de responsabilidade. Ele dá suporte direto ao Dashboard 'Carga de trabalho e transferências entre desenvolvedores' e ao KPI 'Volume de atividades por desenvolvedor'. Ao acompanhar as mudanças nesse campo, é possível medir o tempo das transferências e identificar gargalos de colaboração entre desenvolvedores ou entre as equipes de desenvolvimento e controle de qualidade. Por que isso importa É essencial para análises baseadas em recursos, incluindo a distribuição da carga de trabalho, a eficiência das transferências e a identificação de padrões de performance específicos de cada equipe. Onde encontrar Essa informação costuma ficar armazenada no campo 'assigned_to' das tabelas relacionadas a tarefas no ServiceNow. Exemplos David MillerAnna WilliamsJames Brown | |||
| É retrabalho IsRework | Indicador booleano que assume o valor verdadeiro quando a atividade faz parte de um ciclo de retrabalho, como o retorno ao desenvolvimento após os testes. | ||
| Descrição Este atributo derivado identifica atividades que ocorrem depois que o processo retorna a uma etapa anterior. Por exemplo, se a atividade 'Desenvolvimento iniciado' ocorre depois de 'Testes de QA concluídos' para o mesmo item, ela é marcada como retrabalho. Esse indicador é essencial para quantificar e visualizar o retrabalho. Ele dá suporte direto ao Dashboard 'Análise do fluxo de retrabalho e rejeições' e é usado para calcular o KPI 'Taxa de retrabalho após os testes'. Com esses eventos identificados, os analistas podem filtrar e analisar facilmente a frequência, as causas e o impacto do retrabalho no tempo de ciclo geral. Por que isso importa Este indicador facilita a quantificação e a análise do retrabalho, ajudando a medir a qualidade do processo e a identificar as causas raiz da repetição de atividades. Onde encontrar A ferramenta de Process Mining calcula esse atributo analisando a sequência de atividades de cada caso para detectar retornos a etapas anteriores do fluxo do processo. Exemplos truefalse | |||
| Estado do item de desenvolvimento DevelopmentItemState | O status ou estado do item de desenvolvimento no momento do evento, como 'Aberto', 'Em andamento' ou 'Fechado'. | ||
| Descrição Este atributo reflete o status oficial do item de desenvolvimento no ServiceNow. As atividades representam etapas derivadas do processo, enquanto o estado indica a etapa formal registrada no fluxo de trabalho do sistema. O estado costuma ser a origem das atividades derivadas. Ele pode ser usado para validar os dados e criar visões mais simples e abrangentes do processo. Por exemplo, analisar o tempo em cada estado pode revelar gargalos diferentes dos identificados pela análise do tempo entre atividades. Esse atributo também ajuda a encontrar itens parados ou já resolvidos. Por que isso importa Informa o status oficial do item de trabalho no sistema. Esse dado costuma ser usado para derivar atividades e pode ajudar na validação e na análise de status em alto nível. Onde encontrar Este é um campo padrão, geralmente chamado de 'state' ou 'stage', nas tabelas relacionadas a tarefas do ServiceNow. Exemplos PendenteEm andamentoPronto para testeFechado e concluído | |||
| Grupo de atribuição AssignmentGroup | A equipe ou o grupo responsável pelo item de desenvolvimento no momento da atividade. | ||
| Descrição Este atributo identifica a equipe responsável por um item de trabalho, como 'Desenvolvimento de frontend', 'Serviços de backend' ou 'Equipe de QA'. À medida que o item avança, ele costuma passar por diferentes grupos de atribuição. Acompanhar o grupo de atribuição é essencial para entender a colaboração entre áreas e as transferências de trabalho. Isso ajuda a identificar atrasos recorrentes quando o trabalho passa de uma equipe para outra. O atributo também permite analisar a performance e a carga de trabalho de cada equipe, além de identificar quais delas são gargalos no fluxo geral. Por que isso importa Mostra qual equipe é responsável pelo trabalho e permite analisar a performance e a carga de trabalho dos times, além da eficiência das transferências entre eles. Onde encontrar Essa informação fica no campo 'assignment_group', um campo padrão nas tabelas relacionadas a tarefas do ServiceNow. Exemplos Engenharia de plataformaEquipe de aplicativo móvelGarantia da qualidadeDevOps | |||
| Módulo/componente afetado ModuleComponentAffected | O módulo de software, aplicativo ou componente específico relacionado ao item de desenvolvimento. | ||
| Descrição Este atributo classifica o trabalho de desenvolvimento de acordo com a parte do sistema afetada. Pode ser um microsserviço específico, um componente de interface ou um aplicativo de backend. Segmentar o processo por módulo ou componente é essencial para identificar gargalos localizados. O Dashboard 'Insights sobre gargalos por componente' e o KPI 'Duração média da etapa por componente' usam esse atributo para identificar se determinadas partes da base de código estão associadas de forma recorrente a ciclos de desenvolvimento mais longos, mais retrabalho ou falhas de implantação mais frequentes. Assim, você pode concentrar as melhorias onde elas são mais necessárias. Por que isso importa Permite segmentar a análise por aplicativo ou componente, ajudando a identificar gargalos e problemas de qualidade em partes específicas do sistema. Onde encontrar Geralmente, esse dado é armazenado em um campo personalizado ou em uma referência ao Configuration Management Database (CMDB), que vincula o item de trabalho a um registro 'cmdb_ci'. Consulte a documentação do ServiceNow DevOps. Exemplos Serviço de cobrançaInterface de autenticação do usuárioBanco de dados de relatóriosGateway de API | |||
| Prioridade DevelopmentItemPriority | Nível de prioridade atribuído ao item de desenvolvimento, como 'Alta', 'Média' ou 'Baixa'. | ||
| Descrição Este atributo classifica os itens de desenvolvimento conforme a urgência para o negócio. Os níveis de prioridade ajudam as equipes a se concentrar nas tarefas mais críticas e costumam ser usados para gerenciar SLAs e as expectativas das partes interessadas. No Process Mining, a prioridade é uma dimensão importante para análises comparativas. Ela permite filtrar o mapa do processo para verificar se os itens de alta prioridade seguem um caminho mais rápido ou diferente. É essencial para o Dashboard e o KPI 'Tempo de entrega de funcionalidades de alta prioridade', que ajudam a confirmar se os itens críticos estão realmente recebendo prioridade. Por que isso importa Permite filtrar e comparar processos por nível de prioridade, ajudando a verificar se os itens de alta prioridade são processados com mais rapidez e eficiência. Onde encontrar Este é um campo padrão, geralmente chamado de 'priority', nas tabelas relacionadas a tarefas do ServiceNow. Exemplos 1 - Crítico2 - Alto3 - Moderado4 - Baixo | |||
| Tempo de ciclo do item de desenvolvimento DevelopmentItemCycleTime | O tempo total entre a criação do item de desenvolvimento e seu encerramento ou implantação. | ||
| Descrição Este atributo é uma métrica calculada que representa a duração completa de um item de desenvolvimento. Para cada caso, ela é calculada pela diferença entre o timestamp da primeira atividade e o da última. Este é um dos principais indicadores de performance do processo de SDLC e dá suporte direto ao KPI 'Tempo médio de ciclo do SDLC'. Ele oferece uma medida geral da velocidade e da eficiência do processo. Analisar essa métrica ao longo do tempo e por diferentes dimensões, como prioridade ou equipe, ajuda a acompanhar o impacto das iniciativas de melhoria. Por que isso importa Representa a duração total de um item de trabalho, uma métrica importante para medir a eficiência e a velocidade gerais do processo. Onde encontrar Esse campo não existe no sistema de origem. A ferramenta de Process Mining calcula o valor subtraindo o StartTime mínimo do StartTime máximo de cada CaseId. Exemplos 15 dias e 4 horas3 dias e 12 horas32 dias e 8 horas | |||
| Tipo de item de desenvolvimento DevelopmentItemType | A classificação do item de trabalho, como 'Funcionalidade', 'Bug', 'Dívida técnica' ou 'Task'. | ||
| Descrição Este atributo diferencia os tipos de trabalho que passam pelo processo de SDLC. Por exemplo, o processo para corrigir um bug crítico pode ser diferente e mais rápido do que o processo de desenvolvimento de uma nova funcionalidade. Analisar o processo por tipo de item de trabalho ajuda a entender melhor a performance. Você pode responder a perguntas como: 'Os bugs têm mais retrabalho do que as novas funcionalidades?' ou 'Nosso tempo de ciclo para reduzir a dívida técnica é aceitável?'. Essa segmentação oferece insights mais detalhados do que uma visão única do processo. Por que isso importa Diferencia os tipos de trabalho, como funcionalidades e bugs, que podem seguir caminhos diferentes no processo e ter prioridades e durações esperadas distintas. Onde encontrar Esse tipo pode ser identificado pela tabela de origem do registro (por exemplo, 'rm_story' ou 'rm_bug') ou por um campo 'type' em uma tabela genérica de tarefas. Exemplos FuncionalidadeBugTaskSpike | |||
| Hora de término EventEndTime | Data e hora exatas em que uma atividade foi concluída. Para eventos instantâneos, são iguais à hora de início. | ||
| Descrição Este atributo informa a data e a hora em que cada atividade do ciclo de vida do desenvolvimento foi concluída. Ele é especialmente útil para atividades com duração mensurável, como 'Revisão de código realizada' ou 'Testes de controle de qualidade'. No Process Mining, ter as horas de início e de término permite calcular com precisão o tempo de processamento das atividades e diferenciá-lo do tempo de espera entre elas. Assim, você consegue identificar se os atrasos são causados por tarefas longas ou pela espera por recursos. Para eventos instantâneos, como 'Build iniciado', a hora de término pode ser igual à hora de início. Por que isso importa Permite calcular com precisão o tempo de processamento das atividades e diferenciar o tempo dedicado ao trabalho do tempo de espera. Onde encontrar Talvez seja necessário calcular esse valor. Ele pode ser a data e hora de início da atividade seguinte ou vir de um campo separado de 'data de término', se houver no sistema de origem. Exemplos 2023-10-26T18:05:00Z2023-10-28T11:20:15Z2023-11-02T10:00:00Z | |||
| ID do commit CommitId | O identificador exclusivo do commit do código-fonte associado ao trabalho de desenvolvimento. | ||
| Descrição Este atributo vincula diretamente um item de desenvolvimento à alteração de código correspondente no repositório, como o Git. Ele é registrado quando ocorre a atividade 'Código enviado ao repositório'. No Process Mining, o ID do commit enriquece a análise ao conectar os dados do processo aos dados de engenharia. Os analistas podem rastrear uma implantação problemática até a alteração de código exata ou relacionar métricas de complexidade do código aos tempos de ciclo de desenvolvimento. Isso permite uma análise de causa raiz mais aprofundada e técnica. Por que isso importa Vincula o evento do processo a uma alteração de código específica, permitindo aprofundar a análise de causa raiz ao relacionar métricas do processo a detalhes do código. Onde encontrar Esse dado é registrado pelas integrações do ServiceNow DevOps com sistemas de gerenciamento de código-fonte, como Git ou SVN. Os dados ficam em tabelas relacionadas ao item de desenvolvimento. Exemplos a1b2c3d4e5f6f0e9d8c7b6a59a8b7c6d5e4f | |||
| Motivo do retrabalho ReworkReason | Classificação ou descrição do motivo pelo qual um item de desenvolvimento precisou de retrabalho após os testes. | ||
| Descrição Quando um item não passa no QA ou no UAT, este atributo registra o motivo. Pode ser uma categoria específica de bug, um mal-entendido sobre os requisitos ou um problema no ambiente. Essa informação dá contexto essencial ao Dashboard 'Análise do fluxo de retrabalho e rejeições'. Em vez de apenas saber que houve retrabalho, os analistas podem entender por que ele ocorreu. Isso permite direcionar melhorias, como definir melhor os requisitos, ampliar os testes unitários ou estabilizar os ambientes de teste, para reduzir a taxa geral de retrabalho. Por que isso importa Ajuda a entender por que ocorre retrabalho e a direcionar melhorias no processo para aumentar a qualidade e reduzir ciclos de trabalho repetido. Onde encontrar Esse dado pode ser registrado no campo 'close_notes' quando um teste falha ou em um campo personalizado específico, como 'rework_reason'. Consulte a documentação do ServiceNow DevOps. Exemplos Requisito interpretado incorretamenteBug de regressãoFalha no teste de performanceProblema de interface ou experiência do usuário | |||
| Status da implantação DeploymentStatus | Indica o resultado de uma atividade de implantação, geralmente 'Sucesso' ou 'Falha'. | ||
| Descrição Este atributo registra o resultado de uma implantação em um ambiente específico. É uma informação essencial para entender a confiabilidade e a estabilidade do processo de lançamento. Este atributo é fundamental para o Dashboard 'Tendências de sucesso e falha nas implantações' e para o KPI 'Taxa de falha nas implantações'. Ao analisar a frequência e as tendências das falhas, as organizações podem identificar problemas subjacentes nos testes, na infraestrutura ou na coordenação dos lançamentos. Isso ajuda a direcionar os esforços para melhorar a qualidade e a confiabilidade da entrega de software. Por que isso importa Mede diretamente o sucesso das atividades de implantação, um dado essencial para calcular a taxa de falha nas implantações e analisar a estabilidade dos lançamentos. Onde encontrar Esse status costuma ser registrado em tarefas de acompanhamento de implantação ou nos registros de execução de pipelines de CI/CD integrados ao ServiceNow DevOps. Exemplos SucessoFalhaConcluído com avisos | |||
| Versão planejada para lançamento PlannedReleaseVersion | A versão ou o lançamento de software em que o item de desenvolvimento deve ser entregue. | ||
| Descrição Este atributo vincula um item de desenvolvimento a um lançamento planejado específico, como 'Versão 2.3' ou 'Lançamento do 4º trimestre de 2023'. É um elemento importante para o gerenciamento de projetos e o planejamento de lançamentos. No Process Mining, esse atributo é essencial para o Dashboard 'Monitoramento da aderência ao plano de lançamento'. Ao comparar as datas reais de conclusão com as datas planejadas, as equipes podem medir a aderência ao cronograma, identificar itens com risco de não serem incluídos no lançamento e analisar as causas dos atrasos. Assim, fica mais fácil relacionar o processo de desenvolvimento, em nível operacional, aos objetivos de negócio. Por que isso importa Vincula o trabalho de desenvolvimento a lançamentos específicos, permitindo analisar a aderência ao cronograma e o impacto dos atrasos do processo nos prazos de lançamento. Onde encontrar Essa informação costuma ficar em um campo 'release' ou 'planned_release', geralmente vinculado a uma tabela de gerenciamento de lançamentos no ServiceNow. Consulte a documentação do ServiceNow DevOps. Exemplos v3.4.1Lançamento do 1º trimestre de 2024Entrada em produção do Projeto Phoenix | |||
Atividades do ciclo de vida do desenvolvimento de software
| Atividade | Descrição | ||
|---|---|---|---|
| Desenvolvimento iniciado | Esta atividade marca o momento em que um desenvolvedor começa a programar ou implementar o item de desenvolvimento. Em geral, ela é inferida quando o status do item muda para 'In Progress', 'Development' ou 'Coding'. | ||
| Por que isso importa Este é um marco importante que sinaliza o início da etapa de construção que agrega valor. Ele é essencial para medir o tempo de atravessamento do desenvolvedor e o tempo de ciclo da revisão de código. Onde encontrar Inferido a partir da data e hora em que o campo 'State' do registro do item de desenvolvimento, como Story [rm_story], é atualizado para 'In Progress' ou um status equivalente. Coleta Baseado na data e hora de uma mudança de estado para 'In Progress' ou um valor semelhante. Tipo de evento inferred | |||
| Falha na implantação | Indica que a tentativa de implantar o item de desenvolvimento em produção não foi bem-sucedida. O ServiceNow DevOps registra esse evento explicitamente quando o pipeline de CI/CD informa uma falha. | ||
| Por que isso importa Este é um evento crítico de falha. Analisar sua frequência e suas causas é essencial para melhorar a estabilidade dos lançamentos e reduzir a taxa de falhas de implantação. Onde encontrar Obtido do campo 'completion_status' de um registro Pipeline Execution [sn_devops_pipeline_execution]. O status 'Failed' no horário de término marca esse evento. Coleta Registrado quando o pipeline de implantação em produção informa uma falha. Tipo de evento explicit | |||
| Implantado em produção | Este evento marca a conclusão bem-sucedida da implantação no ambiente de produção. O ServiceNow DevOps o registra explicitamente quando a ferramenta de CI/CD informa que o pipeline foi concluído com sucesso. | ||
| Por que isso importa Este é o principal evento de conclusão bem-sucedida do processo de SDLC. Ele encerra o fluxo de valor e é essencial para calcular o tempo total de ciclo. Onde encontrar Obtido do campo 'completion_status' de um registro Pipeline Execution [sn_devops_pipeline_execution] ou do Stage Execution Run associado. O status 'Success' no horário de término marca esse evento. Coleta Registrado quando o pipeline de implantação em produção é concluído com sucesso. Tipo de evento explicit | |||
| Item de desenvolvimento criado | Esta atividade marca a criação de um novo item de desenvolvimento, como uma história, um bug ou um épico, no ServiceNow. Em geral, o evento é registrado explicitamente quando um novo registro é inserido na tabela correspondente, como a tabela Story [rm_story]. | ||
| Por que isso importa Este é o principal evento de início do processo de SDLC. Ele permite medir o tempo total de ciclo de ponta a ponta e acompanhar a entrada inicial da demanda. Onde encontrar Registrado nas tabelas sys_audit ou sys_history_line quando um registro é criado em uma tabela relacionada ao desenvolvimento, como Story [rm_story], Epic [rm_epic] ou Defect [rm_defect]. A data e hora de criação geralmente ficam no próprio registro. Coleta Obtido da data e hora de criação do registro do item de desenvolvimento. Tipo de evento explicit | |||
| Revisão de código realizada | Esta atividade indica a conclusão de uma revisão de código por pares, geralmente associada a uma solicitação de pull ou merge. O evento pode ser registrado explicitamente por integrações de DevOps ou inferido a partir de mudanças de status em registros relacionados. | ||
| Por que isso importa Este é um ponto de controle crítico de qualidade. Analisar sua duração ajuda a identificar gargalos no processo de revisão, uma fonte comum de atrasos no SDLC. Onde encontrar Pode ser registrado a partir do evento 'Merged' ou 'Completed' de um registro de Pull Request na integração do Git com o ServiceNow, ou inferido de uma mudança de status do item de desenvolvimento para 'Code Review Complete'. Coleta Registrado quando uma Pull Request vinculada ao item de trabalho é mesclada. Tipo de evento explicit | |||
| Testes de controle de qualidade concluídos | Indica que a equipe de controle de qualidade concluiu com sucesso os testes do item de desenvolvimento. Em geral, isso é inferido quando o estado do item sai da etapa de testes e muda para um status como 'Ready for UAT' ou 'Done'. | ||
| Por que isso importa Este marco representa a conclusão de um importante ponto de controle de qualidade. Ele é um pré-requisito para etapas seguintes, como os testes de aceitação do usuário ou a preparação do lançamento. Onde encontrar Inferido a partir da data e hora de uma mudança de estado de um status de teste, como 'In QA', para um status posterior aos testes, como 'Ready for UAT' ou 'Resolved'. Coleta Baseado na data e hora de uma mudança de estado de 'Testing' para um estado seguinte. Tipo de evento inferred | |||
| UAT aprovado | Indica que as partes interessadas do negócio aprovaram formalmente o item de desenvolvimento após os testes de aceitação do usuário. Este marco importante é inferido a partir de uma mudança de status, como de 'In UAT' para 'Ready for Release' ou 'Approved'. | ||
| Por que isso importa Esta é a aprovação final do negócio antes de liberar um item para implantação em produção. É um ponto de controle crítico de qualidade e governança. Onde encontrar Inferido a partir de uma transição de estado no registro do item de desenvolvimento que indica a conclusão bem-sucedida do UAT. O evento fica registrado no histórico de atividades do item. Coleta Inferido a partir de uma mudança de estado de 'UAT' para um estado aprovado ou pronto para lançamento. Tipo de evento inferred | |||
| Build iniciado | Este evento marca o início de um build do pipeline de CI/CD, geralmente acionado por um commit de código. O ServiceNow DevOps registra a execução do pipeline e a vincula aos itens de desenvolvimento que a originaram. | ||
| Por que isso importa Esta atividade conecta o desenvolvimento aos testes automatizados ou à implantação. Analisar o tempo entre o commit e o início do build pode revelar atrasos no processo de CI/CD. Onde encontrar Registrado explicitamente na tabela Pipeline Execution [sn_devops_pipeline_execution] quando um build começa na ferramenta de CI/CD integrada, como Jenkins ou Azure DevOps. Coleta Obtido da hora de início de um registro na tabela Pipeline Execution. Tipo de evento explicit | |||
| Código enviado ao repositório | Representa o envio de código por um desenvolvedor para um repositório de controle de versão vinculado ao item de desenvolvimento. O ServiceNow DevOps registra esses eventos explicitamente por meio de ferramentas SCM integradas, como Git ou GitHub. | ||
| Por que isso importa Acompanhar os commits oferece visibilidade detalhada do progresso e da frequência das atividades de desenvolvimento. Isso ajuda a relacionar mudanças específicas no código ao item de desenvolvimento correspondente. Onde encontrar Registrado como evento explícito na tabela Commits do ServiceNow DevOps [sn_devops_commit], preenchida por webhooks do sistema integrado de gerenciamento de código-fonte. Coleta Registrado quando a ferramenta SCM envia um webhook de commit. Tipo de evento explicit | |||
| Design iniciado | Representa a etapa em que o design técnico ou a arquitetura da solução para o item de desenvolvimento está sendo criado. Em geral, essa etapa é inferida quando um campo de status ou estado do registro do item muda para um valor como 'Design' ou 'Solutioning'. | ||
| Por que isso importa Analisar a duração da etapa de design ajuda a identificar gargalos na tradução de requisitos e no planejamento da solução antes do início do desenvolvimento. Onde encontrar Inferido a partir das transições de estado no registro do item de desenvolvimento, como Story [rm_story]. Procure mudanças no campo 'State' ou em um campo personalizado 'Stage' para um valor relacionado ao design. Coleta Inferido a partir de uma mudança de status para 'Design' ou um estado semelhante. Tipo de evento inferred | |||
| Implantação em produção iniciada | Esta atividade marca o início do pipeline de implantação no ambiente de produção. O ServiceNow DevOps registra o evento explicitamente quando começa a execução da etapa de produção de um pipeline de CI/CD. | ||
| Por que isso importa Este é o início da etapa final e, muitas vezes, mais crítica do ciclo de vida. Acompanhar esse momento ajuda a analisar a duração das implantações e identificar oportunidades de automação. Onde encontrar Registrado explicitamente na tabela Stage Execution Run [sn_devops_stage_execution], filtrada para as etapas relacionadas ao ambiente de produção. Coleta Obtido da hora de início de uma etapa de implantação em produção em uma execução de Pipeline Execution. Tipo de evento explicit | |||
| Item de desenvolvimento cancelado | Representa o encerramento de um item de desenvolvimento antes da conclusão. É um estado final alternativo, geralmente inferido quando o estado do item muda para 'Cancelled' ou 'Closed Incomplete'. | ||
| Por que isso importa Acompanhar cancelamentos ajuda a identificar esforços desperdiçados e entender os motivos de mudanças de escopo ou repriorização. Isso oferece uma visão mais completa de todos os resultados possíveis do processo. Onde encontrar Inferido a partir da data e hora em que o campo 'State' do registro do item de desenvolvimento é atualizado para um status final sem conclusão, como 'Cancelled'. Coleta Inferido a partir de uma mudança de estado para 'Cancelled' ou um estado final equivalente. Tipo de evento inferred | |||
| Preparado para lançamento | Esta atividade indica que o item de desenvolvimento passou por todos os pontos de controle de qualidade e foi incluído em um lançamento específico. Ela pode ser inferida quando o item é associado a um registro de Release ou quando seu status muda para 'Ready for Deployment'. | ||
| Por que isso importa Esta etapa indica que o item está tecnicamente e funcionalmente concluído. O tempo nesse estado pode representar a espera até a janela de implantação programada. Onde encontrar Inferido quando o campo 'State' muda para 'Ready for Release' ou pelo acompanhamento do preenchimento ou da atualização do campo 'Release' no registro do item de desenvolvimento. Coleta Inferido a partir de uma mudança de status ou da associação a um registro de Release. Tipo de evento inferred | |||
| Retrabalho identificado | Indica que um problema foi encontrado durante os testes e que o item precisa voltar para o desenvolvimento. Esse evento é inferido ao observar um retrocesso no fluxo do processo, como uma mudança de status de 'In QA' para 'In Progress'. | ||
| Por que isso importa Acompanhar o retrabalho é essencial para entender problemas de qualidade e ineficiências do processo. A alta frequência dessa atividade aponta para problemas no desenvolvimento ou falta de clareza nos requisitos. Onde encontrar Inferido pela análise do histórico do campo 'State' nas tabelas sys_audit ou sys_history_line. Uma mudança de um status de etapa posterior, como 'Testing', para um anterior, como 'In Progress', indica retrabalho. Coleta Inferido a partir de uma transição de status para uma etapa anterior, por exemplo, 'Testing' -> 'In Progress'. Tipo de evento inferred | |||
| Testes de controle de qualidade iniciados | Marca o início da etapa formal de testes de controle de qualidade. Quase sempre é inferido quando o estado do item de desenvolvimento muda para um valor como 'In QA', 'Testing' ou 'Ready for Test'. | ||
| Por que isso importa Esta atividade sinaliza a transferência do desenvolvimento para a equipe de controle de qualidade. Ela permite medir a duração dos testes e identificar gargalos de capacidade nessa etapa. Onde encontrar Inferido a partir da data e hora em que o campo 'State' do registro do item de desenvolvimento, como Story ou Defect, é atualizado para um status específico de controle de qualidade. Coleta Baseado na data e hora de uma mudança de estado para 'Testing' ou um valor equivalente. Tipo de evento inferred | |||
| UAT iniciado | Representa o início dos testes de aceitação do usuário (UAT), nos quais as partes interessadas do negócio validam a funcionalidade. Esse evento é inferido a partir de uma mudança de status para 'UAT', 'In UAT' ou 'User Acceptance Testing'. | ||
| Por que isso importa Esta etapa é fundamental para garantir que a funcionalidade desenvolvida atenda aos requisitos do negócio. Analisar sua duração pode revelar problemas de engajamento dos usuários ou incompatibilidades com os requisitos. Onde encontrar Inferido a partir de uma transição de estado no registro do item de desenvolvimento. Isso depende de o modelo de estados do cliente incluir um status específico para UAT. Coleta Inferido a partir de uma mudança de estado para o status 'UAT'. Tipo de evento inferred | |||
Guias de extração
Etapas
- Entenda seu modelo de estados: Antes de criar relatórios, documente os valores específicos do campo de estado do item de desenvolvimento (por exemplo, na tabela Story
[rm_story]ou Defect[rm_defect]) que correspondem às atividades necessárias. Por exemplo, o valor de estado 'In Progress' pode corresponder à atividade 'Desenvolvimento iniciado'. - Acesse a criação de relatórios: Entre na sua instância do ServiceNow. No navegador de filtros, acesse
Reports > View / Rune clique no botãoCreate a report. - Crie um relatório para mudanças de estado: Crie o primeiro relatório para capturar atividades identificadas por mudanças de estado. Configure-o da seguinte forma:
- Nome do relatório:
ProcessMind - State Change Events - Tipo de fonte:
Table - Tabela:
Audit [sys_audit] - Tipo:
List - Configurar colunas: Adicione
Document key,Created on,Table name,Field name,Old valueeNew value. - Filtrar: Defina
Table namecomo uma das tabelas de itens de desenvolvimento (por exemplo,Story) eField namecomo o campo de estado (por exemplo,State). Adicione um filtro de data ao campoCreated onpara o período desejado.
- Nome do relatório:
- Crie um relatório para a criação de itens: Crie um novo relatório para o evento de criação inicial.
- Nome do relatório:
ProcessMind - Item Creation Events - Tipo de fonte:
Table - Tabela:
Story [rm_story](ou sua principal tabela de itens de desenvolvimento) - Tipo:
List - Configurar colunas: Adicione colunas para os atributos necessários, como
Número,Created on,Assigned to,Priority,Stateetc. - Filtrar: Aplique um filtro de data ao campo
Created on.
- Nome do relatório:
- Crie um relatório para commits de código: Crie um relatório para eventos explícitos de DevOps relacionados a commits.
- Nome do relatório:
ProcessMind - Commit Events - Tipo de fonte:
Table - Tabela:
Commit [sn_devops_commit] - Tipo:
List - Configurar colunas: Adicione colunas como
Work item,Commit time,Authoretc. - Filtrar: Aplique um filtro de data ao campo
Commit time.
- Nome do relatório:
- Crie relatórios para builds e implantações: Repita o processo da etapa anterior para as tabelas
Build [sn_devops_build]eDeployment [sn_devops_deployment]. Essas tabelas contêm registros das atividadesBuild Triggered,Deployment to Production Started,Deployed to ProductioneDeployment Failed. - Exporte todos os relatórios: Execute cada relatório criado separadamente. Em cada um, clique no ícone do menu de contexto (três pontos ou uma seta para baixo) e selecione
Export > CSVouExport > Excel. Salve todos os arquivos. - Combine e transforme os dados: Abra os arquivos exportados em um programa de planilhas ou use uma ferramenta de preparação de dados. Combine manualmente os dados de todos os arquivos em uma única planilha. Crie as colunas necessárias para o Event Log (
DevelopmentItem,ActivityName,EventTimeetc.) e mapeie os dados das colunas de origem. Por exemplo, mapeieDocument keydo relatório de auditoria eNúmerodo relatório de Story para a colunaDevelopmentItem. - Mapeie os nomes das atividades: Crie a coluna
ActivityNametraduzindo os dados de origem. Para o relatório de mudanças de estado, use o modelo de estados documentado para mapear as entradas deNew valuepara nomes de atividades (por exemplo, mapeie o estado 'Testing' para 'Início dos testes de QA'). Nos outros relatórios, atribua um nome de atividade fixo a cada linha (por exemplo, todas as linhas da exportação de commits recebem 'Código commitado'). - Finalize e salve: Adicione as colunas
SourceSystemeLastDataUpdatecom valores estáticos para todas as linhas. Verifique se todos os registros de data e hora usam um formato consistente. Salve o arquivo final combinado como um único CSV, pronto para ser carregado no ProcessMind.
Configuração
- Tabelas necessárias: As principais tabelas para esta extração são
Audit [sys_audit], para eventos inferidos; as tabelas específicas de itens de desenvolvimento (por exemplo,Story [rm_story]eDefect [rm_defect]); e as tabelas centrais do ServiceNow DevOps:Commit [sn_devops_commit],Build [sn_devops_build]eDeployment [sn_devops_deployment]. - Principais filtros: O filtro mais importante é o intervalo de datas, que deve ser aplicado de forma consistente em todos os relatórios, usando um campo de registro de data e hora como
Created on,Commit timeouHora de início. No relatóriosys_audit, é essencial filtrar porTable name(por exemplo,rm_story) eField name(por exemplo,state) para incluir apenas mudanças de estado relevantes. - Recomendação de intervalo de datas: Recomenda-se extrair dados de um período de 3 a 6 meses para obter um conjunto de dados representativo sem causar problemas de performance. Em sistemas maiores, considere extrair os dados em lotes mensais.
- Definição do modelo de estados: Você precisa entender claramente o modelo de estados dos itens de trabalho da sua organização. Isso é necessário para mapear corretamente os valores de estado registrados na tabela
sys_auditpara as atividades de negócio correspondentes, como 'Início dos testes de QA' ou 'Aprovação de UAT'. - Pré-requisitos: Quem fizer a extração precisa da função
report_userou de permissões equivalentes para criar e executar relatórios. Também precisa ter acesso de leitura às tabelas de DevOps e de desenvolvimento de aplicações mencionadas acima. O plugin ServiceNow DevOps deve estar instalado e integrado às ferramentas de SCM e CI/CD.
a Consulta de exemplo 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.
--- Etapas
- Pré-requisitos: Verifique se você tem acesso à rede da sua instância do ServiceNow e recebeu uma conta de serviço dedicada com permissões de leitura (as funções
itilesn_devops.viewersão um bom ponto de partida). Esse usuário precisa ter acesso a tabelas comorm_story,sys_audite ao esquemasn_devops_*. - Instale o driver ODBC do ServiceNow: Baixe o driver ODBC do ServiceNow adequado ao seu sistema operacional no portal de suporte do ServiceNow. Siga as instruções de instalação fornecidas.
- Configure o DSN: Configure um novo DSN de sistema (Data Source Name) na máquina em que você executará a consulta. No Administrador de Fontes de Dados ODBC, adicione o driver do ServiceNow e configure-o com a URL da sua instância (por exemplo,
yourinstance.service-now.com), o nome de usuário e a senha. - Conecte-se com um cliente SQL: Use uma ferramenta cliente SQL, como DBeaver ou Microsoft SQL Server Management Studio (com um servidor vinculado), ou uma linguagem de script, como Python com uma biblioteca ODBC, para se conectar ao ServiceNow usando o DSN configurado.
- Identifique o modelo de estados: Antes de executar a consulta, identifique os valores exatos usados pela sua organização no campo
statedas tabelas de itens de desenvolvimento (por exemplo,rm_story,rm_defect). A consulta fornecida usa exemplos comuns, como 'In Progress' ou 'In QA', que você precisará substituir pelos valores específicos da sua configuração. - Personalize a consulta SQL: Copie a consulta SQL fornecida para o seu cliente. Altere os marcadores no início da consulta, incluindo a data inicial da extração e os valores de estado específicos que correspondem às atividades do ciclo de vida do desenvolvimento.
- Execute a consulta: Execute a consulta SQL completa no banco de dados do ServiceNow pela conexão ODBC. A execução pode levar bastante tempo, dependendo do intervalo de datas e do volume de dados.
- Revise os dados: Quando a consulta terminar, faça uma breve revisão do conjunto de dados retornado. Confira se há diferentes atividades e se colunas importantes, como
DevelopmentItem,ActivityNameeEventTime, estão preenchidas conforme o esperado. - Exporte para CSV: Exporte todo o conjunto de resultados para um arquivo CSV. Verifique se o arquivo está codificado em UTF-8 e se os cabeçalhos das colunas correspondem aos nomes de atributos exigidos pelo ProcessMind, como
DevelopmentItem,ActivityNameeEventTime. - Prepare o arquivo para carregamento: Verifique se o arquivo CSV final não tem linhas vazias no fim e se o formato de data de
EventTimeeLastDataUpdateé consistente e aceito pelo ProcessMind (por exemplo,YYYY-MM-DD HH:MM:SS).
Configuração
- Pré-requisitos: Acesso a uma instância do ServiceNow com o módulo DevOps habilitado. É necessária uma conta de usuário dedicada com permissões de leitura nas tabelas exigidas. O driver ODBC do ServiceNow deve estar instalado e configurado na máquina cliente.
- Configuração do driver ODBC: A conexão exige a URL da instância, um nome de usuário e uma senha ou um token OAuth. É essencial testar a conexão DSN antes de executar consultas complexas.
- Filtro por intervalo de datas: A consulta fornecida inclui o marcador
s.sys_created_on >= '2023-01-01'para limitar o volume de dados extraídos. Recomenda-se extrair dados de um período definido, como os últimos 6 a 12 meses, para manter o tempo de execução da consulta sob controle. - Personalização do modelo de estados: A precisão dos eventos inferidos pela consulta depende totalmente do modelo de estados. Você precisa substituir os valores de estado de exemplo (por exemplo,
[Your 'In Progress' State Value],[Your 'In QA' State Value]) pelos valores exatos usados na configuração do ServiceNow. Eles diferenciam maiúsculas de minúsculas. - Tabelas de itens de trabalho: A consulta foi escrita para a tabela Story (
rm_story). Se sua organização também usa Defects (rm_defect), Enhancements (rm_enhancement) ou outros tipos de Task, você precisa adicioná-los à expressão de tabela comum (CTE) inicialDevItemsusandoUNION ALL. - Performance: Consultas diretas a uma instância de produção do ServiceNow podem afetar a performance. Recomenda-se executar extrações grandes fora dos horários de pico. Para conjuntos de dados muito grandes, considere uma estratégia de extração incremental baseada no campo
sys_updated_on.
a Consulta de exemplo 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 *** Pronto para começar?
Comece hoje a transformar o ciclo de vida do desenvolvimento de software. Use este Template de dados para identificar ineficiências ocultas e promover a melhoria contínua.
Não adie: otimize hoje o ciclo de vida do desenvolvimento de software
Identifique ineficiências para reduzir em 30% ou mais o tempo de ciclo do seu SDLC.
Não é necessário cartão de crédito. Comece a otimizar hoje.