Engenharia de Software. Produção de Software 1- Instruções Passos que, em execução, produzem a...

56
Engenharia de Software

Transcript of Engenharia de Software. Produção de Software 1- Instruções Passos que, em execução, produzem a...

Page 1: Engenharia de Software. Produção de Software 1- Instruções Passos que, em execução, produzem a função e o desempenho desejados. 2 - Estruturas de Dados.

Engenharia de Software

Page 2: Engenharia de Software. Produção de Software 1- Instruções Passos que, em execução, produzem a função e o desempenho desejados. 2 - Estruturas de Dados.

Produção de Software

1- InstruçõesPassos que, em execução, produzem a função e o desempenho desejados.

2 - Estruturas de DadosArmazenamento e manipulação adequada da informação necessária às instrução.

3 - DocumentosDescrição da operação e do uso dos programas.

2

Page 3: Engenharia de Software. Produção de Software 1- Instruções Passos que, em execução, produzem a função e o desempenho desejados. 2 - Estruturas de Dados.

Características do Software

1. Projetado.

2. Não se desgasta mas se deteriora.

3. Demanda exigem, em grande parte das vezes, elaboração sob medida.

3

Page 4: Engenharia de Software. Produção de Software 1- Instruções Passos que, em execução, produzem a função e o desempenho desejados. 2 - Estruturas de Dados.

Conceito: É uma das áreas da Engenharia que trata dos

aspectos de produção de software.

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. (Boehm)

Engenharia de Software

4

Page 5: Engenharia de Software. Produção de Software 1- Instruções Passos que, em execução, produzem a função e o desempenho desejados. 2 - Estruturas de Dados.

Objetivo: O seu objetivo é estabelecer uma

sistemática abordagem de desenvolvimento, através de ferramentas e técnicas apropriadas, dependendo do problema a ser abordado, considerando restrições e recursos disponíveis.

Engenharia de Software

5

Page 6: Engenharia de Software. Produção de Software 1- Instruções Passos que, em execução, produzem a função e o desempenho desejados. 2 - Estruturas de Dados.

Fundamentos: Métodos: detalhes de como fazer para construir o

software

Ferramentas: suporte automatizado aos métodos

Procedimentos: ligação entre os métodos e ferramentas

Principais metas: melhorar a qualidade de produtos de software

aumentar a produtividade do pessoal técnico

aumentar a satisfação do cliente.

Engenharia de Software

6

Page 7: Engenharia de Software. Produção de Software 1- Instruções Passos que, em execução, produzem a função e o desempenho desejados. 2 - Estruturas de Dados.

Ciclo de vida

O Ciclo de vida do produto de software = Etapas

Começa na concepção do problema (solicitação do usuário).

Termina quando o sistema sai de uso.

7

Page 8: Engenharia de Software. Produção de Software 1- Instruções Passos que, em execução, produzem a função e o desempenho desejados. 2 - Estruturas de Dados.

Alguns modelos de ciclos de vida mais conhecidos são:

• Clássico: Cascata

• Evolutivo: Prototipação

• Modelo Espiral

Ciclo de vida - Modelos

8

Page 9: Engenharia de Software. Produção de Software 1- Instruções Passos que, em execução, produzem a função e o desempenho desejados. 2 - Estruturas de Dados.

Ciclo de Vida Clássico (Cascata)

modelo mais antigo e o mais amplamente usado da engenharia de software

modelado em função do ciclo da engenharia convencional

requer uma abordagem sistemática, seqüencial ao desenvolvimento de software

9

Page 10: Engenharia de Software. Produção de Software 1- Instruções Passos que, em execução, produzem a função e o desempenho desejados. 2 - Estruturas de Dados.

Engenharia de SistemasEngenharia de Sistemas

Análise de Requisitos Análise de Requisitos

Projeto Projeto

Codificação Codificação

Testes Testes

Manutenção Manutenção

Cascata

10

Page 11: Engenharia de Software. Produção de Software 1- Instruções Passos que, em execução, produzem a função e o desempenho desejados. 2 - Estruturas de Dados.

Atividades do Ciclo de Vida Clássico

ANÁLISE E ENGENHARIA DE SISTEMAS

envolve a coleta de requisitos em nível do sistema, pequena quantidade de projeto e

análise de alto nível

Engenharia de Sistemas

Análise de Requisitos

Projeto

Codificação

Testes

Manutenção

visão essencial quando o software deve fazer interface com

outros elementos (hardware, pessoas e banco de dados)

11

Page 12: Engenharia de Software. Produção de Software 1- Instruções Passos que, em execução, produzem a função e o desempenho desejados. 2 - Estruturas de Dados.

Atividades do Ciclo de Vida Clássico

ANÁLISE DE REQUISITOS DE SOFTWARE

processo de coleta dos requisitos é intensificado e concentrado especificamente no software

deve-se compreender o domínio da informação, a função, desempenho e interfaces exigidos

os requisitos (para o sistema e para o software) são documentados e revistos com o

cliente

Engenharia de Sistemas

Análise de Requisitos

Projeto

Codificação

Testes

Manutenção

12

Page 13: Engenharia de Software. Produção de Software 1- Instruções Passos que, em execução, produzem a função e o desempenho desejados. 2 - Estruturas de Dados.

Atividades do Ciclo de Vida Clássico

PROJETO

tradução dos requisitos do software para um conjunto de representações que podem ser avaliadas quanto à qualidade, antes que a

codificação se inicieEngenharia de Sistemas

Análise de Requisitos

Projeto

Codificação

Testes

Manutenção

13

Page 14: Engenharia de Software. Produção de Software 1- Instruções Passos que, em execução, produzem a função e o desempenho desejados. 2 - Estruturas de Dados.

Atividades do Ciclo de Vida Clássico

CODIFICAÇÃO

tradução das representações do projeto para uma linguagem

“artificial” resultando em instruções executáveis pelo

computador

Engenharia de Sistemas

Análise de Requisitos

Projeto

Codificação

Testes

Manutenção

14

Page 15: Engenharia de Software. Produção de Software 1- Instruções Passos que, em execução, produzem a função e o desempenho desejados. 2 - Estruturas de Dados.

Atividades do Ciclo de Vida Clássico

TESTES

Concentram-se:

nos aspectos lógicos internos do software,

garantindo que todas as instruções 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

Análise de Requisitos

Projeto

Codificação

Testes

Manutenção

15

Page 16: Engenharia de Software. Produção de Software 1- Instruções Passos que, em execução, produzem a função e o desempenho desejados. 2 - Estruturas de Dados.

Atividades do Ciclo de Vida Clássico

MANUTENÇÃO

o software poderá sofrer mudanças depois que for entregue ao cliente

Engenharia de Sistemas

Análise de Requisitos

Projeto

Codificação

Testes

Manutenção

causas das mudanças: erros, adaptação do

software para acomodar mudanças em seu

ambiente externo e exigência do cliente para acréscimos funcionais e

de desempenho

16

Page 17: Engenharia de Software. Produção de Software 1- Instruções Passos que, em execução, produzem a função e o desempenho desejados. 2 - Estruturas de Dados.

Prototipação

processo que possibilita que o desenvolvedor crie um modelo do software que deve ser construído.

idealmente, o modelo (protótipo) 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 não identificou requisitos de entrada, processamento e saída com detalhes.17

Page 18: Engenharia de Software. Produção de Software 1- Instruções Passos que, em execução, produzem a função e o desempenho desejados. 2 - Estruturas de Dados.

fim

início

construção produto

refinamento protótipo

avaliação protótipo

construção protótipo

projeto rápido

obtenção dos

requisitos

Prototipação

18

Page 19: Engenharia de Software. Produção de Software 1- Instruções Passos que, em execução, produzem a função e o desempenho desejados. 2 - Estruturas de Dados.

Atividades da Prototipação

Obtenção dos Requisitos: desenvolvedor e cliente definem os objetivos gerais do software, identificam quais requisitos são

conhecidos e as áreas que necessitam de definições

adicionais

Projeto Rápido: representação dos aspectos do software que são

visíveis ao usuário (abordagens de entrada e formatos de saída)

fim

início

construção produto

refinamento protótipo

avaliação protótipo

construção protótipo

projeto rápido

obtenção dos

requisitos

19

Page 20: Engenharia de Software. Produção de Software 1- Instruções Passos que, em execução, produzem a função e o desempenho desejados. 2 - Estruturas de Dados.

Construção Protótipo: implementação do projeto

rápido

Avaliação do Protótipo: cliente e desenvolvedor

avaliam o protótipo

Atividades da Prototipação

fim

início

construção produto

refinamento protótipo

avaliação protótipo

construção protótipo

projeto rápido

obtenção dos

requisitos

20

Page 21: Engenharia de Software. Produção de Software 1- Instruções Passos que, em execução, produzem a função e o desempenho desejados. 2 - Estruturas de Dados.

Refinamento dos Requisitos: cliente e desenvolvedor refinam os requisitos do

software a ser desenvolvido.

Ocorre neste ponto um processo de iteração que

conduzirá a atividade até que as necessidades do cliente

sejam satisfeitas e o desenvolvedor compreenda o

que precisa ser feito.

Atividades da Prototipação

fim

início

construção produto

refinamento protótipo

avaliação protótipo

construção protótipo

projeto rápido

obtenção dos

requisitos

21

Page 22: Engenharia de Software. Produção de Software 1- Instruções Passos que, em execução, produzem a função e o desempenho desejados. 2 - Estruturas de Dados.

Construção Produto:

identificados os requisitos, o protótipo deve ser

descartado e a versão de produção deve ser

construída considerando os critérios de qualidade.

fim

início

construção produto

refinamento protótipo

avaliação protótipo

construção protótipo

projeto rápido

obtenção dos

requisitos

Atividades da Prototipação

22

Page 23: Engenharia de Software. Produção de Software 1- Instruções Passos que, em execução, produzem a função e o desempenho desejados. 2 - Estruturas de Dados.

Ciclo de Vida em Espiral

engloba as melhores características do ciclo de vida Clássico e da Prototipação, adicionando um novo elemento: a Análise de Risco

segue a abordagem de passos sistemáticos do Ciclo de Vida Clássico incorporando-os numa estrutura iterativa que reflete mais realisticamente o mundo real

usa a Prototipação, em qualquer etapa da evolução do produto, como mecanismo de redução de riscos

23

Page 24: Engenharia de Software. Produção de Software 1- Instruções Passos que, em execução, produzem a função e o desempenho desejados. 2 - Estruturas de Dados.

decisão de continuar ou não

direção de um sistema concluídoavaliação

do cliente engenharia

análise dos riscos

planejamento

Espiral

24

Page 25: Engenharia de Software. Produção de Software 1- Instruções Passos que, em execução, produzem a função e o desempenho desejados. 2 - Estruturas de Dados.

Atividades do Ciclo de Vida em Espiral

Planejamento: determinação dos objetivos, alternativas e restrições

Análise de Risco: análise das alternativas e identificação / resolução dos riscos

Construção: desenvolvimento do produto no nível seguinte

Avaliação do Cliente: avaliação do produto e planejamento das novas fases

avaliação do cliente engenharia

análise dos riscos

planejamento

25

Page 26: Engenharia de Software. Produção de Software 1- Instruções Passos que, em execução, produzem a função e o desempenho desejados. 2 - Estruturas de Dados.

Engenharia de SoftwareMetodologias

Page 27: Engenharia de Software. Produção de Software 1- Instruções Passos que, em execução, produzem a função e o desempenho desejados. 2 - Estruturas de Dados.

Crise do Software (~1970)

Desenvolvimento de Software de forma “artesanal” através do desenho de telas e arquivos

Constantes erros de execução Pouco tempo para coletar dados Não cumprimento de prazos Problemas de custos inesperados relacionados a

correção de erros e adaptação do código Código/documentação ilegível ou inexistente Comunicação durante o desenvolvimento muito fraca Falta de testes complexos Insatisfação de usuários

27

Page 28: Engenharia de Software. Produção de Software 1- Instruções Passos que, em execução, produzem a função e o desempenho desejados. 2 - Estruturas de Dados.

Surgimento das Metodologias de Desenvolvimento de Sistemas

28

Page 29: Engenharia de Software. Produção de Software 1- Instruções Passos que, em execução, produzem a função e o desempenho desejados. 2 - Estruturas de Dados.

Definição de Objetos Dados, Controles

e Processos

Análise OO

Middle - Out (Lista de Eventos)

Controles, Processos

e Dados

Análise Essencial

Top-Down (Decomposição Funcional)

Processos e Dados Análise Estruturada

AbordagemEnfoqueTécnica

Evolução

29

Page 30: Engenharia de Software. Produção de Software 1- Instruções Passos que, em execução, produzem a função e o desempenho desejados. 2 - Estruturas de Dados.

Análise Estruturada O mais amplamente usado dos métodos de

modelagem de requisitos Modelos que retratam fluxo e o conteúdo da

informação (dados e controle) O sistema é dividido em partições funcionais e

comportamentais e descrevemos a essência do que deve ser construído

Enfatiza a perspectiva das funções, com ênfase nos processos.

Utiliza as seguintes ferramentas:

Diagrama de Fluxo de Dados

Dicionário de Dados

Especificação da Lógica de Processos

30

Page 31: Engenharia de Software. Produção de Software 1- Instruções Passos que, em execução, produzem a função e o desempenho desejados. 2 - Estruturas de Dados.

Exemplo: DFD

DFD – Diagrama de Fluxo de Dados Técnica gráfica que descreve o fluxo da

informação e as transformações sofridas por esta Pode ser utilizado para representar um sistema

em qualquer nível de abstração Notação simples

31

Page 32: Engenharia de Software. Produção de Software 1- Instruções Passos que, em execução, produzem a função e o desempenho desejados. 2 - Estruturas de Dados.

E1Departamentode produção

E2Fornecedores

P1Escolher

fornecedor

P2Pedir

materiais

D1 Fornecedores

Lista_materiaisnecessários

Pedido_preços

Preços_material

Nota_encomenta

Lista

Dados_fornecedor

Dados_fornecedor

Entidade externa

Fluxo de dadosDepósitoDe dados

Processo

Exemplo: DFD

32

Page 33: Engenharia de Software. Produção de Software 1- Instruções Passos que, em execução, produzem a função e o desempenho desejados. 2 - Estruturas de Dados.

Análise Essencial

É uma evolução da Análise Estruturada por

adicionar a preocupação com o controle.

Usa uma lista de eventos externos como base

para o particionamento do sistema.

O modelo essencial é construído sem considerar

restrições de implementação (assume uma

tecnologia perfeita) – essência do sistema

33

Page 34: Engenharia de Software. Produção de Software 1- Instruções Passos que, em execução, produzem a função e o desempenho desejados. 2 - Estruturas de Dados.

Diagrama de Contexto

34

Constrói um DFD para cada evento (DFD de resposta a eventos). A partir dele é feito o agrupamento para formar os diagramas superiores e inferiores.

Page 35: Engenharia de Software. Produção de Software 1- Instruções Passos que, em execução, produzem a função e o desempenho desejados. 2 - Estruturas de Dados.

Lista de eventos

35

Page 36: Engenharia de Software. Produção de Software 1- Instruções Passos que, em execução, produzem a função e o desempenho desejados. 2 - Estruturas de Dados.

Análise Essencial

36

Page 37: Engenharia de Software. Produção de Software 1- Instruções Passos que, em execução, produzem a função e o desempenho desejados. 2 - Estruturas de Dados.

O mundo real é composto por objetos.

Cada objeto tem propriedades e comportamentos.

Então porquê não desenvolver programas que

simulem no computador os objetos do mundo real

com suas propriedades e comportamentos?

Análise Orientada a Objetos

37

Page 38: Engenharia de Software. Produção de Software 1- Instruções Passos que, em execução, produzem a função e o desempenho desejados. 2 - Estruturas de Dados.

Nos métodos tradicionais de análise, o

comportamento do sistema e seus dados eram

considerados separadamente. Com orientação a

objetos, comportamento e dados são integrados,

assim encapsulando detalhes internos de um objeto

dos demais.Análise

Estruturadae Essencial

Orientada aObjetos

Enfoque

Conjunto de programas que executam processosSobre dados

Conjunto de “entidades” que têm características e Comportamentos próprios

Foco

Sistema

Objeto

Análise Orientada a Objetos

38

Page 39: Engenharia de Software. Produção de Software 1- Instruções Passos que, em execução, produzem a função e o desempenho desejados. 2 - Estruturas de Dados.

UML

UML (Unified Modeling Language) – Linguagem de

Modelagem Unificada

É uma linguagem de modelagem (visual), não

uma linguagem de programação

Permite a utilização de diagramas padronizados

para especificação e visualização de um sistema

39

Page 40: Engenharia de Software. Produção de Software 1- Instruções Passos que, em execução, produzem a função e o desempenho desejados. 2 - Estruturas de Dados.

Diagramas UML

Estrutural (Estática) Diagrama de Classes Diagramas de Objetos Diagrama de Caso de Uso Diagrama de

Componentes

Dinâmica Diagrama de Estados Diagrama de

Atividades Diagrama de

Colaboração Diagrama de

Seqüência

Representação Gráfica de um Conjunto de Elementos

40

Page 41: Engenharia de Software. Produção de Software 1- Instruções Passos que, em execução, produzem a função e o desempenho desejados. 2 - Estruturas de Dados.

Diagrama de Caso de Uso Usado geralmente nas fases de Levantamento e

Análise de Requisito do Sistema, mostra como o sistema irá se comportar.

41

Page 42: Engenharia de Software. Produção de Software 1- Instruções Passos que, em execução, produzem a função e o desempenho desejados. 2 - Estruturas de Dados.

Diagrama de Classes

42

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

Page 43: Engenharia de Software. Produção de Software 1- Instruções Passos que, em execução, produzem a função e o desempenho desejados. 2 - Estruturas de Dados.

43

Classes Uma classe é composta por três seções

Nome da Classe DVD

Atributos

Operações

HoraStatus estrutura

comportamento

Voltar()Pausar()Adiantar()Parar()Tocar()

Page 44: Engenharia de Software. Produção de Software 1- Instruções Passos que, em execução, produzem a função e o desempenho desejados. 2 - Estruturas de Dados.

Diagrama de Objetos

44

Exibe os valores armazenados pelos objetos de um Diagrama de Classes

Page 45: Engenharia de Software. Produção de Software 1- Instruções Passos que, em execução, produzem a função e o desempenho desejados. 2 - Estruturas de Dados.

Conceito de Orientação a Objetos

Page 46: Engenharia de Software. Produção de Software 1- Instruções Passos que, em execução, produzem a função e o desempenho desejados. 2 - Estruturas de Dados.

OO

O que é um Objeto ? é a representação de um objeto real é uma abstração tudo que é manipulável e/ou manufaturável coisa, peça, artigo de compra e venda pode ser uma composição de outros objetos

Exemplos automóvel, pessoa, elevador, janela, etc..

Page 47: Engenharia de Software. Produção de Software 1- Instruções Passos que, em execução, produzem a função e o desempenho desejados. 2 - Estruturas de Dados.

OO

Propriedades de um Objeto é o estado do objeto são atribuitos da “coisa” exemplo

Em um automóvel temos ligado/desligado posição velocidade marca/modelo cor, placa, número de portas, etc.

Page 48: Engenharia de Software. Produção de Software 1- Instruções Passos que, em execução, produzem a função e o desempenho desejados. 2 - Estruturas de Dados.

Métodos de um objeto representa o comportamento do objeto muda o estado do objeto exemplo

Em um automóvel temos ligar/desligar acelerar freiar virar p/ esquerda virar p/ direita

OO

Page 49: Engenharia de Software. Produção de Software 1- Instruções Passos que, em execução, produzem a função e o desempenho desejados. 2 - Estruturas de Dados.

Eventos de um Objeto são acontecimentos que fazem o objeto

responder de determinada maneira alteram o estado e mudam o comportamento exemplo

Em um automóvel temos usuário...

pisa no acelerador ou no freio vira o volante para esquerda ou direita vira a chave na ignição para ON ou OFF

OO

Page 50: Engenharia de Software. Produção de Software 1- Instruções Passos que, em execução, produzem a função e o desempenho desejados. 2 - Estruturas de Dados.

Classe de Objetos Definição de um tipo de objetos Define a forma de se criar objetos É uma fábrica de objetos Todos os objetos de uma classe têm uma estrutura

idêntica, mas cada objeto terá seus próprios atributos

Exemplo Classe: CARROS (cor, portas, placa, posição, velocidade,

etc.) Objeto: carro vermelho/2

pts/XXX9999/(100,10)/100km/h...

OO

Page 51: Engenharia de Software. Produção de Software 1- Instruções Passos que, em execução, produzem a função e o desempenho desejados. 2 - Estruturas de Dados.

Porque usar Objetos ? Simplicidade: os objetos escondem a

complexidade do código. Pode-se criar aplicações sem se conhecer a complexidade do código.

Reutilização de código: um objeto, depois de criado, pode ser reutilizado por outras aplicações, e até extender suas funções.

Inclusão dinâmica: objetos podem ser incluídos dinâmicamente durante a execução, reduzindo o tamanho do arquivo final.

OO

Page 52: Engenharia de Software. Produção de Software 1- Instruções Passos que, em execução, produzem a função e o desempenho desejados. 2 - Estruturas de Dados.

Princípios básicos de uma linguagem OO1) Abstração é o processo de extrair as características

essenciais de um objeto a abstração de um objeto é diferente de

acordo com a visão de cada pessoa ex: livro

Livraria: autor, título, assunto, editora, preço Transportadora: número de páginas, formato e

tipo de capa (=>peso)

OO

Page 53: Engenharia de Software. Produção de Software 1- Instruções Passos que, em execução, produzem a função e o desempenho desejados. 2 - Estruturas de Dados.

Princípios básicos de uma linguagem OO2) Encapsulamento é o processo de combinar dados e funções

relacionadas em um único bloco de organização agrupa o estado do objeto e as funções que ele é

capaz de executar, e que alteram seu próprio estado

esconde a complexidade do código exemplo: radio.ligar := true;

radio.gravar(musica);

OO

Page 54: Engenharia de Software. Produção de Software 1- Instruções Passos que, em execução, produzem a função e o desempenho desejados. 2 - Estruturas de Dados.

Princípios básicos de uma linguagem OO3) Herança é o aproveitamento e extensão das características

de uma classe existente uma classe mais sofisticada herda as

características e funcionalidades de uma classe básica

exemplo: Classe CARROS_ESPORTIVOS

como herança da Classe CARROS

* Novos Atributos: turbo, barra de proteção, rádio intercomunicador, temperatura do óleo, etc.

OO

Page 55: Engenharia de Software. Produção de Software 1- Instruções Passos que, em execução, produzem a função e o desempenho desejados. 2 - Estruturas de Dados.

Princípios básicos de uma linguagem OO4) Polimorfismo é a propriedade de se utilizar um mesmo nome ou

forma para fazer coisas diferentes muito útil para escrever programas versáteis, que

possam lidar com vários tipos diferentes de objetos exemplo: triângulo.Desenhe;

retângulo.Desenhe;círculo.Desenhe;reta.Desenhe;

Sobreposição de métodos

OO

Page 56: Engenharia de Software. Produção de Software 1- Instruções Passos que, em execução, produzem a função e o desempenho desejados. 2 - Estruturas de Dados.

Programação OO (Orientada a Objetos) Os objetos são a base da tecnologia Consistem de modelos (abstrações) de objetos

reais Preservam as características essenciais de um

objeto real: suas propriedades e seu comportamento (métodos)

Exemplos de linguagens OO C++, Delphi, Java, etc.

OO