Eng.ª do Software - 5. Desenvolvimento rápido de software

6,958 views

Published on

Desenvolvimento rápido de software. Unidade de Engenharia do Software I para o curso de METI no ISCTE-IUL no 2.º semestre do ano lectivo de 2009/2010.

Published in: Education, Technology, Business
2 Comments
5 Likes
Statistics
Notes
No Downloads
Views
Total views
6,958
On SlideShare
0
From Embeds
0
Number of Embeds
7
Actions
Shares
0
Downloads
396
Comments
2
Likes
5
Embeds 0
No embeds

No notes for slide

Eng.ª do Software - 5. Desenvolvimento rápido de software

  1. 1. Engenharia do Software I<br />Manuel Menezes de Sequeira<br />DCTI, ISCTE-IUL<br />Manuel.Sequeira@iscte.pt, D6.02<br />As apresentações desta série baseiam-se nas apresentações disponibilizadas por IanSommerville, tendo sido alteradas e adaptadas primeiro por  Anders Lyhne Christensen e finalmente por Manuel Menezes de Sequeira. <br />
  2. 2. Na aula anterior<br />Processos de software<br />Modelos de processos de software<br />Iteração de processos<br />Actividades de processo<br />RUP (RationalUnifiedProcess)<br />CASE (Computer-Aided Software Engineering)<br />2009/2010<br />2<br />Engenharia do Software I<br />
  3. 3. Desenvolvimento Rápido de Software<br />2009/2010<br />3<br />Engenharia do Software I<br />
  4. 4. Sumário<br />Desenvolvimento rápido de software<br />Métodos ágeis<br />XP (Extreme Programming)<br />Desenvolvimento rápido de aplicações (RAD)<br />Prototipagem de software<br />2009/2010<br />Engenharia do Software I<br />4<br />
  5. 5. Objectivos<br />Explicar como processo de desenvolvimento iterativo e incremental leva a entregas mais rápidas do software e a software mais útil<br />Discutir essência de métodos ágeis de desenvolvimento<br />Explicar princípios e práticas do Extreme Programming<br />Explicar papéis da prototipagem no processo de software<br />2009/2010<br />5<br />Engenharia do Software I<br />
  6. 6. Desenvolvimento rápido de software<br />Alterações rápidas do contexto dos negócios obrigam empresas a responder a novas oportunidades e à competição<br />Necessário software e seu rápido desenvolvimento<br />Empresas podem estar dispostas a aceitar software de menor qualidade se isso tornar possível a entrega rápida de funcionalidades essenciais<br />2009/2010<br />6<br />Engenharia do Software I<br />
  7. 7. Requisitos<br />Contexto em alteração impossibilita conjunto estável e consistente de requisitos de sistema<br />Modelo de desenvolvimento em cascata impraticável<br />Entrega rápida de software possível apenas com desenvolvimento baseado em especificação e entrega iterativas<br />2009/2010<br />7<br />Engenharia do Software I<br />
  8. 8. Características de processos RAD<br />Especificação, desenho e implementação são processos concorrentes<br />Sem especificação pormenorizada<br />Documentação mínima<br />2009/2010<br />8<br />Engenharia do Software I<br />
  9. 9. Características de processos RAD<br />Sistema desenvolvido numa série de incrementos<br />Utilizadores finais avaliam cada incremento e fazem propostas para incrementos posteriores<br />Interfaces de utilização usualmente desenvolvidas usando sistema de desenvolvimento iterativo<br />2009/2010<br />9<br />Engenharia do Software I<br />
  10. 10. Um processo de desenvolvimento iterativo<br />Definir entregáveis<br />Desenhar arquitectura<br />Especificar incremento<br />Construir incremento<br />Validar incremento<br />não<br />Completo?<br />Integrar incremento<br />Validar<br />Entregar sistema final<br />sim<br />2009/2010<br />10<br />Engenharia do Software I<br />
  11. 11. Vantagens do desenvolvimento incremental<br />2009/2010<br />11<br />Engenharia do Software I<br />
  12. 12. Problemas do desenvolvimento incremental<br />2009/2010<br />12<br />Engenharia do Software I<br />
  13. 13. Prototipagem<br />2009/2010<br />13<br />Engenharia do Software I<br />
  14. 14. Desenvolvimento incremental e prototipagem<br />Sistema entregue<br />Desenvolvimento incremental<br />Visão geral dos requisitos<br />Protótipo executável e especificação do sistema<br />Prototipagem descartável<br />2009/2010<br />14<br />Engenharia do Software I<br />
  15. 15. Diferentes objectivos<br />2009/2010<br />15<br />Engenharia do Software I<br />
  16. 16. Métodos ágeis<br />Insatisfação com custos fixos associados a métodos de desenho levou a métodos ágeis<br />Foco no código e não no desenho<br />Com abordagem iterativa ao desenvolvimento<br />Com objectivo de entregar e fazer evoluir rapidamente o software<br />Provavelmente melhor adequados a sistemas empresariais de pequena e média dimensão ou a produtos para computador pessoal<br />2009/2010<br />Engenharia do Software I<br />16<br />
  17. 17. Princípios dos métodos ágeis <br />2009/2010<br />Engenharia do Software I<br />17<br />
  18. 18. Problemas dos métodos ágeis<br />Pode ser difícil manter interesse dos clientes envolvidos<br />Membros da equipa podem não ser adequados a envolvimento intenso de métodos ágeis<br />Prioritização de mudanças pode ser difícil com múltiplas partes interessadas<br />Manter simplicidade requer trabalho adicional<br />Contratos podem ser problemáticos, tal como noutras abordagens a desenvolvimento iterativo<br />2009/2010<br />Engenharia do Software I<br />18<br />
  19. 19. XP (Extreme Programming)<br />Método ágil mais conhecido e usado?<br />Abordagem “extrema” a desenvolvimento iterativo<br />Novas versões podem ser construídas múltiplas vezes por dia<br />Entrega de incrementos a clientes cada duas semanas<br />Todos os testes executados em todas as construções; construções aceites se testes executarem com sucesso<br />2009/2010<br />Engenharia do Software I<br />19<br />
  20. 20. Ciclo de entregas do XP<br />2009/2010<br />20<br />Engenharia do Software I<br />Seleccionar estórias do utilizador para esta entrega<br />Dividir estórias em tarefas<br />Planear entrega<br />Entregar sistema<br />Avaliar sistema<br />Desenvolver, integrar e testar software<br />
  21. 21. Práticas do XP<br />2009/2010<br />Engenharia do Software I<br />21<br />
  22. 22. Práticas do XP<br />2009/2010<br />Engenharia do Software I<br />22<br />
  23. 23. Princípios XP e ágeis<br />Entregas pequenas e frequentes suportam desenvolvimento incremental<br />Cliente a tempo inteiro com equipa<br />Ênfase em pessoas e não processos<br />Programação em pares<br />Propriedade colectiva<br />Processo que evita tempo excessivo de trabalho<br />Entregas regulares suportam mudança<br />Refactorização contínua sustenta simplicidade<br />2009/2010<br />Engenharia do Software I<br />23<br />
  24. 24. Cenários de requisitos em XP<br />Requisitos do utilizador expressos como cenários ou estórias de utilizador<br />Estórias escritas em cartões e divididas em tarefas de implementação por equipa de desenvolvimento<br />Estórias usadas para estimar custos e esforço<br />Cliente escolhe estórias para entrega seguinte de acordo com prioridades e esforços estimados<br />2009/2010<br />Engenharia do Software I<br />24<br />
  25. 25. Cartão de estória para descarregamento de documento<br />2009/2010<br />Engenharia do Software I<br />25<br />
  26. 26. XP e mudança<br />“Desenhar para a mudança” é senso comum: investir tempo e esforço antecipando alterações é proveitoso, pois reduzirá custos futuros no ciclo de vida do sistema<br />XP acha que não vale a pena: alterações não são antecipáveis com confiança<br />XP propõe melhoria contínua do código (refactorização): alterações mais fáceis quando implementadas<br />2009/2010<br />Engenharia do Software I<br />26<br />
  27. 27. Testes em XP<br />Desenvolvimento com testes primeiro<br />Desenvolvimento incremental de testes partindo de cenários<br />Envolvimento do utilizador no desenvolvimento e validação de testes<br />Sistemas de teste automático para executar todos testes de componentes sempre que nova entrega é construída<br />2009/2010<br />Engenharia do Software I<br />27<br />
  28. 28. Cartões de tarefa para descarregamento de documento<br />2009/2010<br />Engenharia do Software I<br />28<br />
  29. 29. Descrição de caso de teste<br />2009/2010<br />Engenharia do Software I<br />29<br />Hmmmm….<br />
  30. 30. Desenvolvimento com testes primeiro<br />Escrever testes antes do código clarifica os requisitos a implementar<br />Testes escritos de forma a se poderem executar automaticamente e não na forma de dados<br />Testes reportam seu resultado<br />Testes passados e novos testes executados quando se adiciona nova funcionalidade, verificando-se se se introduziu algum erro<br />2009/2010<br />Engenharia do Software I<br />30<br />
  31. 31. Programação em pares<br />Programadores aos pares, sentando-se juntos durante desenvolvimento<br />Favorece sentimento de posse comum do código e dissemina conhecimento<br />Processo de revisão informal: código visto por mais que uma pessoa<br />Encoraja refactorização: equipa toda beneficia<br />Experiências sugerem que produtividade de desenvolvimento é semelhante a trabalho individual<br />2009/2010<br />Engenharia do Software I<br />31<br />
  32. 32. Desenvolvimento rápido de aplicações<br />Métodos ágeis têm recebido muita atenção, mas há outras abordagens ao RAD em uso há muitos anos<br />Essas abordagens foram desenhadas para desenvolver aplicações empresariais data-intensive<br />Baseiam-se em programação e apresentação de informação a partir de uma base de dados<br />2009/2010<br />Engenharia do Software I<br />32<br />
  33. 33. Ferramentas RAD<br />Linguagens de programação de bases de dados<br />Geradores de interfaces<br />Ligações a aplicações de escritório<br />Geradores de relatórios<br />2009/2010<br />Engenharia do Software I<br />33<br />
  34. 34. Prototipagem de software<br />Protótipo: versão inicial do sistema para demonstrar conceitos e experimentar opções de desenho<br />Pode usar-se<br />Processo de engenharia de requisitos: ajuda eliciação e validação de requisitos<br />Processos de desenho: ajuda explorar opções e desenvolver design da interface com utilizador<br />Processo de testes: executar testes comparativos (back-to-back)<br />2009/2010<br />34<br />Engenharia do Software I<br />
  35. 35. Benefícios da prototipagem<br />Melhor usabilidade do sistema<br />Melhor correspondência com necessidades reais dos utilizadores<br />Melhor qualidade do desenho<br />Melhor manutenibilidade<br />Menor esforço de desenvolvimento<br />2009/2010<br />35<br />Engenharia do Software I<br />
  36. 36. Testes comparativos<br />Dados de teste<br />Protótipo do sistema<br />Sistema<br />Relatório das diferenças<br />2009/2010<br />36<br />Engenharia do Software I<br />Comparador de resultados<br />
  37. 37. Processo de prototipagem<br />2009/2010<br />37<br />Engenharia do Software I<br />Estabelecer objectivos<br />Definir funcionalidade<br />Desenvolver<br />Avaliar<br />Plano de prototipagem<br />Definição da estrutura geral<br />Protótipo executável<br />Relatório de avaliação<br />
  38. 38. Protótipos descartáveis<br />Protótipos descartados depois de desenvolvidos: não são boa base para sistema de produção<br />Pode ser impossível ajustar sistema para cumprir requisitos não funcionais<br />Protótipos normalmente não documentados<br />Estrutura de protótipos usualmente degradada devido a alterações rápidas<br />Protótipo provavelmente não cumpre normas de qualidade da organização<br />2009/2010<br />Engenharia do Software I<br />38<br />
  39. 39. A reter<br />Abordagem iterativa a desenvolvimento de software leva a entregas mais rápidas<br />Métodos ágeis são métodos de desenvolvimento iterativo destinados a reduzir custos fixos de desenvolvimento e assim a produzir software mais rapidamente<br />XP inclui práticas como testes sistemáticos, melhoria contínua e envolvimento do cliente<br />A abordagem aos testes no XP é uma das suas forças; testes executáveis desenvolvidos antes da escrita do código<br />2009/2010<br />Engenharia do Software I<br />39<br />
  40. 40. A reter<br />Protótipos descartáveis usados para explorar requisitos e opções de desenho<br />Ao implementar protótipo descartável, começar com requisitos menos compreendidos<br />No desenvolvimento incremental, começar com requisitos mais compreendidos<br />2009/2010<br />Engenharia do Software I<br />40<br />
  41. 41. A ler<br />IanSommerville, Software Engineering, 8.ª edição, Addison-Wesley, 2006<br />Capítulo 17<br />2009/2010<br />41<br />Engenharia do Software I<br />

×