SlideShare uma empresa Scribd logo
1 de 43
Baixar para ler offline
ENGENHARIA DE
  SOFTWARE
 RESUMO DA AULA ANTERIOR
Definicao de Engenharia de
software
 estabelecimento e uso de sólidos
 princípios de engenharia para:
   Minimizar custos de desenvolvimento
   de software;
   Software confiável;
   Software eficientemente;
   Organizacao;
   Produtividade; e
   Software de qualidade
Etapas da Eng. Software

 Métodos
   Como fazer
 Ferramentas
   Apoio automatizado –CASE Tools
 Procedimentos
   Definem a sequência em que os
   métodos são aplicados.
Ciclo de Vida clássico da ES
Definição de
 Requisitos

               Análise


                         Desenho


                             Implementação


                                             Teste


                                                     Manutenção
Processo de Desenvolvimento

   Definição (O quê?)- Analise e
   Planeamento:
     o que será desenvolvido


   Desenvolvimento (Como?)- Desenho,
   Codificacao e Teste:
     como será desenvolvido


   Manutenção (Mudanças?)- Correcao,
   adaptacao e perfeicao:
     que mudanças ocorrerão depois
PARADIGMAS DA
ENG. DE SOFTWARE
    Definição, Caracterização,
   Vantagens e Desvantagens.
Paradigmas de Eng. de Software

  Incremental
  RAD
  Iterativo
  Formal
  Estruturado    Modelos de Ciclo de
  Lógico           Vida de Software
  Espiral
  Evolutivo
  OO
  Combinação de Paradigmas
  Técnicas de Quarta Geração
Paradigmas de Eng. de Software:
Escolha da Estrategia de deve
considerar:

   Natureza do projecto;
   Tipo da aplicação;
   Métodos e ferramentas que serão
   usados;
   Métodos de controle;
   Prazo de entrega;
   Produtos que serão entregues.
Incremental

                 Requisitos     Projecto
 Requisitos
                     em            da
 superficiais
                incrementos    arquitetura




 Desenvolv.      Validação    Integração     Validação
 incremento     incremento    incremento         do
                                                          Sistema
                                              sistema
                                                         completo

                  Sistema incompleto
Incremental
  Desenvolvimento através de incrementos
  sucessivas do âmbito do sistema;
  O sistema é alargado progressivamente;
  Ao invés de entregar o sistema completo,
  divide-se o sistema em partes de tal forma
  a cada entrega corresponder a alguma
  funcionalidade do sistema;
  Requisitos do usuário são priorizados e
  quanto maior a prioridade, mais cedo tal
  funcionalidade deve ser entregue;
  Uma vez que o desenvolvimento de um
  incremento seja iniciado, esses requisitos
  são fixados enquanto que os posteriores
  são deixados serem modificados;
Incremental - Vantagens

 Esta abordagem é útil para
   Problemas complexos;
   Recursos humanos insuficientes;
   Datas de entrega inflexíveis.
Incremental - Vantagens

 Solicitações dos clientes são
 entregues a cada incremento.
 Assim, as funcionalidades são
 entregues o mais cedo possível
 Incrementos iniciais servem de
 protótipo para obter requisitos para
 incrementos posteriores
 Diminuição do risco de falha de todo
 o projeto
 Serviços de maior prioridade tendem
 a receber maior ênfase em testes
Rapid Application
Development (RAD)
 É um modelo de processo de
 desenvolvimento de software
 iterativo e incremental;
 O ciclo de desenvolvimento é
 curto (entre 60 e 90 dias).
Rapid Application
   Development (RAD)
Equipa 1         Equipa 2            Equipa 3
                                          Modelado
Modelado
Modelado         Modelado
                 Modelado                 Modelado
                                          Da gestão
                                          Da gestão
Da gestão
Da gestão        Da gestão
                 Da gestão
                                                 Modelado
                                                 Modelado
     Modelado           Modelado
                        Modelado                 Dos dados
                                                 Dos dados
     Modelado
                        Dos dados
                        Dos dados
     Dos dados
     Dos dados                                          Modelado
                                                        Modelado
                                                          Dos
                                                           Dos
                              Modelado
                              Modelado                  processos
            Modelado
            Modelado
                                                        processos
                                 Dos
                                 Dos
              Dos
               Dos            processos
                              processos                        Geração de
                                                               Geração de
            processos
            processos                                          Aplicações
                                                               Aplicações

                                    Geração de
                                    Geração de
                 Geração de
                 Geração de         Aplicações
                                    Aplicações                          Testes e
                                                                        Testes e
                 Aplicações
                 Aplicações                                             entrega
                                                                         entrega


                                              Testes e
                                              Testes e
                         Testes e
                         Testes e             entrega
                                               entrega
                         entrega
                         entrega
RAD - Vantagens
  Permite o desenvolvimento rápido e/ou a
  prototipagem de aplicações;
  Enfatiza um ciclo de desenvolvimento
  extremamente curto (entre 60 e 90 dias);
  Cada função principal pode ser direcionada
  para uma equipe RAD separada e então
  integrada a formar um todo;
  Criação e reutilização de componentes;
  Visibilidade mais cedo (protótipos)
  Maior flexibilidade (desenvolvedores podem
  experimentar praticamente a vontade)
  Grande redução de codificação manual
  (wizards...);
  Envolvimento maior do usuário;
  Provável custo reduzido (tempo é dinheiro e
  também devido ao reuso);
RAD - Desvantagens

 Se uma aplicação não puder ser
 modularizada de modo que cada função
 principal seja completada em menos de 3
 meses, não é aconselhável o uso do RAD;
 Para projectos grandes (mas escaláveis) o
 RAD exige recursos humanos suficientes
 para criar o número correcto de equipes,
 isso implica em um alto custo com a
 equipe;
 O envolvimento com o usuário tem que ser
 activo;
 Comprometimento da equipe do projecto;
RAD - Desvantagens
O RAD não é aconselhável quando os
riscos técnicos são altos e não é indicada
quando se está testando novas
tecnologias;
Menos eficientes;
Perda de precisão científica (falta de
métodos formais);
Funções reduzidas (reuso, "timeboxing");
Problemas legais;
Requisitos podem não se encaixar
(conflitos entre desenvolvedores e clientes)
Sucessos anteriores são difíceis de se
reproduzir.
O RAD é apropriado quando

 A aplicação é do tipo "standalone";
 A performance não é o mais
 importante;
 A distribuição do produto é pequena;
 O escopo do projecto é restrito;
 O sistema pode ser dividido em
 vários módulos independentes;
 A tecnologia necessária tem mais de
 um ano de existência.
O RAD deve ser evitado
quando
 A aplicação precisa interagir com outros programas;
 Performance é essencial;
 O desenvolvimento não pode tirar vantagem de
 ferramentas de alto nível;
 A distribuição do produto será em grande escala;
 Para se construir sistemas operacionais
 (confiabilidade exigida alta demais)
 Jogos de computador (performance exigida muito
 alta)
 Riscos tecnológicos muito altos devido a tecnologia
 ter sido recém lançada;
 O sistema não pode ser modularizado.
Iterativo
  Aplicação do modelo cascata
iterativamente;
  As iterações iniciais atacam os
maiores riscos;
Iterativo
   Os requisitos do sistema SEMPRE
   mudam durante o desenvolvimento
   Iteração pode ser aplicado a
   qualquer um dos processos de
   desenvolvimento
   Duas abordagens são destacadas:
     Desenvolvimento incremental
     Desenvolvimento em espiral.
Iterativo
 Desenvolvimento iterativo antecipa a
 redução de riscos;
 Testes e integração são realizados
 desde o início, de forma contínua;
 Riscos críticos são resolvidos antes
 que grandes investimentos sejam
 realizados;
 Permite feedback dos usuários desde
 cedo;
 Pequenos objectivos, foco em curto-
 prazo;
 Progresso é medido de forma mais
 concreta;
 Implementações parciais podem ser
 implantadas;
Formal



Definição de   Especificação
 requisitos       formal



                        Transformação
                            formal



                                  Integração e
                                     testes
Formal

 Métodos formais
   Especificação matemática
   Exacta e rigorosa
   Detecta e corrige requisitos
   incompletos, ambíguos e
   inconsistentes
Formal

 Desvantagens
   Necessita de profissionais altamente
   qualificados para aplicar a técnica
   Alguns aspectos ainda são difíceis de
   especificar (GUI)
 Vantagens
   Garantia de segurança e confiabilidade
 Aplicações
   Sistemas críticos e complexos
Cascata
 Várias actividades executadas de forma
 sistemática e sequencial
Cascata
 Um dos mais antigos, e ainda um dos mais
 usados!
 Várias actividades executadas deforma
 sistemática e sequencial;
 Fixa pontos específicos para a entrega de
 artefactos;
 É simples e fácil de aplicar, facilitando o
 planeamento;
 Na prática, existe uma interacção entre as
 atividades e cada atividade pode levar a
 modificações nas anteriores;
 Pressupõe que os requisitos ficarão
 estáveis;
 Atrasa a redução de riscos.
Cascata - Vantagens


 Padroniza os métodos para análise,
 projecto, codificação, testes e
 manutenção.
 Etapas semelhantes às etapas
 genéricas aplicáveis a todos os
 paradigmas;
 Orientado a documentação;
 Manutenção é mais simples.
Cascata - Desvantagens
 Projectos reais raramente seguem o fluxo
 sequencial que esse modelo propõe.
 Sempre ocorre alguma interacção e/ou
 superposição;
 Dificilmente os clientes são capazes de
 relacionar todos os requisitos de uma só
 vez no início do projecto;
 Maioria dos programas só estará
 disponível quando o cronograma já está
 bastante adiantado;
 Dificuldades para se introduzir alterações
 quando o processo está avançado;
 Dificuldade para lidar com as mudanças
 nos requisitos do sistema
 Não gere riscos
Espiral
Espiral

 Análise de riscos como ferramenta;
 Essencial para o planeamento e
 gestão do projecto;
 Dificuldades para fechar o contrato;
 Complexo e requer experiência na
 avaliação de riscos!
Espiral - Vantagens

 Modelo evolutivo possibilita uma
 maior integração entre as fases e
 facilita a depuração e a manutenção
 do sistema.
 Permite que o projectista e cliente
 possa entender e reagir aos riscos
 em cada etapa evolutiva.
 Fácil de decidir o quando testar
Espiral - Desvantagens

 Avaliação dos riscos exige muita
 experiência;
 O modelo é relativamente novo e
 não tem sido amplamente utilizado;
 Bem aplicado somente a sistemas
 de larga escala;
 Sistemas devem ser produtos
 internos da empresa.
4ª Geração

 Ferramentas de 4ª Geração
   Suporte automatizado à
   especificação de requisitos.
 A ferramenta gera codigo-fonte,
 na base da especificação do
 desenvolvedor;
Combinação de Paradigmas

 Os paradigmas para a
 Engenharia de Software
 alcancam melhores resultados
 quando combinadas. Exemplo:
   Espiral resulta da combinacao
   entre a Prototipacao e cascata
   numa abordagem revolucionaria.
Evolutivo

                Atividades
               concorrentes

                                   Versão
               Especificação
                                   inicial


 Descrição                           Versões
               Desenvolvimento   intermediárias
 superficial


                                   Versão
                Validação
                                    final
Evolutivo

 Desenvolvimento exploratório
 (Protótipo evolucionário)
   Construa, avalie e evolua para produto
      Trabalhar com os clientes até se obter o
      produto final a partir de uma especificação
      bem-definida e completa do sistema.
 Protótipo descartável
   Construa, use e descarte
      Obter requisitos do cliente. Inicia-se com
      uma especificação incompleta e simples do
      sistema
Estruturado
Orientado a Objectos

 Métodos OO são voltados
 principalmente para sistemas
 complexos, que devem ser divididos
 para a distribuição dos trabalhos
 pela equipe;
 A abordagem OO se baseia em um
 desenvolvimento onde fases
 teoricamente já completadas são
 revistas continuamente, e alteradas
 se preciso;
 Iterativo e incremental.
Orientado a Objectos
                                               paralelo
                                   (reutilização de componentes)
Análise de Riscos
                                   Identificar classes candidatas

                    Engenharia      buscar classes na biblioteca
                    e Construção
                                     extrair classes, se existem

                                    desenvolver novas classes,
                                         se não existem
                                      adicionar novas classes
       recursivo
                                             à biblioteca
   (modelo evolutivo)
                                          construir n-ésima
                                        iteração do sistema


  Baseado em componentes
     Unified Development Process
     Utiliza UML
Selecção do Modelo

 Projectos pequenos: ciclo
 clássico
 Limites severos de tempo: RAD
 Data entrega muito próxima:
 modelo incremental.
 Sistemas Complexos com
 muitas mudanças de Requisitos:
 Orientadas a Objectos;
BIBLIOGRAFIA

 Gerry Coleman and Renaat Verbruggen. A quality
 software process for rapid application development,
 Software Quality Journal 7, pp. 107-122, 1998.
 Software Engineering. I.Sommerville;
 Engenharia de Software, Roger S. Pressman, 3.ª
 Edição.

 A Discipline for Software Engineering.
 W.S.Humphrey;
 http://pt.wikipedia.org/wiki/Engenharia_de_software,
 de 9/Fev/2007
TPC
1.   Faca um estudo comparativo dos seguintes
     paradigmas:
      a. Evolutivo e Espiral;

     b.   Incremental e Iterativo;
     c.   Estruturada e OO;
2.   Para cada uma das situacoes que modelo usaria
     para desenvolvimento de Software:
      a. Tempo reduzido (60 dias);

     b.   Sistema complexo, com muitos riscos;
     c.   Sistema com uma dimensão muito reduzida;
     d.   Sistema critico com alta precisão de
          processamento (logico ou matemático);
     e.   Implementação de um jogo de entretenimento;
3.   Para o desenvolvimento de um software para
     gestao de registos academicos da UST, que com
     binacao de modelos usaria? Justifique a sua
     escolha.

Mais conteúdo relacionado

Mais procurados

Modelo de Prototipação
Modelo de PrototipaçãoModelo de Prototipação
Modelo de PrototipaçãoJuliano Pires
 
Introdução à Engenharia de Software
Introdução à Engenharia de SoftwareIntrodução à Engenharia de Software
Introdução à Engenharia de Softwareelliando dias
 
Modelos de ciclo de vida de software
Modelos de ciclo de vida de softwareModelos de ciclo de vida de software
Modelos de ciclo de vida de softwareYuri Garcia
 
Aula 6 - Prototipação de telas
Aula 6 - Prototipação de telasAula 6 - Prototipação de telas
Aula 6 - Prototipação de telasJanynne Gomes
 
Ciclo de Vida Clássico da Engenharia de Software
Ciclo de Vida Clássico da Engenharia de SoftwareCiclo de Vida Clássico da Engenharia de Software
Ciclo de Vida Clássico da Engenharia de SoftwareEduardo Santos
 
A Evolucao dos Processos de Desenvolvimento de Software
A Evolucao dos Processos de Desenvolvimento de SoftwareA Evolucao dos Processos de Desenvolvimento de Software
A Evolucao dos Processos de Desenvolvimento de SoftwareRobson Silva Espig
 
Ciclo de vida de software
Ciclo de vida de softwareCiclo de vida de software
Ciclo de vida de softwarediha36
 
O Processo de Desenvolvimento de Software
O Processo de Desenvolvimento de SoftwareO Processo de Desenvolvimento de Software
O Processo de Desenvolvimento de SoftwareCamilo de Melo
 
AULA 1 - CONCEITOS GERAIS APLICADOS NO CICLO DE VIDA DO SOFTWARE E MODELOS ...
AULA 1 - CONCEITOS GERAIS  APLICADOS NO CICLO DE VIDA  DO SOFTWARE E MODELOS ...AULA 1 - CONCEITOS GERAIS  APLICADOS NO CICLO DE VIDA  DO SOFTWARE E MODELOS ...
AULA 1 - CONCEITOS GERAIS APLICADOS NO CICLO DE VIDA DO SOFTWARE E MODELOS ...Janynne Gomes
 
Introdução a engenharia de software aula 02
Introdução a engenharia de software   aula 02Introdução a engenharia de software   aula 02
Introdução a engenharia de software aula 02Franklin Matos Correia
 
Modelo cascata apresentação
Modelo cascata apresentaçãoModelo cascata apresentação
Modelo cascata apresentaçãoerysonsi
 

Mais procurados (20)

Modelo de Prototipação
Modelo de PrototipaçãoModelo de Prototipação
Modelo de Prototipação
 
Introdução à Engenharia de Software
Introdução à Engenharia de SoftwareIntrodução à Engenharia de Software
Introdução à Engenharia de Software
 
Prototipação
PrototipaçãoPrototipação
Prototipação
 
Modelos de ciclo de vida de software
Modelos de ciclo de vida de softwareModelos de ciclo de vida de software
Modelos de ciclo de vida de software
 
Capitulo 02 sommerville
Capitulo 02 sommervilleCapitulo 02 sommerville
Capitulo 02 sommerville
 
Aula 6 - Prototipação de telas
Aula 6 - Prototipação de telasAula 6 - Prototipação de telas
Aula 6 - Prototipação de telas
 
Modelos de processos de software
Modelos de processos de softwareModelos de processos de software
Modelos de processos de software
 
Ciclo de Vida Clássico da Engenharia de Software
Ciclo de Vida Clássico da Engenharia de SoftwareCiclo de Vida Clássico da Engenharia de Software
Ciclo de Vida Clássico da Engenharia de Software
 
Modelo em Espiral
Modelo em EspiralModelo em Espiral
Modelo em Espiral
 
A Evolucao dos Processos de Desenvolvimento de Software
A Evolucao dos Processos de Desenvolvimento de SoftwareA Evolucao dos Processos de Desenvolvimento de Software
A Evolucao dos Processos de Desenvolvimento de Software
 
Engenharia de software - Prototipo
Engenharia de software - PrototipoEngenharia de software - Prototipo
Engenharia de software - Prototipo
 
Ciclo de vida de software
Ciclo de vida de softwareCiclo de vida de software
Ciclo de vida de software
 
O Processo de Desenvolvimento de Software
O Processo de Desenvolvimento de SoftwareO Processo de Desenvolvimento de Software
O Processo de Desenvolvimento de Software
 
Modelo V
Modelo VModelo V
Modelo V
 
Aula 2 - Processos de Software
Aula 2 - Processos de SoftwareAula 2 - Processos de Software
Aula 2 - Processos de Software
 
Eng.ª do Software - 4. Processos de software
Eng.ª do Software - 4. Processos de softwareEng.ª do Software - 4. Processos de software
Eng.ª do Software - 4. Processos de software
 
AULA 1 - CONCEITOS GERAIS APLICADOS NO CICLO DE VIDA DO SOFTWARE E MODELOS ...
AULA 1 - CONCEITOS GERAIS  APLICADOS NO CICLO DE VIDA  DO SOFTWARE E MODELOS ...AULA 1 - CONCEITOS GERAIS  APLICADOS NO CICLO DE VIDA  DO SOFTWARE E MODELOS ...
AULA 1 - CONCEITOS GERAIS APLICADOS NO CICLO DE VIDA DO SOFTWARE E MODELOS ...
 
Introdução a engenharia de software aula 02
Introdução a engenharia de software   aula 02Introdução a engenharia de software   aula 02
Introdução a engenharia de software aula 02
 
Modelo cascata apresentação
Modelo cascata apresentaçãoModelo cascata apresentação
Modelo cascata apresentação
 
[CEFETMG][ESw] Aula 2 - Processos de software
[CEFETMG][ESw] Aula 2 - Processos de software[CEFETMG][ESw] Aula 2 - Processos de software
[CEFETMG][ESw] Aula 2 - Processos de software
 

Destaque

Processos de desenvolvimento de software técnicas de 4ª geração
Processos de desenvolvimento de software   técnicas de 4ª geraçãoProcessos de desenvolvimento de software   técnicas de 4ª geração
Processos de desenvolvimento de software técnicas de 4ª geraçãoRafael Augusto
 
Era da Informação e seus impactos na empresa e sociedade
Era da Informação e seus impactos na empresa e sociedadeEra da Informação e seus impactos na empresa e sociedade
Era da Informação e seus impactos na empresa e sociedadeAlex Silva
 
Paradigma = modelo, padrão, exemplo
Paradigma = modelo, padrão, exemploParadigma = modelo, padrão, exemplo
Paradigma = modelo, padrão, exemploThiago Reis
 
A era da informação
A era da informaçãoA era da informação
A era da informaçãoboasnovassena
 
Respostas exercício 1 bdi
Respostas exercício 1   bdiRespostas exercício 1   bdi
Respostas exercício 1 bdiPatty Muniz
 
Milagre das rosas
Milagre das rosasMilagre das rosas
Milagre das rosasRodrigo
 
Isabel de Aragão - Rainha, Amparadora e Modelo Evolutivo
Isabel de Aragão - Rainha, Amparadora e Modelo EvolutivoIsabel de Aragão - Rainha, Amparadora e Modelo Evolutivo
Isabel de Aragão - Rainha, Amparadora e Modelo EvolutivoPonte de Luz ASEC
 
Gerenciamento de Requisitos como Alternativa de Otimização na Manutenção de S...
Gerenciamento de Requisitos como Alternativa de Otimização na Manutenção de S...Gerenciamento de Requisitos como Alternativa de Otimização na Manutenção de S...
Gerenciamento de Requisitos como Alternativa de Otimização na Manutenção de S...Marcelo Schumacher
 
FGP, MBA Gerenciamento de Projetos, Gerenciamento de Escopo, Aula 01
FGP, MBA Gerenciamento de Projetos, Gerenciamento de Escopo, Aula 01FGP, MBA Gerenciamento de Projetos, Gerenciamento de Escopo, Aula 01
FGP, MBA Gerenciamento de Projetos, Gerenciamento de Escopo, Aula 01Aurivan
 
QUEBRANDO PARADIGMAS: GESTÃO DE PESSOAS
QUEBRANDO PARADIGMAS: GESTÃO DE PESSOASQUEBRANDO PARADIGMAS: GESTÃO DE PESSOAS
QUEBRANDO PARADIGMAS: GESTÃO DE PESSOAS9In solutions
 
Scrum apresentação
Scrum apresentaçãoScrum apresentação
Scrum apresentaçãoArmando Couto
 
Scrum - Um Método Ágil de Desenvolvimento de Sistemas
Scrum - Um Método Ágil de Desenvolvimento de SistemasScrum - Um Método Ágil de Desenvolvimento de Sistemas
Scrum - Um Método Ágil de Desenvolvimento de SistemasWomen Techmakers Sorocaba
 
Desenvolvimento Incremental com Test Driven Development
Desenvolvimento Incremental com Test Driven DevelopmentDesenvolvimento Incremental com Test Driven Development
Desenvolvimento Incremental com Test Driven DevelopmentLeonardo de Aguiar
 
Desenvolvimento Iterativo e Incremental
Desenvolvimento Iterativo e IncrementalDesenvolvimento Iterativo e Incremental
Desenvolvimento Iterativo e IncrementalRobson Silva Espig
 
Introdução às metodologias ágeis de desenvolvimento de software
Introdução às metodologias ágeis de desenvolvimento de softwareIntrodução às metodologias ágeis de desenvolvimento de software
Introdução às metodologias ágeis de desenvolvimento de softwareJaime Schettini
 

Destaque (20)

Processos de desenvolvimento de software técnicas de 4ª geração
Processos de desenvolvimento de software   técnicas de 4ª geraçãoProcessos de desenvolvimento de software   técnicas de 4ª geração
Processos de desenvolvimento de software técnicas de 4ª geração
 
Novos paradigmas[1]
Novos paradigmas[1]Novos paradigmas[1]
Novos paradigmas[1]
 
Era da Informação e seus impactos na empresa e sociedade
Era da Informação e seus impactos na empresa e sociedadeEra da Informação e seus impactos na empresa e sociedade
Era da Informação e seus impactos na empresa e sociedade
 
Paradigma = modelo, padrão, exemplo
Paradigma = modelo, padrão, exemploParadigma = modelo, padrão, exemplo
Paradigma = modelo, padrão, exemplo
 
OHIO 2014
OHIO 2014OHIO 2014
OHIO 2014
 
A era da informação
A era da informaçãoA era da informação
A era da informação
 
Respostas exercício 1 bdi
Respostas exercício 1   bdiRespostas exercício 1   bdi
Respostas exercício 1 bdi
 
Gerencia do Escopo do Projeto
Gerencia do Escopo do ProjetoGerencia do Escopo do Projeto
Gerencia do Escopo do Projeto
 
Milagre das rosas
Milagre das rosasMilagre das rosas
Milagre das rosas
 
Isabel de Aragão - Rainha, Amparadora e Modelo Evolutivo
Isabel de Aragão - Rainha, Amparadora e Modelo EvolutivoIsabel de Aragão - Rainha, Amparadora e Modelo Evolutivo
Isabel de Aragão - Rainha, Amparadora e Modelo Evolutivo
 
Gerenciamento de Requisitos como Alternativa de Otimização na Manutenção de S...
Gerenciamento de Requisitos como Alternativa de Otimização na Manutenção de S...Gerenciamento de Requisitos como Alternativa de Otimização na Manutenção de S...
Gerenciamento de Requisitos como Alternativa de Otimização na Manutenção de S...
 
FGP, MBA Gerenciamento de Projetos, Gerenciamento de Escopo, Aula 01
FGP, MBA Gerenciamento de Projetos, Gerenciamento de Escopo, Aula 01FGP, MBA Gerenciamento de Projetos, Gerenciamento de Escopo, Aula 01
FGP, MBA Gerenciamento de Projetos, Gerenciamento de Escopo, Aula 01
 
Os Paradigmas
Os ParadigmasOs Paradigmas
Os Paradigmas
 
QUEBRANDO PARADIGMAS: GESTÃO DE PESSOAS
QUEBRANDO PARADIGMAS: GESTÃO DE PESSOASQUEBRANDO PARADIGMAS: GESTÃO DE PESSOAS
QUEBRANDO PARADIGMAS: GESTÃO DE PESSOAS
 
Scrum apresentação
Scrum apresentaçãoScrum apresentação
Scrum apresentação
 
Scrum - Um Método Ágil de Desenvolvimento de Sistemas
Scrum - Um Método Ágil de Desenvolvimento de SistemasScrum - Um Método Ágil de Desenvolvimento de Sistemas
Scrum - Um Método Ágil de Desenvolvimento de Sistemas
 
Desenvolvimento Incremental com Test Driven Development
Desenvolvimento Incremental com Test Driven DevelopmentDesenvolvimento Incremental com Test Driven Development
Desenvolvimento Incremental com Test Driven Development
 
Desenvolvimento Iterativo e Incremental
Desenvolvimento Iterativo e IncrementalDesenvolvimento Iterativo e Incremental
Desenvolvimento Iterativo e Incremental
 
Introdução às metodologias ágeis de desenvolvimento de software
Introdução às metodologias ágeis de desenvolvimento de softwareIntrodução às metodologias ágeis de desenvolvimento de software
Introdução às metodologias ágeis de desenvolvimento de software
 
Igp latarias
Igp latariasIgp latarias
Igp latarias
 

Semelhante a Engenharia de Software: Paradigmas

BaixadaTech 2012 - Qualidade de Software
BaixadaTech 2012 - Qualidade de SoftwareBaixadaTech 2012 - Qualidade de Software
BaixadaTech 2012 - Qualidade de SoftwareAdriano Bertucci
 
[Portfólio Acadêmico] [FIT] Mapas de navegação, lista de tarefas e fluxograma...
[Portfólio Acadêmico] [FIT] Mapas de navegação, lista de tarefas e fluxograma...[Portfólio Acadêmico] [FIT] Mapas de navegação, lista de tarefas e fluxograma...
[Portfólio Acadêmico] [FIT] Mapas de navegação, lista de tarefas e fluxograma...Rafael Kanaoka
 
Engenharia De Software
Engenharia De SoftwareEngenharia De Software
Engenharia De SoftwareCursoSENAC
 
Modelos de Processo de Software Parte 1
Modelos de Processo de Software Parte 1Modelos de Processo de Software Parte 1
Modelos de Processo de Software Parte 1Elaine Cecília Gatto
 
Segurança no Desenvolvimento de Software
Segurança no Desenvolvimento de SoftwareSegurança no Desenvolvimento de Software
Segurança no Desenvolvimento de SoftwareMarcelo Fleury
 
Engenharia de-software-1217199594686494-9
Engenharia de-software-1217199594686494-9Engenharia de-software-1217199594686494-9
Engenharia de-software-1217199594686494-9wilsonguns
 
Introdução a Engenharia de Software - Prof.ª Cristiane Fidelix
Introdução a Engenharia de Software - Prof.ª Cristiane FidelixIntrodução a Engenharia de Software - Prof.ª Cristiane Fidelix
Introdução a Engenharia de Software - Prof.ª Cristiane FidelixCris Fidelix
 
Es17 predicao de defeitos em software
Es17   predicao de defeitos em softwareEs17   predicao de defeitos em software
Es17 predicao de defeitos em softwareVictor Hugo
 
Qualidade de Software com Visual Studio 2012
Qualidade de Software com Visual Studio 2012Qualidade de Software com Visual Studio 2012
Qualidade de Software com Visual Studio 2012Adriano Bertucci
 
DevOps - Melhores práticas na plataforma microsoft
DevOps - Melhores práticas na plataforma microsoftDevOps - Melhores práticas na plataforma microsoft
DevOps - Melhores práticas na plataforma microsoftIgor Abade
 
X-Zone - Garantia da Qualidade de Software
X-Zone - Garantia da Qualidade de SoftwareX-Zone - Garantia da Qualidade de Software
X-Zone - Garantia da Qualidade de SoftwareAlexandreBartie
 
T@rget trust curso de introdução ao processo de teste de software
T@rget trust   curso de introdução ao processo de teste de softwareT@rget trust   curso de introdução ao processo de teste de software
T@rget trust curso de introdução ao processo de teste de softwareTargettrust
 
T@rget trust curso de introdução ao processo de teste de software
T@rget trust   curso de introdução ao processo de teste de softwareT@rget trust   curso de introdução ao processo de teste de software
T@rget trust curso de introdução ao processo de teste de softwareTargettrust
 

Semelhante a Engenharia de Software: Paradigmas (20)

Aula1 introducao engsw
Aula1 introducao engswAula1 introducao engsw
Aula1 introducao engsw
 
Processo de Software
Processo de SoftwareProcesso de Software
Processo de Software
 
BaixadaTech 2012 - Qualidade de Software
BaixadaTech 2012 - Qualidade de SoftwareBaixadaTech 2012 - Qualidade de Software
BaixadaTech 2012 - Qualidade de Software
 
[Portfólio Acadêmico] [FIT] Mapas de navegação, lista de tarefas e fluxograma...
[Portfólio Acadêmico] [FIT] Mapas de navegação, lista de tarefas e fluxograma...[Portfólio Acadêmico] [FIT] Mapas de navegação, lista de tarefas e fluxograma...
[Portfólio Acadêmico] [FIT] Mapas de navegação, lista de tarefas e fluxograma...
 
Engenharia De Software
Engenharia De SoftwareEngenharia De Software
Engenharia De Software
 
Aula2 processos sw
Aula2 processos swAula2 processos sw
Aula2 processos sw
 
152191 11993
152191 11993152191 11993
152191 11993
 
Métodos Ágeis - Aula 01
Métodos Ágeis - Aula 01Métodos Ágeis - Aula 01
Métodos Ágeis - Aula 01
 
Modelos de Processo de Software Parte 1
Modelos de Processo de Software Parte 1Modelos de Processo de Software Parte 1
Modelos de Processo de Software Parte 1
 
Segurança no Desenvolvimento de Software
Segurança no Desenvolvimento de SoftwareSegurança no Desenvolvimento de Software
Segurança no Desenvolvimento de Software
 
ALM focado em resultados
ALM focado em resultadosALM focado em resultados
ALM focado em resultados
 
Rational Unified Process (RUP)
Rational Unified Process (RUP)Rational Unified Process (RUP)
Rational Unified Process (RUP)
 
Engenharia de-software-1217199594686494-9
Engenharia de-software-1217199594686494-9Engenharia de-software-1217199594686494-9
Engenharia de-software-1217199594686494-9
 
Introdução a Engenharia de Software - Prof.ª Cristiane Fidelix
Introdução a Engenharia de Software - Prof.ª Cristiane FidelixIntrodução a Engenharia de Software - Prof.ª Cristiane Fidelix
Introdução a Engenharia de Software - Prof.ª Cristiane Fidelix
 
Es17 predicao de defeitos em software
Es17   predicao de defeitos em softwareEs17   predicao de defeitos em software
Es17 predicao de defeitos em software
 
Qualidade de Software com Visual Studio 2012
Qualidade de Software com Visual Studio 2012Qualidade de Software com Visual Studio 2012
Qualidade de Software com Visual Studio 2012
 
DevOps - Melhores práticas na plataforma microsoft
DevOps - Melhores práticas na plataforma microsoftDevOps - Melhores práticas na plataforma microsoft
DevOps - Melhores práticas na plataforma microsoft
 
X-Zone - Garantia da Qualidade de Software
X-Zone - Garantia da Qualidade de SoftwareX-Zone - Garantia da Qualidade de Software
X-Zone - Garantia da Qualidade de Software
 
T@rget trust curso de introdução ao processo de teste de software
T@rget trust   curso de introdução ao processo de teste de softwareT@rget trust   curso de introdução ao processo de teste de software
T@rget trust curso de introdução ao processo de teste de software
 
T@rget trust curso de introdução ao processo de teste de software
T@rget trust   curso de introdução ao processo de teste de softwareT@rget trust   curso de introdução ao processo de teste de software
T@rget trust curso de introdução ao processo de teste de software
 

Mais de Portal_do_estudante_ADS (16)

Diagrama de classes
Diagrama de classesDiagrama de classes
Diagrama de classes
 
Diagramas de pacotes
Diagramas de pacotesDiagramas de pacotes
Diagramas de pacotes
 
Diagramas de distribuicao
Diagramas de distribuicaoDiagramas de distribuicao
Diagramas de distribuicao
 
Diagramas de componentes
Diagramas de componentesDiagramas de componentes
Diagramas de componentes
 
Aula10 diagrama colaboracao
Aula10 diagrama colaboracaoAula10 diagrama colaboracao
Aula10 diagrama colaboracao
 
Aula9 diagrama de_sequencia
Aula9 diagrama de_sequenciaAula9 diagrama de_sequencia
Aula9 diagrama de_sequencia
 
Aula8 diagrama de_objectos
Aula8 diagrama de_objectosAula8 diagrama de_objectos
Aula8 diagrama de_objectos
 
Aula1 eng software
Aula1 eng softwareAula1 eng software
Aula1 eng software
 
Aula capitulo9 diagrama_estados
Aula capitulo9 diagrama_estadosAula capitulo9 diagrama_estados
Aula capitulo9 diagrama_estados
 
Aula 7 diagramas_classes2
Aula 7 diagramas_classes2Aula 7 diagramas_classes2
Aula 7 diagramas_classes2
 
Aula 6 -_casos_de_uso
Aula 6 -_casos_de_usoAula 6 -_casos_de_uso
Aula 6 -_casos_de_uso
 
Aula 5 -_fundamentos_de_uml
Aula 5 -_fundamentos_de_umlAula 5 -_fundamentos_de_uml
Aula 5 -_fundamentos_de_uml
 
Aula 4 -_metodologia_e_tecnicas_de_analise_oo
Aula 4 -_metodologia_e_tecnicas_de_analise_ooAula 4 -_metodologia_e_tecnicas_de_analise_oo
Aula 4 -_metodologia_e_tecnicas_de_analise_oo
 
Aula -diagrama_de_actividade
Aula  -diagrama_de_actividadeAula  -diagrama_de_actividade
Aula -diagrama_de_actividade
 
Aula 3 -_fundamentos_sobre_aoo
Aula 3 -_fundamentos_sobre_aooAula 3 -_fundamentos_sobre_aoo
Aula 3 -_fundamentos_sobre_aoo
 
Rup vs. xp
Rup vs. xpRup vs. xp
Rup vs. xp
 

Engenharia de Software: Paradigmas

  • 1. ENGENHARIA DE SOFTWARE RESUMO DA AULA ANTERIOR
  • 2. Definicao de Engenharia de software estabelecimento e uso de sólidos princípios de engenharia para: Minimizar custos de desenvolvimento de software; Software confiável; Software eficientemente; Organizacao; Produtividade; e Software de qualidade
  • 3. Etapas da Eng. Software Métodos Como fazer Ferramentas Apoio automatizado –CASE Tools Procedimentos Definem a sequência em que os métodos são aplicados.
  • 4. Ciclo de Vida clássico da ES Definição de Requisitos Análise Desenho Implementação Teste Manutenção
  • 5. Processo de Desenvolvimento Definição (O quê?)- Analise e Planeamento: o que será desenvolvido Desenvolvimento (Como?)- Desenho, Codificacao e Teste: como será desenvolvido Manutenção (Mudanças?)- Correcao, adaptacao e perfeicao: que mudanças ocorrerão depois
  • 6. PARADIGMAS DA ENG. DE SOFTWARE Definição, Caracterização, Vantagens e Desvantagens.
  • 7. Paradigmas de Eng. de Software Incremental RAD Iterativo Formal Estruturado Modelos de Ciclo de Lógico Vida de Software Espiral Evolutivo OO Combinação de Paradigmas Técnicas de Quarta Geração
  • 8. Paradigmas de Eng. de Software: Escolha da Estrategia de deve considerar: Natureza do projecto; Tipo da aplicação; Métodos e ferramentas que serão usados; Métodos de controle; Prazo de entrega; Produtos que serão entregues.
  • 9. Incremental Requisitos Projecto Requisitos em da superficiais incrementos arquitetura Desenvolv. Validação Integração Validação incremento incremento incremento do Sistema sistema completo Sistema incompleto
  • 10. Incremental Desenvolvimento através de incrementos sucessivas do âmbito do sistema; O sistema é alargado progressivamente; Ao invés de entregar o sistema completo, divide-se o sistema em partes de tal forma a cada entrega corresponder a alguma funcionalidade do sistema; Requisitos do usuário são priorizados e quanto maior a prioridade, mais cedo tal funcionalidade deve ser entregue; Uma vez que o desenvolvimento de um incremento seja iniciado, esses requisitos são fixados enquanto que os posteriores são deixados serem modificados;
  • 11. Incremental - Vantagens Esta abordagem é útil para Problemas complexos; Recursos humanos insuficientes; Datas de entrega inflexíveis.
  • 12. Incremental - Vantagens Solicitações dos clientes são entregues a cada incremento. Assim, as funcionalidades são entregues o mais cedo possível Incrementos iniciais servem de protótipo para obter requisitos para incrementos posteriores Diminuição do risco de falha de todo o projeto Serviços de maior prioridade tendem a receber maior ênfase em testes
  • 13. Rapid Application Development (RAD) É um modelo de processo de desenvolvimento de software iterativo e incremental; O ciclo de desenvolvimento é curto (entre 60 e 90 dias).
  • 14. Rapid Application Development (RAD) Equipa 1 Equipa 2 Equipa 3 Modelado Modelado Modelado Modelado Modelado Modelado Da gestão Da gestão Da gestão Da gestão Da gestão Da gestão Modelado Modelado Modelado Modelado Modelado Dos dados Dos dados Modelado Dos dados Dos dados Dos dados Dos dados Modelado Modelado Dos Dos Modelado Modelado processos Modelado Modelado processos Dos Dos Dos Dos processos processos Geração de Geração de processos processos Aplicações Aplicações Geração de Geração de Geração de Geração de Aplicações Aplicações Testes e Testes e Aplicações Aplicações entrega entrega Testes e Testes e Testes e Testes e entrega entrega entrega entrega
  • 15. RAD - Vantagens Permite o desenvolvimento rápido e/ou a prototipagem de aplicações; Enfatiza um ciclo de desenvolvimento extremamente curto (entre 60 e 90 dias); Cada função principal pode ser direcionada para uma equipe RAD separada e então integrada a formar um todo; Criação e reutilização de componentes; Visibilidade mais cedo (protótipos) Maior flexibilidade (desenvolvedores podem experimentar praticamente a vontade) Grande redução de codificação manual (wizards...); Envolvimento maior do usuário; Provável custo reduzido (tempo é dinheiro e também devido ao reuso);
  • 16. RAD - Desvantagens Se uma aplicação não puder ser modularizada de modo que cada função principal seja completada em menos de 3 meses, não é aconselhável o uso do RAD; Para projectos grandes (mas escaláveis) o RAD exige recursos humanos suficientes para criar o número correcto de equipes, isso implica em um alto custo com a equipe; O envolvimento com o usuário tem que ser activo; Comprometimento da equipe do projecto;
  • 17. RAD - Desvantagens O RAD não é aconselhável quando os riscos técnicos são altos e não é indicada quando se está testando novas tecnologias; Menos eficientes; Perda de precisão científica (falta de métodos formais); Funções reduzidas (reuso, "timeboxing"); Problemas legais; Requisitos podem não se encaixar (conflitos entre desenvolvedores e clientes) Sucessos anteriores são difíceis de se reproduzir.
  • 18. O RAD é apropriado quando A aplicação é do tipo "standalone"; A performance não é o mais importante; A distribuição do produto é pequena; O escopo do projecto é restrito; O sistema pode ser dividido em vários módulos independentes; A tecnologia necessária tem mais de um ano de existência.
  • 19. O RAD deve ser evitado quando A aplicação precisa interagir com outros programas; Performance é essencial; O desenvolvimento não pode tirar vantagem de ferramentas de alto nível; A distribuição do produto será em grande escala; Para se construir sistemas operacionais (confiabilidade exigida alta demais) Jogos de computador (performance exigida muito alta) Riscos tecnológicos muito altos devido a tecnologia ter sido recém lançada; O sistema não pode ser modularizado.
  • 20. Iterativo Aplicação do modelo cascata iterativamente; As iterações iniciais atacam os maiores riscos;
  • 21. Iterativo Os requisitos do sistema SEMPRE mudam durante o desenvolvimento Iteração pode ser aplicado a qualquer um dos processos de desenvolvimento Duas abordagens são destacadas: Desenvolvimento incremental Desenvolvimento em espiral.
  • 22. Iterativo Desenvolvimento iterativo antecipa a redução de riscos; Testes e integração são realizados desde o início, de forma contínua; Riscos críticos são resolvidos antes que grandes investimentos sejam realizados; Permite feedback dos usuários desde cedo; Pequenos objectivos, foco em curto- prazo; Progresso é medido de forma mais concreta; Implementações parciais podem ser implantadas;
  • 23. Formal Definição de Especificação requisitos formal Transformação formal Integração e testes
  • 24. Formal Métodos formais Especificação matemática Exacta e rigorosa Detecta e corrige requisitos incompletos, ambíguos e inconsistentes
  • 25. Formal Desvantagens Necessita de profissionais altamente qualificados para aplicar a técnica Alguns aspectos ainda são difíceis de especificar (GUI) Vantagens Garantia de segurança e confiabilidade Aplicações Sistemas críticos e complexos
  • 26. Cascata Várias actividades executadas de forma sistemática e sequencial
  • 27. Cascata Um dos mais antigos, e ainda um dos mais usados! Várias actividades executadas deforma sistemática e sequencial; Fixa pontos específicos para a entrega de artefactos; É simples e fácil de aplicar, facilitando o planeamento; Na prática, existe uma interacção entre as atividades e cada atividade pode levar a modificações nas anteriores; Pressupõe que os requisitos ficarão estáveis; Atrasa a redução de riscos.
  • 28. Cascata - Vantagens Padroniza os métodos para análise, projecto, codificação, testes e manutenção. Etapas semelhantes às etapas genéricas aplicáveis a todos os paradigmas; Orientado a documentação; Manutenção é mais simples.
  • 29. Cascata - Desvantagens Projectos reais raramente seguem o fluxo sequencial que esse modelo propõe. Sempre ocorre alguma interacção e/ou superposição; Dificilmente os clientes são capazes de relacionar todos os requisitos de uma só vez no início do projecto; Maioria dos programas só estará disponível quando o cronograma já está bastante adiantado; Dificuldades para se introduzir alterações quando o processo está avançado; Dificuldade para lidar com as mudanças nos requisitos do sistema Não gere riscos
  • 31. Espiral Análise de riscos como ferramenta; Essencial para o planeamento e gestão do projecto; Dificuldades para fechar o contrato; Complexo e requer experiência na avaliação de riscos!
  • 32. Espiral - Vantagens Modelo evolutivo possibilita uma maior integração entre as fases e facilita a depuração e a manutenção do sistema. Permite que o projectista e cliente possa entender e reagir aos riscos em cada etapa evolutiva. Fácil de decidir o quando testar
  • 33. Espiral - Desvantagens Avaliação dos riscos exige muita experiência; O modelo é relativamente novo e não tem sido amplamente utilizado; Bem aplicado somente a sistemas de larga escala; Sistemas devem ser produtos internos da empresa.
  • 34. 4ª Geração Ferramentas de 4ª Geração Suporte automatizado à especificação de requisitos. A ferramenta gera codigo-fonte, na base da especificação do desenvolvedor;
  • 35. Combinação de Paradigmas Os paradigmas para a Engenharia de Software alcancam melhores resultados quando combinadas. Exemplo: Espiral resulta da combinacao entre a Prototipacao e cascata numa abordagem revolucionaria.
  • 36. Evolutivo Atividades concorrentes Versão Especificação inicial Descrição Versões Desenvolvimento intermediárias superficial Versão Validação final
  • 37. Evolutivo Desenvolvimento exploratório (Protótipo evolucionário) Construa, avalie e evolua para produto Trabalhar com os clientes até se obter o produto final a partir de uma especificação bem-definida e completa do sistema. Protótipo descartável Construa, use e descarte Obter requisitos do cliente. Inicia-se com uma especificação incompleta e simples do sistema
  • 39. Orientado a Objectos Métodos OO são voltados principalmente para sistemas complexos, que devem ser divididos para a distribuição dos trabalhos pela equipe; A abordagem OO se baseia em um desenvolvimento onde fases teoricamente já completadas são revistas continuamente, e alteradas se preciso; Iterativo e incremental.
  • 40. Orientado a Objectos paralelo (reutilização de componentes) Análise de Riscos Identificar classes candidatas Engenharia buscar classes na biblioteca e Construção extrair classes, se existem desenvolver novas classes, se não existem adicionar novas classes recursivo à biblioteca (modelo evolutivo) construir n-ésima iteração do sistema Baseado em componentes Unified Development Process Utiliza UML
  • 41. Selecção do Modelo Projectos pequenos: ciclo clássico Limites severos de tempo: RAD Data entrega muito próxima: modelo incremental. Sistemas Complexos com muitas mudanças de Requisitos: Orientadas a Objectos;
  • 42. BIBLIOGRAFIA Gerry Coleman and Renaat Verbruggen. A quality software process for rapid application development, Software Quality Journal 7, pp. 107-122, 1998. Software Engineering. I.Sommerville; Engenharia de Software, Roger S. Pressman, 3.ª Edição. A Discipline for Software Engineering. W.S.Humphrey; http://pt.wikipedia.org/wiki/Engenharia_de_software, de 9/Fev/2007
  • 43. TPC 1. Faca um estudo comparativo dos seguintes paradigmas: a. Evolutivo e Espiral; b. Incremental e Iterativo; c. Estruturada e OO; 2. Para cada uma das situacoes que modelo usaria para desenvolvimento de Software: a. Tempo reduzido (60 dias); b. Sistema complexo, com muitos riscos; c. Sistema com uma dimensão muito reduzida; d. Sistema critico com alta precisão de processamento (logico ou matemático); e. Implementação de um jogo de entretenimento; 3. Para o desenvolvimento de um software para gestao de registos academicos da UST, que com binacao de modelos usaria? Justifique a sua escolha.