Engenharia de Software

Aula 1 – Introdução à Engenharia de Software
                      Profa. Dra. Judith Pavón
            Universidade Salvador – UNIFACS
                                          2012
Conteúdo
   Objetivo da aula
   Leitura recomendada
   O que é Engenharia de Software
   O que é Software
   Objetivos da Engenharia de Software
   Características da Engenharia de Software
   O que é um software de qualidade?
   Importância da Engenharia de Software
   A crise do software
   Definição de Engenharia de Software
   Atividades e Artefatos de Engenharia de software


                                                       2
Objetivo da aula
O objetivo desta aula é apresentar e
consolidar os conceitos básicos de
Engenharia de Software.




                                       3
Leitura recomendada

    Capítulo 1 e 2 do livro “Engenharia de
     Software” de Roger Pressman.
    Capítulo 1 e 2 do livro “Engenharia de
     Software” de Ian Sommerville.
O que é a Engenharia de
Software?
   Estudo ou aplicação de abordagens sistemáticas,
    econômicas e quantificáveis para o
    desenvolvimento, operação e manutenção de
    software de qualidade.
   Engenheiros de software devem adotar uma
    abordagem sistemática e organizada para seu
    trabalho e usar ferramentas e técnicas/métodos
    apropriados dependendo do problema a ser
    solucionado, das restrições de desenvolvimento e
    dos recursos disponíveis
O que é software?
    É o produto entregue ao cliente ao finalizar o
     ciclo de desenvolvimento e geralmente é
     composto por diferentes tipos de artefatos
     (ex. Código fonte, documentação, programas
     de instalação, etc.)
    Produtos de software podem ser
     desenvolvidos para um cliente particular ou
     podem ser desenvolvidos para um mercado
     geral
Objetivos da Engenharia de
Software
   Controle sobre o desenvolvimento de
    software dentro de custos, prazos e níveis
    de qualidade desejados
   Produtividade no desenvolvimento, operação
    e manutenção de software
   Qualidade versus Produtividade
Características da
Engenharia de Software
   A Engenharia de Software se refere a
    software (sistemas) desenvolvidos por
    grupos ao invés de indivíduos
   usa princípios de engenharia ao invés
    de arte, e
   inclui tanto aspectos técnicos quanto
    não técnicos
O que é um software de
qualidade?
    O software que satisfaz os requisitos solicitados pelo
     usuário. Deve ser fácil de manter, ter boa performance, ser
     confiável e fácil de usar
    Alguns atributos de qualidade
       Manutenibilidade

              O software deve evoluir para atender os requisitos que
               mudam
         Eficiência
              O software não deve desperdiçar os recursos do sistema
         Confiabilidade
              A taxa de falhas do software deve ser conhecida para saber
               quanto é confiável esse sistema.
         Usabilidade
              O software deve ser fácil de usar pelos usuários para os
               quais ele foi projetado
Produtividade
   Quantidade de requisitos implementados em
    uma unidade de tempo.
   Custo de desenvolvimento reduzido
       A empresa consumidora quer investir pouco em
        software
       A empresa produtora tem que oferecer “software
        barato”
   Tempo de desenvolvimento reduzido
       Suporte rápido às necessidades do mercado
Mas, na realidade, temos a
Crise de Software...
   25% dos projetos são cancelados
   o tempo de desenvolvimento é bem
    maior do que o estimado
   75% dos sistemas não funcionam como
    planejado
   a manutenção e reutilização são
    difíceis e custosas
   os problemas são proporcionais a
    complexidade dos sistemas
A Crise do Software
   Aplicações desenvolvidas há mais de 20 anos,
    que já passaram por dezenas de gerações de
    mudanças, ainda são utilizadas até hoje.
   Aplicações utilizadas em áreas críticas(ex.
    aplicações da área de engenharia) não são
    realmente entendidas. Não se tem
    conhecimento detalhado da estrutura de seus
    programas.
A Crise do Software
   Sistemas usados para controlar fábricas,
    tráfego aéreo, usinas de eletricidade, etc.
    apresentam defeitos, mas não podem ser
    tirados de operação porque não há nada
    para substituí-los.
Causas da Crise de Software
    Complexidade dos sistemas
    Dificuldade de formalização
    Falta de documentação
    Má qualidade dos métodos, linguagens,
     ferramentas, processos, e modelos de
     ciclo de vida
    Falta de qualificação técnica
Atividade 1 (entregar na próxima aula)


   1.   Quando começou a crise de software? A crise já finalizou?
   2. Liste as categorias de software que existem e descreva cada
      uma delas. Use como fonte bibliográfica o livro de Pressman
      para elaborar esta lista.
   3. Identifique, cite e explique os mitos do software.
   4. O que é um software legado ?




                                                                    15
Preocupação: Sistematizar o processo de
criação e manutenção de software.
Atividade 2 (realizar em sala de aula)


   1.   O que é um software?
   2. Quais são as atividades necessárias para desenvolver um
      software ?
   3. Quais são os papéis dos profissionais que conformam a
      equipe de desenvolvimento de software ?
   4. Cite as principais dificuldades enfrentadas atualmente no
      desenvolvimento de software.




                                                                  17
Engenharia de Software
Definições

  Boehm: Engenharia de software envolve a
  aplicação prática de conhecimento científico para
  o projeto e construção de programas de
  computador e a documentação associada
  necessária para desenvolvê-los, operá-los e
  mantê-los.
Engenharia de Software
Definições

  IEEE Standard Glossary of Software Engineering
  terminology: Engenharia de software é uma
  abordagem sistemática para o desenvolvimento,
  operação, manutenção de software


  Software: programas de computador,
  procedimentos, regras, documentação
  possivelmente associada, e dados sobre sua
  operação.
Engenharia de Software
Definições

  Fairley: Engenharia de software é a disciplina
   tecnologica e gerencial preocupada com a
   produção sistemática e manutenção de produtos
   de software que são desenvolvidos e modificados
   no prazo estabelecido e dentro das estimativas
   de custo.
abrange um conjunto de três elementos fundamentais:
         Métodos, Ferramentas e Processos

Principais metas: melhorar a qualidade de
  produtos de software, aumentar a
  produtividade do pessoal técnico e aumentar
  a satisfação do cliente.
Engenharia de Software


 métodos: proporcionam os detalhes de
  métodos
 como fazer para construir o software
Engenharia de Software
      ferramentas: dão suporte automatizado
      ferramentas
       aos métodos.
   existem atualmente ferramentas para sustentar
    cada um dos métodos
   quando as ferramentas são integradas é
    estabelecido um sistema de suporte ao
    desenvolvimento de software chamado CASE -
    Computer Aided Software Engineering
Engenharia de Software
       processos: constituem o elo de
       processos
       ligação entre os métodos e ferramentas
    seqüência em que os métodos serão aplicados
    produtos que se exige que sejam entregues
    controles que ajudam assegurar a qualidade e
    coordenar as alterações
    marcos de referência que possibilitam administrar
    o progresso do software.
Engenharia de Software

conjunto de etapas que envolve
                      métodos
                   ferramentas
                  procedimentos


Essas etapas são conhecidas como componentes de
         CICLO DE VIDA DE SOFTWARE
             ou Processo de Software
Elementos e Atividades da
Engenharia de Software
   Elementos                    Atividades
       Modelos do ciclo de
                                     Modelagem do negócio
        vida do software
                                     Elicitação de requisitos
                                     Análise e Projeto
       Linguagens                   Implementação
       Métodos                      Testes
       Ferramentas                  Distribuição
       Processos                    Planejamento
                                     Gerenciamento
                                     Gerência de
                                      Configuração e
                                      Mudanças
                                     Manutenção
Atividades e Artefatos da
Engenharia de Software
                                 Exemplos de Artefatos
   Atividades
                                    Plano de Negócios
       Modelagem do negócio
                                    Plano de Projeto
       Elicitação de requisitos
                                    Plano de Riscos
       Análise e Projeto
       Implementação               Documento de Requisitos

       Testes                      Mapeamentos A&P
       Distribuição                Documento de Caso de Uso
       Planejamento                Documento de Arquitetura
       Gerenciamento               Classes
       Gerência de Configuração e 
        Mudanças                     Código fonte
                                    Documento de Testes
       Manutenção
                                    Documento de Validação

                                    Manual do Sistema
Dúvidas




          28

Aula1 introducao engsw

  • 1.
    Engenharia de Software Aula1 – Introdução à Engenharia de Software Profa. Dra. Judith Pavón Universidade Salvador – UNIFACS 2012
  • 2.
    Conteúdo  Objetivo da aula  Leitura recomendada  O que é Engenharia de Software  O que é Software  Objetivos da Engenharia de Software  Características da Engenharia de Software  O que é um software de qualidade?  Importância da Engenharia de Software  A crise do software  Definição de Engenharia de Software  Atividades e Artefatos de Engenharia de software 2
  • 3.
    Objetivo da aula Oobjetivo desta aula é apresentar e consolidar os conceitos básicos de Engenharia de Software. 3
  • 4.
    Leitura recomendada  Capítulo 1 e 2 do livro “Engenharia de Software” de Roger Pressman.  Capítulo 1 e 2 do livro “Engenharia de Software” de Ian Sommerville.
  • 5.
    O que éa Engenharia de Software?  Estudo ou aplicação de abordagens sistemáticas, econômicas e quantificáveis para o desenvolvimento, operação e manutenção de software de qualidade.  Engenheiros de software devem adotar uma abordagem sistemática e organizada para seu trabalho e usar ferramentas e técnicas/métodos apropriados dependendo do problema a ser solucionado, das restrições de desenvolvimento e dos recursos disponíveis
  • 6.
    O que ésoftware?  É o produto entregue ao cliente ao finalizar o ciclo de desenvolvimento e geralmente é composto por diferentes tipos de artefatos (ex. Código fonte, documentação, programas de instalação, etc.)  Produtos de software podem ser desenvolvidos para um cliente particular ou podem ser desenvolvidos para um mercado geral
  • 7.
    Objetivos da Engenhariade Software  Controle sobre o desenvolvimento de software dentro de custos, prazos e níveis de qualidade desejados  Produtividade no desenvolvimento, operação e manutenção de software  Qualidade versus Produtividade
  • 8.
    Características da Engenharia deSoftware  A Engenharia de Software se refere a software (sistemas) desenvolvidos por grupos ao invés de indivíduos  usa princípios de engenharia ao invés de arte, e  inclui tanto aspectos técnicos quanto não técnicos
  • 9.
    O que éum software de qualidade?  O software que satisfaz os requisitos solicitados pelo usuário. Deve ser fácil de manter, ter boa performance, ser confiável e fácil de usar  Alguns atributos de qualidade  Manutenibilidade  O software deve evoluir para atender os requisitos que mudam  Eficiência  O software não deve desperdiçar os recursos do sistema  Confiabilidade  A taxa de falhas do software deve ser conhecida para saber quanto é confiável esse sistema.  Usabilidade  O software deve ser fácil de usar pelos usuários para os quais ele foi projetado
  • 10.
    Produtividade  Quantidade de requisitos implementados em uma unidade de tempo.  Custo de desenvolvimento reduzido  A empresa consumidora quer investir pouco em software  A empresa produtora tem que oferecer “software barato”  Tempo de desenvolvimento reduzido  Suporte rápido às necessidades do mercado
  • 11.
    Mas, na realidade,temos a Crise de Software...  25% dos projetos são cancelados  o tempo de desenvolvimento é bem maior do que o estimado  75% dos sistemas não funcionam como planejado  a manutenção e reutilização são difíceis e custosas  os problemas são proporcionais a complexidade dos sistemas
  • 12.
    A Crise doSoftware  Aplicações desenvolvidas há mais de 20 anos, que já passaram por dezenas de gerações de mudanças, ainda são utilizadas até hoje.  Aplicações utilizadas em áreas críticas(ex. aplicações da área de engenharia) não são realmente entendidas. Não se tem conhecimento detalhado da estrutura de seus programas.
  • 13.
    A Crise doSoftware  Sistemas usados para controlar fábricas, tráfego aéreo, usinas de eletricidade, etc. apresentam defeitos, mas não podem ser tirados de operação porque não há nada para substituí-los.
  • 14.
    Causas da Crisede Software  Complexidade dos sistemas  Dificuldade de formalização  Falta de documentação  Má qualidade dos métodos, linguagens, ferramentas, processos, e modelos de ciclo de vida  Falta de qualificação técnica
  • 15.
    Atividade 1 (entregarna próxima aula) 1. Quando começou a crise de software? A crise já finalizou? 2. Liste as categorias de software que existem e descreva cada uma delas. Use como fonte bibliográfica o livro de Pressman para elaborar esta lista. 3. Identifique, cite e explique os mitos do software. 4. O que é um software legado ? 15
  • 16.
    Preocupação: Sistematizar oprocesso de criação e manutenção de software.
  • 17.
    Atividade 2 (realizarem sala de aula) 1. O que é um software? 2. Quais são as atividades necessárias para desenvolver um software ? 3. Quais são os papéis dos profissionais que conformam a equipe de desenvolvimento de software ? 4. Cite as principais dificuldades enfrentadas atualmente no desenvolvimento de software. 17
  • 18.
    Engenharia de Software Definições  Boehm: Engenharia de software envolve a aplicação prática de conhecimento científico para o projeto e construção de programas de computador e a documentação associada necessária para desenvolvê-los, operá-los e mantê-los.
  • 19.
    Engenharia de Software Definições  IEEE Standard Glossary of Software Engineering terminology: Engenharia de software é uma abordagem sistemática para o desenvolvimento, operação, manutenção de software Software: programas de computador, procedimentos, regras, documentação possivelmente associada, e dados sobre sua operação.
  • 20.
    Engenharia de Software Definições  Fairley: Engenharia de software é a disciplina tecnologica e gerencial preocupada com a produção sistemática e manutenção de produtos de software que são desenvolvidos e modificados no prazo estabelecido e dentro das estimativas de custo.
  • 21.
    abrange um conjuntode três elementos fundamentais: Métodos, Ferramentas e Processos Principais metas: melhorar a qualidade de produtos de software, aumentar a produtividade do pessoal técnico e aumentar a satisfação do cliente.
  • 22.
    Engenharia de Software métodos: proporcionam os detalhes de métodos como fazer para construir o software
  • 23.
    Engenharia de Software ferramentas: dão suporte automatizado ferramentas aos métodos.  existem atualmente ferramentas para sustentar cada um dos métodos  quando as ferramentas são integradas é estabelecido um sistema de suporte ao desenvolvimento de software chamado CASE - Computer Aided Software Engineering
  • 24.
    Engenharia de Software processos: constituem o elo de processos ligação entre os métodos e ferramentas  seqüência em que os métodos serão aplicados  produtos que se exige que sejam entregues  controles que ajudam assegurar a qualidade e coordenar as alterações  marcos de referência que possibilitam administrar o progresso do software.
  • 25.
    Engenharia de Software conjuntode etapas que envolve métodos ferramentas procedimentos Essas etapas são conhecidas como componentes de CICLO DE VIDA DE SOFTWARE ou Processo de Software
  • 26.
    Elementos e Atividadesda Engenharia de Software  Elementos  Atividades  Modelos do ciclo de  Modelagem do negócio vida do software  Elicitação de requisitos  Análise e Projeto  Linguagens  Implementação  Métodos  Testes  Ferramentas  Distribuição  Processos  Planejamento  Gerenciamento  Gerência de Configuração e Mudanças  Manutenção
  • 27.
    Atividades e Artefatosda Engenharia de Software  Exemplos de Artefatos  Atividades  Plano de Negócios  Modelagem do negócio  Plano de Projeto  Elicitação de requisitos  Plano de Riscos  Análise e Projeto  Implementação  Documento de Requisitos  Testes  Mapeamentos A&P  Distribuição  Documento de Caso de Uso  Planejamento  Documento de Arquitetura  Gerenciamento  Classes  Gerência de Configuração e  Mudanças Código fonte  Documento de Testes  Manutenção  Documento de Validação  Manual do Sistema
  • 28.