Escolar Documentos
Profissional Documentos
Cultura Documentos
1.1 Scrum
O Scrum é um framework ágil que auxilia no gerenciamento de projetos complexos
e no desenvolvimento de produtos. Ele é utilizado principalmente quando é muito difícil
predeterminar totalmente o que irá acontecer durante o início do desenvolvimento do
projeto até a entrega final.
A metodologia de desenvolvimento de software Scrum é adotada para organizar e
gerenciar projetos de software utilizando-se dos valores e princípios do manifesto ágil em
conjunto com o fluxo e os elementos definidos no framework. O nome foi inspirado em
uma jogada de rugby, na qual as equipes disputam a posse de bola a partir de uma
formação “Scrum”.
Além dos itens de negócios (ou funcionais), o Product Backlog também contém
itens não funcionais (tempo de resposta), arquiteturais (ser desenvolvido com
determinada tecnologia) e de infraestrutura (estar disponível somente em uma intranet).
1.1.4.1 Sprint
Todo o desenvolvimento em Scrum é feito de forma iterativa e incremental – ciclos
completos de desenvolvimento de duração fixa que, ao final, resultem em incrementos
potencialmente entregáveis do produto. Essas iterações são chamadas de Sprints. Cada
Sprint tem duração de até um mês, o que permite feedbacks constantes do PO quanto ao
produto sendo desenvolvido. A duração da Sprint deve ser definida pelos envolvidos no
projeto.
1.2.1 Valores
A alma da XP são seus 5 valores que guiam o desenvolvimento de software.
1.2.1.1 Comunicação
Há quem diga que a Engenharia de Software (ou boa parte dela) é da área de
Humanas. Mesmo quem discorde de tal afirmação há de convir que desenvolver
softwares é muito mais do que saber programar: é entender as pessoas.
A criação de um produto de qualidade requer muito entendimento e transparência
entre desenvolvedores, clientes e usuários. Falar a verdade sobre estimativas e
processos geralmente não é agradável, mas evita frustrações. Estimativas realistas e a
exposição de dificuldades faz parte de uma comunicação eficiente. A comunicação
também é importante para difundir o conhecimento e catalisar a identificação de soluções.
Com mais comunicação, habilidades particulares logo farão parte da cultura da equipe.
1.2.1.2 Simplicidade
Simplicidade é uma ótima estratégia de negócio. Uma arquitetura simples é mais
fácil de ser implementada do que uma complexa. O mesmo vale para a modelagem e
para o estilo de codificação. Para manter a simplicidade faça só o necessário e quando
precisar ser feito. Não adicione requisitos ou flexibilidade até que sejam realmente
necessários. Faça a coisa mais simples que possa funcionar. Vale destacar que
simplicidade não significa falta de qualidade.
O software dever ser mantido o mais simples possível pelo maior tempo possível,
pois sofisticação precoce dificulta o crescimento e a manutenção da arquitetura,
atrasando a entrega de funcionalidades básicas.
Faça de forma simples e objetiva o que foi combinado, ou seja, não fique
“inventando moda”.
1.2.1.3 Coragem
É necessário coragem para mudar, inovar, aceitar que não se sabe tudo e que
desenvolvimento de software é uma atividade complexa demais para ser tratada de forma
determinística. Desenvolvimento de software requer coragem para assumir
comprometimentos em vez de esconder-se atrás de processos.
1.2.1.4 Feedback
Antecipe o feedback. Se o cliente emitir suas opiniões sobre um software seis
meses após o início do desenvolvimento, há o risco da equipe ter desperdiçado um
semestre de trabalho. Quanto mais rápido o feedback acontecer, mais cedo saberemos se
o projeto caminha na direção certa; e se não estiver, o esforço para a corrigi-lo será
pequeno.
Feedback constante é a chave para a criação de software que atende às
necessidades dos usuários. Com ciclos curtos de desenvolvimento e feedback,
implementações erradas e defeitos podem ser corrigidos e postos à prova rapidamente.
1.2.2 Respeito
Respeito é um valor que dá sustentação a todos os demais. Membros de uma
equipe só irão se preocupar em comunicar-se melhor, por exemplo, se se importarem uns
com os outros. Saber ouvir, saber compreender e respeitar o ponto de vista do outro é
essencial para que um projeto de software seja bem sucedido.
1.2.3 Equipe
Uma equipe de XP deve reunir todas as habilidades técnicas e de negócios para
produzir o software em questão. Estão previstas funções para programadores, analistas
de negócios, analistas de testes, designers de interação, arquitetos, gerentes de projeto,
gerentes de produto, redatores técnicos, executivos e usuários.
Uma característica importante é que a hierarquia entre a equipe deve ser a mais
tênue possível.
Em XP, os desenvolvedores e os clientes fazem parte da mesma equipe e
trabalham juntos para construir software de alta qualidade que atenda às necessidades no
negócio.
Alguns papéis dentro da equipe devem ser assumidos para garantir que aspectos
importantes da metodologia estejam presentes. São eles o coach, o tracker e o cliente.
O coach age como a “consciência” do time em relação ao uso da metodologia. Ele
conhece bem as práticas e os valores e sinaliza para a equipe quando algo não estiver de
acordo. Geralmente o papel de coach é desempenhado por um dos programadores com
experiência em XP, podendo inclusive haver um revezamento.
O papel do tracker é coletar e divulgar informações sobre o progresso do projeto
para que a equipe possa identificar problemas ou oportunidades de melhoria. Assume o
papel de tracker um dos desenvolvedores ao longo do projeto. O tracker coleta
informações (métricas) no código, ou com os membros da equipe, e as exibe no ambiente
de desenvolvimento no formato de gráficos ou pôsteres espalhados pelas paredes. Alguns
exemplos de métricas relevantes são: total de histórias entregues, número de commits
diários, total de builds, total de builds quebrados, número de testes, porcentagem de
cobertura do código, número de pontos restantes na iteração (Gráfico Burn-Down), total
de horas pareadas, etc.
O tracker pode propor outras métricas. O importante é que elas sejam relevantes
para a equipe e ajudem a evidenciar o andamento do trabalho.
O papel de cliente é assumido por aqueles que possuem conhecimento das regras
de negócio e que têm condições de definir as prioridades sobre as funcionalidades do
software. Apesar de não participar da codificação, o cliente é um membro da equipe e
deve estar disposto a colaborar para a construção do software.
1.2.4 Documentação
A documentação enxuta prevista em XP é um tema polêmico na indústria de
software. No cenário ideal, a documentação em um projeto que usa XP é o próprio código
acompanhado por seus testes automatizados. Código simples, claro, bem estruturado e
com comentários relevantes poderá ser facilmente compreendido por outros
programadores, enquanto os testes registram os requisitos a que o software deve atender.
Entretanto, em alguns casos, documentos intermediários são necessários para atender a
necessidades legislativas difíceis de serem adaptadas. Gráficos e diagramas podem ser
utilizados, mas o ideal é que, após o entendimento alcançado, estes sejam convertidos
em casos de teste e comentários no código.
DUARTE, Luiz. Scrum e Métodos Ágeis: Um Guia Prático. Editora LuizTools. Edição do
Kindle. 2016.