Академический Документы
Профессиональный Документы
Культура Документы
de Meneses
Contedo Programtico
Engenharia de Software
Unidade IV Desenvolvimento gil
Introduo O que agilidade? O que um processo gil
A poltica de desenvolvimento gil Fatores humanos
Prof. Francisco Gerson A. de Meneses
franciscogerson10@gmail.com
Introduo
Em 2001, Kent Beck e 16 outros notveis desenvolvedores, produtores e consultores de software (conhecidos como Aliana gil) assinaram o Manifesto para o Desenvolvimento gil de Softwares Eles declararam: Estamos descobrindo melhores modos de desenvolvimento de software, fazendo-o e ajudando outros a faz-lo. Por meio desse trabalho passamos a valorizar:
Introduo
Indivduos e interaes em vez de processos e ferramentas; Software funcionando em vez de documentao abrangente; Colaborao do cliente em vez de negociao de contratos; Respostas a modificaes em vez de seguir um plano.
Introduo
Embora as idias subjacentes que guiam o desenvolvimento gil tenham estado conosco h muitos anos, somente durante a dcada de 1990 que foram cristalizados em um movimento. Em essncia os mtodos geis foram desenvolvidos em um esforo para vencer as fraquezas percebidas e reais da engenharia de software convencional. O desenvolvimento gil pode fornecer importantes benefcios, mas ele no aplicvel a todos os projetos, produtos, pessoas e situaes. Ele tambm no o contrrio slida prtica de engenharia de software e pode ser aplicado como uma filosofia prevalecente a todo trabalho do software.
Introduo
Na economia moderna frequentemente difcil ou impossvel prever como um sistema baseado em computador evoluir com o passar do tempo. Condies de mercado mudam rapidamente, necessidades dos usurios finais evoluem e novas ameaas de competio emergem sem alerta. Em muitas situaes, no podemos mais definir completamente os requisitos antes do incio do projeto. Os engenheiros de software devem ser geis o suficiente para responder a um ambiente de negcio mutante.
Introduo
Isso significa que o reconhecimento dessas causas realsticas modernas nos obrigam a descartar princpios, conceitos, mtodos e ferramentas, todos importantes na engenharia de software? Certamente que no, como todas as disciplinas da engenharia, a engenharia de software continua a evoluir. Ela pode ser adequada facilmente para encarar os desafios colocados pela demanda por agilidade.
O que agilidade?
O que agilidade no contexto da engenharia de software? Ivan Jacobson fornece uma discusso til: Agilidade tornou-se atualmente uma palavra mgica quando se descreve um processo moderno de software. Tudo gil. Uma equipe gil uma equipe esperta, capaz de responder adequadamente a modificaes. Modificaes (software, membros da equipe, tecnologias, etc) o foco principal do projeto e tem impacto no produto final. O apoio para modificaes deveria ser incorporado em tudo que fazemos em software, algo que se adota porque est no corao e na alma do software. Uma equipe gil reconhece que o software desenvolvido por indivduos trabalhando em equipes e que as especialidades dessas pessoas e sua capacidade de colaborar esto no mago do sucesso do projeto.
O que agilidade?
Na viso de Jacobson, o acolhimento de modificaes o principal guia para a agilidade. Os engenheiros de software devem reagir rapidamente se tiverem de acomodar as rpidas modificaes citadas.
O que agilidade?
Mas a agilidade mais do que uma resposta efetiva modificao. Ela encoraja estruturas e atitudes de equipe que tornam a comunicao mais fcil, entre todos os envolvidos no processo. Enfatiza a rpida entrega do software e d menos importncia para produtos intermedirios (nem sempre uma boa coisa).
Agilidade dinmica, especfica em contedo, agressiva no acolhimento de modificaes e orientada a crescimento. Steven Goldman No devemos cometer o erro de considerar que a agilidade nos d licena de improvisar solues. Um processo necessrio e disciplina essencial
Adota os clientes como parte da equipe de desenvolvimento. Admite que o planejamento em um mundo incerto tem seus limites e que um plano de projeto deve ser flexvel.
O que agilidade?
A Aliana gil define 12 princpios para aqueles que querem alcanar agilidade: 1- Nossa maior prioridade satisfazer o cliente desde o incio por meio de entrega contnua de software valioso. 2 - Modificaes de requisitos so bem vindas, mesmo que tardias no desenvolvimento. Os processos geis aproveitam as modificaes como vantagens para a competitividade do cliente. 3 - Entrega de softwares funcionando frequentemente, a cada duas semanas at dois meses, de preferncia no menos espao de tempo. 4 - O pessoal do negcio e os desenvolvedores devem trabalhar juntos diariamente durante todo o projeto.
O que agilidade?
Cont.: 5 Construo de projetos em torno de indivduos motivados. Fornea-lhes o ambiente e apoio que precisam e confie que eles faro o trabalho. 6 O mtodo mais eficiente e efetivo de levar informaes para dentro da equipe de desenvolvimento a conversa face a face. 7 Softwares funcionando a principal medida de progresso. 8 Processos geis promovem desenvolvimento sustentvel. Os patrocinadores, desenvolvedores e usurios, devem ser capazes de manter um ritmo constante, indefinidamente.
O que agilidade?
Cont.: 9 Ateno contnua excelncia tcnica e ao bom projeto facilitam a agilidade. 10 Simplicidade a arte de maximizar a quantidade de trabalho no efetuado essencial. 11 As melhores arquiteturas, requisitos e projetos surgem de equipes auto organizadas. 12 Em intervalos regulares, a equipe reflete sobre como se tornar mais efetiva, ento sintoniza e ajusta adequadamente seu comportamento.
O que agilidade?
A agilidade pode ser aplicada a qualquer processo de software. Entretanto para conseguir isso essencial que o processo seja de modo que permita equipe de projeto adaptar tarefas e aperfeio-las. Conduzir o planejamento para que se entenda a fluidez de uma abordagem de desenvolvimento gil, eliminar tudo, menos os produtos de trabalho mais essenciais e mant-los simples. Enfatizar uma estratgia de entrega incremental que fornea o software funcionando ao cliente o mais rpido possvel .
Dadas essas trs suposies surge uma questo importante, como criar um processo que possa gerenciar a imprevisibilidade? A resposta est na adaptabilidade do processo (as modificaes rpidas do projeto e das condies tcnicas). Um processo gil, portanto, deve ser adaptvel incrementalmente.
Fatores Humanos
Os proponentes do desenvolvimento gil de software sofrem muito para enfatizar a importncia dos fatores pessoais no desenvolvimento gil bem sucedido. O desenvolvimento gil enfoca os talentos e habilidades dos indivduos moldando o processo a pessoas e equipes especficas. O ponto chave dessa declarao que o processo se molda s necessidades das pessoas e da equipe, e no o contrrio. O que considerado meramente suficiente por uma equipe ou suficiente ou insuficiente para outra.
Fatores Humanos
Se os membros de uma equipe de software tiverem de estabelecer as caractersticas do processo que aplicado para construir software, uma certa quantidade de caractersticas chave deve existir entre as pessoas de uma equipe gil e na equipe em si. So elas:
Competncia Foco comum Colaborao Capacidade de tomada de deciso Habilidade de resolver problemas vagos (ambigidades) Respeito e confiana mtua Auto organizao
Fatores Humanos
No contexto de desenvolvimento gil, a auto organizao implica trs coisas: 1 a equipe gil organiza-se para o trabalho a ser feito. 2 a equipe organiza o processo para melhor acomodar seu ambiente local. 3 a equipe organiza o cronograma de trabalho para conseguir melhor entrega do incremento do software.
Fatores Humanos
A auto organizao tem um certo nmero de benefcios tcnicos, porm, mas importante que isso, ela serve para aperfeioar a colaborao e aumentar a moral da equipe. Em essncia, a equipe serve como sua prpria gerncia. A equipe seleciona quanto trabalho acredita que pode realizar dentro da iterao e a equipe se compromete com o trabalho. Nada desmotiva tanto uma equipe quanto algum de fora assumir compromissos por ela. Nada motiva tanto uma equipe quanto a aceitao da responsabilidade de cumprir os compromissos que ela prpria estabeleceu.
Fatores Humanos
Uma equipe auto organizada est no controle de trabalho que realiza. A equipe estabelece os seus prprios compromissos e define os planos para cumpri-los.
Histrias
Arquitetura XP
Scrum
um modo gil de processo que foi desenvolvido por Jeff Sutherland e por sua equipe no incio da dcada de 1990. Nos ltimos anos foi realizado desenvolvimento adicional de mtodos Scrum por Sewaber e Beedle.
Scrum
Os princpios Scrum so consistentes com o manifesto gil:
Pequenas equipes de trabalho so organizadas de modo a maximizar a comunicao, minimizar a superviso e maximizar o compartilhamento de conhecimento tcito informal. O processo precisa ser adaptvel tanto a modificaes tcnicas quanto de negcios para garantir que o melhor produto possvel seja produzido. O processo produz frequentes incrementos do software que podem ser inspecionados, ajustados, testados, documentados e expandidos.
Scrum
O trabalho de desenvolvimento e o pessoal que o realiza dividido em parties claras de baixo acoplamento, ou em pacotes. Testes e documentao constantes so realizados medida que o produto construdo. O processo Scrum fornece a habilidade de declarar o produto pronto sempre que necessrio (porque a concorrncia acabou de entregar, porque a empresa precisa de dinheiro, porque o usurio/cliente precisa das funes, porque foi para essa data que foi prometido.)
Scrum
Os princpios Scrum so usados para guiar as atividades de desenvolvimento dentro de um processo que incorpora as seguintes atividades genricas:
Requisitos, Anlise, Projeto, Evoluo, Entrega.
Em cada atividade, as tarefas de trabalho ocorrem dentro de um padro de processo chamado de sprint.
Scrum
Sprint: consiste de unidades de trabalho que so necessrias para satisfazer a um requisito definido na pendncia que precisa ser cumprido em um intervalo de tempo predefinido. Pendncia: uma lista priorizada de requisitos ou caractersticas de projeto que fornecem valor de negcio para o cliente. Itens podem ser adicionados pendncia a qualquer momento ( assim que as modificaes so introduzidas). O gerente de produto avalia a pendncia e atualiza as prioridades quando necessrio.
Scrum
O Scrum incorporou um conjunto de padres de processo que enfatiza prioridade de projeto, unidades de trabalho compartimentalizadas, comunicao e feedback frequente do cliente.
Scrum
O trabalho conduzido dentro de um sprint adaptado ao problema em mos e definido, e frequentemente, modificado em tempo real pela equipe Scrum. A quantidade de sprints necessria para cada atividade varia dependendo da complexidade e do tamanho do produto.
Scrum
Reunies Scrum so curtas (normalmente 15 minutos) feitas diariamente pela equipe. Trs questes-chave so formuladas e respondidas por todos os membros da equipe.
O que voc fez desde a ltima reunio de equipe? Que obstculos voc est encontrando? O que voc planeja realizar at a prxima reunio de equipe?
Scrum
Um lder da equipe, chamado de Scrum Master, lidera a reunio e avalia as respostas de cada pessoa. Essas reunies dirias ajudam a equipe a descobrir problemas potenciais to cedo quanto possvel. Elas levam tambm socializao do conhecimento e promovem, assim, uma estrutura de equipe auto-organizada.
Scrum
Demos entrega do incremento de software ao cliente de modo que a funcionalidade implementada possa ser demonstrada e avaliada pelo cliente. importante observar que a demo talvez no contenha toda a funcionalidade planejada, mas, em vez disso, as funes que podem ser entregues dentro do intervalo de tempo estabelecido.
Scrum
Beedle e seus colegas apresentam uma discusso abrangente desses padres na qual eles declaram: O Scrum considera antecipadamente a existncia do caos.... Os padres de processo Scrum permitem equipe de desenvolvimento de software trabalhar de modo bem sucedido em um mundo em que se busca a eliminao da incerteza.
Exerccio
1 - Quais pontos principais o "Manifesto para o Desenvolvimento gil de Softwares" valoriza? 2 - Qual o seu entendimento a partir da afirmao: "O Desenvolvimento gil no o contrrio slida prtica de engenharia de software e pode ser aplicado como uma filosofia prevalecente a todo trabalho do software"? 3 - Quais princpios definidos pela Aliana gil chamam mais a sua ateno? 4 - Qual o seu conceito para Agilidade, no cenrio da Engenharia de Software? 5 - Um processo gil de software caracterizado de modo que atenda a trs suposies chave, quais so elas? 6 - "H um considervel debate sobre os benefcios e a aplicabilidade do desenvolvimento gil de software em contraposio aos processos mais convencionais de engenharia de software." Qual a sua opinio sobre isso? 7 - Que caractersticas principais uma equipe gil deve ter? 8 - Qual o produto de trabalho realmente importante no desenvolvimento gil? 9 - Que pontos importantes voc destacaria no Modelo gil XP? 10 - Que pontos importantes voc destacaria no Modelo gil Scrum? 11 - O que refabricao? 12 - Que outros modelos geis de processo voc destacaria?
Bibliografia
PRESSMAN, Roger S. Engenharia de Software. Rio de Janeiro: McGraw-Hill, 2007. Palestra Vinicius Teles. Notas de aula