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
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
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
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
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
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
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
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
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
Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho
Projeto Top-downSystem level
Sub-systemlevel
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
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
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, ...
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
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.
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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