SlideShare una empresa de Scribd logo
1 de 31
Descargar para leer sin conexión
Engenharia de Software
Unidade II – Processos de Software

Objetivo: Apresentar os principais paradigmas e modelos
de processos de software, demonstrando o ciclo de vida do
desenvolvimento de software e enfatizando os processos
de especificação de requisitos, projeto, implementação,
testes e mudanças
                                 Prof. Nécio de Lima Veras
Processos de Desenvolvimento de
Software
 Vimos anteriormente que os processos definem uma
  estrutura, que consiste em áreas de processos chave.
 Percebemos também que Sommerville subdivide em quatro
  atividades básicas:
    Especificação;
    Desenvolvimento;
    Validação; e
    Evolução.

 Partindo disso, muitos modelos já foram
  propostos...
Roteiro...
 Então para esta aula, veremos:
   Definições de processos e modelos de
    processos de software;
   Alguns modelos existentes:
         Cascata;
         Evolucionário;
         Desenvolvimento incremental;
         Espiral; e
         Prototipação.
Definições
 Processo de software:
     “É uma seqüência coerente de práticas que objetiva o
      desenvolvimento ou evolução de sistemas de
      software. Estas práticas englobam as atividades de
      especificação, projeto, implementação, testes e
      caracterizam-se pela interação de ferramentas,
      pessoas e métodos”.
 Modelo de processo de software:
     “Um modelo de processo de software é uma
      representação abstrata de um processo. Ele
      apresenta uma descrição de um processo a partir de
      uma perspectiva específica”.
O Modelo em Cascata
 Primeiro modelo publicado do processo de
  desenvolvimento de software;
 Originou-se de outros processos de
  engenharia;
 Retrata um desenvolvimento gradual e possui
  seqüência de passos em ordem que devem
  ser seguidos.
 Pode consumir um
  tempo estimado entre
  seis e dezoito meses;
O Modelo em Cascata:
Principais Estágios
   Análise e Definição de
    Requisitos: as funções, as
    restrições e os objetivos do
    sistema são estabelecidos
    por meio de consulta aos
    usuários do sistema. Em
    seguida, são definidos em
    detalhes e servem como
    uma especificação do
    sistema.
O Modelo em Cascata:
Principais Estágios
   Projeto de Sistemas e
    Software: o processo de
    projeto de sistemas agrupa
    os requisitos em sistemas
    de hardware e software.
    Envolve a identificação e a
    descrição das abstrações
    fundamentais do sistema de
    software e suas relações.
O Modelo em Cascata:
Principais Estágios
   Implementação e Testes de
    Unidade: Durante este
    estágio, o projeto do
    software é compreendido
    como um conjunto de
    programas ou unidades de
    programa. O teste de
    unidade envolve verificar se
    cada uma das unidades
    atendem à sua
    especificação.
O Modelo em Cascata:
Principais Estágios
   Integração e Teste de
    sistemas: as unidades de
    programa ou programas
    individuais são integrados e
    testados como um sistema
    completo a fim de garantir
    que os requisitos de
    software foram atendidos.
    Depois do teste, o software
    é entregue ao cliente.
O Modelo em Cascata:
Principais Estágios
   Operação e manutenção: O
    sistema é instalado e
    colocado em operação.
    Envolve corrigir erros que
    não foram descobertos em
    estágios anteriores,
    melhorando a implemen-
    tação e descobrindo novos
    requisitos
O Modelo em Cascata: Problemas
 Particionamento inflexível do projeto em
  fases distintas;
 Isso torna difícil responder a requisitos do
  usuário que mudam;
 Portanto, esse modelo é apropriado somente
  quando os requisitos são bem
  compreendidos;
O modelo Evolucionário
 Tem com base a ideia de desenvolver uma implementação
  inicial, expor o resultado ao comentário do usuário e fazer
  seu aprimoramento por meio de muitas versões, até que
  tenha sido desenvolvido;
 A especificação, desenvolvimento e validação são
  executados concorrentemente para gerar um retorno
  rápido;
O modelo Evolucionário
 Pode ser:
   Exploratório: tem como objetivo trabalhar
    com o cliente a fim de explorar seus requisitos
    e entregar um sistema final. São feitas partes
    inicias e acrescentadas novas de acordo com
    o desenvolvimento.
   Protótipos descartáveis: tenta compreender
    os melhor os requisitos a partir de protótipos e
    então desenvolver uma especificação de
    requisitos completa.
O modelo Evolucionário
 Problemas:
   O processo não é visível: como o sistema é
    desenvolvido rapidamente, não há tempo de
    documentar as versões;
   Os sistemas são mal-estruturados: mudanças
    constantes podem corromper a estrutura do
    software;
   Requer ferramentas e técnicas especiais: que
    nem sempre são disponíveis ou são
    aplicáveis ao caso.
O modelo Evolucionário
 Aplicabilidade:
   Para sistemas interativos pequenos ou de
    médio porte
   Para partes de sistemas grandes (p.ex., a
    interface com o usuário)
   Para sistemas de vida curta.
O modelo Desenvolvimento
Incremental
 É uma variação do modelo Cascata;
O modelo Desenvolvimento
Incremental
 A ideia é alargar pouco-a-pouco;
 Analogia à construção de uma mansão;
O modelo Desenvolvimento
Incremental
 Vantagens:
      Redução dos riscos envolvendo custos a um único incremento.
      Redução do risco de lançar o projeto no mercado fora da data
       planejada. Identificando os riscos numa fase inicial o esforço
       despendido para gerenciá-los ocorre cedo, quando as pessoas
       estão sob menos pressão do que numa fase final de projeto.
      Aceleração do tempo de desenvolvimento do projeto como um
       todo, porque os desenvolvedores trabalham de maneira mais
       eficiente quando buscam resultados de escopo pequeno e claro.
      Reconhecimento de uma realidade freqüentemente ignorada: as
       necessidades dos usuários e os requisitos correspondentes não
       podem ser totalmente definidos no início do processo.
      Este modelo de operação facilita a adaptação a mudanças de
       requisitos.
O modelo Desenvolvimento
Incremental
 Desvantagens:
      Dificuldade de gerenciamento. Isso ocorre porque as fases de do
       ciclo podem estar ocorrendo de forma simultânea.
      O usuário pode se entusiasmar excessivamente com a primeira
       versão do sistema e pensar que tal versão já corresponde ao
       sistema como um todo.
      Como todo modelo esta sujeito a riscos de projeto:
           O projeto pode não satisfazer aos requisitos do usuário.
           A verba do projeto pode acabar.
           O sistema de software pode não ser adaptável, manutenível ou
            extensível.
           O sistema de software pode ser entregue ao usuário tarde
            demais.
O modelo Espiral
 O processo é representado como uma espiral, em vez de
  uma seqüência de atividades com caminhos de retorno
 Cada volta na espiral representa uma fase no processo
 Não há fases fixas, tais como especificação ou projeto
      As voltas na espiral são escolhidas dependendo do que for
       exigido
 Os riscos são explicitamente avaliados e resolvidos
  durante todo o processo
 Para cada iteração temos:
      Envolvimento do cliente;
      Seis e vinte e quatro meses de duração
       (presumidamente);
      Prazo suficiente para que o cliente tenha um brainstorm;
O modelo Espiral
O modelo Espiral: Setores
 Definição do objetivo
     Identificam-se os objetivos específicos da fase
 Avaliação e redução de risco
     Os riscos são avaliados e são adotadas as atividades para
      reduzir os ricos principais
 Desenvolvimento e avaliação
     É escolhido um modelo de desenvolvimento para o
      sistema, que pode ser qualquer um dos modelos
      genéricos
 Planejamento
     O projeto é revisado e a próxima fase da espiral é
      planejada
O modelo Prototipação
 Busca, principalmente, velocidade no
  desenvolvimento;
 O cliente “enxerga” telas e relatórios resultantes do
  software, com os quais ele terá alguma pequena
  interação.
 O usuário deve ser envolvido para opinar sobre as
  telas e relatórios do software, de maneira que se
  consiga torná-lo quase que co-autor do
  desenvolvimento responsabilizando-o também, desta
  forma, pelo sucesso final do software, uma vez que
  terá tido participação ativa na montagem do mesmo.
O modelo Prototipação

   Análise de   Desenvolvimento
                                  Experimentação
   Requisitos     de Protótipo



                   Revisão



                                  Codificação e
                 Detalhamento
                                     Testes



  Manutenção      Implantação
O modelo Prototipação
 Perigos:
   Cliente “empolgar-se”;
   Pressão a fim de que concessões de
    implementações ocorram para a urgência da
    implantação, sugerindo-se que o protótipo
    seja evoluído e entre rapidamente em
    funcionamento.
Interseção entre os modelo?
 Longo período de tempo para o desenvolvimento;
 Volume muito grande de documentação e planejamento;
 Fases maiores ainda => Big Design Up Front (BDUF);
 Um software BDUF implica em:
      O planejamento é completado e aperfeiçoado antes
       mesmo de iniciar a codificação, o que praticamente
       inviabiliza uma mudança brusca de escopo [Fox e
       Patterson 2012].
 E agora, para onde vamos?
Agilidade
 Um grupo em fevereiro de 2001, chamado de Agile Alliance,
  começou a descobrir maneiras melhores e mais leves de
  desenvolver software valorizando:
      pessoas e interações ao invés de processos e ferramentas;
      softwares funcionando no lugar de documentações
       abrangentes;
      colaborações com clientes do que negociações de contratos
       e respostas à mudanças por planos fechados.
 Esses valores originaram o   Manifesto Ágil com outros
  DOZE princípios que regem a filosofia de criar softwares com
  agilidade [BECK, 2001]
Agilidade
 O modelo é baseado em    mudanças
  abrangentes;
 O desenvolvedor deve melhorar    continuamente
  um protótipo incompleto até que o cliente fique feliz com
  o resultado;
 Algumas práticas são enfatizadas:
   Test-Driven Development (TDD);
   User Stories; e
   Velocity.
Contraste com os outros
modelos

É tão rápido que novas versões são
disponibilizadas ao cliente a cada duas
semanas e novos recursos são adicionados
continuamente ao mesmo protótipo até que o
cliente esteja satisfeito [Fox e Patterson 2012].
Exercícios
Referências
 Beck, K., et al. (2001). "Manifesto for Agile Software
  Development". Agile Alliance. http://agilemanifesto.org/.
  Acessado em 18 de agosto de 2012.
 Fox, A., Patterson, D. (2012). “Engineering Long-Lasting
  Software: An Agile Approach Using SaaS and Cloud
  Computing”, Alpha Edition. Strawberry Canyon LLC, 2012.
 Pressman, R. S. (2005). “Software engineering: a
  practitioner‟s approach”, 6 ed. New York:
  MacGraw-Hill, 2005.

Más contenido relacionado

La actualidad más candente

Metodologias ágeis de desenvolvimento de software por Givanaldo Rocha
Metodologias ágeis de desenvolvimento de software por Givanaldo RochaMetodologias ágeis de desenvolvimento de software por Givanaldo Rocha
Metodologias ágeis de desenvolvimento de software por Givanaldo RochaFernando Palma
 
Processos de Desenvolvimento de Software - teoria e prática
Processos de Desenvolvimento de Software - teoria e práticaProcessos de Desenvolvimento de Software - teoria e prática
Processos de Desenvolvimento de Software - teoria e práticaRalph Rassweiler
 
Modelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane Fidelix
Modelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane FidelixModelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane Fidelix
Modelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane FidelixCris Fidelix
 
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 - Introdução a Engenharia de Software
Aula - Introdução a Engenharia de SoftwareAula - Introdução a Engenharia de Software
Aula - Introdução a Engenharia de SoftwareCloves da Rocha
 
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
 
Engenharia De Software
Engenharia De SoftwareEngenharia De Software
Engenharia De SoftwareCursoSENAC
 
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
 
Engenharia de Software - Conceitos e Modelos de Desenvolvimento
Engenharia de Software - Conceitos e Modelos de Desenvolvimento Engenharia de Software - Conceitos e Modelos de Desenvolvimento
Engenharia de Software - Conceitos e Modelos de Desenvolvimento Sérgio Souza Costa
 
Documentação do software
Documentação do softwareDocumentação do software
Documentação do softwarecifjovo02
 
Aula 1 requisitos
Aula 1   requisitosAula 1   requisitos
Aula 1 requisitoslicardino
 
Engenharia de requisitos
Engenharia de requisitosEngenharia de requisitos
Engenharia de requisitosMailson Queiroz
 
Ciclo de vida de software
Ciclo de vida de softwareCiclo de vida de software
Ciclo de vida de softwarediha36
 

La actualidad más candente (20)

Aula4 levantamento requisitos
Aula4 levantamento requisitosAula4 levantamento requisitos
Aula4 levantamento requisitos
 
Metodologias ágeis de desenvolvimento de software por Givanaldo Rocha
Metodologias ágeis de desenvolvimento de software por Givanaldo RochaMetodologias ágeis de desenvolvimento de software por Givanaldo Rocha
Metodologias ágeis de desenvolvimento de software por Givanaldo Rocha
 
Processos de Desenvolvimento de Software - teoria e prática
Processos de Desenvolvimento de Software - teoria e práticaProcessos de Desenvolvimento de Software - teoria e prática
Processos de Desenvolvimento de Software - teoria e prática
 
Princípios SOLID
Princípios SOLIDPrincípios SOLID
Princípios SOLID
 
Modelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane Fidelix
Modelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane FidelixModelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane Fidelix
Modelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane Fidelix
 
O Processo de Desenvolvimento de Software
O Processo de Desenvolvimento de SoftwareO Processo de Desenvolvimento de Software
O Processo de Desenvolvimento de Software
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Software
 
Metodologia Ágil
Metodologia ÁgilMetodologia Ágil
Metodologia Ágil
 
Aula - Introdução a Engenharia de Software
Aula - Introdução a Engenharia de SoftwareAula - Introdução a Engenharia de Software
Aula - Introdução a Engenharia de Software
 
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
 
Engenharia De Software
Engenharia De SoftwareEngenharia De Software
Engenharia De Software
 
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
 
Engenharia de Software - Conceitos e Modelos de Desenvolvimento
Engenharia de Software - Conceitos e Modelos de Desenvolvimento Engenharia de Software - Conceitos e Modelos de Desenvolvimento
Engenharia de Software - Conceitos e Modelos de Desenvolvimento
 
Capitulo 02 sommerville
Capitulo 02 sommervilleCapitulo 02 sommerville
Capitulo 02 sommerville
 
Modelo em Espiral
Modelo em EspiralModelo em Espiral
Modelo em Espiral
 
Documentação do software
Documentação do softwareDocumentação do software
Documentação do software
 
Aula 1 requisitos
Aula 1   requisitosAula 1   requisitos
Aula 1 requisitos
 
Engenharia de requisitos
Engenharia de requisitosEngenharia de requisitos
Engenharia de requisitos
 
Ferramentas case
Ferramentas caseFerramentas case
Ferramentas case
 
Ciclo de vida de software
Ciclo de vida de softwareCiclo de vida de software
Ciclo de vida de software
 

Destacado (20)

Engenharia de software
Engenharia de softwareEngenharia de software
Engenharia de software
 
Prototipação
PrototipaçãoPrototipação
Prototipação
 
Simpósio Unicruz: OpenCV + Python (parte 1)
Simpósio Unicruz: OpenCV + Python (parte 1)Simpósio Unicruz: OpenCV + Python (parte 1)
Simpósio Unicruz: OpenCV + Python (parte 1)
 
Prototipagem
PrototipagemPrototipagem
Prototipagem
 
Prototipação de software
Prototipação de softwarePrototipação de software
Prototipação de software
 
Modelo Espiral
Modelo EspiralModelo Espiral
Modelo Espiral
 
Modelos de Processo de Software
Modelos de Processo de SoftwareModelos de Processo de Software
Modelos de Processo de Software
 
Modelo espiral expo
Modelo espiral expoModelo espiral expo
Modelo espiral expo
 
Processo Unificado(RUP)
Processo Unificado(RUP)Processo Unificado(RUP)
Processo Unificado(RUP)
 
Rational Unified Process (RUP)
Rational Unified Process (RUP)Rational Unified Process (RUP)
Rational Unified Process (RUP)
 
Modelo de Prototipação
Modelo de PrototipaçãoModelo de Prototipação
Modelo de Prototipação
 
Introdução ao RUP
Introdução ao RUPIntrodução ao RUP
Introdução ao RUP
 
Plano De NegóCios Estrutura Passo A Passo
Plano De NegóCios   Estrutura Passo A PassoPlano De NegóCios   Estrutura Passo A Passo
Plano De NegóCios Estrutura Passo A Passo
 
Porque devo usar Scrum em meus projetos
Porque devo usar Scrum em meus projetosPorque devo usar Scrum em meus projetos
Porque devo usar Scrum em meus projetos
 
Engenharia de software
Engenharia de softwareEngenharia de software
Engenharia de software
 
4.2 modelo de espiral
4.2 modelo de espiral4.2 modelo de espiral
4.2 modelo de espiral
 
Modelo Espiral
Modelo EspiralModelo Espiral
Modelo Espiral
 
Modelo espiral
Modelo espiralModelo espiral
Modelo espiral
 
Eclesiologia - Desenvolvimento Natural Da Igreja - Blog do Prof. Eduardo Sales
Eclesiologia - Desenvolvimento  Natural Da  Igreja - Blog do Prof. Eduardo SalesEclesiologia - Desenvolvimento  Natural Da  Igreja - Blog do Prof. Eduardo Sales
Eclesiologia - Desenvolvimento Natural Da Igreja - Blog do Prof. Eduardo Sales
 
Cartilha do Empreendedor
Cartilha do EmpreendedorCartilha do Empreendedor
Cartilha do Empreendedor
 

Similar a Modelos de processos de software

Ciclo de vida de software
Ciclo de vida de softwareCiclo de vida de software
Ciclo de vida de softwarediha36
 
T1 g13.modelo cascata
T1 g13.modelo cascataT1 g13.modelo cascata
T1 g13.modelo cascatawilsonguns
 
Modelo cascata apresentação
Modelo cascata apresentaçãoModelo cascata apresentação
Modelo cascata apresentaçãoerysonsi
 
Modelo cascata apresentação
Modelo cascata apresentaçãoModelo cascata apresentação
Modelo cascata apresentaçãoerysonsi
 
Modelo cascata apresentação
Modelo cascata apresentaçãoModelo cascata apresentação
Modelo cascata apresentaçãoerysonsi
 
O_Ciclo_de_Vida_do_Desenvolvimento_de_Sistemas.pdf
O_Ciclo_de_Vida_do_Desenvolvimento_de_Sistemas.pdfO_Ciclo_de_Vida_do_Desenvolvimento_de_Sistemas.pdf
O_Ciclo_de_Vida_do_Desenvolvimento_de_Sistemas.pdfAthena542429
 
Desenvolvimento ágil de software: análise sintética a partir de KANBAN
Desenvolvimento ágil de software: análise sintética a partir de KANBANDesenvolvimento ágil de software: análise sintética a partir de KANBAN
Desenvolvimento ágil de software: análise sintética a partir de KANBANFernando Palma
 
Aula 01 e 02 - Engenharia de Software.pdf
Aula 01 e 02 - Engenharia de Software.pdfAula 01 e 02 - Engenharia de Software.pdf
Aula 01 e 02 - Engenharia de Software.pdfJadna Almeida
 
Processo de software individual
Processo de software individualProcesso de software individual
Processo de software individualAdivaldo_badinho
 
Engenharia de-software-1217199594686494-9
Engenharia de-software-1217199594686494-9Engenharia de-software-1217199594686494-9
Engenharia de-software-1217199594686494-9wilsonguns
 
Es capítulo 2 - processos de software
Es   capítulo 2  - processos de softwareEs   capítulo 2  - processos de software
Es capítulo 2 - processos de softwareFelipe Oliveira
 
Aula 2 modelo de processo de software1
Aula 2   modelo de processo de software1Aula 2   modelo de processo de software1
Aula 2 modelo de processo de software1Tiago Vizoto
 
Este trabalho trata
Este trabalho trataEste trabalho trata
Este trabalho trataRoni Reis
 
Aula - Modelos de Processos de Desenvolvimento de Software / Mobile App
Aula - Modelos de Processos de Desenvolvimento de Software / Mobile AppAula - Modelos de Processos de Desenvolvimento de Software / Mobile App
Aula - Modelos de Processos de Desenvolvimento de Software / Mobile AppCloves da Rocha
 

Similar a Modelos de processos de software (20)

Ciclo de vida de software
Ciclo de vida de softwareCiclo de vida de software
Ciclo de vida de software
 
T1 g13.modelo cascata
T1 g13.modelo cascataT1 g13.modelo cascata
T1 g13.modelo cascata
 
Processos de software
Processos de softwareProcessos de software
Processos de software
 
Modelo cascata apresentação
Modelo cascata apresentaçãoModelo cascata apresentação
Modelo cascata apresentação
 
Modelo cascata apresentação
Modelo cascata apresentaçãoModelo cascata apresentação
Modelo cascata apresentação
 
Modelo cascata apresentação
Modelo cascata apresentaçãoModelo cascata apresentação
Modelo cascata apresentação
 
O_Ciclo_de_Vida_do_Desenvolvimento_de_Sistemas.pdf
O_Ciclo_de_Vida_do_Desenvolvimento_de_Sistemas.pdfO_Ciclo_de_Vida_do_Desenvolvimento_de_Sistemas.pdf
O_Ciclo_de_Vida_do_Desenvolvimento_de_Sistemas.pdf
 
Modelo cascata
Modelo cascataModelo cascata
Modelo cascata
 
Desenvolvimento ágil de software: análise sintética a partir de KANBAN
Desenvolvimento ágil de software: análise sintética a partir de KANBANDesenvolvimento ágil de software: análise sintética a partir de KANBAN
Desenvolvimento ágil de software: análise sintética a partir de KANBAN
 
Aula 01 e 02 - Engenharia de Software.pdf
Aula 01 e 02 - Engenharia de Software.pdfAula 01 e 02 - Engenharia de Software.pdf
Aula 01 e 02 - Engenharia de Software.pdf
 
38484931 questionario-es
38484931 questionario-es38484931 questionario-es
38484931 questionario-es
 
Processo de software individual
Processo de software individualProcesso de software individual
Processo de software individual
 
Aula2 processos sw
Aula2 processos swAula2 processos sw
Aula2 processos sw
 
Engenharia de-software-1217199594686494-9
Engenharia de-software-1217199594686494-9Engenharia de-software-1217199594686494-9
Engenharia de-software-1217199594686494-9
 
Es capítulo 2 - processos de software
Es   capítulo 2  - processos de softwareEs   capítulo 2  - processos de software
Es capítulo 2 - processos de software
 
Aula 2 modelo de processo de software1
Aula 2   modelo de processo de software1Aula 2   modelo de processo de software1
Aula 2 modelo de processo de software1
 
Este trabalho trata
Este trabalho trataEste trabalho trata
Este trabalho trata
 
ES4.ppt
ES4.pptES4.ppt
ES4.ppt
 
Analise sistemas 05
Analise sistemas 05Analise sistemas 05
Analise sistemas 05
 
Aula - Modelos de Processos de Desenvolvimento de Software / Mobile App
Aula - Modelos de Processos de Desenvolvimento de Software / Mobile AppAula - Modelos de Processos de Desenvolvimento de Software / Mobile App
Aula - Modelos de Processos de Desenvolvimento de Software / Mobile App
 

Más de Nécio de Lima Veras

Introdução à analise e complexidade de algoritmos
Introdução à analise e complexidade de algoritmosIntrodução à analise e complexidade de algoritmos
Introdução à analise e complexidade de algoritmosNécio de Lima Veras
 
Uma Abordagem Baseada em Agentes para Planejamento e Monitoramento de Serviço...
Uma Abordagem Baseada em Agentes para Planejamento e Monitoramento de Serviço...Uma Abordagem Baseada em Agentes para Planejamento e Monitoramento de Serviço...
Uma Abordagem Baseada em Agentes para Planejamento e Monitoramento de Serviço...Nécio de Lima Veras
 
Introdução à Engenharia de Software Orientada a Agentes com JaCaMo
Introdução à Engenharia de Software Orientada a Agentes com JaCaMoIntrodução à Engenharia de Software Orientada a Agentes com JaCaMo
Introdução à Engenharia de Software Orientada a Agentes com JaCaMoNécio de Lima Veras
 
Jason: Componentes personalizados
Jason: Componentes personalizados Jason: Componentes personalizados
Jason: Componentes personalizados Nécio de Lima Veras
 
Ambientes em Sistemas Multi-agentes
Ambientes em Sistemas Multi-agentesAmbientes em Sistemas Multi-agentes
Ambientes em Sistemas Multi-agentesNécio de Lima Veras
 
Arquiteturas concretas de agentes inteligentes - bdi agents
Arquiteturas concretas de agentes inteligentes - bdi agentsArquiteturas concretas de agentes inteligentes - bdi agents
Arquiteturas concretas de agentes inteligentes - bdi agentsNécio de Lima Veras
 
Especificações iniciais de agentes inteligentes
Especificações iniciais de agentes inteligentesEspecificações iniciais de agentes inteligentes
Especificações iniciais de agentes inteligentesNécio de Lima Veras
 
Processos iniciais do mapeamento OR
Processos iniciais do mapeamento ORProcessos iniciais do mapeamento OR
Processos iniciais do mapeamento ORNécio de Lima Veras
 

Más de Nécio de Lima Veras (20)

Introdução ao JavaFX
Introdução ao JavaFXIntrodução ao JavaFX
Introdução ao JavaFX
 
Introdução à analise e complexidade de algoritmos
Introdução à analise e complexidade de algoritmosIntrodução à analise e complexidade de algoritmos
Introdução à analise e complexidade de algoritmos
 
Teste de software
Teste de softwareTeste de software
Teste de software
 
Versionamento com git
Versionamento com gitVersionamento com git
Versionamento com git
 
Uma Abordagem Baseada em Agentes para Planejamento e Monitoramento de Serviço...
Uma Abordagem Baseada em Agentes para Planejamento e Monitoramento de Serviço...Uma Abordagem Baseada em Agentes para Planejamento e Monitoramento de Serviço...
Uma Abordagem Baseada em Agentes para Planejamento e Monitoramento de Serviço...
 
Introdução à Engenharia de Software Orientada a Agentes com JaCaMo
Introdução à Engenharia de Software Orientada a Agentes com JaCaMoIntrodução à Engenharia de Software Orientada a Agentes com JaCaMo
Introdução à Engenharia de Software Orientada a Agentes com JaCaMo
 
Jason: Componentes personalizados
Jason: Componentes personalizados Jason: Componentes personalizados
Jason: Componentes personalizados
 
Agentes inteligentes com jason
Agentes inteligentes com jasonAgentes inteligentes com jason
Agentes inteligentes com jason
 
Ambientes em Sistemas Multi-agentes
Ambientes em Sistemas Multi-agentesAmbientes em Sistemas Multi-agentes
Ambientes em Sistemas Multi-agentes
 
Arquiteturas concretas de agentes inteligentes - bdi agents
Arquiteturas concretas de agentes inteligentes - bdi agentsArquiteturas concretas de agentes inteligentes - bdi agents
Arquiteturas concretas de agentes inteligentes - bdi agents
 
Revisão de matemática
Revisão de matemáticaRevisão de matemática
Revisão de matemática
 
Especificações iniciais de agentes inteligentes
Especificações iniciais de agentes inteligentesEspecificações iniciais de agentes inteligentes
Especificações iniciais de agentes inteligentes
 
Notas sobre agentes inteligentes
Notas sobre agentes inteligentesNotas sobre agentes inteligentes
Notas sobre agentes inteligentes
 
Anotações do mapeamento OR
Anotações do mapeamento ORAnotações do mapeamento OR
Anotações do mapeamento OR
 
Hibernate-consultas
Hibernate-consultasHibernate-consultas
Hibernate-consultas
 
Mapeamento de herança OR
Mapeamento de herança ORMapeamento de herança OR
Mapeamento de herança OR
 
Relacionamentos do mapeamento OR
Relacionamentos do mapeamento ORRelacionamentos do mapeamento OR
Relacionamentos do mapeamento OR
 
Processos iniciais do mapeamento OR
Processos iniciais do mapeamento ORProcessos iniciais do mapeamento OR
Processos iniciais do mapeamento OR
 
Java swing
Java swingJava swing
Java swing
 
Introdução à linguagem UML
Introdução à linguagem UMLIntrodução à linguagem UML
Introdução à linguagem UML
 

Modelos de processos de software

  • 1. Engenharia de Software Unidade II – Processos de Software Objetivo: Apresentar os principais paradigmas e modelos de processos de software, demonstrando o ciclo de vida do desenvolvimento de software e enfatizando os processos de especificação de requisitos, projeto, implementação, testes e mudanças Prof. Nécio de Lima Veras
  • 2. Processos de Desenvolvimento de Software  Vimos anteriormente que os processos definem uma estrutura, que consiste em áreas de processos chave.  Percebemos também que Sommerville subdivide em quatro atividades básicas:  Especificação;  Desenvolvimento;  Validação; e  Evolução.  Partindo disso, muitos modelos já foram propostos...
  • 3. Roteiro...  Então para esta aula, veremos:  Definições de processos e modelos de processos de software;  Alguns modelos existentes:  Cascata;  Evolucionário;  Desenvolvimento incremental;  Espiral; e  Prototipação.
  • 4. Definições  Processo de software:  “É uma seqüência coerente de práticas que objetiva o desenvolvimento ou evolução de sistemas de software. Estas práticas englobam as atividades de especificação, projeto, implementação, testes e caracterizam-se pela interação de ferramentas, pessoas e métodos”.  Modelo de processo de software:  “Um modelo de processo de software é uma representação abstrata de um processo. Ele apresenta uma descrição de um processo a partir de uma perspectiva específica”.
  • 5. O Modelo em Cascata  Primeiro modelo publicado do processo de desenvolvimento de software;  Originou-se de outros processos de engenharia;  Retrata um desenvolvimento gradual e possui seqüência de passos em ordem que devem ser seguidos.  Pode consumir um tempo estimado entre seis e dezoito meses;
  • 6. O Modelo em Cascata: Principais Estágios  Análise e Definição de Requisitos: as funções, as restrições e os objetivos do sistema são estabelecidos por meio de consulta aos usuários do sistema. Em seguida, são definidos em detalhes e servem como uma especificação do sistema.
  • 7. O Modelo em Cascata: Principais Estágios  Projeto de Sistemas e Software: o processo de projeto de sistemas agrupa os requisitos em sistemas de hardware e software. Envolve a identificação e a descrição das abstrações fundamentais do sistema de software e suas relações.
  • 8. O Modelo em Cascata: Principais Estágios  Implementação e Testes de Unidade: Durante este estágio, o projeto do software é compreendido como um conjunto de programas ou unidades de programa. O teste de unidade envolve verificar se cada uma das unidades atendem à sua especificação.
  • 9. O Modelo em Cascata: Principais Estágios  Integração e Teste de sistemas: as unidades de programa ou programas individuais são integrados e testados como um sistema completo a fim de garantir que os requisitos de software foram atendidos. Depois do teste, o software é entregue ao cliente.
  • 10. O Modelo em Cascata: Principais Estágios  Operação e manutenção: O sistema é instalado e colocado em operação. Envolve corrigir erros que não foram descobertos em estágios anteriores, melhorando a implemen- tação e descobrindo novos requisitos
  • 11. O Modelo em Cascata: Problemas  Particionamento inflexível do projeto em fases distintas;  Isso torna difícil responder a requisitos do usuário que mudam;  Portanto, esse modelo é apropriado somente quando os requisitos são bem compreendidos;
  • 12. O modelo Evolucionário  Tem com base a ideia de desenvolver uma implementação inicial, expor o resultado ao comentário do usuário e fazer seu aprimoramento por meio de muitas versões, até que tenha sido desenvolvido;  A especificação, desenvolvimento e validação são executados concorrentemente para gerar um retorno rápido;
  • 13. O modelo Evolucionário  Pode ser:  Exploratório: tem como objetivo trabalhar com o cliente a fim de explorar seus requisitos e entregar um sistema final. São feitas partes inicias e acrescentadas novas de acordo com o desenvolvimento.  Protótipos descartáveis: tenta compreender os melhor os requisitos a partir de protótipos e então desenvolver uma especificação de requisitos completa.
  • 14. O modelo Evolucionário  Problemas:  O processo não é visível: como o sistema é desenvolvido rapidamente, não há tempo de documentar as versões;  Os sistemas são mal-estruturados: mudanças constantes podem corromper a estrutura do software;  Requer ferramentas e técnicas especiais: que nem sempre são disponíveis ou são aplicáveis ao caso.
  • 15. O modelo Evolucionário  Aplicabilidade:  Para sistemas interativos pequenos ou de médio porte  Para partes de sistemas grandes (p.ex., a interface com o usuário)  Para sistemas de vida curta.
  • 16. O modelo Desenvolvimento Incremental  É uma variação do modelo Cascata;
  • 17. O modelo Desenvolvimento Incremental  A ideia é alargar pouco-a-pouco;  Analogia à construção de uma mansão;
  • 18. O modelo Desenvolvimento Incremental  Vantagens:  Redução dos riscos envolvendo custos a um único incremento.  Redução do risco de lançar o projeto no mercado fora da data planejada. Identificando os riscos numa fase inicial o esforço despendido para gerenciá-los ocorre cedo, quando as pessoas estão sob menos pressão do que numa fase final de projeto.  Aceleração do tempo de desenvolvimento do projeto como um todo, porque os desenvolvedores trabalham de maneira mais eficiente quando buscam resultados de escopo pequeno e claro.  Reconhecimento de uma realidade freqüentemente ignorada: as necessidades dos usuários e os requisitos correspondentes não podem ser totalmente definidos no início do processo.  Este modelo de operação facilita a adaptação a mudanças de requisitos.
  • 19. O modelo Desenvolvimento Incremental  Desvantagens:  Dificuldade de gerenciamento. Isso ocorre porque as fases de do ciclo podem estar ocorrendo de forma simultânea.  O usuário pode se entusiasmar excessivamente com a primeira versão do sistema e pensar que tal versão já corresponde ao sistema como um todo.  Como todo modelo esta sujeito a riscos de projeto:  O projeto pode não satisfazer aos requisitos do usuário.  A verba do projeto pode acabar.  O sistema de software pode não ser adaptável, manutenível ou extensível.  O sistema de software pode ser entregue ao usuário tarde demais.
  • 20. O modelo Espiral  O processo é representado como uma espiral, em vez de uma seqüência de atividades com caminhos de retorno  Cada volta na espiral representa uma fase no processo  Não há fases fixas, tais como especificação ou projeto  As voltas na espiral são escolhidas dependendo do que for exigido  Os riscos são explicitamente avaliados e resolvidos durante todo o processo  Para cada iteração temos:  Envolvimento do cliente;  Seis e vinte e quatro meses de duração (presumidamente);  Prazo suficiente para que o cliente tenha um brainstorm;
  • 22. O modelo Espiral: Setores  Definição do objetivo  Identificam-se os objetivos específicos da fase  Avaliação e redução de risco  Os riscos são avaliados e são adotadas as atividades para reduzir os ricos principais  Desenvolvimento e avaliação  É escolhido um modelo de desenvolvimento para o sistema, que pode ser qualquer um dos modelos genéricos  Planejamento  O projeto é revisado e a próxima fase da espiral é planejada
  • 23. O modelo Prototipação  Busca, principalmente, velocidade no desenvolvimento;  O cliente “enxerga” telas e relatórios resultantes do software, com os quais ele terá alguma pequena interação.  O usuário deve ser envolvido para opinar sobre as telas e relatórios do software, de maneira que se consiga torná-lo quase que co-autor do desenvolvimento responsabilizando-o também, desta forma, pelo sucesso final do software, uma vez que terá tido participação ativa na montagem do mesmo.
  • 24. O modelo Prototipação Análise de Desenvolvimento Experimentação Requisitos de Protótipo Revisão Codificação e Detalhamento Testes Manutenção Implantação
  • 25. O modelo Prototipação  Perigos:  Cliente “empolgar-se”;  Pressão a fim de que concessões de implementações ocorram para a urgência da implantação, sugerindo-se que o protótipo seja evoluído e entre rapidamente em funcionamento.
  • 26. Interseção entre os modelo?  Longo período de tempo para o desenvolvimento;  Volume muito grande de documentação e planejamento;  Fases maiores ainda => Big Design Up Front (BDUF);  Um software BDUF implica em:  O planejamento é completado e aperfeiçoado antes mesmo de iniciar a codificação, o que praticamente inviabiliza uma mudança brusca de escopo [Fox e Patterson 2012].  E agora, para onde vamos?
  • 27. Agilidade  Um grupo em fevereiro de 2001, chamado de Agile Alliance, começou a descobrir maneiras melhores e mais leves de desenvolver software valorizando:  pessoas e interações ao invés de processos e ferramentas;  softwares funcionando no lugar de documentações abrangentes;  colaborações com clientes do que negociações de contratos e respostas à mudanças por planos fechados.  Esses valores originaram o Manifesto Ágil com outros DOZE princípios que regem a filosofia de criar softwares com agilidade [BECK, 2001]
  • 28. Agilidade  O modelo é baseado em mudanças abrangentes;  O desenvolvedor deve melhorar continuamente um protótipo incompleto até que o cliente fique feliz com o resultado;  Algumas práticas são enfatizadas:  Test-Driven Development (TDD);  User Stories; e  Velocity.
  • 29. Contraste com os outros modelos É tão rápido que novas versões são disponibilizadas ao cliente a cada duas semanas e novos recursos são adicionados continuamente ao mesmo protótipo até que o cliente esteja satisfeito [Fox e Patterson 2012].
  • 31. Referências  Beck, K., et al. (2001). "Manifesto for Agile Software Development". Agile Alliance. http://agilemanifesto.org/. Acessado em 18 de agosto de 2012.  Fox, A., Patterson, D. (2012). “Engineering Long-Lasting Software: An Agile Approach Using SaaS and Cloud Computing”, Alpha Edition. Strawberry Canyon LLC, 2012.  Pressman, R. S. (2005). “Software engineering: a practitioner‟s approach”, 6 ed. New York: MacGraw-Hill, 2005.