Modelação e projecto orientados por objectos
Sumário
• Conceitos de modelação
• Metodologia de projecto
• Implementação
• análise
• projecto de sistema
• projecto de objectos
Modelação OO
0
Metodologia
Metodologia de engenharia de software - processo para
a produção organizada de software, que usa uma
colecção de técnicas e de notações pré-definidas.
 Conceitos e notações OMT — já vistos
 Ciclo de vida do software
•
formulação do problema
•
análise - compreensão e modelação da aplicação e do domínio
•
projecto - construção da solução
desenvolvimento
operação
-
sistema - organização de subsistemas; concorrência
-
objectos - algoritmos; definição da implementação
•
implementação
•
teste
•
manutenção
•
aperfeiçoamento
Modelação OO
1
Características salientes
 suporte para
•
prototipagem rápida — desenvolvimento incremental
- decomposição de funções para um protótipo pode não servir para a implementação completa;
mas a decomposição em objectos sim
•
ciclo de vida — desenvolvimento sequencial
 deslocação do esforço de desenvolvimento para a análise — reaproveitamento em novas
implementações e alterações
 ênfase na estrutura de dados, antes da funcionalidade — objecto como conceito
unificador, em torno do qual se organizm as funções, associações e eventos
 processo de desenvolvimento sem descontinuidades — sempre a mesma notação;
refinamentos sucessivos
 processo iterativo — pequenos passos validáveis
Modelação OO
2
Análise
Análise - obter um modelo do sistema real preciso, conciso, compreensível e
correcto, clarificando os requisitos e evitando decisões de implementação.
•
compreender o problema
•
validar com o cliente
•
acomodar o projecto e a implementação
Utilizadores
Programadores
Gestores
 a formulação inicial é
muitas vezes vaga,
incompleta e informal
 no fim da análise, o
modelo tripartido deve
ser uma clara
especificação do que
deve ser feito, sem
prescrever o modo de o
fazer
Especificação
do problema
Entrevistas com
utilizadores
Conhecimento
do domínio
Experiência do
mundo real
Gera
pedidos
Constrói
modelos
Modelo de objectos
Modelo dinâmico
Modelo funcional
Modelação OO
3
Especificação
Requisitos
• âmbito do problema
• o que é necessário
•
•
•
contexto da aplicação
pressupostos
necessidades de
desempenho
 especificação inicial — ponto de partida, não um documento acabado
 é natural que seja ambígua, incompleta, inconsistente, errada, ignorando as reais
necessidades do cliente, ou irrealista — uma vez que foi feita sem uma análise completa
 fazer exactamente o que o cliente pede, se não for isso que ele necessita, não evita queixas
Modelação OO
4
Exemplo do Multibanco
Balcão
ATM
ATM
ATM
Computador
central
Conta
Computador
de banco
Computador
de banco
Conta
Conta
Conta
Projecte o software de suporte a uma rede bancária computorizada, com caixas humanos e caixas automáticas (ATM),
para ser partilhado pelos bancos de um consórcio. Cada banco tem o seu próprio computador para manter as suas contas
e processar as transacções sobre elas.Os balcões pertencem a bancos individuais e comunicam directamente com os
respectivos computadores. Os caixas humanos introduzem dados de contas e de transacções. As caixas automáticas
comunicam com um computador central que acerta as transacções com o banco correspondente. Uma caixa automática
aceita um cartão de débito, interage com o utilizador, comunica com o sistema central para proceder à transacção,
entrega dinheiro e imprime recibos. O sistema necessita de um conveniente registo e de esquemas de segurança. O
sistema deve lidar correctamente com acessos concorrentes à mesma conta. Os bancos fornecem o software para os seus
computadores. Pretende-se projectar o software para as caixas automáticas e para a rede. O custo do sistema partilhado
será repartido pelos bancos de acordo com o número de clientes com cartões de débito.
Modelação OO
5
Modelação de objectos
•
•
•
•
Passos
identificar objectos e classes
preparar um dicionário de dados
identificar associações entre objectos
identificar atributos de objectos e de ligações
•
•
•
•
organizar e simplificar as classes usando herança
verificar os caminhos de acesso para perguntas previsíveis
iterar e refinar o modelo
agrupar as classes em módulos
 é essencial a organização de alto nível do sistema em classes e mais secundário o
refinamento em hierarquias de generalização
 organizar a herança só depois de especificar os atributos das classes, para evitar
preconceitos
 as operações são adicionadas posteriormente, como subproduto da construção dos
modelos dinâmico e funcional
Modelação OO
6
Selecção de classes
Classes - identificar os substantivos da descrição do problema e do
conhecimento do domínio.
•
•
•
Eliminar
classes redundantes
classes irrelevantes
classes vagas
•
•
•
•
atributos
operações
papéis
construções da implementação
Modelação OO
7
Selecção de associações
Associações - identificar os verbos e frases verbais da
descrição do problema.
•
•
•
Eliminar
associações entre classes eliminadas
associações irrelevantes ou de implementação
acções
•
•
associações ternárias
associações derivadas
Especificar
• associações mal designadas
• nomes dos papéis
• associações qualificadas
•
•
multiplicidade
associações que faltem
Modelação OO
8
Selecção de atributos
Atributos - substantivos com determinante e adjectivos da descrição
do problema e outros que vão surgindo ao longo do processo.
Eliminar
•
•
•
•
objectos
qualificadores em contexto
nomes
identificadores
•
•
•
•
atributos de ligações
valores internos
detalhe fino
atributos dissonantes
Modelação OO
9
Exemplo de modelo de objectos
Transacção
Posto
dia-hora
Introduzida em
ATM
Transacção
na caixa
Balcão
dinheiro existente
entregue
Possui
Possui
código
de posto
Consórcio
código
de posto
código
de banco
Banco
nome
código
de conta
Detém
código de
empregado
código
de cartão
Constituída por
Transacção
remota
Introduzida por
Actualização
montante
Caixa
tipo
Iniciada
nome
Autorização
Emprega
password
limite
Emite
Conta
balanço
limite crédito
tipo
Tem
Cartão
código de banco
código de cartão
número de série
Cliente
nome
morada
Modelação OO
10
Modelação dinâmica
•
•
Passos
preparar guiões de sequências de interacção típicas
identificar eventos entre objectos
•
•
•
preparar um traço de eventos para cada guião
contruir um diagrama de estados
emparelhar eventos entre objectos para verificar a consistência
 a execução de algoritmos não é relevante durante a análise, se não existirem
manifestações externas; é uma questão de implementação
 correcção lógica depende das sequências das interacções e não dos seus instantes
exactos (excepto nos sistemas de tempo real)
Modelação OO
11
Modelação funcional
Passos
• identificar os valores de entrada e saída
•
•
•
•
construir os diagramas de fluxo de dados, mostrando
as dependências funcionais
descrever as funções
identificar as restrições
especificar critérios de optimização
 as funções são expressas de várias formas, incluindo linguagem natural, equações
matemáticas e pseudo-código
 os processos num DFD correspondem a actividades ou acções nos diagramas de estados
das classes
 os fluxos num DFD correspondem a objectos ou valores de atributos num digrama de
objectos
 é preferível construir o modelo funcional depois dos modelos dinâmico e de objectos
Modelação OO
12
Adição das operações
 OMT põe menos ênfase na definição das operações do que as metodologias OO
baseadas em programação: a lista das operações úteis é aberta
 classes de operações comuns em LPOO
•
perguntas sobre atributos ou associações no modelo de objectos
-
acesso a atributos (assume-se que todos estão disponíveis) e navegação
através de pseudo-atributos (papéis das associações) [ATM.quantia,
conta.banco]
•
•
eventos no modelo dinâmico
-
tratador de eventos ou métodos explícitos
-
não representar no modelo de objectos
acções e actividades no estado
-
•
não representar no modelo de objectos
indicar as interessantes no modelo de objectos [verificar código do banco em
Consórcio, verificar password em Banco]
funções no modelo funcional
-
indicar no modelo de objectos, directamente ou após reestruturação
Modelação OO
13
Simplificação de operações
 lista de compras — conjunto de operações sugerido pelo comportamento das classes no
mundo real e que não são especificamente exigidas pela aplicação; dá maior
versatilidade e autonomia às classes; permite responder a algumas questões não previstas
— perspectiva abrangente de construção debibliotecas de classes
[conta :: autoriza-cartão(autorização de cartão)]
 simplificar — factorizar operações similares; criar superclasses para albergar as
operações genéricas
 iterar a análise o número de vezes necessário para obter um modelo coerente sem
omissões e sem elementos supérfluos
 estes modelos são um bom meio para a validação por parte de peritos do domínio
 não há uma fronteira definida entre a análise e o projecto — o que muda é a atitude: da
compreensão do problema passa-se para a construção da solução
Modelação OO
14
Projecto de sistema
Projecto de sistema - é a estratégia de alto nível para resolver o problema e
construir a solução: define a arquitectura do sistema.
•
•
•
Passos
organizar o sistema em subsistemas
identificar a concorrência inerente ao problema
atribuir subsistemas a processadores e a tarefas
•
•
•
•
escolher uma forma de gerir os depósitos de dados
lidar com os recursos globais
escolher a implementação do controlo
tratar as condições fronteira
•
definir critérios de prioridade para os compromissos
Modelação OO
15
Subsistemas
 subsistema - pacote de classes, associações, operações, eventos e restrições
interrelacionados e com uma interface pequena e bem definida com os outros subsistemas
• a decomposição em subsistemas pode ter vários níveis, sendo o inferior constituído
por módulos
• critérios:
- funcionalidade comum
- mesma localização física
-
execução no mesmo tipo de hardware
 subsistema identificado pelos serviços, grupos de funções com um propósito comum
 relacionamento entre dois subsistemas
• cliente-fornecedor (comunicação da iniciativa do cliente — conhece interface do
fornecedor)
•
par-a-par (cada um pode iniciar comunicação — tem que conhecer a interface do
outro; mais complexo)
 topologias descritas por DFDs (pipeline, estrela, etc.)
Modelação OO
16
Decomposição em subsistemas
 organização em camadas de máquinas virtuais ou em partições verticais por serviço
 exemplo típico:
pacote da aplicação
gráficos de janela
controlo de
diálogo com
utilizador
gráficos de écrã
pacote de
simulação
gráficos ao pixel
sistema operativo
hardware do computador
Modelação OO
17
Concorrência
 no modelo da análise, no mundo real e no hardware os objectos são concorrentes
 objectos com actividade mutuamente exclusiva podem ser agrupados numa mesma tarefa
 dois objectos são inerentemente concorrentes se podem receber eventos simultanemente
sem interagirem
•
hardware separado
•
monoprocessador com multitarefa
 um fio de controlo (thread) é um caminho através de um conjunto de diagramas de estado
em que apenas um objecto se encontra activo em cada instante (implementado por uma
tarefa)
 atribuição de subsistemas a processadores e tarefas
•
estimar necessidades de desempenho e de recursos
•
escolher implementações de hardware ou software
•
atribuir subsistemas, minimizando a comunicação inter-processador
•
determinar a conectividade das unidades físicas dos subsistemas (comunicação
síncrona, assíncrona, bloqueante)
Modelação OO
18
Depósitos de dados
 candidatos naturais a subsistemas
 dados transitórios em estruturas de dados em RAM; persistência em ficheiros ou em BD
•
persistência ortogonal e BDOO
 vantagens de usar uma BD
•
muitos serviços de infraestrutura (recuperação, partilha, distribuição, integridade)
•
interface comum para todas as aplicações
•
linguagem de acesso standard (SQL)
•
portabilidade
 desvantagens
•
sobrecarga de desempenho
•
funcionalidade insuficiente para aplicações avançadas
•
desadaptação de impedância com as linguagens de programação
Modelação OO
19
Controlo
 acesso a recursos globais
•
protocolo de acesso
•
objecto guardião
•
bloqueio (lock)
 modelo de controlo da execução
•
sequencial, guiado pelos procedimentos
•
sequencial, guiado por eventos
•
concorrente
•
paradigma da programação em lógica
 condições fronteira
•
inicialização
•
terminação
•
falha
Modelação OO
20
Arquitecturas vulgares
 Transformação por lotes (batch) — a transformação é executada uma vez
para todo o conjunto de entrada
 Transformação contínua (pipeline) — a transformação é executada
continuamente à medida que a entrada evolui
 Interface interactivo — sistema reactivo dominado pelas interacções externa
 Simulação dinâmica — simula objectos a evoluirem no mundo real
 Sistema de tempo-real — dominado pelas restrições de tempo de resposta
 Gestor de transacções — sistema dedicado a memorizar e disponibilizar
dados, incluindo acesso concorrente
Modelação OO
21
Arquitectura do sistema Multibanco
Computadores
dos bancos
Computador
do consórcio
Postos ATM
Caixa
Consórcio
Balcão
ATM
Utilizador
Cartão
interface
utilizador
Transacção
linhas
telefónicas
Base de dados
código
de posto
código
de banco
Transacção
linhas
telefónicas
Conta
Cliente
Autorização
Transacção
Modelação OO
22
Projecto de objectos
Projecto de objectos - determina as definições completas das classes e
associações usadas na implementação e as interfaces e os algoritmos
dos métodos que implementam as operações.
•
•
ênfase em conceitos
computacionais e não nos do
domínio da aplicação
objectos da análise formam o
esqueleto mas novos objectos
são adicionados para
construir a solução, guardar
resultados intermédios,
representar estruturas de
dados
•
Passos
combinar os três modelos para obter as operações nas
classes
projectar os algoritmos
•
•
•
•
optimizar os caminhos de acesso aos dados
implementar o controlo das interacções externas
ajustar a estrutura de classes para aumentar a herança
projectar as associações
•
•
determinar as representações dos objectos
empacotar as classes e as associações em módulos
•
Modelação OO
23
Algoritmos
 nos diagramas de estados, as acções executadas numa transição dependem do evento e
do estado do objecto — podem corresponder a operações diferentes
 uma acção ou actividade iniciada por uma transição do diagrama de estados pode ser
expandida num DFD completo, cujos processos representam o corpo da operação
 os algoritmos podem ser construídos descendentemente, por refinamentos sucessivos até
se atingir o nível da implementação directa
 programador deve
•
escolher algoritmos que minimizem o custo de implementar as operações
•
seleccionar as estruturas de dados apropriadas
•
definir as novas classes internas e operações necessárias
•
atribuir a responsabilidade das operações às classes
 optimização
•
adicionar associações redundantes para minimizar custo de acesso
•
rearranjar a computação
•
memorizar atributos derivados de cálculo custoso
Modelação OO
24
Implementação do controlo
 três métodos de implementar o modelo dinâmico
•
utilizar a localização no programa para guardar o estado (sistemas guiados por
procedimentos)
•
implementar directamente um mecanismo de máquina de estados (sistemas
guiados por eventos)
•
usar tarefas concorrentes
 criar uma classe genérica para máquina de estados
•
um interface de utilizador pode recorrer a essa classe e a stubs (funções só com
interface e um mínimo de corpo) para criar um protótipo a partir de uma tabela
de estados e de eventos
Modelação OO
25
Implementação das associações
 associações são consideradas bidireccionais (mesmo nos protótipos) até à
implementação
Trabalha
 associações unidireccionais
Pessoa
Empresa
•
apontador
- multiplicidade 1: simples
- multiplicidade muitos: conjunto
- ordenada: lista
(Pessoa)
(Empresa)
empregador
(Pessoa)
- qualificada: dicionário (hash)
(Empresa)
empregados
 associações bidireccionais
•
implementar como unidireccional e fazer pesquisa no sentido inverso
•
implementar como duplo unidireccional; manter a consistência
•
implementar a associação como objecto distinto que é um conjunto de pares ou
um duplo dicionário (para aumentar a eficiência)
Modelação OO
26
Associação bidireccionais
Trabalha
Pessoa
Empresa
apontadores
associação como classe
(Pessoa)
(Empresa)
empregador
empregados
(Pessoa)
(Pessoa)
(Conjunto)
Trabalha
(Empresa)
(Pessoa)
(Pessoa)
(Empresa)
(Pessoa)
(Pessoa)
•
•
•
útil para estender classes pré-definidas não modificáveis
suporta atributos de ligação
com triplos representa associações qualificadas
Modelação OO
27
Documentos da metodologia
• A Documento da Análise
A0
Formulação do problema
A1
Modelo de objectos = diagrama de objectos + dicionário de dados
A2
Modelo dinâmico = diagramas de estado + diagrama global de fluxo de eventos
A3
Modelo funcional = diagramas de fluxo de dados + restrições
• PS Documento do Projecto de Sistema
–
• P
estrutura da arquitectura básica do sistema e decisões estratégicas de alto nível
Documento do Projecto =
P1
modelo de objectos detalhado +
P2
modelo dinâmico detalhado +
P3
modelo funcional detalhado
Modelação OO
28
Download

metodologia de projecto OMT