Introdução à Engenharia de Software -...

Click here to load reader

  • date post

    08-Nov-2018
  • Category

    Documents

  • view

    217
  • download

    0

Embed Size (px)

Transcript of Introdução à Engenharia de Software -...

  • www.romulocesar.com.br

    FACULDADE DOS

    GUARARAPES

    Professor:

    Rmulo Csar

    [email protected]

    www.romulocesar.com.br

    mailto:[email protected]

  • Imagem Clssica

  • Objetivo da aula

    Depois desta aula voc ter uma viso sobre o

    que a engenharia de software, os seus

    objetivos e conceitos bsicos.

  • Leitura recomendada

    Captulo 1 (Introduo) do livro Engenharia

    Software 9 Edio (de Ian Sommerville)

  • O que a Engenharia de Software?

    Estudo ou aplicao de abordagens sistemticas,econmicas e quantificveis para odesenvolvimento, operao e manuteno desoftware de qualidade.

    Engenheiros de software devem adotar umaabordagem sistemtica e organizada para seutrabalho e usar ferramentas e tcnicas/mtodosapropriados dependendo do problema a sersolucionado, das restries de desenvolvimento edos recursos disponveis

  • O que software?

    Programas de computador e documentao

    associada

    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 nveis de qualidade desejados

    Produtividade no desenvolvimento, operao e manuteno de software

    Qualidade versus Produtividade

    Permitir que profissionais tenham controle sobre o desenvolvimento de software dentro de custos, prazos e nveis de qualidade desejados

  • Caractersticas da Engenharia de Software

    A Engenharia de Software se refere a software

    (sistemas) desenvolvidos por grupos ao invs

    de indivduos

    usa princpios de engenharia ao invs de arte,

    e

    inclui tanto aspectos tcnicos quanto no

    tcnicos

  • O que um software de qualidade? O software que satisfaz os requisitos solicitados

    pelo usurio. Deve ser fcil de manter, ter boa performance, ser confivel e fcil de usar

    Alguns atributos de qualidade

    Manutenibilidade

    O software deve evoluir para atender os requisitos que mudam

    Eficincia

    O software no deve desperdiar os recursos do sistema

    Usabilidade

    O software deve ser fcil de usar pelos usurios para os quais ele foi projetado

  • Qualidade de Software (um exemplo para o Varejo)

    Correto

    A loja no pode deixar de cobrar por produtos comprados pelo consumidor

    Robusto e altamente disponvel

    A loja no pode parar de vender

    Eficiente

    O consumidor no pode esperar

    A empresa quer investir pouco em recursos computacionais (CPU, memria, rede)

  • Qualidade de Software (um exemplo para o Varejo)

    Amigvel e fcil de usar

    A empresa quer investir pouco em treinamento

    Altamente extensvel e adaptvel

    A empresa tem sempre novos requisitos (para ontem!)

    A empresa quer o software customizado do seu jeito

    (interface, teclado, idioma, moeda, etc.)

    Reusvel

    Vrias empresas precisam usar partes de um mesmo

    sistema

  • Qualidade de Software (um exemplo para o Varejo)

    Aberto, compatvel, de fcil integrao com outros

    sistemas

    A empresa j tem controle de estoque, fidelizao, etc.

    Portvel e independente de plataforma (hw e sw)

    A empresa opta por uma determinada plataforma

    Baixo custo de instalao e atualizao

    A empresa tem um grande nmero de PDVs

  • Produtividade

    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 rpido s necessidades do mercado

  • Software Barato

    Nem tanto resultado de baixos custos de desenvolvimento, mas principalmente da

    distribuio dos custos entre vrios clientes.

    Reuso, extensibilidade e adaptabilidade so essenciais para viabilizar tal distribuio.

  • Importncia da Engenharia de Software

    Qualidade de software e produtividade

    garantem:

    Disponibilidade de servios essenciais

    Segurana de pessoas

    Competitividade das empresas

    Produtores

    Consumidores

  • Mas, na realidade, temos a Crise de Software...

    25% dos projetos so cancelados

    o tempo de desenvolvimento bem maior do que o estimado

    75% dos sistemas no funcionam como planejado

    a manuteno e reutilizao so difceis e custosas

    os problemas so proporcionais a complexidade dos sistemas

  • Causas da Crise de Software

    Essncias

    Complexidade dos sistemas

    Dificuldade de formalizao

    Acidentes

    M qualidade dos mtodos, linguagens,

    ferramentas, processos, e modelos de ciclo de

    vida

    Falta de qualificao tcnica

  • Elementos e Atividades da Engenharia de Software

    Elementos

    Modelos do ciclo de

    vida do software

    Linguagens

    Mtodos

    Ferramentas

    Processos

    Atividades Modelagem do negcio

    Elicitao de requisitos

    Anlise e Projeto

    Implementao

    Testes

    Distribuio

    Planejamento

    Gerenciamento

    Gerncia de Configurao e Mudanas

    Manuteno

  • Atividades e Artefatos da Engenharia de Software

    Artefatos

    Plano de Negcios

    Plano de Projeto

    Plano de Riscos

    Documento de Requisitos

    Mapeamentos A&P

    Documento de Caso de Uso

    Documento de Arquitetura

    Classes

    Documento de Testes

    Documento de Validao

    Manual do Sistema

    Atividades

    Modelagem do negcio

    Elicitao de requisitos

    Anlise e Projeto

    Implementao

    Testes

    Distribuio

    Planejamento

    Gerenciamento

    Gerncia de Configurao e Mudanas

    Manuteno

  • O que um modelo de ciclo de vida de processo de software?

    Uma representao abstrata e simplificada

    do processo de desenvolvimento software,

    tipicamente mostrando as principais

    atividades e dados usados na produo e

    manuteno de software

  • Linguagem

    Notao com sintaxe e semntica bem

    definidas

    com representao grfica ou textual

    Usada para descrever os artefatos gerados

    durante o desenvolvimento de software

    Exemplos: UML, Java

  • Mtodo

    Descrio sistemtica de como deve-se

    realizar uma determinada atividade ou tarefa

    A descrio normalmente feita atravs de

    padres e guias

    Exemplos: Mtodo para descoberta das

    classes de anlise no RUP.

  • Ferramenta CASE ( Computer-Aided Software Engineering )Engenharia de Software Auxiliada por Computador

    Prov suporte computacional a um

    determinado mtodo ou linguagem

    Ambiente de desenvolvimento: conjunto de

    ferramentas integradas (CASE)

    Exemplos: Rational Rose, JBuilder

  • Processo

    Conjunto de atividades

    bem definidas

    com responsveis

    com artefatos de entrada e sada

    com dependncias entre as mesmas e ordem

    de execuo

    com modelo de ciclo de vida

  • Processo de software

    Um conjunto de atividades cujo objetivo o

    desenvolvimento ou a evoluo do software

    Conjunto coerente de atividades para

    especificao, projeto, implementao e teste

    de sistemas de software

  • Metodologia

    Conjunto de mtodos + processo

  • Pontos principais

    Engenharia de software uma disciplina de engenharia

    que est envolvida com todos os aspectos da produo

    de software

    Produtos de software consistem de programas

    desenvolvidos e documentao associada. Alguns

    atributos de qualidade do produto so

    manutenibilidade, eficincia e usabilidade

    O processo de software consiste nas atividades que

    so envolvidas no desenvolvimento de produtos de

    software

  • Pontos principais

    Mtodos so formas organizadas de produzir software.

    Eles incluem sugestes para o processo a ser seguido,

    as notaes a serem usadas, regras que governam as

    descries do sistema que so produzidas e diretrizes

    de projeto

    Ferramentas CASE so sistemas de software que so

    projetados para suportar as atividades rotineiras no

    processo de software, como edio de diagramas de

    projeto e verificao de consistncia dos diagramas