View
121
Download
0
Category
Preview:
Citation preview
Modelagem de Sistemas
Alcides Calsavara
Alcides Calsavara 2
Sumário
Alcides Calsavara 3
Engenharia de Software
• Abstração: conceitos, construtos, métodos etc.• Base matemática: raciocínio rigoroso sobre
objetos e estruturas puramente abstratas.• O processo mental que atualmente usamos em
matemática deve ter sido adqüirido – e passado a ser usado – bem antes dos Sumérios introduzirem os números abstratos, algo entre 8.000 e 5.000 anos atrás.
Alcides Calsavara 4
Realidade e Software
Percepção da Realidade
Sistema de Software
observador
implementador
Alcides Calsavara 5
Modelagem e Formalização
Percepção da Realidade
Sistema de Software
Modelos
observador
formalizador
implementador
Alcides Calsavara 6
Refinamento de Modelos
Percepção da Realidade
Sistema de Software
Modelo 1
observador
formalizador
implementador
Modelo n-1
...
Alcides Calsavara 7
Refinamento de Modelos
Percepção da Realidade( Modelo 0 )
Sistema de Software( Modelo n )
Modelo 1
observador
formalizador
implementador
Modelo n-1
...
Alcides Calsavara 8
Refinamento de Modelos
Percepção da Realidade( Modelo 0 )
Sistema de Software( Modelo n )
Modelo 1
observador
formalizador
implementador
Modelo n-1
...
Conceitual
Físico
Alcides Calsavara 9
Percepção da Realidade
• A percepção da realidade por um observador depende da sua interpretação dos fatos.
• O formalizador constrói um modelo de acordo com a sua percepção da percepção da realidade do observador.
• O formalizador passa a ter a sua própria percepção da realidade.
Alcides Calsavara 10
Mutabilidade
• A realidade muda.• A percepção da realidade muda.• A percepção da percepção da realidade muda.• Os recursos de software mudam.
– Conceitos– Linguagens– Métodos– Ferramentas– Plataformas
Alcides Calsavara 11
Orientação a Objetos
• Paradigma dominante para implementação.• Paradigma promissor para modelagem
conceitual.• Derivado da noção de tipo abstrato de
dados: conceito algébrico que se aplica a objetos matemáticos.
• Mapeamento: objetos da realidade para objetos matemáticos.
Alcides Calsavara 12
Sistema Orientado a Objetos
• Um sistema orientado a objetos é uma coleção de objetos (de software) que interagem entre si.
• Um objeto interage com outro através de uma mensagem que causa um estímulo.
Alcides Calsavara 13
Interação entre Objetos
Alcides Calsavara 14
Ativação de Objetos
• Um estímulo ativa um objeto: causa a execução de um método (ou operação).
• Um estímulo pode ser:– uma invocação explícita de um método– um evento relevante para o objeto
Alcides Calsavara 15
Execução de Métodos
invocação evento
m e
m m
Alcides Calsavara 16
Objeto
• Comportamento– conjunto de métodos – forma como reage a estímulos
• Estado :– conjunto de valores de atributos– modifica-se de acordo com o comportamento
Alcides Calsavara 17
Comportamento e Estado
Alcides Calsavara 18
Métodos e Atributos
Alcides Calsavara 19
Encapsulamento
• Os atributos de um objeto somente são acessíveis a partir dos seus próprios métodos.
• Separação dos aspectos externos de um objeto dos seus detalhes internos de implementação.
Alcides Calsavara 20
Interface
• A interface de um objeto é o conjunto de métodos que podem ser explicitamente invocados a partir de outros objetos.
Alcides Calsavara 21
Classe
• Descrição de um conjunto de objetos: as instâncias da classe.
• Especifica o comportamento (métodos) e a estrutura do estado (atributos) das suas instâncias.
Alcides Calsavara 22
Estrutura de uma Classe
• Uma classe contém um conjunto de atributos e um conjunto de métodos– os atributos devem ter nomes distintos– os métodos devem ter assinaturas distintas
• Cada objeto possui um conjunto próprio de valores dos atributos e o conjunto de métodos da sua classe.
Alcides Calsavara 23
Classes e ObjetosClasse A Classe B
Alcides Calsavara 24
Classe e Tipo
• Implementação de um tipo abstrato de dados.
• Os atributos definidos em uma classe somente são acessíveis a partir dos métodos definidos na mesma classe.
Alcides Calsavara 25
Tipos
• Primitivos:– números inteiros– números reais– valores lógicos (verdadeiro ou falso)– caracteres
• Classes:– atributos – métodos
Alcides Calsavara 26
Tipo Parametrizado
• Um tipo pode receber como parâmetro uma lista de tipos.
• Exemplos:– pilha de inteiros– pilha de reais– pilha de pessoas– ...
Alcides Calsavara 27
Método• Cada método possui uma assinatura, um
tipo de retorno (primitivo ou classe) e uma implementação.
• A assinatura de um método é composta por um nome e uma lista de parâmetros.
• Cada parâmetro tem um nome e um tipo (primitivo ou classe).
Alcides Calsavara 28
Atributo
• A especificação de um atributo em uma classe consiste em um nome e um tipo (primitivo ou classe).
• O valor de um certo atributo (em cada instância) deve ser compatível com o tipo especificado (na correspondente classe).
Alcides Calsavara 29
Atributos em Classes e Objetos
b = Vz = 7
Classe Ab : lógicoz : inteiro
b = Fz = -3
b = Vz = 0
Alcides Calsavara 30
Associação entre Objetos
nome = João
Classe Pessoanome : texto
Classe Automóvelplaca : textoproprietário : Pessoa
placa = ABC 1234
Possuído-por
proprietário
Alcides Calsavara 31
Composição de Objetos
potência = 2,0
Classe Motorpotência : real
Classe Automóvelplaca : textomotor : Motor
placa = ABC 1234
Contém
Alcides Calsavara 32
Construção de Objetos
• Toda classe define um ou mais métodos específicos para a criação (iniciação) de novos objetos, normalmente denominados construtores da classe.
• Toda vez que um novo objeto é criado, um construtor da correspondente classe deve ser selecionado para execução.
Alcides Calsavara 33
Tipos de Dados Abstratos (ADT)• Um ADT é um modelo matemático para descrição
de um tipo independente de sua representação física.
• Um tipo é uma coleção de objetos caracterizados através de funções, axiomas e pré-condições.
• Um objeto que pertence ao conjunto de objetos descritos por um ADT é dito ser uma instância do ADT.
Alcides Calsavara 34
Exemplo de ADTPilha (Stack)
• Opções de representação:– array– listas– ...
• Questão básica:
Como definir formalmente uma pilha de forma independente de sua representação?
Alcides Calsavara 35
Exemplo de ADTPrimeira Parte: Tipos
Especificação ADT para pilhas
• TYPES– STACK [G]
Alcides Calsavara 36
Exemplo de ADTSegunda Parte: Funções
• FUNCTIONS– put: STACK[G] X G --> STACK[G]– remove: STACK[G] -/-> STACK[G]– item: STACK[G] -/-> G– empty: STACK[G] --> BOOLEAN– new: STACK[G]
Alcides Calsavara 37
Exemplo de ADTTerceira Parte: Axiomas
• AXIOMS
Para todo x : G, s : STACK[G]
A1 - item ( put ( s, x ) ) = x
A2 - remove ( put ( s, x ) ) = s
A3 - empty ( new )
A4 - not empty ( put ( s, x ) )
Alcides Calsavara 38
Exemplo de ADTQuarta Parte: Pré-condições
• PRECONDITIONS– remove ( s : STACK[G] ) require not empty(s)– item ( s : STACK[G] ) require not empty(s)
Alcides Calsavara 39
Asserções
P {A} Q
A execução de A, iniciando em um estado no qual P é verdadeira, terminará em um estado no qual Q é verdadeira.
P : pré-condição
Q : pós-condição
A : uma operação (ou parte de)
Alcides Calsavara 40
Asserções - Exemplos
• {x >= 9} x := x + 5 {x >= 13}
• {x >= 0} y := sqrt(x) { true }
• {false} y := x * x { y >= 0 }
• {not full} put(x : G) { not empty AND item = x AND count = old count + 1 }
Alcides Calsavara 41
Invariante de Classe
• Uma invariante é uma propriedade inalterável durante todo o ciclo de vida de um objeto.
• Exemplos:– 0 <= count– count <= capacity– empty = (count = 0)
Alcides Calsavara 42
Tratamento de Exceção
• Exceções são acontencimentos fora do comportamento normal ou desejado para um programa. O gerenciamento de exeções permite o controle sobre erros e possivelmente uma solução de contorno.
• Exemplos: entrada em formato inválido, arquivo corrompido, conexão de rede não disponível, índice inválido para vetor, ...
Alcides Calsavara 43
Modularização
• Construção de software orientado a objetos é a construção de um sistema de software como uma coleção de implementações de ADTs possivelmente parciais.
• Um ADT corresponde a um módulo de um sistema de software.
Alcides Calsavara 44
Classe versus Objeto
• Um classe é um elemento de construção de software. Portanto, é um elemento definido e criado estaticamente.
• Um objeto é um elemento de run-time, isto é, só existe em tempo de execução de um sistema de software. Portanto, é criado dinamicamente.
Alcides Calsavara 45
Generalização e Especialização
• Generalização: relacionamento entre uma classe e uma ou mais versões refinadas ou especializadas da classe.
• Especialização: relacionamento inverso• Superclasse: versão mais abstrata de outra
classe, a subclasse• Subclasse: versão mais refinada de outra
classe, a superclasse
Alcides Calsavara 46
Herança
• Mecanismo baseado em objetos que permite que as classes compartilhem atributos e métodos baseado em um relacionamento, geralmente generalização/especialização.
• Uma subclasse herda atributos e métodos da superclasse.
Alcides Calsavara 47
Classes Abstratas e Concretas
• Classe abstrata: classe que não pode ter instâncias diretas, mas cujos descendentes sim; organizam características comuns a diversas classes; mecanismo para reutilizar código; pode definir métodos abstratos (sem um correspondente método).
• Classe concreta: classe que pode ter instâncias diretas; não pode definir métodos abstratos.
Alcides Calsavara 48
Sobrecarga
• Atributos e operações podem ser redefinidos (sobrecarregados) por subclasses.
Alcides Calsavara 49
Sobrecarga para extensão
• A nova operação é igual à operação herdada, exceto pelo fato de acrescentar alguns detalhes de comportamento, normalmente afetando novos atributos da subclasse.
Alcides Calsavara 50
Sobrecarga para restrição
• A nova operação restringe o protocolo (assinatura da operação), podendo reduzir os tipos de argumentos.
• A operação herdada fica fechada (restrita) dentro de cada subclasse específica.
Alcides Calsavara 51
Sobrecarga para otimização
• O novo método tem o mesmo protocolo externo e apresenta o mesmos resultados
• A implementação do novo método (algoritmo utilizado) pode ser completamente diferente
Alcides Calsavara 52
Polimorfismo
• Assume muitas formas• A propriedade segundo a qual uma operação pode
comportar-se diferentemente em classes diferentes.
• A subclasse redefine a implementação de uma operação herdada da superclasse.
• Onde se espera uma instância de um certa classe pode aparecer uma instância de qualquer subclasse daquela classe.
Alcides Calsavara 53
Herança Múltipla
• Uma classe possui mais de uma subclasse e herda características de todos os seus ancestrais.
• Maior capacidade de especificação de classes.
• Maior oportunidade de reutilização.• Perda em simplicidade conceitual e de
implementação.
Alcides Calsavara 54
Diagramas de Estados
• Representam o comportamento dinâmico de classes individuais
• Representam o comportamento dinâmico de colaboração entre classes
Alcides Calsavara 55
Elementos de umdiagrama de estados
• os estados possíveis para os objetos de uma certa classe• as transições de estado• os eventos que causam transições de estados• as ações decorrentes de
– uma transição de estado– entrada em um estado– saída de um estado
• as ações realizadas por objetos enquanto estão em um certo estado– durante todo o tempo em que o objeto está no estado– decorrente de algum evento
Alcides Calsavara 56
Diagramas de Estados
• Relaciona eventos e estados
• Um objeto muda de estado dependendo do evento e do estado atual.
• Transição: modificação de estado causada por um evento (mesmo quando estado final e inicial coincidem).
• Um evento pode ser irrelevante para um objeto em um certo estado.
Alcides Calsavara 57
Notação paraDiagrama de Estados
Estado 1faça : atividade
Evento ( atributos )[ condição ] / ação Estado 2
. . .
Alcides Calsavara 58
Diagramas de EstadosExemplo : Linha telefônica
Inativa
Sinal de discar
Ligando
Tocando
Interligando
Desligando
Queda-da-linha
Mensagem gravadaSinal de
ocupado
Sinal de ocu-pado rápido
no-gancho
dígito( n )
no-gancho
Discando
Mensagemterminada
encaminhado
telefone chamado atende
telefone chamado desliga
número válido
número invalido
fora-do-gancho
dígito( n )
número ocupado
tronco ocupado
queda-da-linha
queda-da-lin
ha
Alcides Calsavara 59
Diagramas de EstadosExemplo : jogo de xadrez
Vez dasbrancas
Vez daspretas
brancasjogam
pretasjogam
Início cheque-mate
empate forçado
empate forçado
cheque-mate
Pretasvencem
Brancasvencem
Empate
Alcides Calsavara 60
Controle de Operações
Inativo
botão direito pressionado /exibir menu instantâneo
Menu visível
botão direito liberado / apagar menu instantâneo
cursor movimentado / iluminar item do menu
Alcides Calsavara 61
Condições de GuardaExemplo : Cruzamento
Leste / Oestepodem dobrar
à esquerda
tempodecorrido
Leste / Oestepodem ir em frente
Norte / Sulpodem ir em frente
tempo decorrido [ carrosnas vias esquerdas N / S ]
tempo decorrido [ carrosnas vias esquerdas L / O ]
tempodecorrido
tempo decorrido [ sem carros
nas vias esquerdas N / S ]
Norte / Sulpodem dobrar
à esquerda
tempo decorrido [ sem carros
nas vias esquerdas L / O ]
Alcides Calsavara 62
Diagramas de Estados NiveladosExemplo : máquina de vender
Inativa
moedas introduzidas( quantia ) verificar saldo Recolhendo dinheiro
moedas introduzidas ( quantia ) /acrescentar ao saldo
faça : entregaritem
faça : preparartroco
faça : testar item e calcular troco
[ troco = 0 ] [ troco < 0 ]
[ troco < 0 ]
Selecionar ( item )[ item vazio ]
cancelar / devolver moedas
Alcides Calsavara 63
Diagramas de Estados NiveladosExemplo : máquina de vender
Faça : moverbraço para afileira correta
faça : prepararitem
Faça : moverbraço para a
coluna correta
faça : empurraritem para forada prateleira
braço pronto braço pronto empurrado
dígito( n )
clear
faça : acrescentar
dígito
dígito( n )
enter
Selecionar( item )
Atividade entregar item da máquina de vender
Transição selecionar item da máquina de vender
Alcides Calsavara 64
Generalização de Estados Exemplo : transmissão de um
carro
Primeira Segunda Terceira
sobe
Neutro Réapertar R
apertar N
reduz
sobe
reduz
Para a frente
pára
apertar Fapertar N
Alcides Calsavara 65
Generalização de EventosExemplo : eventos de teclado
evento
Entrada do usuário
Botão do mouse
apertado
controle gráfico
espaço alfanumérico pontuação
tempo
dispositivo
Botão do mouselocalização
caracter do tecladocaracter
Botão do mouse
liberado
Alcides Calsavara 66
Concorrência de AgregaçãoCarro
Ignição Transmissão Freio Acelerador
Desligada Partida Ligada
Girar chave para dar partida[ transmissão em Neutro ]
desligar a chave
liberar chave
Ignição
Desligado Ligado
apertaracelerador
apertar freio
liberar acelerador liberar freio
Acelerador Freio
Desligado Partido
Alcides Calsavara 67
Concorrência Interna de Objetos
Não vulnerável
Não vulnerável
Vulnerável
Vulnerável
N-S vence rubber
L - O vence rubber
Vulnerabilidade N - S
jogo N - S
Vulnerabilidade L - O
jogo L - O
jogo N - S
jogo L - O
Jogando rubber
Alcides Calsavara 68
Sincronização de Eventos Concorrentes
Faça : entregar dinheiro
Faça : ejetar cartão
Pronta parareinicializar
Emitindo
cartão recolhido
dinheiro recolhido
Preparação
Unified Process: O que é um processo ?
• Um processo de desenvolvimento de software é o conjunto de atividades necessárias para transformar requisitos de usuários em sistema de software.
Unified Process: Pilares
• O Unified Process é um processo– Dirigido por Use Case– Centrado em Arquitetura– Iterativo e Incremental
Unified Process: Idéias Fundamentais
• Modelo de Use Cases
Arquitetura: Camadas de Componentes
Classes específicas de negócio
Classes de Serviços
Pacotes Genéricos
Sistema Operacional
Alcides Calsavara 73
Estrutura de uma Iteração
Concorrência de Iterações• Iterações podem caminhar em paralelo
Visão Global das Fases• O Processo
Unified Process: Produtos• Modelos do Unified Process
Fase de Requisitos• Modelo de Use Case: Exemplo
Fase de Análise• Modelo de Análise
– Modelo de Análise a partir de Modelo de Use Case
Modelo de Projeto• Diagrama de Classe
Modelo de Projeto
• Diagrama de Seqüência
Modelo de Projeto• Exemplo de Diagrama de Estados
Camadas de Subsistemas: Exemplo
Diagrama de Distribuição• O Modelo de Distribuição é representado em Diagramas de
Distribuição (Deployment)
Alcides Calsavara 84
Críticas a Orientação a Objetos
• “yo-yo” problem: o reuso de uma classe requer o seu completo entendimento, inclusive de todo o seu caminho de herança (superclasses).
• Aprendizado é difícil.
• Produtividade não é mensurável e, por isso, seu aumento é contestado.
Alcides Calsavara 85
Conclusão
• Software não é produto: é conhecimento
• Construção de software é um processo de aquisição de conhecimento
Alcides Calsavara 86
Referências Bibliográficas
• The Real Reason Why Software Engineers Need Math. Keith Devlin. Communications of the ACM, 44 (10), October 2001.
• The Emperor with No Clothes. Henry F. Ledgard. Communications of the ACM, 44 (10), October 2001.
• The Case for a New Business Model. Phillip G. Armour. Communications of the ACM, 43 (8), August 2000.
Alcides Calsavara 87
Alcides Calsavara
• PUCPR/CCET• PPGIA: Programa de Pós-Graduação em
Informática Aplicada• MAIS: Modelagem e Arquitetura de
Sistemas de Informação• www.ppgia.pucpr.br/~alcides• alcides@ppgia.pucpr.br• 330 1783
Recommended