Prof. Nécio de Lima Veras




 Introdução à
Engenharia de
   Software
                      Objetivo: Perceber os conceitos
                      básicos e aspectos introdutórios
                      sobre Engenharia de Software.
Aula 01: Ordem
Software:
   Conceitos;
   Crise Histórica;
   Mitos;
Introdução à abordagem de projetos;
Engenharia de Software:
   Definição;
   Modelos de Processos de Softwares;
   Modelos de Gerência de Projetos;
Software: Conceitos



[...] uma forma híbrida, algo no domínio
   entre o concreto e o abstrato, entre o
   tangível e o intangível. [...] o
   desenvolvimento de produtos de
   software é visto como uma atividade
   mental, abstrata, solitária e criativa.

    Cox (apud GUERRA e ALVES, 2004, p. 1)
Software: Conceitos
Pressman (1997) diz que um livro didático
 poderia trazer a descrição de um software
 da seguinte forma:
   Instruções (programas de computador) que,
    quando executadas, produzem a função e
    desempenho desejados;
   Estruturas de dados que possibilitam que os
    programas manipulem adequadamente a
    informação;
   Documentos que descrevem a operação e o
    uso dos programas;
Software: Conceitos
Sommerville (2003) complementa criando
 dois tipos diferentes:
   Produtos Genéricos;
   Produtos sob encomenda;
Por tanto, Software é:
   Produto (ou serviço) que possui um grande
    número de características próprias oriundas
    dos critérios de análise, codificação e
    documentação aplicados durante sua
    construção;
Software: Reflexão sobre os conceitos


                     Reflexões




 Será que essa                   Qual a relevância
 formalização já é               de conhecer o
 suficiente para                 que está
 entendermos o que               “escondido” por
 é realmente um                  traz de um
 software?                       software?
Software: Crise Histórica (1968)

Evolução do hardware;
Softwares mais complexos com:
     Custos maiores (não previstos);
     Baixa confiabilidade;
     Difícil manutenção; e
     Desempenho abaixo do esperado;
Percebeu-se que uma abordagem
 informal de desenvolvimento não era
 suficiente;
   E quais as prováveis causas da crise?
Software: Mitos

       1                   2                     3

A equipe de       A equipe possui        Se os prazos
desenvolvimento   ferramentas de         atrasam, pode-se
                  desenvolvimento de
dispõe de um                             adicionar mais
                  software de última
manual com                               pessoas ao grupo
                  geração! Afinal lhes
padrões e         compramos os mais      e tirar o atraso;
procedimentos;    novos computadores;
Software: Mitos

         4                      5                       6

Uma descrição          Os requisitos de         Assim que
                       projeto modificam-       escrevermos o
geral dos objetivos
                       se continuamente,        programa e o
é suficiente para se   mas as mudanças          colocarmos em
escrever               podem ser                funcionamento
programas e os         facilmente               nosso trabalho
detalhes são vistos    acomodadas, porque       estará completo.
posteriormente;        o software é flexível.
Software: Mitos

           7

 Enquanto não tiver o
 programa "funcionando",
 eu não terei realmente
 nenhuma maneira de
 avaliar sua qualidade.
Quais foram as possíveis soluções para
               a crise?

   Reconhecer os
   problemas e causas;


   Desmascarar os           Engenharia
   mitos;                       de
                             Software
   Criar soluções que
   apresentem suporte ao
   desenvolvedor e que
   melhore a qualidade;
Introdução à abordagem de projetos
Produtos de Software


 Surge de ideias conceituais e reajustáveis;
 É Intangível;
 Possui escopo variável;
 É dotado de incertezas constantes;
 Difícil visualização do produto final.
 Mas como obter um produto de software com
 qualidade diante de todas estas peculiaridades?
Engenharia de Software


●
    A ideia foi incluir a disciplina de engenharia no
    desenvolvimento de software;
●
    A E.S. Engloba três elementos fundamentais:
Engenharia de Software: definição
 Sommerville (2003):
    Disciplina que trabalha todos os aspectos da
     produção de software, desde os estágios
     iniciais de especificação até a manutenção
     deste, depois que ele entrou em operação;
    Não se dedica apenas aos processos
     técnicos de software, mas também:
     • Ao gerenciamento dos projetos;
     • Ao desenvolvimento de ferramentas, métodos e
       teorias que dêem apoio à produção de software;
 Por que não fazer uma analogia?
Engenharia de Software: abrangência



  Métodos
  Métodos         Ferramentas
                  Ferramentas    Procedimentos
                                 Procedimentos

  Planejamento,
  Análise,
  Projeto,           Automação      “Elo de
  Codificação,                      ligação” entre
  Teste e                           métodos e
  Manutenção                        ferramentas
Engenharia de Software:
  Modelo de Processo de Software
O que entendemos por processo de
 software?
     Conjunto de atividades que geram produtos
      de software;
                Há quatro atividades fundamentais
                Há quatro atividades fundamentais




                 Desenvolvimento
Especificação           de         Validação de   Evolução de
     de              software        software       software
  Software
Engenharia de Software:
  Modelo de Processo de Software
Um modelo de processo de software é:
   Uma descrição simplificada de um processo
    de software, abstraindo o processo real que
    está sendo aplicado;
É constituído por:
   Atividades de processos de software;
   Produtos de software;
   Definição de papeis das pessoas envolvidas;
Exemplos de Modelos de Processos
          de Software


    O Modelo
    em cascata




                          Desenvolvimento
        Desenvolvimento     incremental
          evolucionário
Reflexão sobre os modelos

Esses modelos garantem o sucesso do
 software?
   E as métricas de software?
   E as garantias de qualidade?
Como vimos, faz parte da definição de
 engenharia de software:
   Não se dedica apenas aos processos
    técnicos de software, mas também ao
    gerenciamento dos projetos;
Gerência de Projetos de Software
 A crise é passado?
    E os softwares complexos?

 É preciso gerenciar projetos de software?
    Considere:
     • Sistemas de Software;
     • Desenvolvimento colaborativo;


 Também existe modelos de
  gerenciamento?
Modelos de Gerenciamento de Projetos

  PMI (Project Management Institute):
    Baseado em processos;
    Alguns consideram muito burocrático;
    Possui publicações reconhecidas
     internacionalmente, como o Guia PMBOK;

  CMMI (Capability Maturity Model Integration):
    Baseado em níveis de maturidade organizacional;
    Encomendado e patrocinado pelo Pentágono, foi
     formulado pelo SEI (Software Engineering Institute);
Modelos de Gerenciamento de Projetos

 APM (Agile Project Management):
   Criado em 2001 por um grupo chamado de Agile
    Alliance;
   Possui um conjunto de princípios que são referências
    básicas para as metodologias ágeis;
   Possui cinco objetivos-chave:
     •   Inovação contínua;
     •   Adaptabilidade do produto;
     •   Entregas com cronograma reduzido;
     •   Adaptabilidade do processo e das pessoas;
     •   Resultados confiáveis;
Modelo Ágil de Gerência de Projeto de
       Software – Visão Geral




 Fonte: Martins, 2007
Considerações Finais



Perspectivas para a área de Engenharia
 de Software:
   O modelo brasileiro de melhoria dos
    processos de software (MPS.BR);
Referências Bibliográficas
 SOMMERVILLE, I. Engenharia de Software. 6ª. ed. São Paulo:
  Addison Wesley, 2003.

 PRESSMAN, R. S. Engenharia de Software. São Paulo: Pearson
  Makron Books, 1997, Reimpressão 2007.

 MARTINS, J. C. C. Técnicas para Gerenciamento de Projetos de
  Software. Rio de Janeiro: Brasport, 2007.

 GUERRA, A. C., ALVES, A. M. Aquisição de produtos e serviços de
  software. Rio de Janeiro: Elsevier: 2004.

 BASSI, D. Planejamento Ágil de Projetos. Engenharia de Software
  Magazine. DevMedia Group, ano I, n. 08, pág. 08-12, 2008.

 PAULA, Wilson de Pádua Filho. Alguns Fundamentos da Engenharia
  de Software. Engenharia de Software Magazine. DevMedia Group,
  ano I, n. 01, pág. 04-08, 2007.

Introdução à Engenharia de Software

  • 1.
    Prof. Nécio deLima Veras Introdução à Engenharia de Software Objetivo: Perceber os conceitos básicos e aspectos introdutórios sobre Engenharia de Software.
  • 2.
    Aula 01: Ordem Software:  Conceitos;  Crise Histórica;  Mitos; Introdução à abordagem de projetos; Engenharia de Software:  Definição;  Modelos de Processos de Softwares;  Modelos de Gerência de Projetos;
  • 3.
    Software: Conceitos [...] umaforma híbrida, algo no domínio entre o concreto e o abstrato, entre o tangível e o intangível. [...] o desenvolvimento de produtos de software é visto como uma atividade mental, abstrata, solitária e criativa. Cox (apud GUERRA e ALVES, 2004, p. 1)
  • 4.
    Software: Conceitos Pressman (1997)diz que um livro didático poderia trazer a descrição de um software da seguinte forma:  Instruções (programas de computador) que, quando executadas, produzem a função e desempenho desejados;  Estruturas de dados que possibilitam que os programas manipulem adequadamente a informação;  Documentos que descrevem a operação e o uso dos programas;
  • 5.
    Software: Conceitos Sommerville (2003)complementa criando dois tipos diferentes:  Produtos Genéricos;  Produtos sob encomenda; Por tanto, Software é:  Produto (ou serviço) que possui um grande número de características próprias oriundas dos critérios de análise, codificação e documentação aplicados durante sua construção;
  • 6.
    Software: Reflexão sobreos conceitos Reflexões Será que essa Qual a relevância formalização já é de conhecer o suficiente para que está entendermos o que “escondido” por é realmente um traz de um software? software?
  • 7.
    Software: Crise Histórica(1968) Evolução do hardware; Softwares mais complexos com:  Custos maiores (não previstos);  Baixa confiabilidade;  Difícil manutenção; e  Desempenho abaixo do esperado; Percebeu-se que uma abordagem informal de desenvolvimento não era suficiente;  E quais as prováveis causas da crise?
  • 8.
    Software: Mitos 1 2 3 A equipe de A equipe possui Se os prazos desenvolvimento ferramentas de atrasam, pode-se desenvolvimento de dispõe de um adicionar mais software de última manual com pessoas ao grupo geração! Afinal lhes padrões e compramos os mais e tirar o atraso; procedimentos; novos computadores;
  • 9.
    Software: Mitos 4 5 6 Uma descrição Os requisitos de Assim que projeto modificam- escrevermos o geral dos objetivos se continuamente, programa e o é suficiente para se mas as mudanças colocarmos em escrever podem ser funcionamento programas e os facilmente nosso trabalho detalhes são vistos acomodadas, porque estará completo. posteriormente; o software é flexível.
  • 10.
    Software: Mitos 7 Enquanto não tiver o programa "funcionando", eu não terei realmente nenhuma maneira de avaliar sua qualidade.
  • 11.
    Quais foram aspossíveis soluções para a crise? Reconhecer os problemas e causas; Desmascarar os Engenharia mitos; de Software Criar soluções que apresentem suporte ao desenvolvedor e que melhore a qualidade;
  • 12.
  • 13.
    Produtos de Software Surge de ideias conceituais e reajustáveis;  É Intangível;  Possui escopo variável;  É dotado de incertezas constantes;  Difícil visualização do produto final.  Mas como obter um produto de software com qualidade diante de todas estas peculiaridades?
  • 14.
    Engenharia de Software ● A ideia foi incluir a disciplina de engenharia no desenvolvimento de software; ● A E.S. Engloba três elementos fundamentais:
  • 15.
    Engenharia de Software:definição Sommerville (2003):  Disciplina que trabalha todos os aspectos da produção de software, desde os estágios iniciais de especificação até a manutenção deste, depois que ele entrou em operação;  Não se dedica apenas aos processos técnicos de software, mas também: • Ao gerenciamento dos projetos; • Ao desenvolvimento de ferramentas, métodos e teorias que dêem apoio à produção de software; Por que não fazer uma analogia?
  • 16.
    Engenharia de Software:abrangência Métodos Métodos Ferramentas Ferramentas Procedimentos Procedimentos Planejamento, Análise, Projeto, Automação “Elo de Codificação, ligação” entre Teste e métodos e Manutenção ferramentas
  • 17.
    Engenharia de Software: Modelo de Processo de Software O que entendemos por processo de software?  Conjunto de atividades que geram produtos de software; Há quatro atividades fundamentais Há quatro atividades fundamentais Desenvolvimento Especificação de Validação de Evolução de de software software software Software
  • 18.
    Engenharia de Software: Modelo de Processo de Software Um modelo de processo de software é:  Uma descrição simplificada de um processo de software, abstraindo o processo real que está sendo aplicado; É constituído por:  Atividades de processos de software;  Produtos de software;  Definição de papeis das pessoas envolvidas;
  • 19.
    Exemplos de Modelosde Processos de Software O Modelo em cascata Desenvolvimento Desenvolvimento incremental evolucionário
  • 20.
    Reflexão sobre osmodelos Esses modelos garantem o sucesso do software?  E as métricas de software?  E as garantias de qualidade? Como vimos, faz parte da definição de engenharia de software:  Não se dedica apenas aos processos técnicos de software, mas também ao gerenciamento dos projetos;
  • 21.
    Gerência de Projetosde Software A crise é passado?  E os softwares complexos? É preciso gerenciar projetos de software?  Considere: • Sistemas de Software; • Desenvolvimento colaborativo; Também existe modelos de gerenciamento?
  • 22.
    Modelos de Gerenciamentode Projetos  PMI (Project Management Institute):  Baseado em processos;  Alguns consideram muito burocrático;  Possui publicações reconhecidas internacionalmente, como o Guia PMBOK;  CMMI (Capability Maturity Model Integration):  Baseado em níveis de maturidade organizacional;  Encomendado e patrocinado pelo Pentágono, foi formulado pelo SEI (Software Engineering Institute);
  • 23.
    Modelos de Gerenciamentode Projetos  APM (Agile Project Management):  Criado em 2001 por um grupo chamado de Agile Alliance;  Possui um conjunto de princípios que são referências básicas para as metodologias ágeis;  Possui cinco objetivos-chave: • Inovação contínua; • Adaptabilidade do produto; • Entregas com cronograma reduzido; • Adaptabilidade do processo e das pessoas; • Resultados confiáveis;
  • 24.
    Modelo Ágil deGerência de Projeto de Software – Visão Geral Fonte: Martins, 2007
  • 25.
    Considerações Finais Perspectivas paraa área de Engenharia de Software:  O modelo brasileiro de melhoria dos processos de software (MPS.BR);
  • 26.
    Referências Bibliográficas  SOMMERVILLE,I. Engenharia de Software. 6ª. ed. São Paulo: Addison Wesley, 2003.  PRESSMAN, R. S. Engenharia de Software. São Paulo: Pearson Makron Books, 1997, Reimpressão 2007.  MARTINS, J. C. C. Técnicas para Gerenciamento de Projetos de Software. Rio de Janeiro: Brasport, 2007.  GUERRA, A. C., ALVES, A. M. Aquisição de produtos e serviços de software. Rio de Janeiro: Elsevier: 2004.  BASSI, D. Planejamento Ágil de Projetos. Engenharia de Software Magazine. DevMedia Group, ano I, n. 08, pág. 08-12, 2008.  PAULA, Wilson de Pádua Filho. Alguns Fundamentos da Engenharia de Software. Engenharia de Software Magazine. DevMedia Group, ano I, n. 01, pág. 04-08, 2007.