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