Buscar

aula05

Prévia do material em texto

Met. para de Desenvolvimento de Software
5º Aula
Métodos Ágeis e Manifesto Ágil
Objetivos de aprendizagem
Ao término desta aula, vocês serão capazes de: 
Olá, pessoal, 
Como vão indo seus estudos? Esperamos que vocês estejam 
gostando da nossa matéria. Nas próximas aulas, vocês entrarão em 
um tópico bastante atual da Engenharia de Sofware: Os Métodos 
Ágeis. Para começar, vamos abordar como surgiram esses métodos 
e o documento que define suas bases: O Manifesto Ágil.
Se tiverem qualquer dúvida, entrem em contato via quadro de 
avisos, certo? A sua participação é muito importante para nós.
Bons estudos!
180
37
Seções de estudo
1 - Introdução e Antecedentes
1 – Introdução e Antecedentes
2 – Os Valores do Manifesto Ágil
3 – Princípios do Manifesto Ágil
Bernardo (2015) define os métodos ágeis como: “[...] um 
conjunto de práticas eficazes que se destinam a permitir a entrega 
rápida e de alta qualidade do produto, tendo uma abordagem 
de negócios que alinha o desenvolvimento do projeto com as 
necessidades do cliente e os objetivos da empresa”. Para que 
os métodos ágeis existissem, várias descobertas foram feitas no 
ramo de Engenharia de Software, que vieram anteriormente. 
Essas descobertas abordaremos a partir de agora.
Nos primórdios do desenvolvimento de software, não 
eram usadas metodologias que definiam quais etapas seriam 
feitas para o desenvolvimento de programas. Isso começou a 
mudar no início da década de 1970, com o desenvolvimento 
do modelo em cascata. Nesse processo, a fase seguinte é 
executada somente quando as etapas anteriores são concluídas.
Apesar desse modelo ter sido amplamente usado por anos, 
ele sofreu imensas críticas. Um dos problemas era que se erros 
fossem detectados entre as fases, poderiam ser necessário um 
retrabalho, tornando o processo oneroso. Carolyn Wong (citado 
de software é um processo “complexo, contínuo, iterativo e 
repetitivo”.
Com os problemas detectados no método em cascata, 
surgiu a abordagem incremental, onde o cliente define os 
requisitos (serviços) gerais do sistema, detectando os requisitos 
mais importantes e menos importantes do sistema. De posse 
com os requisitos, é definido um número de incremento, 
onde em cada incremento é desenvolvido um subconjunto de 
funcionalidades do sistema. A ordem de desenvolvimento das 
funcionalidades dependerá da sua prioridade.
Essa abordagem serviu de base para várias metodologias 
que surgiram na década de 1990, como:
Estas metodologias passaram a compartilhar 
princípios comuns, como a necessidade de iteração entre 
desenvolvedores e clientes, suporte a um feedback imediato, 
time auto-organizáveis e outros.
Em Fevereiro de 2001, criadores de diversas metodologias 
e especialistas de desenvolvimento de software reunidos 
em um resort de ski no Utah (estado-membro dos Estados 
Unidos) discutiram maneiras de desenvolver software de uma 
forma mais leve, rápida e centrada em pessoa. 
No fim, os dezessete membros criaram a Aliança 
Ágil - organização sem fins lucrativos que promove o 
desenvolvimento ágil - e o Manifesto Ágil. Esse manifesto 
é composto por quatro valores e doze princípios, cujas 
metodologias signatárias - que a partir desse ponto passaram a 
ser chamados de Métodos Ágeis - compartilham.
A partir da criação do Manifesto Ágil, as metodologias 
ágeis passaram a ser cada vez mais debatidos e usadas na 
Engenharia de Software. Na próxima seção, você vai ver o 
que são os valores do Manifesto Ágil.
2 - Os Valores do Manifesto Ágil
Como você viu na seção anterior, o Manifesto Ágil possui 
quatro valores cujos signatários compartilham. O Manifesto Ágil 
os descreve da seguinte forma:
Estamos descobrindo maneiras melhores de 
desenvolver software, fazendo-o nós mesmos 
e ajudando outros a fazerem o mesmo. 
Através desse trabalho, passamos a valorizar: 
Indivíduos e interação mais que processos e 
ferramentas
Software funcionando mais do que 
documentação abrangente
Colaboração com o cliente mais que 
negociação de contratos
Responder a mudanças mais que seguir um 
plano
Ou seja, mesmo havendo valor nos itens à 
direita, valorizamos mais os itens à esquerda 
(MANIFESTO, 2001).
Antes de analisarmos os valores, vamos verificar a primeira 
linha. Ao dizer que “estamos descobrindo maneiras melhores de 
desenvolver software”, o manifesto afirma que a Engenharia de 
Software ainda está em evolução e o manifesto não se propõe a 
ser uma solução definitiva para atingir o êxito e a satisfação nos 
projetos.
Outra coisa que devemos notar é a linha, “ou seja, mesmo 
havendo valor nos itens à direita, valorizamos mais os itens à 
esquerda”. Com isso, o manifesto afirma que os itens que não são 
priorizados (processos, ferramentas, documentação abrangente 
etc) não devem deixar de ser usados, nem condenados. Eles 
181
38Met. para de Desenvolvimento de Software
devem ser usados, mas na medida certa. 
Agora analisaremos o que diz cada valor do Manifesto Ágil:
Indivíduos e interação mais que processos e 
ferramentas: Este valor pede para que seja valorizado o lado 
humano. Se você refletir, o desenvolvimento de software é um 
trabalho em equipe, e para que o êxito seja alcançado, a equipe 
deve ser bem organizada e saber se comunicar, para que saibam 
resolver questões, como por exemplo, para discutir como será 
implementado um módulo do sistema. Em uma conversa 
presencial, todos podem participar e colaborar para chegar a 
um fator comum. Ferramentas e processos são importantes e 
devem ser usados - pois sem eles o desenvolvimento fica mais 
difícil, mas a comunicação pessoal deve ser prioridade em um 
projeto de software.
Software funcionando mais do que documentação 
abrangente: Nos primórdios da Engenharia de Software, 
os projetos não eram documentados. Com isso, as empresas 
ficavam reféns de seus programadores, pois a perda de um deles 
poderia causar um prejuízo incalculável. Para resolver isso, a 
documentação passou a ser massivamente empregada, porém, 
muitos projetos tiveram documentações enormes, porém, ou 
grande parte da documentação era desperdiçada, seja por erros 
ou porque não atendia os clientes ou por causa do fato que a 
documentação requer um tempo alto. Esse valor não condena 
a documentação, mas pede para que a documentação seja mais 
seletiva, refletindo quais documentos serão úteis para nosso 
projeto e o que será um mero desperdício de tempo. 
Colaboração com o cliente mais que negociação de 
contratos: O processo de desenvolvimento de software envolve 
duas partes. O cliente e a equipe que irá desenvolver o programa. 
O manifesto prega que a relação cliente-desenvolvedores tem 
que ser próxima e contínua - para que o software seja validado e 
revisado continuamente, ao invés de uma relação excessivamente 
formal, burocrática e distante.
Responder a mudanças mais que seguir um plano: 
Como você viu vários pesquisadores perceberam que o 
processo de desenvolvimento de software é incremental e é um 
aprendizado para os dois lados envolvidos. Assim, mudanças são 
inevitáveis para que o programa atenda e agrade o cliente de fato. 
Assim ao invés de seguirmos um cronograma fixo, acreditando 
que todo o processo será seguido, devemos replanejar a todo o 
momento, para adaptarmos às mudanças que virão.
Perceba que cada valor se relaciona com os demais do 
manifesto, mostrando que esses valores são indissociáveis. Por 
exemplo, o valor que se refere ao cliente colaborar se relaciona 
com responder a mudanças, pois propicia um feedback rápido. 
Também se relaciona com o valor que prioriza a comunicação 
humana, por que o cliente vai interagir com os desenvolvedores, 
privilegiando esse valor.
Além dos quatro valores, o Manifesto Ágil define doze 
princípios. Na próxima seção você estudará sobre eles.
3 - Princípios do Manifesto Ágil
O Dicionário Michaelis On-line define princípio como 
“Em uma área de conhecimento, conjunto de proposições 
fundamentais e diretivas que servem de base e das quais todo 
desenvolvimento posterior deve ser subordinado”.O Manifesto Ágil, além de definir quatro valores, define 
doze princípios que complementam esses valores. Assim 
como os quatro valores, cada princípio se complementa 
com os demais, mostrando que esses princípios são pilares 
indissociáveis, apesar de várias equipes que se dizem ágeis se 
esqueçam de um ou mais desses princípios.
A seguir, vamos apresentar esses princípios e explicar o 
que cada um deles significa.
Princípio 1: Nossa maior prioridade é satisfazer ao 
cliente com entregas contínua e adiantada de software 
com valor agregado.
Esse primeiro princípio resgata o principal objetivo de um 
projeto de software: Satisfazer os desejos do cliente de forma 
rápida com a entrega de um software que ajude o cliente a 
gerar valor. Durante muito tempo, várias pessoas envolvidas 
em projetos de software priorizaram mais a documentação e 
o uso de técnicas e ferramentas mais atuais em detrimento das 
necessidades do cliente. 
Princípio 2: Mudanças nos requisitos são bem-
vindas, mesmo tardiamente no desenvolvimento. Os 
processos ágeis tiram vantagem das mudanças, visando 
a vantagem competitiva do cliente.
Esse princípio indica oposição a uma das principais 
características do desenvolvimento de software tradicional: o 
engessamento das mudanças, através de uma coleta profunda 
dos requisitos, processos burocráticos para solicitação de 
mudança de requisitos, assinatura de compromissos de longo 
prazo durante o desenvolvimento etc. Essa característica existe, 
pois quanto mais tarde ocorrerem as mudanças, mais alto será 
o custo de manutenção.
Os signatários do Manifesto Ágil perceberam que as 
mudanças podem ser bem-vindas, pois um processo de 
desenvolvimento de software é imprevisível. Para isso, as 
metodologias signatárias desse manifesto oferecem técnicas 
e ferramentas para propiciar isso. Um desses exemplos que 
se encaixam nessa situação é o desenvolvimento de software 
em ciclos rápidos, para que o cliente e os desenvolvedores 
possam evoluir o produto à medida que melhor entender suas 
necessidades.
Princípio 3: Entregar frequentemente software 
funcionando, de poucas semanas a poucos meses, com 
preferência à menor escala de tempo.
Como nós falamos, as metodologias signatárias do 
Manifesto Ágil têm como prática comum a entrega contínua 
de software em um intervalo relativamente curto de tempo. 
Além de essa prática proporcionar feedbacks rápidos, dando 
ao cliente a chance de mudar os requisitos de uma forma mais 
rápida, evitando que os custos de manutenção aumentem 
consideravelmente, a equipe passa a ter consciência de sua 
velocidade, passando a prever o quanto pode desenvolver em 
cada ciclo. É exatamente isso que esse princípio afirma. 
devem trabalhar diariamente em conjunto por todo o 
projeto.
Em desenvolvimento tradicional de software, clientes e 
desenvolvedores raramente se comunicam. Segundo GOMES, 
WILLI e REHEM (2014, p. 9): “clientes ‘tradicionais’ gostariam 
de participar de poucas reuniões, falar sobre o que eles querem 
em seu sistema e aparecer um tempo depois para ver se o que 
182
39
pediram foi apresentado a contento”.
Mas, mesmo que os requisitos sejam extensamente 
detalhados, as necessidades podem mudar, pois por diversos 
concorrência - a realidade onde o software estará pode mudar, 
pois, como discutimos aqui, um processo de desenvolvimento 
de software é imprevisível.
Assim, uma das formas que os agilistas encontraram 
para combater isso foi a colaboração do cliente de uma forma 
contínua, com a equipe de desenvolvimento de uma forma 
contínua e prioritariamente trabalhando juntos em um mesmo 
ambiente, para proporcionar um ciclo contínuo de apresentação, 
discussão e feedback, que é vital para o sucesso do projeto. 
Os teóricos Gomes, Willi e Rehem (2014) recomendam que se 
você não consegue que os clientes fiquem no mesmo ambiente 
da equipe, procure estratégias para maximizar o contato. 
Princípio 5: Construa projetos em torno de indivíduos 
motivados. Dê a eles o ambiente e o suporte necessários e 
confie neles para realizar o trabalho.
Esse princípio reforça que o produto é construído 
por pessoas, não em torno dos melhores ferramentas e 
processos. Na maioria dos Métodos Ágeis, as equipes são auto- 
organizadas, em um ambiente onde a comunicação é direta e 
constante e o comprometimento é de todas as pessoas. Essas 
metodologias apresentam práticas e ambientes adequados para 
propiciar essa situação.
Princípio 6: O método mais eficiente e eficaz de 
transmitir informação para a equipe e entre a equipe de 
desenvolvimento é a conversa frente a frente.
O sexto princípio afirma que a melhor forma de 
comunicação entre os envolvidos é a conversa presencial. Isso 
se deve ao fato de que a conversa presencial é direta, síncrona e 
enriquecida pela entonação da voz, olhar e linguagem corporal, 
além da possibilidade de esclarecer suas intenções e discutir suas 
ideias, elementos que não existem ou são difíceis de colocar em 
uma conversa escrita, representada pelo e-mail, chat etc.
Assim, deve-se sempre usar a conversa presencial como 
forma principal de comunicação entre os envolvidos. Se não 
for possível uma conversa presencial, deve-se fazer o melhor 
uso possível da tecnologia disponível para se aproximar a 
comunicação face a face. 
Princípio 7: Software funcional é a medida primária 
de progresso.
Esse princípio reforça o segundo valor do Manifesto Ágil, 
e vai contra a outra prática do desenvolvimento de sistemas 
tradicionais, que preza excessivamente o desenvolvimento 
de protótipos e requisitos. Mas o que importa em um 
desenvolvimento de software é o desenvolvimento do próprio 
software, que de fato gera valor ao cliente. 
Assim, o Manifesto Ágil prega claramente que para saber 
se progredimos em um desenvolvimento de software, devemos 
medir o quanto de software foi desenvolvido e não quanta 
documentação foi gerada. Documentações são importantes e 
úteis, mas não devem ser mais priorizadas do que um software.
Princípio 8: Os processos ágeis promovem 
desenvolvimento sustentável. Os patrocinadores, 
desenvolvedores e usuários devem ser capazes de manter 
um ritmo constante sempre.
Como herança da indústria manufatureira, acreditou-
se por muito tempo que a produtividade de uma equipe de 
desenvolvimento era medida por linhas de código, ou seja, 
acreditava-se que quando um desenvolvedor programava por 
mais tempo, maior seria sua produtividade. Isso acarretava 
em horas extras, trabalho em fins de semana e a pressão 
em concluir a tarefa no prazo determinado, aumentando a 
insatisfação dos envolvidos e a queda na produtividade e na 
qualidade do software desenvolvido.
Assim, mudou-se o paradigma sobre o que é desenvolver 
software, passando de uma tarefa mecânica e repetitiva 
para uma tarefa de criatividade, que é a transformação de 
ideias em código. Através desse princípio, o Manifesto Ágil 
acredita que o desenvolvimento de software é uma tarefa 
que envolve criatividade, e por isso, deve-se promover um 
desenvolvimento sustentável, através da manutenção de 
ambientes que proporcionem essa situação. Mas vale lembrar 
que desenvolvimento sustentável não significa falta de 
comprometimento.
Princípio 9: Contínua atenção à excelência técnica e 
bom design aumenta a agilidade.
Para mantermos um desenvolvimento sustentável, 
priorizando entregas contínuas e possibilitando recepção às 
mudanças e com documentação mínima, o Manifesto Ágil 
prega um programa bem-feito e de qualidade, junto com um 
projeto também bem-feito e de qualidade para que reduza a 
necessidade de manutenções no código. Isso é o oposto da 
crença do projeto tradicional em que a qualidade deve ser 
sacrificada em nome da velocidade de desenvolvimento.
Os padrões de projeto, padrões de codificação e 
o desenvolvimento dirigido a testes (TDD) são muito 
empregados em equipes ágeis para cumprir esse nono 
princípio.
Princípio 10: Simplicidade - a arte de maximizar a 
quantidade de trabalho não realizado - é essencial.
Em projetos tradicionaisde software, há vários excessos 
que poderiam ter sido evitados. Por exemplo, requisitos que 
apontam funcionalidades desnecessárias, artefatos que não 
terão mais utilidade após o seu desenvolvimento e soluções 
desnecessariamente complexas. O Manifesto Ágil prega que 
deve ser feito somente o necessário para ajudar a agregar valor 
efetivo ao cliente, evitando situações que citamos aqui. Com 
o time desenvolvendo somente o necessário, a complexidade 
do projeto cai, a manutenção fica mais fácil e o time terá mais 
tempo para aprimorar o software, que por consequência, 
aumentará a qualidade do sistema.
Princípio 11: As melhores arquiteturas, requisitos e 
design emergem de times auto-organizáveis.
Para compreender esse princípio, devemos entender o 
sentido da palavra “emergem”. Gomes, Willi e Rehem trazem 
a definição do Dicionário online de Português (2014) sobre o 
princípio da emergência, afirmando que é o “o processo de 
formação de sistemas dinâmicos complexos a partir de regras 
simples.” Um time auto-organizado, como diz o seu nome, 
tem toda autonomia para se organizar como bem-entender 
183
40Met. para de Desenvolvimento de Software
diante de uma situação, criando um ambiente de sinergia e 
autonomia, melhorando o projeto.
Assim, esse princípio corrobora para a prática de 
equipes auto-organizáveis, as quais decidem a melhor forma 
de executar o trabalho acertado, sendo responsáveis pelo 
trabalho e gerando um produto melhor. Outro benefício dessa 
situação é que em caso de mudanças de percurso no projeto, 
o que poderia ser um terror em projetos tradicionais, a equipe 
pode se reorganizar para se adaptar a essa nova situação.
Princípio 12: Em intervalos regulares, o time reflete 
sobre como se tornar mais eficaz e então refina e ajusta 
seu comportamento de acordo.
Esse último princípio é um dos mais cruciais do Manifesto 
Ágil, segundo o qual, para que a equipe desenvolva o sistema 
cada vez mais de forma sustentável, com qualidade e gerando 
valor aos envolvidos, ela deve inspecionar suas formas de 
trabalho, identificando o que está bom no processo, a fim de 
potencializá-lo, e o que não funcionou, melhorar ou descartar, 
se necessário. 
Normalmente, esse processo de aprendizado e 
aprimoramento acontece com mais frequência nas primeiras 
iterações do projeto, aprimorando a cada nova iteração, 
chegando à convergência do ritmo.
Com isso, finalizamos o nosso estudo sobre o Manifesto 
Ágil, que descreve as práticas das Metodologias Ágeis. Nas 
próximas aulas, você aprenderá sobre as metodologias RUP, 
XP e Scrum. Ao estudar essas metodologias, você verá que 
tais valores e princípios são aplicados constantemente por 
essas metodologias.
Retomando a aula
Encerramos a nossa aula introdutória aos Métodos 
1. Introdução e Antecedentes
Os Métodos Ágeis são metodologias que priorizam o 
cliente, evitam desperdícios e têm como foco entregas rápidas 
de softwares que geram valor real aos clientes. A maioria dessas 
metodologias teve como base a metodologia incremental e 
usou diversas boas práticas da engenharia de software. Têm 
como documento que norteia seus princípios o Manifesto Ágil.
2. Os Valores do Manifesto Ágil
O Manifesto Ágil tem quatro valores, que declaram suas 
prioridades, que são: Indivíduos e interação mais que processos e 
ferramentas, software funcionando mais do que documentação 
abrangente, colaboração com o cliente mais que negociação de 
contratos e responder a mudanças mais que seguir um plano.
3. Princípios do Manifesto Ágil
O Manifesto Ágil prega doze princípios, que são 
complementares aos quatro valores. Cada princípio especifica 
uma afirmação sobre uma prática que é adotada nos Métodos 
Ágeis.
SOMMERVILLE, Ian. Engenharia de software. 9. ed. São 
Paulo: Pearson Addison Wesley, 2014.
PRESSMAN, Roger S. Engenharia de software: uma 
(Ed.).Métodos Ágeis para Desenvolvimento de Software. Porto 
Alegre: Bookman, 2014. p. 3–15. Cap. 1
MEDEIROS, Higor. Modelos de Processos Ágeis: 
Conceitos e Princípios. [S.l.]: DevMedia, s.d. Disponível em: 
<http://www.devmedia.com.br/modelos-de-processos-
ageis-conceitos-e-principios/30059>.
MANIFESTO para Desenvolvimento Ágil de Software. 
2001. Disponível em: <http://agilemanifesto.org/iso/ptbr/
manifesto.html>. Acesso em: 05 out. 2017.
KNOWLEDGE21. Os Princípios Ágeis. [S.l.]: 
Knowledge21, s.d. Disponível em: <http://www.
knowledge21.com.br/sobreagilidade/agilidade/os-
principios-ageis/>.
RUGGIERI, Ruggero. Compreendendo os príncipios do 
Manifesto Ágil. [S.l.]: TIEspecialistas, 2014. Disponível em: 
<www.tiespecialistas.com.br/2014/08/compreendendo-os-
principios-manifesto-agil/>. Acesso em 23 set. 2017
MICHAELIS. Princípio | Michaelis On-
line. Disponível em: <http://michaelis.uol.com.
br/moderno-portugues/busca/portugues-brasileiro/
PR%C3%8DNCIPIO/>. Acesso em: 04 out. 2017.
BERNARDO, Kleber. O que são métodos ágeis?. [S.l.] 
Cultura Ágil, 2015. Disponível em: <https://www.
culturaagil.com.br/o-que-sao-metodos-ageis/>. Acesso em: 
04 out. 2017.
FRANZINI. Fernando. Infobase | Aplicações, Infraestrutura 
e Digital | As melhores arquiteturas, requisitos e designs emergem 
de equipes auto-organizáveis. [S.l.:] Infobase, [s.d.]. 
Disponível em: <http://infobase.com.br/as-melhores-
arquiteturas-requisitos-designs-emergem-de-equipes-auto-
organizaveis/>. Acesso em: 04 out. 2017.
Vale a pena
Vale a pena ler
Vale a pena acessar
Minhas anotações
184

Continue navegando