Todos os desenvolvedores de software possuem um mesmo objetivo: Entregar software com valor, rápido e com baixo custo. Esse é um objetivo aparentemente simples, mas que tira o sono da indústria e academia há décadas. Correndo atrás desse sonho está a área da Engenharia de Software, buscando oferecer ferramentas, práticas e estudos para que o desenvolvimento e manutenção dos produtos sejam mais eficientes. Mas já parou para pensar em quantas técnicas, padrões, frameworks etc. existem? Incontáveis soluções são oferecidas e devem ser adequadas a cada um dos casos. Independentemente das práticas utilizadas, uma pergunta tem que estar em mente o tempo todo: Como anda a engenharia de software do meu projeto? E, para responder essa pergunta, foi criado o SEMAT.
O SEMAT (Software Engineering Method and Theory) foi fundado em 2009 para ajudar a resolver diversos problemas que a indústria vem enfrentando. Seu primeiro passo foi fornecer uma fundação (chamada de Kernel) que irá suportar todo o pensamento de software daqui em diante, independentemente das práticas e ferramentas utilizadas. Com esse kernel, é possível entender se o processo, seja ele ágil, cascata ou qualquer outro, está atendendo as áreas consideradas pelo grupo como essenciais: Os chamados Alphas. Esses Alphas são divididos em temas e se relacionam entre si das mais variadas formas, como podemos ver na figura a seguir.
Mais informações sobre o modelo, os estados e os Alphas podem ser obtidas no guia de referência, mas farei uma breve descrição de cada um deles a seguir:
Cliente:
Área que se preocupa em saber se o time entende os stakeholders e a oportunidade que está sendo endereçada
- Oportunidade: As circunstâncias que fazem apropriado a criação ou alteração do sistema em questão.
- Stakeholders: As pessoas, grupos ou organizações que afetam ou são afetadas pelo sistema.
Solução:
Área que se preocupa em saber se o time estabeleceu um entendimento conjunto dos requisitos e implementou um sistema capaz de atender os mesmos.
- Requisitos: As restrições que o sistema deve atender para endereçar a oportunidade e satisfazer os stakeholders
- Sistema de Software: O sistema como um todo, composto de software, hardware e dados
Endeavor (Traduzido livremente para esforço):
Área que se preocupa com o time, sua maneira de trabalhar e com o trabalho a ser feito.
- Trabalho: As atividades envolvendo esforço (mental ou físico) com objetivo de alcançar o objetivo
- Time: O grupo de pessoas engajado no desenvolvimento, suporte e gerência do projeto
- Maneira de Trabalhar: O conjunto de práticas selecionado que guiará o time e ajudará no trabalho
Cada um desses alphas possuem um estado a ser determinado pela equipe, utilizando a técnica denominada de Progress Poker. Esse método foi criado para ser rápido de ser executado e prover valiosa informação sobre o projeto de uma forma geral. O objetivo é que a equipe avalie cada Alpha, os estados que o mesmo possuem e entre em um consenso da situação atual naquele quesito.
É importante avaliar os itens que não foram atendidos porque são eles os pontos a serem atacados para a melhoria do processo.
Para verificar na prática essa técnica, utilizamos em um dos nossos projetos e obtivemos o seguinte resultado:
Como podemos ver, estamos bem posicionados em relação a Cliente (Oportunidade e Stakeholders) e Solução (Requisitos e Sistema de Software) mas pecando um pouco na área de Esforço (Time, Trabalho e Maneira de Trabalhar).
Sabemos que a causa dessa situação se deu pela entrada de diversos membros novos na equipe que ainda não haviam internalizado as práticas e atividades que a empresa executa. Esse foi o foco de maior trabalho para que o cenário identificado fosse revertido.
Em relação as outras duas áreas, é satisfatório perceber que bons resultados estão sendo obtidos e as práticas adotadas continuam sendo mantidas.
Faça você também a avaliação do seu projeto e deixe um comentário com a sua impressão!