PROJETO OO
Aspectos Avançados em
Engenharia de Software
Aula 3
Fernanda Campos
UFJF/DCC
INTRODUÇÃO
O projeto transforma o modelo de análise em um modelo de projeto que serve de base para a construção do software.
Um projeto OO resulta num projeto que busca diferentes níveis de maturidade.
Os principais componentes do sistema são organizados em módulos ou subsistemas.
INTRODUÇÃO
O projeto OO descreve a organização específica dos dados dos atributos e os detalhes procedimentais das operações.
Representam dados e partes de algoritmos de um sistema OO e são colaboradores da modularidade geral do sistema.
INTRODUÇÃO
A natureza do projeto OO recai sobre sua habilidade de construir um projeto sobre quatro conceitos:
• Abstração
• Ocultação de informação
• Independência funcional
• Modularidade
Isso contribui para diminuir a complexidade.
INTRODUÇÃO
Para construir um software OO temos que ter:• Projeto OO
• Programação OO
• Teste OO.
Projeto de Sistemas
O modelo de projeto inclui quatro camadas em forma de pirâmide:• Componentes
• Interface
• Arquitetura
• Dados/classes.
Projeto de Modelagem
1. Representação da hierarquia dos modelos2. Especificação da definição dos dados3. Especificação da lógica procedimental4. Indicação das seqüências procedimentais5. Representação dos estados e transições dos objetos6. Definição de classes e hierarquias7. Estabelecimento das operações das classes8. Definição detalhada das operações9. Especificação das conexões das mensagens10. Identificação de serviços exclusivos.
Baixo acoplamento em Projetos OO
Para alcançar o baixo acoplamento o número de interfaces entre módulos deve ser pequeno (pouca interface) e a quantidade de informações que se movem entre as interfaces devem ser mínimas também.
Quando os módulos se comunicarem esta comunicação deve ser de forma direta e explícita, evitando a comunicação através de áreas globais.
Projeto OO e a UML
A UML é organizada em duas atividades principais de projeto:• Projeto do sistema
• O objetivo é representar a arquitetura do software
• Projeto de objetos• Focaliza a descrição dos objetos e suas interações
uns com os outros
Modelo de Projeto OO
As vezes é difícil ter a clara distinção entre Análise e Projeto OO.
A análise é uma atividade de classificação, isto é, é um esforço de determinar as classes de objetos que serão definidas na solução do problema, seus relacionamentos e comportamento.
Modelo de Projeto OO
O projeto OO permite que o engenheiro de software indique quais objetos serão derivados de cada classe e como esses objetos se relacionam.
Identifica como esses relacionamentos são alcançados, como os comportamentos são implementados e como a comunicação entre objetos deve ser implementada.
Atividades do Projeto OO Particionar o projeto de análise em sub-sistemas Identificar a concorrência que é ditada pelo sistema Alocar subsistemas a processadores e tarefas Desenvolver uma interface para o usuário Escolher uma estratégia básica para implementar a
gestão de dados Identificar os recursos globais e os mecanismos de
controle necessários para ter acesso a eles Projetar um mecanismo de controle adequado para o
sistema, incluindo gestão de tarefas Considerar como as situações limites devem ser
manipuladas Revisar e considerar concessões.
Projeto dos sub-sistemas
São quatro os componentes principais:• Domínio do problema – implementa os requisitos do
usuário
• Interação homem-máquina – implementa a interface com o usuário
• Gerenciamento de tarefas – controla e coordena as tarefas concorrentes num mesmo sub-sistema ou entre vários sub-sistemas
• Gerenciamento de dados – responsável pelo armazenamento e recuperação dos objetos.
Projeto de Objetos
Descrição do objeto:• A descrição de um objeto (uma instância de
uma classe ou subclasse) pode ter uma das duas formas.• Descrição do protocolo – descreve cada
mensagem que o objeto pode receber e as operações que o objeto realiza quando recebe a mensagem.
• Descrição da implementação – mostra a implementação detalhada (atributos, e operações) e cada mensagem que é passada para o objeto.
Projeto de Objetos
Descrição do protocolo• Estabelece a interface do objeto definindo
cada mensagem que o objeto pode receber e as operações relacionadas ao recebimento das mensagens.• Conjunto de mensagens e comentários
correspondentes.
Projeto de Objetos
Descrição da implementação• Mostra detalhes da implementação para cada
mensagem passada ao objeto.
• Esses detalhes incluem informações sobre partes privadas do objeto, isto é, detalhes internos sobre as estruturas dos dados que descrevem os atributos e detalhes procedimentais que descrevem as operações.
Projeto de Algorítmos e Estrutura de Dados
Um algorítmo é criado para implementar a especificação de cada operação.
Em muitas classes o algorítmo é uma seqüência simples implementada num único módulo.
Entretanto, se a especificação é complexa é necessário modularizar a implementação.
Projeto de Algorítmos e Estrutura de Dados
A estrutura dos dados é projetada ao mesmo tempo que os algorítmos.
Como os algorítmos manipulam os atributos das classes o projeto das estruturas dos dados terá forte impacto no projeto dos algorítmos.
Projeto de Algorítmos e Estrutura de Dados
As operações podem ser divididas em três categorias:• Operações que manipulam dados (deletar,
selecionar, etc)
• Operações que executam o processamento
• Operações que monitoram a ocorrência e o controle de eventos.
Projeto de Componentes
Um aspecto importante da qualidade do projeto de software é a MODULARIDADE, isto é, a especificação de componentes de programas (módulos) que são combinados para formar um programa completo.
Projeto de Interfaces e Componentes
Definir objetos e operações não é suficiente.
Durante o projeto temos que identificar as interfaces que existem entre objetos e as estruturas gerais dos objetos.