Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Eng.ª do Software - 4. Processos de software

16,403 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
  • Login to see the comments

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 />

×