Você está na página 1de 19

Metodologias geis de desenvolvimento de software

Definio

So mtodos de desenvolvimento de software que so oriundos entrega rpida de software. O software desenvolvido e entregue incrementalmente e a documentao e burocracia do processo so minimizadas. O foco do desenvolvimento est no cdigo em si, em vez de na documentao de apoio. Os processos de desenvolvimento rpido de software so concebidos para produzir, rapidamente, softwares teis. O software no desenvolvido com uma nica unidade, mas como uma srie de incrementos cada incremento inclui uma nova funcionalidade do sistema.

10/12/2012

Engenharia de Software - Danilo Giacobo

Metodologias geis de desenvolvimento de software


Caractersticas fundamentais
1. Os processos de especificao, projeto e implementao so intercalados. No h especificao detalhada do sistema, e a documentao do projeto minimizada ou gerada automaticamente pelo ambiente de programao usado para implementar o sistema. O documento de requisitos do usurio apenas define as caractersticas mais importantes do sistema. 2. O sistema desenvolvido em uma srie de verses. Os usurios finais e outros stakeholders do sistema so envolvidos na especificao e avaliao de cada verso. Eles podem propor alteraes ao software e novos requisitos que devem ser implementados em uma verso posterior do sistema. 3. Interface de usurio do sistema so geralmente desenvolvidas com um sistema interativo de desenvolvimento que permite a criao rpida do projeto de interface por meio de desenho e posicionamento de cones na interface. O sistema pode, ento, gerar uma interface baseada na Web para um navegador ou uma interface para uma plataforma especfica, como o Microsoft Windows.

10/12/2012

Engenharia de Software - Danilo Giacobo

Metodologias geis de desenvolvimento de software


Manifesto gil
Estamos descobrindo melhores maneiras de desenvolver softwares, fazendo-o e ajudando outros a faz-lo. Por meio desse trabalho, valorizamos mais: Indivduos e interaes do que processos e ferramentas Software em funcionamento do que a documentao abrangente Colaborao do cliente do que negociao de contrato Respostas a mudanas do que seguir um plano Ou seja, embora itens direita sejam importantes, valorizamos mais os que esto esquerda.

10/12/2012

Engenharia de Software - Danilo Giacobo

Metodologias geis de desenvolvimento de software


Mtodos geis
- Extreme Programming

- Scrum
- Crystal - Desenvolvimento de Software Adaptativo - DSDM (Dynamic Systems Development Method) - Desenvolvimento Dirigido a Caractersticas

10/12/2012

Engenharia de Software - Danilo Giacobo

Metodologias geis de desenvolvimento de software


Os princpios dos mtodos geis
- Princpios Extreme Programming

Descrio

- Scrum Envolvimento do Cliente - Crystal

Os clientes devem estar intimamente envolvidos no processo de desenvolvimento. Seu papel fornecer e - Desenvolvimento de Software Adaptativo priorizar novos requisitos do sistema e avaliar suas iteraes. - DSDM (Dynamic Systems Development Method) Entrega incremental O software desenvolvido em incrementos com o - Desenvolvimento Dirigido a Caractersticas cliente, especificando os requisitos para serem includos em cada um.
Pessoas, no processos As habilidades da equipe de desenvolvimento devem ser reconhecidas e exploradas. Membros da equipe devem desenvolver suas prprias maneiras de trabalhar, sem processos prescritivos. Deve-se ter em mente que os requisitos do sistema vo mudar. Por isso, projete o sistema de maneira a acomodar essas mudanas. Focalize a simplicidade, tanto do software a ser desenvolvido quanto do processo de desenvolvimento. Sempre que possvel, trabalhe ativamente para eliminar a complexidade do sistema.

Aceitar as mudanas

Manter a simplicidade

10/12/2012

Engenharia de Software - Danilo Giacobo

Metodologias geis de desenvolvimento de software


Desenvolvimento gil e dirigido a planos
Desenvolvimento dirigido a planos

Engenharia de requisitos

Especificao de requisitos

Projeto e implementao

Solicitao de mudana de requisitos Desenvolvimento gil

Engenharia de requisitos

Projeto e implementao

10/12/2012

Engenharia de Software - Danilo Giacobo

Metodologias geis de desenvolvimento de software


Quando optar pelo desenvolvimento dirigido a planos?
1. Quando for necessrio ter uma especificao e um projeto muito detalhados antes de passar para a fase de implementao. 2. Para sistemas de grande porte que exigem equipes de desenvolvimento maiores. 3. Sistemas que exigem uma anlise profunda antes da implementao (por exemplo, sistema de tempo real com requisitos de tempo complexos) geralmente demandam um projeto bastante detalhado para atender a essa anlise.

4. Quando h questes culturais envolvidas que podem afetar o desenvolvimento do sistema. Organizaes tradicionais de engenharia tm uma cultura de desenvolvimento baseado em planos, pois essa a norma na engenharia;.
5. Quando o sistema estiver sujeito alguma regulamentao externa, pois ser obrigatria a produo de uma documentao detalhada como parte da documentao de segurana do sistema.

6. Quando o tempo de vida esperado do sistema for longo, pois exige mais documentao de projeto e a mesma sendo constantemente atualizada.

10/12/2012

Engenharia de Software - Danilo Giacobo

Metodologias geis de desenvolvimento de software


Quando optar pelo desenvolvimento gil?
1. Quando h uma estratgia real de entrega incremental em que voc entrega o software aos clientes e rapidamente obtm um feedback. 2. Quando o sistema pode ser desenvolvido com uma pequena equipe colocalizada capaz de se comunicar de maneira informal. 3. Quando o tempo de vida esperado do sistema for curto e a documentao no for de muita utilidade estiver constantemente desatualizada.

4. Quando h boas ferramentas envolvidas e atualizadas para manter o controle de um projeto em desenvolvimento.

10/12/2012

Engenharia de Software - Danilo Giacobo

Metodologias geis de desenvolvimento de software


Extreme Programming - Caractersticas
1. O desenvolvimento incremental sustentado por meio de pequenos e frequentes releases do sistema. Os requisitos so baseados em cenrios ou em simples histrias de clientes, usadas como base para decidir a funcionalidade que deve ser includa em um incremento do sistema. 2. O envolvimento do cliente sustentado por meio o engajamento contnuo do cliente com a equipe de desenvolvimento. O representante do cliente participa do desenvolvimento e responsvel por definir os testes de aceitao para o sistema. 3. Pessoas no processos so sustentadas por meio de programao em pares, propriedade coletiva do cdigo do sistema e um processo de desenvolvimento sustentvel que no envolve horas de trabalho excessivamente longas. 4. As mudanas so aceitas por meio de releases contnuos para os clientes, do desenvolvimento test-first, da refatorao para evitar a degenerao do cdigo e integrao contnua de nova funcionalidade. 5. A manuteno da simplicidade feita por meio da refatorao constante que melhora a qualidade do cdigo, bem como por meio de projetos simples que no antecipam desnecessariamente futuras mudanas no sistema.

10/12/2012

Engenharia de Software - Danilo Giacobo

Metodologias geis de desenvolvimento de software


Extreme Programming - Ciclo de um release

Selecionar histrias do usurio para este release

Dividir histrias em tarefas

Planejar release

Avaliar sistema

Liberar software

Desenvolver / Integrar / Testar software

10/12/2012

Engenharia de Software - Danilo Giacobo

10

Metodologias geis de desenvolvimento de software


Extreme Programming - Prticas
- Princpio Extreme ou Programming prtica
Descrio
Os requisitos so gravados em cartes de histria e as histrias que sero includas em um release so determinadas pelo tempo disponvel e sua relativa prioridade. Os desenvolvedores dividem essas histrias em Tarefas.

- Planejamento Scrum incremental


- Crystal

releases Em primeiro lugar, desenvolve-se um conjunto mnimo de funcionalidades til, que fornece o - Pequenos Desenvolvimento de Software Adaptativo valor do negcio. Releases do sistema so frequentes e gradualmente adicionam funcionalidade primeiro release. Method) - DSDM (Dynamic Systemsao Development

- Desenvolvimento Dirigido a Caractersticas


Desenvolvimento test-first Refatorao

Projeto simples

Cada projeto realizado para atender s necessidades atuais, e nada mais. Um framework de testes iniciais automatizados usado para escrever os testes para uma nova funcionalidade antes que a funcionalidade em si seja implementada. Todos os desenvolvedores devem refatorar o cdigo continuamente assim que encontrarem melhorias de cdigo. Isso mantm o cdigo simples e manutenvel.

Programao em pares
Propriedade coletiva

Os desenvolvedores trabalham em pares, verificando o trabalho dos outros e prestando apoio para um bom trabalho sempre.
Os pares de desenvolvedores trabalham em todas as reas do sistema, de modo que no se desenvolvam ilhas de expertise. Todos os conhecimentos e todos os desenvolvedores assumem responsabilidade por todo o cdigo. Qualquer um pode mudar qualquer coisa. Assim que o trabalho em uma tarefa concludo, ele integrado ao sistema como um todo. Aps essa integrao, todos os testes de unidade do sistema devem passar. Grandes quantidades de horas-extra no so consideradas aceitveis, pois o resultado final, muitas vezes, a reduo da qualidade do cdigo e da produtividade a mdio prazo. Um representante do usurio final do sistema (o cliente) deve estar disponvel todo o tempo equipe de XP. Em um processo de Extreme Programming, o cliente um membro da equipe de desenvolvimento e responsvel por levar a ela os requisitos de sistema para implementao.

Integrao contnua Ritmo sustentvel Cliente no local

10/12/2012

Engenharia de Software - Danilo Giacobo

11

Metodologias geis de desenvolvimento de software


Extreme Programming - Carto de Histria (Exemplo)
Prescrio de medicamentos
Kate uma mdica que deseja prescrever medicamentos para um paciente de uma clnica. O pronturio do paciente j est sendo exibido em seu computador, assim ela clica o campo medicao e pode selecionar medicao atual, nova medicao ou formulrio. Se ela selecionar medicao atual, o sistema pede que ela verifique a dose. Se ela quiser mudar a dose, ela altera e em seguida, confirma a prescrio. Se ela escolher nova medicao, o sistema assume que ela sabe qual medicao receitar. Ela digita as primeiras letras do nome do medicamento. O sistema exibe uma lista de possveis frmacos que comeam com essas letras. Ela escolhe a medicao requerida e o sistema responde, pedindo-lhe para verificar se o medicamento selecionado est correto. Ela insere a dose e, em seguida, confirma a prescrio. Se ela escolhe formulrio, o sistema exibe uma caixa de busca para o formulrio aprovado. Ela pode, ento, procurar pelo medicamento requerido. Ela seleciona um medicamento e solicitado que verifique se a medicao est correta. Ela insere a dose e, em seguida, confirma a prescrio. O sistema sempre verifica se a dose est dentro da faixa permitida. Caso no esteja, Kate convidada a alterar a dose. Aps Kate confirmar a prescrio, esta ser exibida para verificao. Ela pode escolher OK ou Alterar. Se clicar em OK, a prescrio fica gravada nos bancos de dados da auditoria. Se ela clicar em Alterar, reinicia o processo de Prescrio de Medicamentos.

10/12/2012

Engenharia de Software - Danilo Giacobo

12

Metodologias geis de desenvolvimento de software


Extreme Programming - Cartes de tarefa (Exemplo)

Tarefa 1: Alterar dose de medicamentos prescritos Tarefa 2: Seleo de formulrio Tarefa 3: Verificao de dose

A verificao da dose uma precauo de segurana para verificar se o mdico no receitou uma dose perigosamente pequena ou grande. Usando o ID do formulrio para o nome do medicamento genrico, procure o formulrio e obtenha a dose mnima e mxima recomendada. Verifique a dose mnima e mxima prescrita. Caso esteja fora da faixa, emita uma mensagem de erro dizendo que a dose est muito alta ou muito baixa. Caso esteja dentro da faixa, habilite o boto Confirmar.

10/12/2012

Engenharia de Software - Danilo Giacobo

13

Metodologias geis de desenvolvimento de software


Extreme Programming - Testes
As principais caractersticas dos testes em XP so: 1. Desenvolvimento test-first; 2. Desenvolvimento de teste incremental a partir de cenrios; 3. Envolvimento dos usurios no desenvolvimento de testes e validao; 4. Uso de frameworks de testes automatizados (exemplo: JUnit).
Exemplo de Caso de Teste Teste 4: Verificao de dose Entrada: 1. Um nmero em que mg representando uma nica dose de medicao. 2. Um nmero que representa o nmero de doses nicas por dia. Testes: 1. Teste para entradas em que a dose nica correta, mas a frequncia muita alta. 2. Teste para entradas em que a nica dose muita alta e muito baixa. 3. Teste para entradas em que a dose nica x frequncia muito alta e muita alta. 4. Teste para entradas em que a dose nica x frequncia permitida. Sada: Mensagem de OK ou erro indicando que a dose est fora da faixa de segurana.

10/12/2012

Engenharia de Software - Danilo Giacobo

14

Metodologias geis de desenvolvimento de software


Extreme Programming - A programao em pares
O uso da programao em pares tem uma srie de vantagens: 1. D suporte ideia de propriedade e responsabilidade coletiva para o sistema, o que reflete a ideia de programao sem ego, segundo a qual o software de propriedade da equipe como um todo e os indivduos no so responsabilizados por problemas com o cdigo. Em vez disso, a equipe tem responsabilidade coletiva para resolver esses problemas. 2. Atua como um processo de reviso informal, porque cada linha de cdigo observada por, pelo menos, duas pessoas. Inspees e revises do cdigo so muito bem-sucedidas em descobrir uma elevada porcentagem de erros de softwares. No entanto, so demoradas para organizar e costumam apresentar atrasos no processo de desenvolvimento. Embora a programao em pares seja um processo menos formal que provavelmente no encontra tantos erros como as inspees de cdigo, um processo de inspeo muito mais barato do que inspees formais de programa. 3. D suporte refatorao, que um processo de melhoria de software. A dificuldade de implementar isso em um ambiente de desenvolvimento normal que o esforo despendido na refatorao para um benefcio a longo prazo. Um indivduo que pratica a refatorao pode ser considerado menos eficiente do que aquele que simplesmente atua no desenvolvimento de cdigo. Sempre que a programao em pares e a propriedade coletiva so usadas, outros se beneficiam imediatamente da refatorao para que eles possam apoiar o processo.
10/12/2012 Engenharia de Software - Danilo Giacobo 15

Metodologias geis de desenvolvimento de software


A abordagem Scrum
O processo Scrum Avaliar Selecionar

Planejamento geral e projeto de arquitetura


Revisar Desenvolver

Encerramento do projeto

Ciclo Sprint

Vantagens 1. O produto decomposto em um conjunto de partes gerenciveis e compreensveis. 2. Requisitos instveis atrasam o progresso. 3. Toda a equipe tem a viso de tudo e, consequentemente, a comunicao da equipe melhorada. 4. Os clientes veem a entrega de incrementos dentro do prazo e recebem feedback sobre como o produto funciona. 5. Estabelece-se confiana entre clientes e desenvolvedores e cria-se uma cultura positiva, na qual todo mundo espera que o projeto tenha xito.

10/12/2012

Engenharia de Software - Danilo Giacobo

16

Metodologias geis de desenvolvimento de software


Escalamento de mtodos geis
A introduo de mtodos geis em grandes empresas difcil por diversas razes: 1. Os gerentes de projeto que no tm experincia em mtodos geis podem ser relutantes em aceitar o risco de uma nova abordagem, uma vez que no sabem como isso vai afetar seus projetos particulares. 2. Nas grandes organizaes existem procedimentos e padres de qualidade que todos os projetos devem seguir e por causa de sua natureza burocrtica, geralmente so incompatveis com os mtodos geis. s vezes, recebem suporte de ferramentas de software (por exemplo, ferramentas de gerenciamento de requisitos), e o uso dessas ferramentas obrigatrio a todos os projetos. 3. Mtodos geis parecem funcionar melhor quando os membros da equipe tm um nvel relativamente alto de habilidade. No entanto, dentro das grandes organizaes possvel encontrar uma ampla gama de habilidades e competncias, alm disso, pessoas com nveis menores de habilidades podem no se tornar membros efetivos da equipe em processos geis. 4. Pode haver resistncia cultural aos mtodos geis, principalmente em organizaes com longa histria de uso dos processos convencionais de engenheraria de sistemas.

10/12/2012

Engenharia de Software - Danilo Giacobo

17

Metodologias geis de desenvolvimento de software


Consideraes Finais
- Mtodos geis so mtodos de desenvolvimento incremental que se concentram em desenvolvimento rpido, releases frequentes do software, reduo de overheads dos processos e produo de cdigos de alta qualidade. Eles envolvem o cliente diretamente no processo de desenvolvimento. - A deciso de usar uma abordagem gil ou uma abordagem dirigida a planos para o desenvolvimento deve depender do tipo de software a ser desenvolvido, das habilidades da equipe de desenvolvimento e da cultura da empresa que desenvolve o sistema. - Extreme Programming uma mtodo gil, bem conhecido, que integra um conjunto de boas prticas de programao, como releases frequentes de software, melhorias contnuas do mesmo e participao do cliente na equipe de desenvolvimento. - Um ponto forte da Extreme Programming o desenvolvimento de testes automatizados antes da criao de um recurso do programa. Quando um incremento integrado ao sistema, todos os testes devem ser executados com sucesso. - O mtodo Scrum uma metodologia gil que fornece um framework de gerenciamento de projetos. centralizado em torno de um conjunto de sprints, que so perodos determinados de tempo, quando um incremento de sistema desenvolvido, O planejamento baseado na priorizao de um backlog de trabalho e na seleo das tarefas mais importantes para um sprint. - O escalamento de mtodos geis para sistemas de grande porte difcil. Tais sistemas necessitam de projeto adiantado e alguma documentao. A integrao contnua praticamente impossvel quando existem vrias equipes de desenvolvimento separadas trabalhando em um projeto.

10/12/2012

Engenharia de Software - Danilo Giacobo

18

Metodologias geis de desenvolvimento de software


Referncias Bibliogrficas
SOMMERVILLE, IAN. Engenharia de Software. 9. ed. So Paulo: Pearson Prentice Hall, 2011. 529 p.

10/12/2012

Engenharia de Software - Danilo Giacobo

19