30
Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho Engenharia de Software Projeto de Software

Engenharia de Software

  • Upload
    almira

  • View
    37

  • Download
    0

Embed Size (px)

DESCRIPTION

Engenharia de Software. Projeto de Software. Projeto de Software. Derivando uma solução que satisfaz os requisitos de software. Características do Processo de Projeto. Processo criativo Aprendizado Prática Experiência Estudo de Exemplos. Estágios de Projeto. Entender o problema - PowerPoint PPT Presentation

Citation preview

Page 1: Engenharia de Software

Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

Engenharia de Software

Projeto de Software

Page 2: Engenharia de Software

Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

Projeto de Software

• Derivando uma solução que satisfaz os requisitos de software

Page 3: Engenharia de Software

Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

Características do Processo de Projeto

• Processo criativo

• Aprendizado

– Prática

– Experiência

– Estudo de Exemplos

Page 4: Engenharia de Software

Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

Estágios de Projeto

• Entender o problema– Olhar para o problema de diferente ângulos

– Descobrir os requisitos de projeto

• Identificar uma ou mais soluções– Avaliar possíveis soluções

– Escolher a mais apropriada

• Descrever as abstrações da solução– Usar notações gráficas ou descritivas para especificar os

componentes do projeto

– Repetir este processo para cada abstração identificada até o projeto estar expresso em termos primitivos

Page 5: Engenharia de Software

Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

Processo de Projeto

• Qualquer projeto pode ser modelado como um

grafo direcionado

– Nós: entidades

• Processos

• Funções

• Tipos

– Arestas: relacionamentos

Page 6: Engenharia de Software

Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

Refinamento de um Projeto

Informaldesignoutline

Informaldesign

Moreformaldesign

Finisheddesign

O sistema é projetado iterativamente em diferentes níveis de abstração

Page 7: Engenharia de Software

Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

Fases do Processo de Projeto

• A separação entre fases não é bem definida

• Identificação útil por questões de gerenciamento

Page 8: Engenharia de Software

Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

Fases do Processo de Projeto

Architecturaldesign

Abstractspecificatio

n

Interfacedesign

Componentdesign

Datastructuredesign

Algorithmdesign

Systemarchitecture

Softwarespecification

Interfacespecification

Componentspecification

Datastructure

specification

Algorithmspecification

Requirementsspecification

Design activities

Design products

Page 9: Engenharia de Software

Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

Fases do Processo de Projeto• Projeto de arquitetura: Identifica sub-sistemas

• Especificação abstrata: Especifica sub-sistemas

• Projeto de interface: Descreve as interfaces dos sub-sistemas

• Projeto de componente: Decompõe sub-sistemas em componentes

• Projeto de estrutura de dados: Projeta estrutura de dados para

armazenar os dados do problema

• Projeto de algoritmos: Descreve os algoritmos a serem usados na

solução do problema

Page 10: Engenharia de Software

Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

Projeto Top-downSystem level

Sub-systemlevel

Page 11: Engenharia de Software

Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

Projeto Top-down

• Na prática, o projeto de grande sistemas nunca

é verdadeiramente top-down.

– Os projetistas reutilizam experiência (e componentes)

– Orientação a objetos

Page 12: Engenharia de Software

Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

Métodos Estruturados de Projeto • Características

– Notações para expressar o projeto– Diretrizes para criar e avaliar um projeto

• Exemplos– Projeto Estruturado (Yourdon)– JSD (Jackson Method) – Booch, OMT, UML/RUP

• Vantagens– Ferramentas CASE– Documentação padronizada– Redução de custo

Page 13: Engenharia de Software

Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

Modelos dos Métodos Estruturados• Modelo de fluxo de dados

– Transformação de dados

• Modelo entidade-relacionamento– Estrutura lógica dos dados

• Modelo estrutural – Componentes do sistema e suas interações

• Se o método for orientado a objetos– Modelo de herança e composição de objetos

• Complementos: diagrama de estados, dicionário de dados, ...

Page 14: Engenharia de Software

Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

Deficiências dos métodos estruturados

• Existem diretrizes e não métodos no sentido matemático. Projetistas diferentes criam projetos bastante diferentes

• Não ajudam muito com a parte inicial, fase criativa do projeto. Em vez disso, ajudam ao projetista a estruturar e documentar as suas idéias de projeto

Page 15: Engenharia de Software

Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

Notações para Descrição de Projeto

• Notações gráficas. Usadas para mostrar os

relacionamentos dos componentes.

• Linguagens de descrição de programa. Baseadas em

linguagens de programação, porém com mais

flexibilidade para representar conceitos abstratos.

• Texto informal. Descrição em linguagem natural.

Page 16: Engenharia de Software

Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

Estratégias de Projeto

• Projeto Funcional– Decomposição do sistema em componentes

funcionais– O estado do sistema é centralizado e compartilhado

entre as funções

• Projeto Orientado a Objetos– O sistema é visto como uma coleção de objetos que

interagem– O estado do sistema é descentralizado

Page 17: Engenharia de Software

Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

Estratégia de Projeto

• Qual a melhor?

– As abordagens orientada a objeto e funcional são complementares

– Bons engenheiros de software selecionam a abordagem mais apropriada para o sistema ou fase do processo em questão

Page 18: Engenharia de Software

Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

Qualidade de Projeto

• Propriedade indefinível que depende das prioridades específicas da organização

• Os atributos discutidos aqui estão relacionados com a manutenção de um projeto

• Características de qualidade são igualmente aplicáveis a projetos orientados a objeto ou a função

Page 19: Engenharia de Software

Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

Coesão

• Medida da proximidade das partes de um sub-componente

• Um componente deve implementar uma única entidade lógica ou função

• ImportânciaQuando uma mudança tiver que ser feita, ela será

localizada

Page 20: Engenharia de Software

Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

Níveis de Coesão

• Coesão casual

– As partes de um componente não são relacionadas

• Associação lógica

– Componentes que executam funções similares são

agrupados

• Coesão temporal

– Componentes que são ativados na mesma hora são

agrupados

Page 21: Engenharia de Software

Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

Níveis de Coesão• Coesão procedural

– Componentes que fazem parte de uma única seqüência

de controle são agrupados

• Coesão de comunicação

– Componentes que operam na mesma entrada ou

produzem a mesma saída são agrupados

• Coesão seqüencial

– A saída de uma parte de um componente é a entrada

de outra parte

Page 22: Engenharia de Software

Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

Níveis de Coesão

• Coesão funcional

– Cada parte de um componente é necessária para

execução de uma única função

• Coesão objeto

– Cada operação provê funcionalidade que permite que

atributos de um objeto sejam modificados ou

inspecionados

Page 23: Engenharia de Software

Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

• Medida da força das interconexões entre componentes do sistema

• Importância– Baixo acoplamento implica que mudanças em um

componente dificilmente afetará outros componentes

• Cuidados– Variáveis compartilhadas – Troca de informações de controle

Acoplamento

Page 24: Engenharia de Software

Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

Acoplamento Forte

Module A Module B

Module C Module D

Shared dataarea

Page 25: Engenharia de Software

Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

Acoplamento Baixo

Module A

A’s data

Module B

B’s data

Module D

D’s data

Module C

C’s data

Page 26: Engenharia de Software

Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

Níveis de Acoplamento

• Sem acoplamento• Acoplamento de dados: passagem de dados simples• Acoplamento de controle

Passagem de informação de controle

• Acoplamento externo– Dependência de dispositivos e protocolos– Acesso a dados globais

• Acoplamento de conteúdo– Uso de informações em outro módulo

Page 27: Engenharia de Software

Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

• Relacionado a várias características do

componente

– Coesão. Pode um componente ser entendido

isoladamente?

– Nomes. São usados nomes que fazem sentido?

– Documentação. O projeto está bem documentado?

– Complexidade. Algoritmos complexos são utilizados?

Entendimento

Page 28: Engenharia de Software

Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

• Medida da facilidade de mudança dos componentes

• Fatores relevantes

– Componentes fracamente acoplados

– Componentes fortemente coesos

– Boa documentação

– Programas legíveis

– Correspondência óbvia entre os vários níveis de projeto

Adaptabilidade

Page 29: Engenharia de Software

Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

• Projeto é um processo criativo

• Atividades de projeto incluem – Projeto de arquitetura– Especificação de sistema– Projeto de interface– Projeto de componente– Projeto de estrutura de dados– Projeto de algoritmos

Pontos Principais

Page 30: Engenharia de Software

Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho

Pontos Principais

• Decomposição funcional considera o sistema

como um conjunto de unidades funcionais

• Orientação a objeto considera o sistema como

uma coleção de objetos

• Projetistas devem procurar produzir sistemas

– Fortemente coesos

– Fracamente acoplados