Modelagem de Sistemas Alcides Calsavara. 2 Sumário

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