Engenharia de Software. Produção de Software 1- Instruções Passos que, em execução, produzem a...
Transcript of Engenharia de Software. Produção de Software 1- Instruções Passos que, em execução, produzem a...
Engenharia de Software
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
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
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
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
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
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
Alguns modelos de ciclos de vida mais conhecidos são:
• Clássico: Cascata
• Evolutivo: Prototipação
• Modelo Espiral
Ciclo de vida - Modelos
8
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Engenharia de SoftwareMetodologias
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
Surgimento das Metodologias de Desenvolvimento de Sistemas
28
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
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
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
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
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
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.
Lista de eventos
35
Análise Essencial
36
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
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
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
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
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
Diagrama de Classes
42
Define a estrutura de classes do sistema e estabelece como elas se relacionam.
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()
Diagrama de Objetos
44
Exibe os valores armazenados pelos objetos de um Diagrama de Classes
Conceito de Orientação a Objetos
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..
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.
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
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
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
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
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
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
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
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
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