Engenharia de Software

Slides:



Advertisements
Apresentações semelhantes
DFD - Diagrama de Fluxo de Dados
Advertisements

Engenharia de Software
Rational Unified Process
Engenharia de Software
Gerência de Projetos Wesley Peron Seno Introdução
UML Modelando um sistema.
Engenharia de Software
Diagrama de fluxo de dados (DFD)
Engenharia de Software
(Unified Modeling Language)
Identificando requisitos
Análise e Projeto de Sistemas I
Engenharia de Software
Orientação por Objectos > Modelo de Processo OO > Identificação de Classe e Objectos Aula 12.
Rational Unified Process(RUP)
Modelos de Processos de desenvolvimento de Software
INTRODUÇÃO A INFORMÁTICA
Análise e Projeto de Sistemas
FACULDADE DOS GUARARAPES
Metodologia de Desenvolvimento de Software
1 MODELAGEM COM A UML (UNIFIED MODELING LANGUAGE) BREVE HISTÓRICO CARACTERÍSTICAS CONCEITOS DE PROGRAMAÇÃO ORIENTADA A OBJETOS MODELAGEM DE ANÁLISE E DE.
Professora: Aline Vasconcelos
Processo Desenvolvimento de Software Tradicional
SISTEMA DE INFORMAÇÕES DESENVOLVIMENTO DE SISTEMAS
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)
Análise e Projeto de Sistemas
TIPOS DE TESTES APLICÁVEIS E NÃO APLICÁVEIS AO PROJETO
Como Desenvolver Sistemas de Informação
Gerenciamento do Escopo
Modelos de Processos de Software
Classes e objetos Modelagem
Classes e objetos P. O. O. Prof. Grace.
AP 1.
Processos de Software II
DIAGRAMA DE COMPONENTES
ANÁLISE DE REQUISITOS DE ENGENHARIA DE SOFTWARE
Análise e Desenvolvimento de Sistemas
DFD – Data Flow Diagram Diagrama de Fluxo de Dados
Fundamentos de Engenharia de SW
Cap 2 – Processo de Software
DIAGRAMA DE CASO DE USO Prof. Fabíola Gonçalves C. Ribeiro.
. Smalltalk HISTÓRICO . Década de 60 – POO . Dynabook (Alan Kay)
Análise e Projeto de Sistemas
Arquitetura do Software
Projeto de Banco de Dados
Modelos de Processo de Software
Técnicas e Projeto de Sistemas
Análise e Projeto de Sistemas de Informação 2o. Semestre de 2014
PSBD II Projeto de Sistemas de Banco de Dados II
INTRODUÇÃO À ORIENTAÇÃO A OBJETOS EM JAVA
Analises de sistemas ESTRUTURADA Analise de sistema estruturada.
UML - Unified Modeling Language
Bruno Silva Desenvolvido a partir de
O Processo Unificado (UP)
ANÁLISE ESTRUTURADA DE SISTEMAS
METODOLOGIA, MÉTODOS E FERRAMENTAS
Laboratório de Programação
Processos de Software.
Técnicas e Projeto de Sistemas
Gestão de projetos de Software GTI-16
UML e a Ferramenta Astah
Engenharia de Software
TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS ANÁLISE E PROJETO DE SISTEMAS Aula /08/2012 Professor Leomir J. Borba-
Engenharia de Software
UML (Unified Modeling Language) Linguagem Unificada de Modelagem
Aula 02 de Eng. de Requisitos
APSI II Análise e Projeto de Sistemas de Banco de Dados II.
Processos de Software Ludimila Monjardim Casagrande 1º Semestre Desenvolvimento e Qualidade.
1 Especificação de Sistemas de Software e a UML. 2 Modelagem de sistema A modelagem de sistema auxilia o analista a entender a funcionalidade do sistema.
O Processo Unificado (PU). 2 O que é o Processo Unificado (PU)? É um modelo de processo de software baseado no modelo incremental, visando a construção.
Transcrição da apresentação:

Engenharia de Software

Produção de Software 1- Instruções 2 - Estruturas de Dados Passos que, em execução, produzem a função e o desempenho desejados. 2 - Estruturas de Dados Armazenamento e manipulação adequada da informação necessária às instrução. 3 - Documentos Descrição da operação e do uso dos programas.

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.

Engenharia de Software 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 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 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.

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.

Ciclo de vida - Modelos Alguns modelos de ciclos de vida mais conhecidos são: Clássico: Cascata Evolutivo: Prototipação Modelo Espiral

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

Cascata Engenharia de Sistemas Análise de Requisitos Projeto Codificação Testes Manutenção

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)

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

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 inicie Engenharia de Sistemas Análise de Requisitos Projeto Codificação Testes Manutenção

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

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

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

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.

Prototipação início fim obtenção dos requisitos 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 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

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 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 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. 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 fim início construção produto refinamento protótipo avaliação protótipo construção protótipo projeto rápido obtenção dos requisitos 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.

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

direção de um sistema concluído Espiral decisão de continuar ou não direção de um sistema concluído avaliação do cliente engenharia análise dos riscos planejamento

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

Engenharia de Software Metodologias

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

Surgimento das Metodologias de Desenvolvimento de Sistemas

Evolução 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 Abordagem Enfoque Técnica

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

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

Exemplo: DFD Entidade externa Processo Depósito De dados Pedido_preços E2 Fornecedores E1 Departamento de produção P1 Escolher fornecedor Lista_materiais necessários Entidade externa Preços_material Dados_fornecedor Processo Lista D1 Fornecedores P2 Pedir materiais Nota_encomenta Dados_fornecedor Depósito De dados Fluxo 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

Diagrama de Contexto 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

Análise Essencial Modelo Comportamental Mostra o comportamento interno do sistema. Dicionário de Dados e Especificação de processos. Modelo de Informação Representa os dados necessários ao sistema. Diagrama de entidade e relacionamento Deriva da lista de eventos Representa a estrutura estática dos dados Modelo de implementação Insere restrições de implementação aos modelos comportamental e de dados

Análise Orientada a Objetos 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 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 Estruturada e Essencial Orientada a Objetos Enfoque Conjunto de programas que executam processos Sobre dados Conjunto de “entidades” que têm características e Comportamentos próprios Foco Sistema Objeto

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

Diagramas UML Representação Gráfica de um Conjunto de Elementos 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

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.

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

Classes Uma classe é composta por três seções DVD Nome da Classe Atributos Hora Status estrutura Operações Voltar() Pausar() Adiantar() Parar() Tocar() comportamento

Diagrama de Objetos Exibe os valores armazenados pelos objetos de um Diagrama de Classes

Conceito de Orientação a Objetos

OO O que é um Objeto ? Exemplos é 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.

OO 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 Exemplo 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 OO 1) 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 OO 2) 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 OO 3) 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 OO exemplo: triângulo.Desenhe; 4) 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) Exemplos de linguagens OO 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.