63
Desenvolvimento Ágil de Desenvolvimento Ágil de Software Engenharia de Software 2

Desenvolvimento Agil

Embed Size (px)

DESCRIPTION

Engenharia de Software usando Técnicas de Desenvolvimento Agil

Citation preview

  • Desenvolvimento gil de Desenvolvimento gil de Software

    Engenharia de Software 2

  • Introduo

    Software :

    -tornou-se tecnologia indispensvel para empresas, universidades e para a cincia em geral.

    - manipula o produto mais importante da era atual a informao.

    - as empresas de software possuem grande influncia - as empresas de software possuem grande influncia no cenrio mundial.

    - presente na medicina, nas telecomunicaes, na rea militar, na industrial, no entretenimento, nas atividades do dia-a-dia.

    - Necessidade do mercado em aumento de produtividade e diminuio de custos.

  • Introduo

    Software :

    - Solues: projeto, implementao, tecnologias, padres, frameworks.

    - Exemplos de categorias de Software: (cf. Pressman)

    a) Aplicao;

    b) Cientfico;b) Cientfico;

    c) Web;

    d) Embutido;

    e) Linhas de Produto;

    f) Inteligncia Artificial;

    g) Computao Ubqua;

  • Introduo

    O processo do desenvolvimento de Software:

    - Conjunto de atividades relacionadas que levam a produo de um software. (cf. Sommerville)

    - Diferentes processos => atividades fundamentais.

    a) especificao;a) especificao;

    b) Projeto;

    c) Implementao;

    d) Validao e Verificao;

    e) Evoluo.

  • Introduo

    - No existe um processo de desenvolvimento ideal.

    -Deve-se adotar melhores prticas no desenvolvimento.

    - Utilizao de padres.

    - Utilizao de um modelo de processo.- Utilizao de um modelo de processo.

    - Exemplos:

    a) Desenvolvimento em Cascata;

    b) Desenvolvimento Incremental;

    c) Desenvolvimento Orientado a Reso;

    d) Desenvolvimento Dirigido por Modelos;

  • Introduo

    --Desenvolvimento em CascataDesenvolvimento em Cascata:

    - primeiro modelo de desenvolvimento de software;

    - Dividido em 5 estgios:

    a) Definio de Requisitos e Anlise;

    b) Projeto de Sistema;b) Projeto de Sistema;

    c) Implementao

    d) Verificao e Validao

    e) Implantao.

  • Introduo

    -Desenvolvimento em Cascata:

    Definio de Requisitos

    Anlise e Projeto de Projeto de

    Sistema e de Software

    Implementao

    Verificao&

    Validao

    Implantao

  • Introduo

    --Desenvolvimento IncrementalDesenvolvimento Incremental:

    - desenvolve-se uma aplicao inicial (prottipo);

    - anlise do usurio (cliente) desenvolvimento paralelo a validao.

    - desenvolvimento de novas verses;- desenvolvimento de novas verses;

    - documentao menor em relao ao modelo em cascata.

    - Menor custo de mudanas nos requisitos.

    - Maior agilidade na entrega.

    - Exemplo: Desenvolvimento dirigido a planos.

  • Introduo

    --Desenvolvimento IncrementalDesenvolvimento Incremental:

    - Desvantagens:

    - O processo no visvel;

    - Uma verso de documento para cada verso do sistema.sistema.

    - A estrutura do sistema degrada-se com a adio de novas funcionalidades.

    - Complexidade de gerenciamento de grandes sistemas.

  • Introduo

    -Desenvolvimento Incremental:

    Atividades Concorrentes

    EspecificaoVerso Inicial

    Desenvolvimento

    Validao

    Esboo de Descrio Verses

    Intermedirias

    Verso Final

  • Introduo

    --Desenvolvimento Orientado a Reuso(Reutilizao)Desenvolvimento Orientado a Reuso(Reutilizao):

    - O reuso acontece, na maioria das vezes, informalmente.

    - Utiliza componentes reutilizveis de software.

    - Estgios do Modelo de DOR:- Estgios do Modelo de DOR:

    a) Anlise de componentes;

    b) Modificao de requisitos;

    c) Projeto do sistema (utilizao de framework);

    d) Desenvolvimento e Integrao (dos componentes);

  • Introduo

    --Desenvolvimento Orientado a Reuso(Reutilizao)Desenvolvimento Orientado a Reuso(Reutilizao):

    Tipos de componentes utilizados:

    - Web Services;

    - Componentes J2EE ou .Net;

    - Componentes stand-alone proprietrios.- Componentes stand-alone proprietrios.

    - Plug-ins.

  • Introduo

    --Desenvolvimento Orientado a Reuso(Reutilizao):Desenvolvimento Orientado a Reuso(Reutilizao):

    Especificao de Requisitos

    Anlise de Componentes

    Alterao dos Requisitos

    Projeto de Sistema com Reutilizao

    Desenvolvimento e Integrao

    Validao do Sistema

  • Introduo

    --Processo de DesenvolvimentoProcesso de Desenvolvimento

    -Coleo de padres que definem um conjunto de atividades necessrias ao desenvolvimento de software. (Pressman)

    - Quatro atividades bsicas do processo:- Quatro atividades bsicas do processo:

    a) Especificao (requisitos)

    b) Desenvolvimento ( projeto, codificao)

    c) Verificao e Validao ( depurao, teste, mtricas, refatoramento)

    d) Evoluo (manuteno)

  • Introduo

    --Modelo de Processo de DesenvolvimentoModelo de Processo de Desenvolvimento

    -As atividades variam dependendo do modelo de processo.

    a) Especificao ou engenharia de requisitos:

    - Compreenso e definio dos servios requisitados - Compreenso e definio dos servios requisitados do sistema;

    - Erros nesta fase geram problemas no projeto e na implementao;

    - Produo dos documentos de requisitos;

    - Estudo de viabilidade, anlise dos requisitos, validao dos requisitos.

  • Introduo

    --Modelo de Processo de DesenvolvimentoModelo de Processo de Desenvolvimentob) Desenvolvimento (Projeto e Implementao)- Processo de converso das especificidades dos

    requisitos em um software.- Envolve projeto e programao.- O projeto descreve a estrutura da aplicao, os - O projeto descreve a estrutura da aplicao, os

    modelos computacionais, estruturas de dados, componentes, algoritmos, interfaces.

    - O projeto desenvolvido de forma iterativa.- Cada atividade deve gerar um produto de sada.- Diferentes mtodos de projeto para: Programao

    Estruturada, POO, POA, Eventos, Agentes, etc.

  • Introduo

    --Modelo de Processo de DesenvolvimentoModelo de Processo de Desenvolvimento

    b) Desenvolvimento (Projeto e Implementao)

    - O software interage com outros softwares, com o sistema operacional, banco de dados e middlewareformando a plataforma do software.formando a plataforma do software.

    - A anlise da plataforma do software essencial no processo de projeto.

    - Principais tipos de projeto: de arquitetura (estrutura), de componente, de interface, de banco de dados.

  • Introduo

    --Modelo de Processo de DesenvolvimentoModelo de Processo de Desenvolvimento

    b) Desenvolvimento (Projeto e Implementao)

    - Conjunto de sadas do projeto: arquitetura, especificao da base de dados, de componentes e interfaces.

    - Estas sadas podem ser representadas por diagramas (no caso de MDE) ou documentos de especificao (mtodos geis).

    - Para a programao no existe um processo geral a ser seguido(cf. Sommerville), que indique qual componente ser o primeiro a ser desenvolvido.

  • Introduo

    --Modelo de Processo de Desenvolvimento:Modelo de Processo de Desenvolvimento:

    c) Validao:

    - Tambm chamado de Verificao e Validao (V&V).

    - Verificar que o software atende aos requisitos - Verificar que o software atende aos requisitos especificados e se atende s necessidades do cliente.

    - Envolve inspees e revises em cada fase do processo de desenvolvimento.

    - Compreende a atividades de Teste de Software.

    - Testes de: desenvolvimento, sistema, aceitao.

  • Introduo

    --Modelo de Processo de Desenvolvimento:Modelo de Processo de Desenvolvimento:c) Validao:- Teste de desenvolvimento: os componentes so

    testados, de maneira independente, pelas pessoas que os desenvolveram. Os componentes podem ser funes, classes, componentes ou agrupamentos coerentes destes.coerentes destes.

    - Teste de sistema: realizado aps a integrao dos componentes, busca por erros resultantes das interaes.

    - Teste de aceitao: testado com dados reais, busca de erros na definio dos requisitos, problemas de performance.

  • Introduo

    --Modelo de Processo de Desenvolvimento:Modelo de Processo de Desenvolvimento:

    d) Evoluo:

    - Os softwares devem ser desenvolvidos de maneira flexvel.

    - Devem garantir extensibilidade, manutenibilidade.- Devem garantir extensibilidade, manutenibilidade.

    - Envolve a fase de manuteno do software.

    - A manuteno um processo contnuo e inerente a todo software.

  • Desenvolvimento gil de SoftwareDesenvolvimento gil de Software

    IntroduoIntroduo

    - Criado para atender s exigncia do mercado global, com rpidas mudanas.

    - Novos softwares devem ser desenvolvidos rapidamente para atender as novas oportunidades de negcios.de negcios.

    - Segundo Sommerville, muitas empresas esto dispostas a trocar qualidade e compromisso com os requisitos por uma implantao mais rpida.

    - No h tempo para obteno de um conjunto completo de requisitos.

  • Desenvolvimento gil de SoftwareDesenvolvimento gil de Software

    IntroduoIntroduo

    - Existem grandes probabilidades de mudanas nos requisitos por causa da dificuldade de prever como o software ir automatizar processos, interagir com outros sistemas, afetar o trabalho do usurio, resistir a fatores externos.usurio, resistir a fatores externos.

    - Talvez os requisitos se tornem claros medida que o usurio adquira experincia com o sistema.

    - Os processos convencionais (e.g. cascata) no so adaptados ao desenvolvimento rpido de software.

  • Desenvolvimento gil de SoftwareDesenvolvimento gil de Software

    IntroduoIntroduo

    - Para sistemas crticos, as abordagens dirigidas a planos so as melhores opes.

    - Desenvolvimento gil tem sido a soluo mais apropriada para softwares de negcios com apropriada para softwares de negcios com mudanas nos requisitos.

    - As linguagens de quarta gerao (James Martin) incentivaram o desenvolvimento gil. Exemplos: SQL (banco de dados), geradores de relatrios, de interfaces...

  • Desenvolvimento gil de SoftwareDesenvolvimento gil de Software

    IntroduoIntroduo

    - Surgimento das abordagens geis (principais):

    -- Metodologia de Desenvolvimento de Sistemas Dinmicos Metodologia de Desenvolvimento de Sistemas Dinmicos

    DSDM (DSDM (StapletonStapleton, 1997), 1997)

    -- Desenvolvimento Adaptativo de Software (Desenvolvimento Adaptativo de Software (HighsmithHighsmith, 1999), 1999)

    Programao Extrema (Programao Extrema (BeckBeck, 2000), 2000) Programao Extrema (Programao Extrema (BeckBeck, 2000), 2000)

    TestTest DrivenDriven DevelopmentDevelopment ((BeckBeck, 2003), 2003)

    ScrumScrum ((SchwaberSchwaber andand BeedleBeedle, 2001), 2001)

    -- CrystalCrystal ClearClear ((CockburnCockburn, 2001), 2001)

    -- Desenvolvimento Dirigido a Caractersticas (Palmer Desenvolvimento Dirigido a Caractersticas (Palmer andand

    FelsingFelsing, 2002), 2002)

  • Desenvolvimento gil de SoftwareDesenvolvimento gil de Software

    IntroduoIntroduo

    - Caracterstica fundamental das abordagens geis:

    - Desenvolvimento rpido;

    - Desenvolvimento em partes (entrega dos incrementos);incrementos);

    - Especificao, projeto e implementao so intercalados (suscetvel mudanas);

    - Documentao minimizada;

    - Desenvolvimento em verses;

    - Usurios envolvidos na especificao e validao;

    - Desenvolvimento de GUIs semi-automatizado.

  • Desenvolvimento gil de SoftwareDesenvolvimento gil de Software

    www.agilemanifesto.orgwww.agilemanifesto.org

    11.. Individuals and interactions over processesand tools.

    2. Working software over comprehensivedocumentation.

    3. Customer collaboration over contractnegotiation.

    4. Responding to change over following aplan.

  • Desenvolvimento gil de SoftwareDesenvolvimento gil de Software

    IntroduoIntroduo

    - Crticas aos mtodos geis:

    - Codificao cowboy (balbrdia) ausncia de mtodos;

    - Falta de documentao, - Falta de documentao,

    - Suscetvel a vrias mudanas (imprevisvel),

    - Projeto insuficiente;

    - Intensidade no desenvolvimento (experts);

  • Desenvolvimento gil de SoftwareDesenvolvimento gil de Software

    IntroduoIntroduo

    -- Dificuldades da implantao dos princpios geis Dificuldades da implantao dos princpios geis ((SommervilleSommerville, 2011):, 2011):

    - Disposio do cliente a participar plenamente do desenvolvimento do software;

    - Problemas de interao entre membros da equipe de desenvolvimento;

    - Dificuldade na priorizao de mudanas;

    - Resistncia de empresas de desenvolvimento adaptao de um modelo com processos informais e definidos pela equipe de desenvolvimento.

  • Desenvolvimento gil de SoftwareDesenvolvimento gil de Software

    IntroduoIntroduo

    - Esforo para integrar mtodos geis com o UP (Esforo para integrar mtodos geis com o UP (LarmanLarman, , 2002)2002)

    - Utilizar um pequeno conjunto de atividades do processo unificado, com menor nmero de diagramas ou artefatos;

    -Como UP iterativo, a implementao se inicia aps o -Como UP iterativo, a implementao se inicia aps o trmino dos requisitos e projeto. Neste caso, o projeto surge como uma srie de iteraes baseado em feedbacks.

    - No se faz necessrio um plano detalhado do projeto por inteiro. Faz-se um plano de mais alto nvel e planos de iterao.

  • Desenvolvimento gil de SoftwareDesenvolvimento gil de Software

    IntroduoIntroduo

    - Esforo para integrar mtodos geis com o UP Esforo para integrar mtodos geis com o UP ((LarmanLarman, 2002), 2002)

    - Planos de iterao para cada nova iterao.

    -Transformando abordagem predicativa e planejada -Transformando abordagem predicativa e planejada (UP tradicional) em uma abordagem adaptativa baseada em feedbacks.

    - Os detalhes de cada prxima iterao so, a princpio, abstrados para serem futuramente adaptados.

  • Desenvolvimento gil de SoftwareDesenvolvimento gil de Software

    IntroduoIntroduo

    - Esforo para integrar mtodos geis com o UPEsforo para integrar mtodos geis com o UP

    (adaptado de (adaptado de LarmanLarman, 2002), 2002)

  • Desenvolvimento gil de SoftwareDesenvolvimento gil de Software

    IntroduoIntroduo

    - Esforo para integrar mtodos geis com o UP (Esforo para integrar mtodos geis com o UP (LarmanLarman, , 2002)2002)

    - possivel especificar requisitos e planejar o projeto e o desenvolvimento em paralelo, atravs de uma srie de incrementos.incrementos.

    - Focalizar na documentao do Sistema.

    - Ainda devem existir objetivos e marcos.

    - Planejamento iterativo de 2 semanas.

    - Desenvolvimento paralelo (vrias equipes), organizado por camadas e sub-sistemas (domnio, GUI, integrao)

  • Desenvolvimento gil de SoftwareDesenvolvimento gil de Software

    Metodologia gilMetodologia gil

    -- Compreende:Compreende:

    -- Conceitos de liderana;

    - Gesto de projetos;

    - Prticas de engenharia;- Prticas de engenharia;

    - Tcnicas de desenvolvimento;

    - Ferramentas.

    - Envolve a empresa em todos os seus nveis e disciplinas.

  • Desenvolvimento gil de SoftwareDesenvolvimento gil de Software

    Metodologia gilMetodologia gil

    -- Caractersticas:Caractersticas:

    1. Crescimento e Evoluo: no h um processo formal. O processo se desenvolve com a experincia da equipe.

    2. Associao e Adaptao: conjunto de idias, combinao de projetos especficos, adoo de diferentes prticas.

    3. Indivduo: gesto realizadas pela prpria equipe. O profissional dissemina suas idias no ambiente de trabalho dirio.

  • Desenvolvimento gil de SoftwareDesenvolvimento gil de Software

    Metodologia gilMetodologia gil

    -- Caractersticas:Caractersticas:

    4. Eliminao de Desperdcios: Exs.: foco na tecnologia em detrimento do valor do negcio (cliente), Esforo excessivo em administrao e gesto, detalhamento de aspectos futuros.aspectos futuros.

    5. Foco no aprendizado: prototipagem como fonte de feedbacks e avanos. Um prottipo ajuda a validar requisitos e projetos.

    6. Construindo qualidade: se muitos defeitos so encontrados atravs dos testes, o processo como um todo no satisfatrio.

  • Desenvolvimento gil de SoftwareDesenvolvimento gil de Software

    Metodologia gilMetodologia gil-- Caractersticas:Caractersticas:6. Construindo qualidade (cont...): desenvolvimento

    dirigido a testes cria um cdigo limpo desde o incio do desenvolvimento.

    7. Adiar o compromisso: ningum consegue planejar o projeto inteiro, a no ser por uma especificao

    7. Adiar o compromisso: ningum consegue planejar o projeto inteiro, a no ser por uma especificao completa. Comear rpido, ter uma viso clara e detalhar o projeto com o tempo.

    8. Entrega rpida: otimizao das atividades de cada indivduo.

    9. Otimizar o inteiro: concentrar-se no sucesso do produto final.

  • Desenvolvimento gil de SoftwareDesenvolvimento gil de Software

    Metodologia gilMetodologia gil

    -- Qualidade?Qualidade?

    - Desenvolvimento gil com CMM (CapabilityMaturity Model).

    - CMM e gil so compatveis cf. SEI.- CMM e gil so compatveis cf. SEI.

    - CMM focaliza em altos nveis de abstrao respeito dos objetivos do projeto (gesto).

    - gil focaliza em como desenvolver o software (metodologia).

  • Desenvolvimento gil de SoftwareDesenvolvimento gil de Software

    Metodologia gil x CMMMetodologia gil x CMMXu et al. Texas University

  • Desenvolvimento gil de SoftwareDesenvolvimento gil de Software

    Metodologia gilMetodologia gil

    -- Caractersticas:Caractersticas:

  • Desenvolvimento gil de SoftwareDesenvolvimento gil de Software

    Metodologia gilMetodologia gil

    -- Equipe e LideranaEquipe e Liderana

    - Hierarquia em trs camadas, que se diferem por suas responsabilidades e propsitos:

    -- Camada de VisoCamada de Viso: camadas mais alta responsvel pela definio dos objetivos e estratgias. Decises de definio dos objetivos e estratgias. Decises de investimentos e direo.

    -- Camada de IntegraoCamada de Integrao: gesto intermediria e gerncia de projetos. Orquestrar os talentos, competncias, conhecimentos e recursos. Garantir que os objetivos das equipes so consistentes e sem contradio.

  • Desenvolvimento gil de SoftwareDesenvolvimento gil de Software

    Metodologia gilMetodologia gil

    -- Equipe e LideranaEquipe e Liderana

    -- Camada do Valor:Camada do Valor: camada operacional responsvel pela criao do valor. Equipes multifuncionais e interdisciplinares. Cada equipe possui a interdisciplinares. Cada equipe possui a responsabilidade e autoria de seus objetivos e entregam um valor direto ao cliente.

  • Desenvolvimento gil de SoftwareDesenvolvimento gil de Software

    Metodologia gilMetodologia gil

    --IndivduosIndivduos

    - Fatores humanos dominam o desenvolvimento de software.

    - As idias da equipe definem o sucesso e so mais - As idias da equipe definem o sucesso e so mais importantes que especificao formal, tecnologia avanada, linguagens e novos processos de desenvolvimento.

    - A personalidade afeta o trabalho.

  • Desenvolvimento gil de SoftwareDesenvolvimento gil de Software

    Extreme ProgrammingExtreme Programming

    -- O que Programao Extrema? (Kent O que Programao Extrema? (Kent BeckBeck))

    -- Uma metodologia leve, eficiente, de baixo risco, flexvel e cientfica de desenvolver softwares.

    - Baseia-se em um contnuo e concreto feedback de - Baseia-se em um contnuo e concreto feedback de pequenos ciclos.

    - uma abordagem de planejamento incremental.

    - Fornece flexibilidade no escalonamento da implementao de funcionalidades, respondendo s mudanas nos requisitos do domnio do negcio.

  • Desenvolvimento gil de SoftwareDesenvolvimento gil de Software

    Extreme ProgrammingExtreme Programming

    -- O que Programao Extrema? (Kent O que Programao Extrema? (Kent BeckBeck))

    - Utiliza testes automatizados como instrumento de monitoria do progresso do desenvolvimento (identificao prvia de erros).

    - Comunicao e cdigo fonte como elo entre a estrutura da aplicao e os objetivos.

    - Prticas de trabalho baseada na experincia de programadores .

    - XP foi elaborado para desenvolvimento de aplicaes envolvendo de 2 a 10 programadores.

  • Desenvolvimento gil de SoftwareDesenvolvimento gil de SoftwareExtreme ProgrammingExtreme Programming

    -- Resoluo de Problemas de Desenvolvimento com XP:

    - Cronograma: entrega de verses em pequenos ciclos.

    -Projeto: iniciar com pequenos processos que faam sentido ao negcio.

    - Cdigo: construir uma suite de testes garantia de - Cdigo: construir uma suite de testes garantia de qualidade.

    - Interpretao de requisitos: o cliente parte integral da equipe de desenvolvimento.

    - Mudanas no negcio: menor impacto. Novas funcionalidades so definidas na entrega de uma verso.

  • Desenvolvimento gil de SoftwareDesenvolvimento gil de Software

    Extreme ProgrammingExtreme Programming

    - Mais famoso exemplo de mtodo gil

    - Constitudo de um conjunto de prticas interdependentes:

    1. Cliente como parte da equipe de desenvolvimento.1. Cliente como parte da equipe de desenvolvimento.

    - Cliente = pessoa ou grupo que define e prioriza caractersticas do negcio.

    - Cliente trabalhando na mesma sala de desenvolvedores.

    - Se no for possvel? Buscar algum que seja capaz de substitu-lo temporariamente (Martin, 2011).

  • Desenvolvimento gil de SoftwareDesenvolvimento gil de Software

    Extreme ProgrammingExtreme Programming

    2. 2. UserUser StoriesStories

    - Para planejar os objetivos basta ter conhecimento sobre os requisitos.

    - No necessrio conhecer detalhes especficos - No necessrio conhecer detalhes especficos sobre requisitos. Estes detalhes mudam com o tempo.

    - O cliente escreve em um carto (poucas palavras) que est de acordo com o que foi tratado na conversa.

    - O desenvolvedores tambm escrevem em um carto o que entenderam sobre os requisitos.

  • Desenvolvimento gil de SoftwareDesenvolvimento gil de Software

    Extreme ProgrammingExtreme Programming

    2. 2. UserUser StoriesStories

    - Os requisitos sero alterados medida que as releases forem sendo visualizadas pelo cliente.

    - No existe nada melhor para entender os requisitos - No existe nada melhor para entender os requisitos do que ver o sistema nascendo. (Martin, 2011).

    - As histrias de usurio so escritas nas fichas atravs de mnemnicos.

    - So descritos em ordem de prioridade quanto a importncia do que ser implementado.

  • Desenvolvimento gil de SoftwareDesenvolvimento gil de Software

    Extreme ProgrammingExtreme Programming

    2. 2. UserUser StoriesStories

    -

  • Desenvolvimento gil de SoftwareDesenvolvimento gil de Software

    Extreme ProgrammingExtreme Programming

    3. Short 3. Short CyclesCycles (Iteraes curtas)(Iteraes curtas)

    -- Envolve um Plano de Iterao Plano de Iterao e um Plano de Plano de Lanamento de VersoLanamento de Verso.

    -- Releases a cada duas semanas.-- Releases a cada duas semanas.

    - O sistema (a cada repetio) deve ser apresentado ao cliente em resposta a um requisito.

    - Desenvolvedores calculam os custos da interao medida das iteraes anteriores.

    - Um vez iniciada a iterao, o cliente acorda em no modificar os requisitos da mesma.

  • Desenvolvimento gil de SoftwareDesenvolvimento gil de Software

    Extreme ProgrammingExtreme Programming

    3. Short 3. Short CyclesCycles (Iteraes curtas)(Iteraes curtas)

    -O Plano de Lanamento de Verso deve prever at seis iteraes.

    - O cliente determina a ordem da implementao das - O cliente determina a ordem da implementao das stories.

    4. Testes de Aceitao4. Testes de Aceitao

    -Os testes so escritos antes ou concomitantemente implementao das stories.

    - Os testes podem ser escritos em uma linguagem que permita uma execuo automtica e repetitiva.

  • Desenvolvimento gil de SoftwareDesenvolvimento gil de Software

    Extreme ProgrammingExtreme Programming

    4. Testes de Aceitao4. Testes de Aceitao

    - Os testes servem para verificar se o sistema est se comportando de acordo com as especificaes.

    - Os testes evoluem com o sistema.- Os testes evoluem com o sistema.

    - Os clientes podem solicitar um sistema baseado em scripts de teste ou podem possuir um departamento de garantia de qualidade (QA) que o desenvolva.

    - Os testes de aceitao rodam diversas vezes ao dia, medida que o sistema construdo.

  • Desenvolvimento gil de SoftwareDesenvolvimento gil de Software

    Extreme ProgrammingExtreme Programming

    4. Testes de Aceitao4. Testes de Aceitao

    - Se o teste falha, o bloco considerado falho.

    5. Programao por Pares5. Programao por Pares

    -Trabalhando na mesma estao de trabalho.-Trabalhando na mesma estao de trabalho.

    - Um programador se responsabiliza por digitar o cdigo.

    - O segundo programador visualiza o cdigo sendo digitado, verifica se h erros e d sugestes.

    - Engajamento mtuo na codificao da aplicao.

    - Os papis podem ser alterados frequentemente.

    - O crdito do cdigo pertence a ambos.

    - Os especialiastas compartilhas suas habilidades com a equipe.

  • Desenvolvimento gil de SoftwareDesenvolvimento gil de Software

    Extreme ProgrammingExtreme Programming

    5. Propriedade coletiva5. Propriedade coletiva

    - Um par de programador pode checar qualquer mdulo e alter-lo.

    - Todos so igualmente responsveis.- Todos so igualmente responsveis.

    - Todos trabalham na GUI, no middleware e na base de dados.

    - Especialistas podem optar por suas especialidades, mas no ficam confinadas a elas e transmitem seus conhecimentos aos outros membros da equipe.

  • Desenvolvimento gil de SoftwareDesenvolvimento gil de Software

    Extreme ProgrammingExtreme Programming

    5. Integrao contnua5. Integrao contnua

    - Cdigos podem ser integrados vrias vezes ao dia.

    - Programadores XP usam controle de cdigo sem bloqueio, i.e. a todos permitido checar qualquer bloqueio, i.e. a todos permitido checar qualquer cdigo em qualquer tempo.

    - Testes so realizados a cada breaking point (uma ou duas horas de programao). Testes so realizados e o cdigo armazenado em uma base de cdigo.

    - Se h necessidade de integrao com outro cdigo, outros programadores podem ser convocados/ consultados.

  • Desenvolvimento gil de SoftwareDesenvolvimento gil de Software

    Extreme ProgrammingExtreme Programming

    5. Ritmo Sustentvel5. Ritmo Sustentvel

    - Trabalhando a todo tempo em ritmo contnuo.

    6. Planejamento da Partida (game)6. Planejamento da Partida (game)

    - Diviso de Responsabilidades entre negcios e - Diviso de Responsabilidades entre negcios e desenvolvimento.

    -Pessoas do negcio (cliente) decidem a importncia da histria, desenvolvedores decidem sobre custos da implementao.

  • Desenvolvimento gil de SoftwareDesenvolvimento gil de Software

    Extreme ProgrammingExtreme Programming

    5. Projeto Simples5. Projeto Simples

    -O projeto deve simples e expressivo.

    -Ter como foco as histrias (caractersticas) que foram planejadas. planejadas.

    - Normalmente em XP no se comea com infraestrutura, base de dados ter precedncia.

    6. Desenvolvimento Dirigido por Testes. Desenvolvimento Dirigido por Testes

    -- O cdigo escrito por unidade de teste. Primeiramente se escreve o caso de teste.

  • Desenvolvimento gil de SoftwareDesenvolvimento gil de Software

    Extreme ProgrammingExtreme Programming

    6. Desenvolvimento Dirigido por Testes (cont...). Desenvolvimento Dirigido por Testes (cont...)

    -O caso de teste ir falhar porque a funo a ser testada ainda no foi implementada.

    - A funcionalidade ser desenvolvida e o caso de teste - A funcionalidade ser desenvolvida e o caso de teste passar.

    7. 7. RefatoramentoRefatoramento

    -Ao adicionar novas funcionalidades, a estrutura do software tende a degradar-se.

    - Refatoramento transforma a estrutura do sistema, sem afetar seu comportamento.

  • Desenvolvimento gil de SoftwareDesenvolvimento gil de Software

    Extreme ProgrammingExtreme Programming

    8. Metfora8. Metfora

    - a viso do sistema que permite um entendimento de todos os mdulos individuais.

    - Uma das prticas mais importantes da XP.- Uma das prticas mais importantes da XP.

    - Um conjunto de nomes deve fornecer um vocabulrio dos elementos do sistema que ajude a definir seus relacionamentos.

  • Desenvolvimento gil de SoftwareDesenvolvimento gil de SoftwareExtreme Programming (Guia de Atividades)Extreme Programming (Guia de Atividades)

    Fonte: extremeprogramming.org

  • Desenvolvimento gil de SoftwareDesenvolvimento gil de SoftwareExtreme ProgrammingExtreme Programming

    (Regras de Trabalho)(Regras de Trabalho)

    Fonte: extremeprogramming.org

  • Desenvolvimento gil de SoftwareDesenvolvimento gil de Software

    Metodologia gilMetodologia gil

    -- Desenvolvimento gil de banco de dados;

    - Desenvolvimento gil de softwares embutidos;

    - Desenvolvimento gil de softwares de larga escala;- Desenvolvimento gil de softwares de larga escala;

    - Desenvolvimento gil de aplicaes web;

    - Desenvolvimento gil para aplicaes de IA;

    - Desenvolvimento gil para aplicaes distribudas.