56
Engenharia de Software

Aula Info (2)

Embed Size (px)

Citation preview

  • Engenharia de Software

  • Produo de Software

    1- Instrues

    Passos que, em execuo, produzem a funo e o desempenho desejados.

    2 - Estruturas de Dados

    Armazenamento e manipulao adequada da informao necessria s instruo.

    3 - Documentos

    Descrio da operao e do uso dos programas.

    *

    *

  • Caractersticas do Software

    1. Projetado.

    2. No se desgasta mas se deteriora.

    3. Demanda exigem, em grande parte das vezes, elaborao sob medida.

    *

    *

  • Conceito:

    uma das reas da Engenharia que trata dos aspectos de produo de software.

    Engenharia de software envolve a aplicao prtica de conhecimento cientfico para o projeto e construo de programas de computador e a documentao associada necessria para desenvolv-los, oper-los e mant-los. (Boehm)

    Engenharia de Software

    *

  • Objetivo:

    O seu objetivo estabelecer uma sistemtica abordagem de desenvolvimento, atravs de ferramentas e tcnicas apropriadas, dependendo do problema a ser abordado, considerando restries e recursos disponveis.

    Engenharia de Software

    *

  • Fundamentos:

    Mtodos: detalhes de como fazer para construir o software

    Ferramentas: suporte automatizado aos mtodos

    Procedimentos: ligao entre os mtodos e ferramentas

    Principais metas:

    melhorar a qualidade de produtos de software

    aumentar a produtividade do pessoal tcnico

    aumentar a satisfao do cliente.

    Engenharia de Software

    *

  • Ciclo de vida

    O Ciclo de vida do produto de software = Etapas Comea na concepo do problema (solicitao do usurio).Termina quando o sistema sai de uso.

    *

    *

  • Alguns modelos de ciclos de vida mais conhecidos so:

    Clssico: CascataEvolutivo: Prototipao Modelo Espiral

    Ciclo de vida - Modelos

    *

  • Ciclo de Vida Clssico (Cascata)

    modelo mais antigo e o mais amplamente usado da engenharia de software modelado em funo do ciclo da engenharia convencionalrequer uma abordagem sistemtica, seqencial ao desenvolvimento de software

    *

  • Cascata

    *

    Engenharia de Sistemas

    Anlise de Requisitos

    Projeto

    Codificao

    Testes

    Manuteno

  • Atividades do Ciclo de Vida Clssico

    ANLISE E ENGENHARIA DE SISTEMAS

    envolve a coleta de requisitos em nvel do sistema, pequena quantidade de projeto e anlise de alto nvel

    viso essencial quando o software deve fazer interface com outros elementos (hardware, pessoas e banco de dados)

    *

    Engenharia de Sistemas

    Anlise de Requisitos

    Projeto

    Codificao

    Testes

    Manuteno

  • Atividades do Ciclo de Vida Clssico

    ANLISE DE REQUISITOS DE SOFTWARE

    processo de coleta dos requisitos intensificado e concentrado especificamente no software

    deve-se compreender o domnio da informao, a funo, desempenho e interfaces exigidos

    os requisitos (para o sistema e para o software) so documentados e revistos com o cliente

    *

    Engenharia de Sistemas

    Anlise de Requisitos

    Projeto

    Codificao

    Testes

    Manuteno

  • Atividades do Ciclo de Vida Clssico

    PROJETO

    traduo dos requisitos do software para um conjunto de representaes que podem ser avaliadas quanto qualidade, antes que a codificao se inicie

    *

    Engenharia de Sistemas

    Anlise de Requisitos

    Projeto

    Codificao

    Testes

    Manuteno

  • Atividades do Ciclo de Vida Clssico

    CODIFICAO

    traduo das representaes do projeto para uma linguagem artificial resultando em instrues executveis pelo computador

    *

    Engenharia de Sistemas

    Anlise de Requisitos

    Projeto

    Codificao

    Testes

    Manuteno

  • Atividades do Ciclo de Vida Clssico

    TESTES

    Concentram-se:

    nos aspectos lgicos internos do software, garantindo que todas as instrues tenham sido testadas

    nos aspectos funcionais externos, para descobrir erros e garantir que a entrada definida produza resultados que concordem com os esperados.

    *

    Engenharia de Sistemas

    Anlise de Requisitos

    Projeto

    Codificao

    Testes

    Manuteno

  • Atividades do Ciclo de Vida Clssico

    MANUTENO

    o software poder sofrer mudanas depois que for entregue ao cliente

    causas das mudanas: erros, adaptao do software para acomodar mudanas em seu ambiente externo e exigncia do cliente para acrscimos funcionais e de desempenho

    *

    Engenharia de Sistemas

    Anlise de Requisitos

    Projeto

    Codificao

    Testes

    Manuteno

  • Prototipao

    processo que possibilita que o desenvolvedor crie um modelo do software que deve ser construdo. idealmente, o modelo (prottipo) serve como um mecanismo para identificar os requisitos de software.apropriado para quando o cliente definiu um conjunto de objetivos gerais para o software, mas no identificou requisitos de entrada, processamento e sada com detalhes.

    *

  • Prototipao

    *

    fim

    incio

    construo produto

    refinamento prottipo

    avaliao prottipo

    construo prottipo

    projeto rpido

    obteno dos requisitos

  • Atividades da Prototipao

    Obteno dos Requisitos: desenvolvedor e cliente definem os objetivos gerais do software, identificam quais requisitos so conhecidos e as reas que necessitam de definies adicionais

    Projeto Rpido: representao dos aspectos do software que so visveis ao usurio (abordagens de entrada e formatos de sada)

    *

    fim

    incio

    construo produto

    refinamento prottipo

    avaliao prottipo

    construo prottipo

    projeto rpido

    obteno dos requisitos

  • Construo Prottipo: implementao do projeto rpido

    Avaliao do Prottipo: cliente e desenvolvedor avaliam o prottipo

    Atividades da Prototipao

    *

    fim

    incio

    construo produto

    refinamento prottipo

    avaliao prottipo

    construo prottipo

    projeto rpido

    obteno dos requisitos

  • Refinamento dos Requisitos: cliente e desenvolvedor refinam os requisitos do software a ser desenvolvido.

    Ocorre neste ponto um processo de iterao que conduzir a atividade at que as necessidades do cliente sejam satisfeitas e o desenvolvedor compreenda o que precisa ser feito.

    Atividades da Prototipao

    *

    fim

    incio

    construo produto

    refinamento prottipo

    avaliao prottipo

    construo prottipo

    projeto rpido

    obteno dos requisitos

  • Construo Produto:

    identificados os requisitos, o prottipo deve ser descartado e a verso de produo deve ser construda considerando os critrios de qualidade.

    Atividades da Prototipao

    *

    fim

    incio

    construo produto

    refinamento prottipo

    avaliao prottipo

    construo prottipo

    projeto rpido

    obteno dos requisitos

  • Ciclo de Vida em Espiral

    engloba as melhores caractersticas do ciclo de vida Clssico e da Prototipao, adicionando um novo elemento: a Anlise de Risco

    segue a abordagem de passos sistemticos do Ciclo de Vida Clssico incorporando-os numa estrutura iterativa que reflete mais realisticamente o mundo real

    usa a Prototipao, em qualquer etapa da evoluo do produto, como mecanismo de reduo de riscos

    *

  • Espiral

    *

    deciso de continuar ou no

    direo de um sistema concludo

    avaliao do cliente

    engenharia

    anlise dos riscos

    planejamento

  • Atividades do Ciclo de Vida em Espiral

    Planejamento: determinao dos objetivos, alternativas e restriesAnlise de Risco: anlise das alternativas e identificao / resoluo dos riscosConstruo: desenvolvimento do produto no nvel seguinteAvaliao do Cliente: avaliao do produto e planejamento das novas fases

    *

    avaliao do cliente

    engenharia

    anlise dos riscos

    planejamento

  • Engenharia de Software
    Metodologias

  • Crise do Software (~1970)

    Desenvolvimento de Software de forma artesanal atravs do desenho de telas e arquivosConstantes erros de execuoPouco tempo para coletar dadosNo cumprimento de prazosProblemas de custos inesperados relacionados a correo de erros e adaptao do cdigoCdigo/documentao ilegvel ou inexistenteComunicao durante o desenvolvimento muito fracaFalta de testes complexosInsatisfao de usurios

    *

  • Surgimento das Metodologias de Desenvolvimento de Sistemas

    *

  • Evoluo

    *

    Definio de Objetos

    Dados, Controles

    e Processos

    Anlise OO

    Middle - Out (Lista de Eventos)

    Controles, Processos

    e Dados

    Anlise Essencial

    Top-Down (Decomposio Funcional)

    Processos e Dados

    Anlise Estruturada

    Abordagem

    Enfoque

    Tcnica

  • Anlise Estruturada

    O mais amplamente usado dos mtodos de modelagem de requisitosModelos que retratam fluxo e o contedo da informao (dados e controle)O sistema dividido em parties funcionais e comportamentais e descrevemos a essncia do que deve ser construdoEnfatiza a perspectiva das funes, com nfase nos processos.Utiliza as seguintes ferramentas:

    Diagrama de Fluxo de Dados

    Dicionrio de Dados

    Especificao da Lgica de Processos

    *

  • Exemplo: DFD

    DFD Diagrama de Fluxo de Dados Tcnica grfica que descreve o fluxo da informao e as transformaes sofridas por esta Pode ser utilizado para representar um sistema em qualquer nvel de abstraoNotao simples

    *

  • E1

    Departamento

    de produo

    E2

    Fornecedores

    P1

    Escolher

    fornecedor

    P2

    Pedir

    materiais

    Lista_materiais

    necessrios

    Pedido_preos

    Preos_material

    Nota_encomenta

    Lista

    Dados_fornecedor

    Dados_fornecedor

    Entidade

    externa

    Fluxo de dados

    Depsito

    De dados

    Processo

    Exemplo: DFD

    *

    D1 Fornecedores

  • Anlise Essencial

    uma evoluo da Anlise Estruturada por adicionar a preocupao com o controle.Usa uma lista de eventos externos como base para o particionamento do sistema.O modelo essencial construdo sem considerar restries de implementao (assume uma tecnologia perfeita) essncia do sistema

    *

  • Diagrama de Contexto

    *

    Constri um DFD para cada evento (DFD de resposta a eventos). A partir dele feito o agrupamento para formar os diagramas superiores e inferiores.
  • Lista de eventos

    *

  • Anlise Essencial

    *

  • O mundo real composto por objetos. Cada objeto tem propriedades e comportamentos. Ento porqu no desenvolver programas que simulem no computador os objetos do mundo real com suas propriedades e comportamentos?

    Anlise Orientada a Objetos

    *

  • Nos mtodos tradicionais de anlise, o comportamento do sistema e seus dados eram considerados separadamente. Com orientao a objetos, comportamento e dados so integrados, assim encapsulando detalhes internos de um objeto dos demais.

    Foco

    Sistema

    Objeto

    Anlise Orientada a Objetos

    *

    Anlise

    Estruturada

    e Essencial

    Orientada a

    Objetos

    Enfoque

    Conjunto de programas que executam processos

    Sobre dados

    Conjunto de entidades que tm caractersticas e

    Comportamentos prprios

    *

  • UML

    UML (Unified Modeling Language) Linguagem de Modelagem Unificada uma linguagem de modelagem (visual), no uma linguagem de programaoPermite a utilizao de diagramas padronizados para especificao e visualizao de um sistema

    *

  • Diagramas UML

    Estrutural (Esttica)Diagrama de ClassesDiagramas de ObjetosDiagrama de Caso de UsoDiagrama de ComponentesDinmicaDiagrama de EstadosDiagrama de AtividadesDiagrama de ColaboraoDiagrama de SeqnciaRepresentao Grfica de um Conjunto de Elementos

    *

  • Diagrama de Caso de Uso

    Usado geralmente nas fases de Levantamento e Anlise de Requisito do Sistema, mostra como o sistema ir se comportar.

    *

  • Diagrama de Classes

    *

    Define a estrutura de classes do sistema e estabelece como elas se relacionam.

  • *

    Classes

    Uma classe composta por trs sees

    Nome da Classe

    DVD

    Atributos

    Operaes

    Hora

    Status

    estrutura

    comportamento

    Voltar()

    Pausar()

    Adiantar()

    Parar()

    Tocar()

  • Diagrama de Objetos

    *

    Exibe os valores armazenados pelos objetos de um Diagrama de Classes

  • Conceito de Orientao a Objetos

  • OO

    O que um Objeto ? a representao de um objeto real uma abstraotudo que manipulvel e/ou manufaturvelcoisa, pea, artigo de compra e vendapode ser uma composio de outros objetosExemplosautomvel, pessoa, elevador, janela, etc..
  • OO

    Propriedades de um Objeto o estado do objetoso atribuitos da coisaexemploEm um automvel temosligado/desligadoposiovelocidademarca/modelocor, placa, nmero de portas, etc.
  • Mtodos de um objetorepresenta o comportamento do objetomuda o estado do objetoexemploEm um automvel temosligar/desligar acelerarfreiarvirar p/ esquerdavirar p/ direita

    OO

  • Eventos de um Objetoso acontecimentos que fazem o objeto responder de determinada maneiraalteram o estado e mudam o comportamentoexemploEm um automvel temosusurio... pisa no acelerador ou no freiovira o volante para esquerda ou direitavira a chave na ignio para ON ou OFF

    OO

  • Classe de ObjetosDefinio de um tipo de objetosDefine a forma de se criar objetos uma fbrica de objetosTodos os objetos de uma classe tm uma estrutura idntica, mas cada objeto ter seus prprios atributosExemploClasse: CARROS (cor, portas, placa, posio, velocidade, etc.)Objeto: carro vermelho/2 pts/XXX9999/(100,10)/100km/h...

    OO

  • Porque usar Objetos ?Simplicidade: os objetos escondem a complexidade do cdigo. Pode-se criar aplicaes sem se conhecer a complexidade do cdigo.Reutilizao de cdigo: um objeto, depois de criado, pode ser reutilizado por outras aplicaes, e at extender suas funes.Incluso dinmica: objetos podem ser includos dinmicamente durante a execuo, reduzindo o tamanho do arquivo final.

    OO

  • Princpios bsicos de uma linguagem OO

    1) Abstrao

    o processo de extrair as caractersticas essenciais de um objetoa abstrao de um objeto diferente de acordo com a viso de cada pessoaex: livro

    Livraria: autor, ttulo, assunto, editora, preo

    Transportadora: nmero de pginas, formato e

    tipo de capa (=>peso)

    OO

  • Princpios bsicos de uma linguagem OO

    2) Encapsulamento

    o processo de combinar dados e funes relacionadas em um nico bloco de organizaoagrupa o estado do objeto e as funes que ele capaz de executar, e que alteram seu prprio estadoesconde a complexidade do cdigoexemplo: radio.ligar := true;

    radio.gravar(musica);

    OO

  • Princpios bsicos de uma linguagem OO

    3) Herana

    o aproveitamento e extenso das caractersticas de uma classe existenteuma classe mais sofisticada herda as caractersticas e funcionalidades de uma classe bsicaexemplo:Classe CARROS_ESPORTIVOS

    como herana da Classe CARROS

    * Novos Atributos: turbo, barra de proteo, rdio intercomunicador, temperatura do leo, etc.

    OO

  • Princpios bsicos de uma linguagem OO

    4) Polimorfismo

    a propriedade de se utilizar um mesmo nome ou forma para fazer coisas diferentesmuito til para escrever programas versteis, que possam lidar com vrios tipos diferentes de objetosexemplo:tringulo.Desenhe;

    retngulo.Desenhe;

    crculo.Desenhe;

    reta.Desenhe;

    Sobreposio

    de mtodos

    OO

  • Programao OO (Orientada a Objetos)Os objetos so a base da tecnologiaConsistem de modelos (abstraes) de objetos reaisPreservam as caractersticas essenciais de um objeto real: suas propriedades e seu comportamento (mtodos)Exemplos de linguagens OOC++, Delphi, Java, etc.

    OO