Baixe o app para aproveitar ainda mais
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
Compartilhar