ENGENHARIA DE SOFTWARE Professor Mrio Dantas Aula 02






































































- Slides: 70
ENGENHARIA DE SOFTWARE Professor Mário Dantas
Aula 02 2 Processos Existentes; Ciclo de vida de desenvolvimento de software;
Processo de Software - Introdução 3 O que é processo de software: �É um conjunto ( framework ) de atividades e resultados associados que geram um produto de software; � Há quatro atividades de processo de software fundamentais, a saber: Especificação do software; Desenvolvimento do Software; Validação do Software; Evolução do Software;
Processo de Software - Introdução 4 Uma Visão Genérica: 3 Fases Definição - “o que” Desenvolvimento - “como” Análise de Requisitos Análise do Sistema Planejamento do Projeto Geração do Código Teste Manutenção
Processo de Software - Introdução 5 Processo de Software é diferente de Engenharia de Software: � Processo define a abordagem; � Engenharia engloba também as tecnologias como métodos e ferramentas;
Processo de Software – Engenharia de Software 6 Já vimos que Engenharia de Software é: � Uma disciplina da engenharia que se ocupa de todos os aspectos do desenvolvimento de software; Para o IEEE (Instituto de Engenheiros Eletricistas e Eletrônicos) é: aplicação de uma abordagem sistemática, disciplinada e quantificável ao desenvolvimento, operação e manutenção de software, ou seja, a aplicação da engenharia ao software; � O estudo de abordagens do tipo declarado acima. �
Processo de Software – Engenharia de Software 7 ferramentas métodos processo foco na qualidade Analisando as definições anteriores podemos encarar a Engenharia de Software como uma tecnologia em camadas:
Processo de Software – Engenharia de Software 8 ferramentas métodos processo foco na qualidade É o “solo” e o porque de utilizarmos um processo de software. Gerenciamento da Qualidade Total e filosofias similares produzem uma mudança cultural que permite o desenvolvimento crescente de abordagens mais maduras para a Engenharia de Software.
Processo de Software – Engenharia de Software 9 ferramentas métodos processo foco na qualidade É a “fundação”; É o que intermedeia as camadas de tecnologias e permite um desenvolvimento de software racional e em tempo; Define um conjunto de áreas chave do processo que deve ser estabelecido para um uso efetivo da Engenharia de Software;
Processo de Software – Engenharia de Software 10 ferramentas métodos processo foco na qualidade É o “como fazer”; Englobam um conjunto de tarefas que inclui análise de requisitos, projeto, implementação, teste e manutenção;
Processo de Software – Engenharia de Software 11 ferramentas métodos processo foco na qualidade É o “instrumento apropriado”; Dão suporte automatizado ou semi-automatizado aos métodos; Quando as ferramentas que apoiam os métodos se integram, forma-se a Engenharia de Software auxiliada por computador – CASE – Computer Aided Software Engineering;
Processo de Software – Engenharia de Software 12 O objetivo desta aula é dar foco no PROCESSO de desenvolvimento de software e aos MODELOS existentes na literatura; Processo de software define uma abordagem; Modelo é uma descrição simplificada, uma abstração dessa abordagem;
Processo de Software – Modelo de Processo de Software 13 Um modelo de processo de software deve ser escolhido com base: � Na natureza do projeto e da aplicação; � Nos métodos e ferramentas a serem utilizados; � Nos controles e produtos que precisam ser entregues;
Processo de Software – Modelo de Processo de Software 14 Alguns modelos de processo: Modelo Seqüencial Linear Modelo RAD Modelos Evolucionários Modelo de Prototipação ( Descartáveis ) Incremental ( Exploratório ) Espiral ( Exploratório ) Técnicas de 4 a Geração
Processo de Software – Modelo Seqüencial Linear 15 Também conhecido como ciclo de vida clássico ou Modelo Cascata: � Modelo mais antigo e mais usado; � Modelado em função do ciclo de engenharia convencional; � Requer uma abordagem sistemática e seqüencial para o desenvolvimento de um software;
Processo de Software – Modelo Seqüencial Linear 16 Muitos aplicam esse modelo de forma estritamente linear: Engenharia de Sistemas / Informação Análise Projeto Codificaçã o Testes
Processo de Software – Modelo Seqüencial Linear 17 Mas o modelo original prevê a volta: Engenharia de Sistemas Análise de Requisitos Projeto Codificação Testes Manutenção
Processo de Software – Modelo Seqüencial Linear 18 Envolve a coleta de requisitos de todos os elementos do sistema; Engenharia de Sistemas Análise de Requisitos Projeto Codificação Testes Essa visão de sistema é essencial quando o software faz interface com outros elementos como HW, Manutençã o
Processo de Software – Modelo Seqüencial Linear 19 Processo de coleta dos requisitos é intensificado e concentrado especificamente no software. Deve-se compreender o domínio da informação, a função, desempenho e interfaces exigidos. Os requisitos (para o sistema e para o software) são documentados e Engenharia de Sistemas Análise de Requisitos Projeto Codificação Testes Manutençã o
Processo de Software – Modelo Seqüencial Linear 20 Tradução dos requisitos do software para um conjunto de representações que podem ser avaliadas quanto à qualidade, antes que a codificação se inicie Se concentra em 4 atributos do programa: Estrutura de Dados, Arquitetura de Software, Detalhes Procedimentais e Engenharia de Sistemas Análise de Requisitos Projeto Codificação Testes Manutençã o
Processo de Software – Modelo Seqüencial Linear 21 Tradução das representações do projeto para uma linguagem “artificial” resultando em instruções executáveis pelo computador. Engenharia de Sistemas Análise de Requisitos Projeto Codificação Testes Manutençã o
Processo de Software – Modelo Seqüencial Linear 22 Concentram-se: nos aspectos lógicos internos do software, garantindo que todas as instruções tenham sido testadas. nos aspectos funcionais externos, para descobrir erros e garantir que a entrada definida produza resultados que concordem com os Engenharia de Sistemas Análise de Requisitos Projeto Codificação Testes Manutençã o
Processo de Software – Modelo Seqüencial Linear 23 O software deverá Engenharia sofrer mudanças depois que for entregue ao cliente de Sistemas Análise de Requisitos Projeto Codificação Testes Manutençã o
Processo de Software – Modelo Seqüencial Linear 24 Problemas: � Projetos reais raramente seguem o fluxo sequencial proposto; � É dificil estabelecer todos os requisitos no começo do projeto na qual existe uma incerteza natural quanto a esses requisitos; Uma versão do software só vai ficar pronto em um ponto tradio do desenvolvimento; Assim se houver algum erro grave não detectado na análise ou projeto o resultado pode ser desastroso; � Há muitos estágios bloqueantes que permitem a ociosidade dos desenvolvedores em alguns momentos �
Processo de Software – Modelo Seqüencial Linear 25 Embora o Modelo Seqüencial Linear ou Ciclo de Vida Clássico tenha fragilidades, ele é significativamente melhor do que uma abordagem casual desenvolvimento de software. ao
MODELOS DE PROCESSO RAD – Rapid Application Development
Modelo RAD (Rapid Application Development) 27 É o modelo seqüencial linear, mas que enfatiza um desenvolvimento extremamente rápido; A “alta velocidade” é conseguida através de uma abordagem de construção baseada em componentes; Usado quando os requisitos são bem definidos e o escopo do sistema é restrito.
Modelo RAD 28 equipe # 3 equipe # 2 equipe # 1 modelagem do negócio modelagem dos dados modelagem do processo geração da aplicação teste e modificação 60 -90 dias modelagem do processo teste e modificação
Atividades do Modelo RAD 29 Modelagem do negócio: o fluxo de informação entre as funções do negócio são modeladas de maneira a responder às questões: modelagem do negócio modelagem dos dados que informação dirige o processo do negócio? que informação é gerada? quem gera a informação? geração da para onde a informação vai? aplicação quem a processa? teste e modificação modelagem do processo
Atividades do Modelo RAD 30 Modelagem dos dados: O fluxo de informação definido na fase anterior é refinado em um conjunto de objetos de dados que são necessários para dar suporte ao negócio; são identificadas as características de cada objeto e são definidos seus relacionamentos. modelagem do negócio modelagem dos dados modelagem do processo geração da aplicação teste e modificação
Atividades do Modelo RAD 31 modelagem do negócio modelagem dos dados modelagem do processo geração da aplicação Modelagem do processo: Os objetos de dados definidos são transformados para se obter o fluxo de informação necessário para implementar uma função do negócio; São criadas as descrições dos processamentos necessários para manipular esses objetos de dados. teste e modificação
Atividades do Modelo RAD 32 Geração da aplicação: modelagem do negócio O modelo RAD assume o uso de modelagem dos dados modelagem do processo geração da aplicação técnicas de 4 a. geração; ao invés de criar software de forma convencional, reusa componentes quando possível ou cria componentes reutilizáveis; Ferramentas automatizadas são utilizadas para gerar software. teste e modificação
Atividades do Modelo RAD 33 Teste e modificação: modelagem do negócio modelagem dos dados modelagem do processo geração da aplicação Por reutilizar componentes, muitas vezes eles já foram testados, o que reduz o tempo de teste; os novos componentes devem ser testados e as interfaces devem ser exercitadas teste e modificação
Modelo RAD 34 Quando usar? As restrições de tempo impostas pelo projeto demandam um escopo de escala. Quando a aplicação pode ser modularizada de forma que cada grande função possa ser completada em menos de 3 meses. Cada grande função pode ser alocada para uma equipe distinta e, depois são integradas para formar o todo.
Problemas com o Modelo RAD 35 Para projetos escaláveis, mas grandes, o RAD requer recursos humanos suficientes para criar um número adequado de equipes; RAD requer um comprometimento entre desenvolvedores e clientes para que as atividades possam ser realizadas rapidamente e o sistema seja concluído em um tempo abreviado; Se o comprometimento for abandonado por qualquer das partes, o projeto falhará; Não é apropriado quando os riscos são
MODELOS DE PROCESSO Modelos de Processo Evolucionários Descartáveis 36
MODELOS DE PROCESSO Prototipação 37
Processo de Software – Prototipação 38 Processo que possibilita que o desenvolvedor crie um modelo do software que deve ser construído. Idealmente, o modelo (protótipo) protótipo serve como um mecanismo para identificar os requisitos de software. Apropriado para quando o cliente definiu um conjunto de objetivos gerais para o software, mas não identificou requisitos de entrada, processamento e saída com detalhes.
Processo de Software – Prototipação 39 início fim obtenção dos requisitos projeto rápido construção produto construção protótipo refinamento protótipo avaliação protótipo
Processo de Software – Prototipação 40 Simplificando construa/revise protótipo ouça o cliente teste do protótipo pelo cliente
Processo de Software – Prototipação 41 início fim construção produto obtenção dos requisitos projeto rápido construção protótipo refinamento protótipo avaliação protótipo Obtenção dos Requisitos: desenvolvedor e cliente definem os objetivos gerais do software, identificam quais requisitos são conhecidos e as áreas que necessitam de definições adicionais. Projeto Rápido: representação dos aspectos do software que são visíveis ao usuário (abordagens de entrada e formatos de saída).
Processo de Software – Prototipação 42 início fim construção produto obtenção dos requisitos projeto rápido construção protótipo refinamento protótipo avaliação protótipo Construção Protótipo: implementação rápida do projeto. Avaliação do Protótipo: cliente e desenvolvedor avaliam o protótipo.
Processo de Software – Prototipação 43 início fim construção produto obtenção dos requisitos projeto rápido construção protótipo refinamento protótipo avaliação protótipo Refinamento dos Requisitos: cliente e desenvolvedor refinam os requisitos do software a ser desenvolvido. Ocorre neste ponto um processo de iteração que pode conduzir à 1ª. atividade até que as necessidades do cliente sejam satisfeitas e o desenvolvedor compreenda o que precisa ser feito.
Processo de Software – Prototipação 44 início fim construção produto obtenção dos requisitos projeto rápido construção protótipo refinamento protótipo avaliação protótipo Construção Produto: identificados os requisitos, o protótipo deve ser descartado e a versão de produção deve ser construída considerando os critérios de qualidade.
Processo de Software – Prototipação 45 Problemas: � Cliente não sabe que o software que ele vê, não considerou, durante o desenvolvimento, a qualidade global e a manutenibilidade a longo prazo. Não aceita bem a idéia de que a versão final do software vai ser construída e "força" a utilização do protótipo como produto final; � Desenvolvedor freqüentemente faz uma implementação comprometida (utilizando o que está disponível) com o objetivo de produzir rapidamente um protótipo. Depois de um tempo ele se familiariza com essas escolhas, e esquece que elas não são apropriadas para o produto final.
Processo de Software – Prototipação 46 Comentários: Ainda que possam ocorrer problemas, a prototipação é um ciclo de vida eficiente. A chave é definirem-se as regras do jogo logo no começo. O cliente e o desenvolvedor devem ambos concordar que o protótipo seja construído para servir como um mecanismo a fim de definir os requisitos.
MODELOS DE PROCESSO Modelos de Processo Evolucionários Exploratórios – Incremental, Espiral e Concorrente 47
Processo de Software – Modelos de Processo Evolucionários 48 Usado quando o deadline não é adequado para o desenvolvimento do software; a data de término não é realística; Uma versão limitada pode ser introduzida para atender à competitividade e pressões do negócio; São liberados “produtos core”; Os detalhes e extensões ainda devem ser definidos;
Processo de Software – Modelos de Processo Evolucionários 49 -Prototipação -Incremental -Espiral -Concorrente
Processo de Software – Modelo Incremental 50 Combina elementos do Modelo Linear com a filosofia da Prototipação. Aplica seqüências lineares numa abordagem de “saltos” à medida que o tempo progride Cada seqüência linear produz um incremento do software (proc. de texto) O processo se repete até que um produto completo seja produzido Difere da Prototipação pois a cada incremento produz uma versão operacional do software
Processo de Software – Modelo Incremental 51 Engenharia de Sistemas / Informação incremento 1 Projeto Análise produto liberado do incremento 1 Testes Codificaç ão incremento 2 Projeto Análise produto liberado do incremento 2 Testes Codificaç ão incremento 3 Análise Projeto Codificaç Testes produto liberado do incremento 3 ão incremento 4 Análise Projeto Testes Codificaç ão tempo produto liberado do incremento 4
Processo de Software – Modelo Espiral 52 Engloba a natureza iterativa da Prototipação com os aspectos sistemáticos e controlados do Modelo Linear Fornece o potencial para o desenvolvimento rápido de versões incrementais do software Cada clico da espiral é uma fase do desenvolvimento que sempre passa por 4 aspectos
Processo de Software – Modelo Espiral Cada loop da espira é uma fase de desenvolvimento do software; Planejamento Definição de Objetivos Desenvolvimento e Validação Avaliação e redução de risco
Processo de Software – Modelo Espiral (comentários) 54 É, atualmente, a abordagem mais realística para o desenvolvimento de software em grande escala. Usa uma abordagem que capacita o desenvolvedor e o cliente a entender e reagir aos riscos em cada etapa evolutiva. Pode ser difícil convencer os clientes que uma abordagem "evolutiva" é controlável. Exige considerável experiência na determinação de riscos e depende dessa experiência para ter sucesso.
Processo de Software – Modelo de Desenvolvimento Concorrente 55 É representado como uma série de grandes atividades técnicas, tarefas e seus estados associados. Ele define uma série de eventos que podem disparar transições de um estado para outro, para cada uma das atividades da engenharia de software. É freqüentemente usado como um paradigma para o desenvolvimento de aplicações Cliente/Servidor. Pode ser aplicado a todo tipo de desenvolvimento de software e fornece uma visão exata de como está o estado do projeto.
Processo de Software – Modelo de Desenvolvimento Concorrente 56 none Atividade de Análise em desenvolvimento sob inspeção aguardando mudanças sob revisão averiguado realizado
MODELOS DE PROCESSO Desenvolvimento orientado ao reuso 57
Processo de Software – Desenvolvimento orientado a reuso 58 Baseado em reutilização de componentes de software e que podem ser acessados com alguma infraestrutura de integração para estes componentes. Estágios do Processo � � Análise dos Componentes; Modificação dos Requisitos; Projeto de sistema com reuso; Desenvolvimento e Integração. Vantagem de reduzir a quantidade de software a ser desenvolvido, e reduzir os custos.
Processo de Software – Desenvolvimento Orientado a Reuso 59 Especificação dos Requisitos Análise dos Componentes Modificação dos Requisitos Projeto do Sistema com Reuso Desenvolvime nto e Integração Validação do Sistema
Processo de Software – Desenvolvimento Orientado a Reuso 60 Desvantagens: � Adequação dos requisitos são inevitáveis; � O produto final pode não ser aquele que o cliente pediu; � Difícil controle sobre a evolução do sistema pois os componentes evoluem independentemente;
MODELOS DE PROCESSO Modelos de Métodos Formais 61
Processo de Software – Modelo de Métodos Formais 62 Compreende um conjunto de atividades que determinam uma especificação matemática para o software; Utilizando métodos formais eliminam-se muitos problemas encontrados nos outros modelos, como p. ex. , ambigüidade, incompletitude e inconsistência, que podem ser corrigidas mais facilmente de forma não ad hoc, mas através de análise matemática; Promete o desenvolvimento de software livre de defeitos
Processo de Software – Modelo de Métodos Formais (comentários) 63 Atualmente esse modelo consome muito tempo e é muito caro; Como poucos desenvolvedores possuem o background necessário para utilizá-lo, são requeridos muitos cursos e treinamentos; É difícil usar tais modelos como meio de comunicação com a maioria dos clientes;
Processo de Software – Modelo de Métodos Formais 64 Definição de Requisitos Especificação Formal Transformaç ão Formal Integração e Teste do Sistema
Modelo de Métodos Formais Transformações Formais 65 Transformações Formais Prova de regularidade transformações
MODELOS DE PROCESSO Técnicas de Quarta Geração 66
Processo de Software – Técnicas de 4 a Geração 67 Concentra-se na capacidade de se especificar o software a uma máquina em um nível que esteja próximo à linguagem natural. Engloba um conjunto de ferramentas de software que possibilitam que: o sistema seja especificado em uma linguagem de alto nível e o código fonte seja gerado automaticamente a partir dessas especificações
Processo de Software – Técnicas de 4 a Geração 68 Obtenção dos Requisitos Estratégia do “Projeto” Implementaçã o usando 4 GL Testes
Processo de Software – Técnicas de 4 a Geração (comentários) 69 PROPONENTES: redução dramática no tempo de desenvolvimento do software (aumento de produtividade); OPONENTES: OPONENTES as 4 GL atuais não são mais fáceis de usar do que as linguagens de programação; o código fonte produzido é ineficiente a manutenibilidade de sistemas usando técnicas 4 G ainda é questionável
Processo de Software – Conclusão 70 ENGENHARIA DE SOFTWARE pode ser vista como uma abordagem de desenvolvimento de software elaborada com disciplina e métodos bem definidos.






































































