Scrum em Manutenção de Sistemas

Scrum em Manutenção de Sistemas

É bastante comum receber dúvidas de nossos alunos em relação a aplicação do Scrum  em diversos segmentos. Eu já vi casos interessantes de implantação do método ágil nos mais diversos mercados, tipos de projetos e os mais variados produtos. Entretanto, um tipo de operação que sempre vem à tona nestas dúvidas é:

Será que é possível Aplicar Scrum em Manutenção de Sistemas?

Scrum Manutenção de Sistemas

Sim, é possível, para tanto é necessário ter domínio do próprio processo de manutenção ou sustentação de sistemas.

Ágil desde o começo

Uma característica marcante de qualquer operação de sustentação é o seu heartbeat, isto é, o batimento cardíaco da operação que é orientado pelo respectivo SLA (Acordo de Nível de Serviço).

O heartbeat da operação de sustentação é determinado pelo comportamento dos incidentes, pela criticidade das solicitações, pelo SLA e também pela estabilidade do produto que é o objeto de suporte.

Se o produto está sendo desenvolvido obedecendo as principais técnicas de codificação e seguindo fielmente a DoD (Definition of Done) o volume de incidentes de correção ou soluções de contorno tenderia a diminuir. Se o produto for desenvolvido utilizando Scrum desde o começo, a vida ficaria mais fácil…Caso contrário, vamos em frente.

Agora vamos visualizar a aplicação prática do Scrum em Manutenção de Sistemas.

Projetos de Melhoria

Scrum em Manutenção de Software

Em operações de sustentação é muito comum haver projetos de melhoria do produto, que em sua maioria são pequenos projetos de tiro curto que visam a implementação de features (funcionalidades) de baixo impacto para a operação, mas que de alguma forma representam melhoria na experiência do usuário.

Uma vez que para cada pequeno projeto de melhoria, surgem um novo conjunto de requisitos a serem desenvolvidos dentro de uma iteração, é recomendável se aplicar o conjunto padrão de práticas do Scrum com pouca ou nenhuma adaptação, garantindo assim uma entrega de produtos, mesmo oriundos da sustentação, com uma qualidade impecável.

Scrum em Bug Fixing

Scrum Bugfix

Um outro tipo de projeto, este muito mais comum, é o de bug fixing (correção de defeitos) dos produtos. Neste tipo de operação o SLA é utilizado para monitorar a performance de correção desde o momento da solicitação do incidente de correção, a aplicação de uma solução de contorno até o encerramento da solicitação.

Projetos de correção de defeitos envolvem corrigir defeitos em projetos que estão em produção ou que a de alguma forma, já não estão mais em desenvolvimento.

Às vezes, esses projetos podem ser até um pouco chatos, especialmente para quem está acostumado com projetos de novos desenvolvimentos.

Normalmente o cliente abre uma série de incidentes de defeitos diariamente ou semanalmente, com um prazo curto para se entregar e sempre carregado de pressão e emoção em cada um dos tickets recebidos pela equipe.

O time de desenvolvimento tem de corrigir o mais rápido possível cada bug e enviar então o release patch (Release de Correção) para mais testes integrados e então processamento da mudança e publicação em ambiente de produção.

Dicas de Aplicação Prática do Scrum para Manutenção de Sistemas

Scrum para Sustentação de Sistemas

É em projetos de Correção de Defeitos que a aplicação do Scrum normalmente é uma dúvida, porém, dada a necessidade premente e urgente de entrega de software de qualidade, gostaria de destacar que com uma rápida e pouca adaptação é possível aplicar práticas fundamentais do Scrum em Manutenção de Sistemas:

1. Daily Scrum

Diariamente é possível conversar com o Scrum Team a respeito de quais incidentes foram resolvidos, quais estão sendo trabalhados e se há algum impedimento. Realize a Daily Scrum e obtenha uma visão melhor da operação de sustentação.

2. Release Plan

Esta é uma das práticas principais e mais fáceis de se adaptar ao utilizar Scrum em Manutenção de Sistemas. Planeje todos os incidentes que foram abertos em um determinado período e que farão parte do documento de Gestão de Mudança que será aprovado para publicação em ambiente produtivo, isto é, basta listar quais são os incidentes que compõe cada pacote que está indo para produção. Importante também escrever um documento de Release detalhando especificamente cada incidente em questão.

3. Kanban

Embora em operações de Sustentação seja muito comum de se utilizar sistemas de Bug Tracking, como o Atlassian JIRA por exemplo, que já vem com reports e dashboard automáticos, é extremamente recomendável a adoção de Kanban que vai detalhar quais são os incidentes que estão sendo trabalhados e quais já foram corrigidos. Isso poderá ajudar a gerenciar a expectativa dos usuários e também controlar adequadamente o que está sendo realizado.

4. Sprint Review e Retrospectiva

Ao final de cada iteração, onde por exemplo o Sprint é o tempo de duração para a entrega do Release, é necessário realizar o Sprint Review, que poderá avaliar como foi a entrega do produto. Aqui vai uma dica, nesta reunião recomendo ainda categorizar os incidentes abertos e vislumbrar novos desenvolvimentos para aniquilar os principais ofensores da operação. No sprint Review da sustentação o objetivo é verificar a qualidade do produto.

Já a Retrospectiva será de grande utilidade para revisão dos processos de atendimento, avaliação da performance do SLA e ainda a avaliação do processo de gestão de mudanças que pode envolver outras áreas, por exemplo.

5. Colaboração do Cliente

De qualquer modo, para que qualquer iniciativa de utilização do Scrum em Manutenção de Sistemas possa ter sucesso é necessária a colaboração do cliente. Idealmente se o cliente concordar e for adequado para o tipo de sustentação, fechar um Sprint de 1 ou até 2 semanas pode garantir a entrega do produto com maior qualidade.

6.DoD – Definition of Done

Outro tópico não menos importante é a aplicação adequada da DoD – Definition of Done que garanta a entrega do produto dentro dos padrões estabelecidos no SLA.

De qualquer modo, acabamos de verificar juntos que além de ser possível de se utilizar Scrum em Manutenção de Sistemas conseguimos melhorar ainda mais o processo de entrega de produtos de qualidade.

E você, qual sua opinião? Deixe abaixo o seu comentário ou dúvida.

Scrum Guide: Unindo Scrum.org, Scrum Alliance e Scrum Inc
Dicas Essenciais para Entrevista como Scrum Master
  • Sérgio Novelli disse:

    Infelizmente você falou, falou, falou… e acabou que não falou nada de diferente do que todo mundo já conhece do SCRUM.

    Achei que leria um artigo sobre como adaptar o SCRUM com aquelas manutenções que entram como “urgentíssimas” porque o cliente está com o caminhão aguardando lá na balança de pesagem e o sistema está fora ou não funciona, e pra piorar, há uns 150 caminhões na fila de pesagem…

    Para esse tipo de manutenção, o SCRUM é totalmente ineficiente, na minha opinião, pois não há tempo de ficar se planejando quantos pontos a feature de correção tem, nem o cliente pode esperar por um produto no final de 15 dias de uma sprint.

    Além disso, não dá pra ficar perdendo tempo em negociação entre PO e Scrum Master para ver qual tarefa do sprint backlog será retirada para se colocar a tarefa de manutenção urgente.

    Creio que o melhor método ágil para se utilizar no fluxo de correções e adequações é o Kanban (estou falando do método, e não do quadro), pois ele tem um fluxo muito mais rápido: a feature entra no backlog com a análise feita uma prioridade, os desenvolvedores selecionam através dessa prioridade, trabalham implementando a correção, enviam para o teste no final; uma vez certificado que a correção atende a solicitação do cliente, o pacote de correção pode ser gerado e enviado para o software em produção imediatamente.

    Além disso, no Kanban há restrições que obrigam o desenvolvedor a trabalhar em uma tarefa de cada vez, ou seja, focado, além de fazer com que toda a equipe se mobilize para atender aquela tarefa quando há dificuldades ou ela tem urgência extrema.

    Essa é a minha opinião. Para manutenção, pode-se até utilizar algumas das práticas do SCRUM, mas o fluxo principal tem que ser do Kanban.

    • Daniel Lacerda disse:

      Se a Squad (equipe) for responsável somente por Manutenções (não realiza nenhum tipo de melhoria ou evolução no produto) eu até concordo com você. Mas se for uma equipe que faz manutenção e inovações, acredito que seja melhor utilizar o Scrum e deixar uma “gordura” de pontos acordadas para emergências a cada Sprint.

  • Jose Agnaldo disse:

    Olá Sergio, concordo com seu comentário e vivo na pele estes ‘dilemas’, você tem algum processo implementado em que possamos trocar experiências ? Estou no início de implementação do OTRS e acho que esta ferramenta pode auxiliar nesta gestão. Grato e um abraço.