Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho...
Transcript of Faculdade 7 de Setembro – Sistemas de Informação Engenharia de Software – Prof. Ciro Coelho...
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