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

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

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

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

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

Engenharia de Software

Projeto de Software

Page 2: Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho Engenharia de Software Projeto 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: Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho Engenharia de Software Projeto 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: Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho Engenharia de Software Projeto 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: Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho Engenharia de Software Projeto 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: Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho Engenharia de Software Projeto 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: Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho Engenharia de Software Projeto 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: Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho Engenharia de Software Projeto 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: Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho Engenharia de Software Projeto 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: Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho Engenharia de Software Projeto de Software.

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

Projeto Top-downSystem level

Sub-systemlevel

Page 11: Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho Engenharia de Software Projeto 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: Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho Engenharia de Software Projeto 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: Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho Engenharia de Software Projeto 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: Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho Engenharia de Software Projeto 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: Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho Engenharia de Software Projeto 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: Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho Engenharia de Software Projeto 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: Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho Engenharia de Software Projeto 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: Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho Engenharia de Software Projeto 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: Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho Engenharia de Software Projeto 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: Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho Engenharia de Software Projeto 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: Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho Engenharia de Software Projeto 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: Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho Engenharia de Software Projeto 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: Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho Engenharia de Software Projeto 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: Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho Engenharia de Software Projeto 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: Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho Engenharia de Software Projeto 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: Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho Engenharia de Software Projeto 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: Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho Engenharia de Software Projeto 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: Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho Engenharia de Software Projeto 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: Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho Engenharia de Software Projeto 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: Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho Engenharia de Software Projeto 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