Eng.ª do Software - 4. Processos de software

15,120 views

Published on

Processos 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
2 Comments
8 Likes
Statistics
Notes
No Downloads
Views
Total views
15,120
On SlideShare
0
From Embeds
0
Number of Embeds
87
Actions
Shares
0
Downloads
699
Comments
2
Likes
8
Embeds 0
No embeds

No notes for slide

Eng.ª do Software - 4. Processos 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. Sumário<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 />Engenharia do Software I<br />2<br />
  3. 3. Processos de Software<br />2009/2010<br />3<br />Engenharia do Software I<br />
  4. 4. Na aula anterior<br />Processo da engenharia de requisitos<br />Estudos de viabilidade<br />Eliciação e análise de requisitos<br />Validação de requisitos<br />Gestão de requisitos<br />2009/2010<br />4<br />Engenharia do Software I<br />
  5. 5. Processo de software<br />Conjunto estruturado de actividades necessárias para desenvolver sistema de software<br />Especificação<br />Desenho<br />Validação<br />Evolução<br />Modelo de processo de software é representação abstracta de processo, descrevendo-o sob um ponto de vista particular<br />2009/2010<br />5<br />Engenharia do Software I<br />
  6. 6. Modelos genéricos de processo de software<br />Há muitas variantes destes modelos. Por exemplo, o desenvolvimento formal, que usa um processo semelhante ao do modelo em cascata, mas em que a especificação, que é formal, é refinada ao longo de várias etapas até se atingir um desenho implementável.<br />2009/2010<br />6<br />Engenharia do Software I<br />
  7. 7. Modelo em cascata<br />Definição de requisitos<br />Etapas<br />Desenho do sistema e do software<br />Implementação e testes unitários<br />Integração e testes de sistema<br />O principal inconveniente deste modelo é que dificulta lidar com mudanças depois do processo estar em andamento. Tem de se completar cada uma das fases antes de avançar para a fase seguinte.<br />Operação e manutenção<br />2009/2010<br />7<br />Engenharia do Software I<br />
  8. 8. Problemas do modelo em cascata<br />Segmentação inflexível do projecto em etapas distintas dificulta resposta a modificações nos requisitos do cliente<br />Apropriado apenas quando requisitos são bem compreendidos e modificações se previrem bastante limitadas<br />Sobretudo grandes projectos de engenharia de sistemas com sistema desenvolvido em vários locais<br />Poucos negócios têm requisitos estáveis.<br />2009/2010<br />8<br />Engenharia do Software I<br />
  9. 9. Desenvolvimento evolutivo<br />2009/2010<br />9<br />Engenharia do Software I<br />
  10. 10. Actividades concorrentes<br />Desenvolvimento evolutivo<br />Especificação<br />Versão inicial<br />Descrição geral<br />Desenvolvimento<br />Versões intermédias<br />Validação<br />Versão final<br />2009/2010<br />10<br />Engenharia do Software I<br />
  11. 11. Desenvolvimento evolutivo<br />Problemas<br />Fala de visibilidade do processo<br />Sistemas muitas vezes mal estruturados<br />Podem ser necessárias competências especiais (e.g., em linguagens de prototipagem rápida)<br />Aplicabilidade<br />Sistemas interactivos de pequena ou média dimensão<br />Partes de sistemas de grande dimensão (e.g., interface com utilizador)<br />Sistemas com tempo de vida curto<br />2009/2010<br />11<br />Engenharia do Software I<br />
  12. 12. Engenharia do software baseada em componentes<br />Baseia-se em reutilização sistemática<br />Sistemas integrados a partir de componentes existentes ou sistemas comerciais prontos a usar<br />Etapas do processo<br />Análise de componentes<br />Modificação de requisitos<br />Desenho do sistema com reutilização<br />Desenvolvimento e integração<br />Abordagem mais usada à medida que a normalização de componentes vai progredindo.<br />COTS (Commercial-Off-The-Shelf)<br />2009/2010<br />12<br />Engenharia do Software I<br />
  13. 13. Desenvolvimento orientado pela reutilização<br />Especificação de requisitos<br />Análise de componentes<br />Modificação de requisitos<br />Desenho do sistema com reutilização<br />Desenvolvimento e integração<br />Validação do sistema<br />2009/2010<br />13<br />Engenharia do Software I<br />
  14. 14. Iteração de processos<br />Requisitos do sistema evoluem sempre ao longo de um projecto…<br />…logo, para sistemas de grande dimensão, iterações do processo são sempre parte desse processo<br />Iterações são repetições das etapas iniciais do processo<br />2009/2010<br />14<br />Engenharia do Software I<br />
  15. 15. Iteração de processos<br />Iteração aplica-se a qualquer modelo genérico de processo<br />Duas abordagens (relacionadas)<br />Entrega incremental<br />Desenvolvimento em espiral<br />2009/2010<br />15<br />Engenharia do Software I<br />
  16. 16. Entrega incremental<br />Em vez de entrega única, desenvolvimento e entrega divididos em incrementos, cada um entregando parte da funcionalidade<br />Requisitos do utilizador prioritizados; requisitos prioritários desenvolvidos primeiro<br />Logo que se inicia desenvolvimento de um incremento, seus requisitos são congelados; requisitos de incrementos posteriores continuam a evoluir<br />2009/2010<br />16<br />Engenharia do Software I<br />
  17. 17. Desenvolvimento incremental<br />Definir visão geral dos requisitos<br />Atribuir requisitos a incrementos<br />Desenhar arquitectura do sistema<br />Desenvolver incremento do sistema<br />Validar incremento<br />Integrar incremento<br />Validar sistema<br />Sistema final<br />Sistema incompleto<br />2009/2010<br />17<br />Engenharia do Software I<br />
  18. 18. Vantagens do desenvolvimento incremental<br />Cada incremento entrega valor ao cliente; funcionalidade do sistema disponível mais cedo<br />Incrementos iniciais como protótipos ajudam eliciação de requisitos para novos incrementos<br />Menor risco de falha global do projecto<br />Serviços prioritários do sistema tendem a ser os mais testados<br />2009/2010<br />18<br />Engenharia do Software I<br />
  19. 19. XP – Extreme Programming<br />Abordagem ao desenvolvimento<br />Baseada no desenvolvimento e entrega de pequenos incrementos de funcionalidade<br />Assenta em <br />Melhorias constantes do código<br />Utilizador envolvido na equipa de desenvolvimento<br />Programação em pares<br />Capítulo 17 do livro. Ver também http://www.extremeprogramming.org/.<br />2009/2010<br />19<br />Engenharia do Software I<br />
  20. 20. Desenvolvimento em espiral<br />Processo como espiral e não sequência de actividades com retrocesso<br />Espiras representam fases do processo<br />Sem fases fixas como especificação ou desenho – espiras escolhidas segundo necessário<br />Riscos avaliados e resolvidos explicitamente ao longo do processo<br />2009/2010<br />20<br />Engenharia do Software I<br />
  21. 21. Modelo em espiral<br />2009/2010<br />21<br />Engenharia do Software I<br />Custo cumulativo<br />Progresso ao longo dos passos<br />Avaliação de alternativas, identificação e resolução de riscos.<br />Determinação de objectivos, alternativas e restrições<br />Análise de risco<br />Análise de risco<br />Análise de risco<br />Protótipo operacional<br />Partição de compromisso<br />Protótipo3<br />AnálISE risco<br />Protótipo2<br />Protótipo1<br />Revisão<br />Simulações<br />Plan-Req.<br />e ciclo<br />vida<br />Modelos<br />Conceito de operação<br />Benchmarks<br />Requisitos do software<br />Planeamento de desenvolvimento<br />Desenho de pormenor<br />Desenho do produto de software<br />Validação de requisitos<br />Código<br />Planeamento de <br />integração e testes<br />Validação e verificação do desenho<br />TESTES UNITÁRIOS<br />Planeamento das próximas fases<br />TESTES de integração<br />Desenvolvimento e verificação do produto do próximo nível<br />TESTES de aceitação<br />Implemen-tação<br />
  22. 22. Sectores do modelo espiral<br />2009/2010<br />22<br />Engenharia do Software I<br />
  23. 23. Actividades do processo<br />Especificação de software<br />Desenho e implementação de software<br />Validação de software<br />Evolução de software<br />2009/2010<br />23<br />Engenharia do Software I<br />
  24. 24. Especificação do software<br />Processo de estabelecer serviços requeridos e restrições à operação e desenvolvimento do sistema<br />Processo de engenharia de requisitos<br />Estudo de viabilidade<br />Eliciação e análise de requisitos<br />Especificação de requisitos<br />Validação de requisitos<br />2009/2010<br />24<br />Engenharia do Software I<br />
  25. 25. Desenho e implementação do software<br />Processo de converter especificação do sistema em sistema executável<br />Desenho de software – Desenhar estrutura de software realizando especificação<br />Implementação – Traduzir estrutura de software em programa executável<br />Estas actividades estão intimamente relacionadas e podem ser entrelaçadas<br />2009/2010<br />25<br />Engenharia do Software I<br />
  26. 26. Actividades do processo de desenho<br />Desenho arquitectural<br />Especificação abstracta<br />Desenho de interfaces<br />Desenho de componentes<br />Desenho de estruturas de dados<br />Desenho de algoritmos<br />2009/2010<br />Engenharia do Software I<br />26<br />
  27. 27. Processo de desenho de software<br />2009/2010<br />27<br />Engenharia do Software I<br />Especificação de requisitos<br />Desenho arquitectural<br />Especificação abstracta<br />Actividades de desenho<br />Arquitectura do sistema<br />Desenho de interfaces<br />Especificação do software<br />Desenho de componentes<br />Especificação da interface<br />Desenho de estruturas de dados<br />Especificação dos componentes<br />Produtos<br />de desenho<br />Desenho de algoritmos<br />Especificação das estruturas de dados<br />Especificação dos algoritmos<br />
  28. 28. Métodos estruturados<br />Abordagens sistemáticas ao desenvolvimento de desenhos de software<br />Desenho normalmente documentados como conjunto de modelos gráficos<br />Modelo de objectos<br />Modelo de sequência<br />Modelo de transição de estados<br />Modelo estrutural<br />Modelo de fluxo de dados<br />2009/2010<br />Engenharia do Software I<br />28<br />
  29. 29. Programação e depuração<br />Tradução de desenho em programa e remoção de erros do programa<br />Programação é actividade pessoal – não há processo genérico de programação<br />Programadores efectuam alguns testes para revelar falhas no programa e as remover no processo de depuração<br />2009/2010<br />Engenharia do Software I<br />29<br />No entanto, XP prescreve programação em pares e TDD.<br />
  30. 30. Processo de depuração<br />2009/2010<br />30<br />Engenharia do Software I<br />Desenhar correcção do erro<br />Testar programa de novo<br />Localizar erro<br />Corrigir erro<br />
  31. 31. Validação de software<br />Verificação e validação (V & V) mostra que sistema está conforme especificação e cumpre requisitos do cliente<br />Inclui processos de verificação e revisão, bem como testes de sistema<br />Testes de sistema incluem execução do sistema com casos de teste resultantes da especificação dos dados reais a processar<br />2009/2010<br />Engenharia do Software I<br />31<br />
  32. 32. Processo de teste<br />2009/2010<br />32<br />Engenharia do Software I<br />Testes de componentes<br />Testes de sistema<br />Testes de aceitação<br />
  33. 33. Etapas de teste<br />2009/2010<br />Engenharia do Software I<br />33<br />
  34. 34. Especificação de requisitos<br />Serviço<br />Testes de aceitação<br />Fases de teste (modelo em V)<br />2009/2010<br />34<br />Engenharia do Software I<br />Especificação de sistema<br />Desenho de sistema<br />Testes de integração de sistema<br />Plano de testes de integração de subsistemas<br />Plano de testes de integração de sistemas<br />Plano de testes de aceitação<br />Desenho de pormenor<br />Testes de integração de subsistemas<br />Codificação e teste de módulos e unidades<br />
  35. 35. Evolução de software<br />Software inerentemente flexível e mutável<br />Requisitos mudam devido a alterações nas circunstâncias do negócio, logo software de suporte tem de evoluir e mudar também<br />Demarcação entre desenvolvimento e evolução (manutenção) torna-se menos clara à medida que há menos sistemas totalmente novos<br />2009/2010<br />Engenharia do Software I<br />35<br />
  36. 36. Evolução de sistema<br />2009/2010<br />36<br />Engenharia do Software I<br />Aferição dos sistemas existentes<br />Definição de requisitos do sistema<br />Proposta de modificações ao sistema<br />Modificação dos sistemas<br />Sistemas existentes<br />Novo sistema<br />
  37. 37. Rational Unified Process<br />Modelo moderno de processo com origem no trabalho no UML e processo associado<br />Descrito normalmente segundo três perspectivas<br />Dinâmica – Mostra fases ao longo do tempo<br />Estática – Mostra as actividades do processo<br />Prática – Sugere boas práticas<br />2009/2010<br />Engenharia do Software I<br />37<br />
  38. 38. Rational Unified Process<br />Produto/infra-estrutura que organizações de desenvolvimento de software podem personalizar<br />Combina os três modelos de processo de software genéricos<br />Em cascata<br />Evolutivo<br />Baseado em componentes<br />2009/2010<br />Engenharia do Software I<br />38<br />
  39. 39. Modelo de fases do RUP<br />2009/2010<br />39<br />Engenharia do Software I<br />Iteração de fase<br />Começo<br />Elaboração<br />Construção<br />Transição<br />
  40. 40. Fases do RUP<br />2009/2010<br />Engenharia do Software I<br />40<br />
  41. 41. O RUP<br />2009/2010<br />Engenharia do Software I<br />41<br />
  42. 42. Boas práticas RUP<br />Desenvolver o software iterativamente<br />Gerir os requisitos<br />Usar arquitecturas baseadas em componentes<br />Modelar visualmente o software<br />Verificar a qualidade do software<br />Controlar modificações ao software<br />2009/2010<br />Engenharia do Software I<br />42<br />
  43. 43. Fluxos de trabalho estáticos<br />2009/2010<br />Engenharia do Software I<br />43<br />
  44. 44. Fluxos de trabalho estáticos<br />2009/2010<br />Engenharia do Software I<br />44<br />
  45. 45. CASE (Computer-Aided Software Engineering)<br />Software de suporte aos processos de desenvolvimento e evolução de software<br />Automação de actividades<br />Editores gráficos para desenvolvimento de modelos do sistema<br />Dicionários de dados para gestão das entidades de desenho<br />Construtores de interfaces gráficas com o utilizador<br />Depuradores para suportar a descoberta de falhas nos programas<br />Tradutores automatizados para gerar novas versões de um programa<br />2009/2010<br />Engenharia do Software I<br />45<br />
  46. 46. Tecnologia CASE<br />Levou a melhorias significativas no processo de software, mas não tão grandes se havia previsto<br />Engenharia do software exige pensamento criativo, que não se automatiza facilmente<br />Engenharia do software é uma actividade de equipa passando-se muito tempo em interacções dentro da equipa quando o projecto é de grande dimensão. A tecnologia CASE não suporta estas interacções.<br />2009/2010<br />Engenharia do Software I<br />46<br />
  47. 47. Classificação CASE<br />2009/2010<br />Engenharia do Software I<br />47<br />
  48. 48. Classificação funcional<br />2009/2010<br />Engenharia do Software I<br />48<br />
  49. 49. Classificação funcional<br />2009/2010<br />Engenharia do Software I<br />49<br />
  50. 50. Classificação por actividade<br />2009/2010<br />Engenharia do Software I<br />50<br />
  51. 51. Classificação por integração<br />2009/2010<br />Engenharia do Software I<br />51<br />
  52. 52. A reter<br />Processos de software são actividades envolvidas na produção e evolução de sistemas de software<br />Modelos de processos de software são representações abstractas desses processos<br />Actividades gerais são especificação, desenho e implementação, validação e evolução<br />Modelos genéricos de processos descrevem organização dos processos de software. Exemplos: em cascata, desenvolvimento evolutivo e engenharia do software baseada em componentes<br />2009/2010<br />Engenharia do Software I<br />52<br />
  53. 53. A reter<br />Modelos de processos iterativos descrevem processo de software como ciclo de actividades<br />Engenharia de requisitos é processo de desenvolvimento de especificações de software<br />Processos de desenho e implementação transformam especificação em programa executável<br />Validação envolve verificar que sistema satisfaz especificação e necessidades dos utilizadores<br />2009/2010<br />Engenharia do Software I<br />53<br />
  54. 54. A reter<br />Evolução respeita a modificações no sistema depois de em produção<br />RUP é modelo genérico de processo que separa actividades de fases<br />Tecnologia CASE suporta actividades do processo de software<br />2009/2010<br />Engenharia do Software I<br />54<br />
  55. 55. A ler<br />IanSommerville, Software Engineering, 8.ª edição, Addison-Wesley, 2006<br />Capítulo 4<br />2009/2010<br />55<br />Engenharia do Software I<br />

×