• Nenhum resultado encontrado

2.2 Métodos ágeis

2.2.1 O método ágil Scrum

De acordo com a pesquisa realizada pela VersionOne [41], o Scrum ou sua combinação com outros métodos, é o método ágil mais utilizado atualmente, chegando a 73% do total dos projetos que utilizam métodos ágeis. No Brasil a utilização é ainda maior, é o que demonstra a pesquisa realizada por [24] onde 85,8% dos respondentes adotam o Scrum ou sua combinação com outros métodos.

O framework Scrum, segundo Schwaber [35], trata os processos de desenvolvimento como uma ‘caixa preta controlada’, que consiste de um aprimoramento da abordagem iterativo e incremental para fornecimento de software orientado a objeto. É uma metodologia de gestão, melhoria e manutenção de sistemas. Dentre algumas características descritas por [35] pode-se citar:

• as primeiras e últimas fases (planejamento e encerramento) consistem em processos definidos, no qual todas as entradas e saídas estão bem definidas;

• a fase de sprint é um processo empírico, muitos de seus sub-processos não são identificados ou controlados;

• controles incluindo a gestão de riscos são colocados em cada iteração da fase de sprint com objetivo de evitar o caos e ao mesmo tempo maximizar a flexibilidade;

• no que se refere a mudanças, o produto final pode ser alterado a qualquer momento, de modo que a entrega é determinada durante o projeto baseado no ambiente.

De acordo com Schwaber [35], a metodologia do Scrum é dividida em alguns grupos de fases. A Figura 2.5 ilustra a divisão da metodologia e após são descritas cada uma das fases.

• Encerramento: preparação para o lançamento do produto incluindo a documentação final, pré-lançamento organizado, testes e lançamento.

Schwaber [35] ainda ressalta que cada fase possui um conjunto de passos a ser realizado que são apresentados a seguir:

Planejamento

• Desenvolvimento de uma lista das funcionalidades (product backlog); • Definição do prazo de entrega das funcionalidades e dos lançamentos; • Seleção da versão mais adequada para o desenvolvimento imediato;

• Mapeamento de pacotes de produtos (objetos) para itens do (product backlog) na versão selecionada;

• Definição de equipe(s) do projeto para a construção do novo lançamento; • Avaliação de riscos e controle de riscos apropriados;

• Revisão e eventuais ajustes de itens do product backlog e pacotes;

• Validação ou seleção de ferramentas de desenvolvimento e infra-estrutura;

• Estimativa de custo de lançamento, incluindo o desenvolvimento, material colateral, marketing, treinamento e implementação;

• Verificação da aprovação da gestão e financiamento.

Arquitetura / Projeto de alto nível

• Revisão atribuída aos itens do (product backlog);

• Identificar as alterações necessárias para implementar itens do (product backlog);

• Realizar análise de domínio na medida necessária para construir, aprimorar ou atualizar o novo contexto e exigências do sistema;

33

• Identificar eventuais problemas, questões no desenvolvimento ou implementação das mudanças;

• Designar a revisão do projeto, cada abordagem de apresentação da equipe e as mudanças para implementar cada item do product backlog.

Desenvolvimento (sprint)

A fase de desenvolvimento é um ciclo iterativo do trabalho de desenvolvimento, no qual a gestão determina naquele tempo, a concorrência, a qualidade ou quais funcionalidades serão cumpridas. Desenvolvimento é constituído pelos seguintes macroprocessos:

• Reuniões com equipes para rever planos de lançamento através da realização de reunião de planejamento da sprint;

• Distribuição, revisão e ajuste dos padrões com o qual o produto está em conformidade; • Sprintsiterativas até que o produto seja considerado pronto para distribuição.

A sprint é um conjunto de atividades de desenvolvimento realizada durante um período pré-definido, geralmente uma a quatro semanas. O intervalo é baseado na complexidade do produto, avaliação de risco e grau de supervisão desejado. Velocidade final e intensidade são motivos pela duração selecionada da sprint. O risco é avaliado de forma contínua e respostas adequadas aos riscos são colocadas no lugar. Cada sprint consiste em uma ou mais equipes executando o seguinte:

• Desenvolver: definindo mudanças necessárias para a implementação dos requisitos do backlog em pacotes, abrindo os pacotes, realizando análise de domínio, concepção, desenvolvimento, implementação, teste e documentar as mudanças. Desenvolvimento consiste no microprocesso de descoberta, invenção e implementação.

• Cobrir: fechando os pacotes, criando uma versão executável de mudanças e como elas implementam os requisitos do backlog.

• Revisão: todas as equipes reúnem-se para apresentar o trabalho e analisar o progresso, resolver questões e problemas, adicionar novos itens do backlog. Risco é revisto e respostas adequadas são definidas.

• Ajuste: consolidar as informações obtidas a partir da reunião de revisão para os pacotes afetados, incluindo um olhar diferente para as novas características.

Cada sprint é seguida por uma revisão, cujas características são:

• Toda a equipe de gestão está presente e participa;

• A revisão pode incluir clientes, vendas, marketing e outros;

• Revisão abrange sistemas executáveis funcionais que contemplam os objetos atribuídos a equipe e incluem as alterações feitas para implementar os itens do backlog;

• A forma como os itens do backlog são implementados pode ser alterado com base na revisão;

• Novos itens do backlog podem ser introduzidos e distribuídos em equipes como parte da revisão;

• O tempo da próxima revisão é determinado com base no progresso e complexidade.

Encerramento

Quando a equipe de gerenciamento sente que as variáveis de tempo, as exigências, custo e qualidade concorrem para um novo lançamento, eles declaram o lançamento "fechado". Esta fase prepara o produto desenvolvido para a liberação geral. Integração, teste do sistema, documentação do usuário, preparação do material de treinamento e marketing estão entre as tarefas do encerramento.

2.2.1.1 Estimativas no Scrum

As estimativas no Scrum ocorrem durante a reunião de planejamento da sprint, que é dividida em duas sub-reuniões. Na primeira, o Product Owner juntamente com o time de desenvolvimento fazem a revisão dos itens de mais alta prioridade do product backlog e definem quais serão implementados na próxima sprint. A segunda parte da reunião se concentra no planejamento detalhado de como implementar as tarefas selecionadas [14].

35

Segundo Deemer et al. [14], a reunião de planejamento da sprint pode durar algumas horas, pois nela é criado um compromisso sério para completar o trabalho, portanto é essencial uma reflexão cuidadosa para que seja possível obter sucesso.

Inicialmente é definido quanto tempo disponível cada membro tem para trabalhar na próxima sprint. Com a capacidade da equipe definida, são escolhidos alguns itens do product backlog de modo que sejam divididos em tarefas menores. Posterior a esta etapa, o time de desenvolvimento define quanto tempo será necessário para realizar cada tarefa. As tarefas estimadas que podem ser concluídas na sprint são registradas no documento chamado sprint backlog[14]. As técnicas mais utilizadas nos métodos ágeis para estimar as tarefas de software são apresentadas na Seção 2.3.2.

2.2.1.2 Papéis do Scrum

No Scrum está inserida a ideia de trabalhar tal como um time, que é formado pelo Product Owner, time de desenvolvimento e o Scrum Master. O modelo de time do Scrum foi criado para aperfeiçoar flexibilidade, criatividade e produtividade, possuindo como principais características, a auto-organização e multifuncionalidade dos membros da equipe [36].

Os membros do time do Scrum com seus papéis e atribuições são [36]:

• Product Owner: É o dono do produto ou representante do cliente. Única pessoa responsável por expressar as funcionalidades, ordená-las para facilitar o alcance de metas e transmitir com clareza ao time de desenvolvimento. Para o sucesso do Product Owner, é papel da organização respeitar suas decisões no decorrer do projeto.

• Time de desenvolvimento: São os profissionais responsáveis por entregar uma versão estável do produto ao final de cada sprint. Os times de desenvolvimento tem como características a auto-organização, multifuncionalidade e não ocorre reconhecimento de títulos, ou seja, todos são considerados desenvolvedores e a responsabilidade do produto compete ao time como um todo.

• Scrum Master: É o responsável por garantir que teoria, práticas e regras do Scrum sejam entendidas e aplicadas corretamente. Ele tem como função liderar o time Scrum e auxiliar os membros que possuem dúvidas em relação às suas atribuições no decorrer do projeto e eliminar impedimentos.

Documentos relacionados