Modelagem de Sistemas Alcides Calsavara.

Slides:



Advertisements
Apresentações semelhantes
TIPOS ABSTRATOS DE DADOS
Advertisements

Orientação a objetos identidade abstração classificação encapsulamento
Programação orientada a objetos Introdução Paradigma de objetos e mensagens Classes e instâncias.
ESTRUTURA DE DADOS Professor: Marcelo Mendes Turma: MBI-1
I- Introdução A Evolução dos Modelos de Dados e dos Sistemas de Gerência de Banco de Dados.
ABSTRAÇÃO processo de representar um grupo de entidades através de seus atributos comuns feita a abstração, cada entidade particular (instância) do grupo.
Fundamentos de Engenharia de Software
Paulo Marques Hernâni Pedroso
Aula 8 Contratos.
Engenharia de Software
Contratos de Operação.
Diagramas de Seqüência
Orientação a Objetos: Encapsulamento e Classificação
Modelagem de Software Orientado a Objetos utilizando a Linguagem UML
Orientação a Objetos: Encapsulamento e Classificação
Modelagem Orientada a Objetos
Orientação a Objetos: Encapsulamento e Classificação
Modelagem de Sistemas Alcides Calsavara.
Programação Orientada a Objetos*
UML Diagrama de Classes elementos básicos. Contexto Os diagramas de classes fazem parte do da visão estática da UML. Os elemento desta visão são conceitos.
Contratos em Projeto OO
Introdução ao paradigma de programação: Orientado a Objetos
Diagrama de Classes.
Professor: Rogério Lopes Disciplina: Engenharia de Software II Fortium Sistemas da Informação Engenharia de Software II.
Introdução à Programação Um enfoque orientado a construção de modelos em programas baseados em objetos Gustavo Motta Departamento de Informática - UFPB.
Noções de Estrutura de Dados Logica de Programação
Paulo J. Azevedo Departamento de Informática Universidade do Minho
Contratos Modelagem Funcional.
Modelagem de Interações
Paradigmas de Linguagens de Programação Paradima da Programação Orientada à Objetos Professor: Armando Hage Belém-2008.
Orientação a Objetos.
TÉCNICAS DE PROGRAMAÇÃO II
Diagramas de Sequência e Comunicação
Diagramas de Seqüência
I- Introdução A Evolução dos Modelos de Dados e dos Sistemas de Gerência de Banco de Dados.
I- Introdução A Evolução dos Modelos de Dados e dos Sistemas de Gerência de Banco de Dados.
Aula prática 13 Orientação a Objetos – C++ Parte 1
Análise e Projeto de Sistemas UNIVERSIDADE DE CRUZ ALTA Ciência da Computação 2010/1.
OO-SC (Meyer) - Cap 111 OO-SC (MEYER) Desenho por Contrato Construindo software confiável.
Paradigmas da Programação – Semestre 1 – Aula 2 Professores: Eduardo Mantovani Fábio de Paula.
Estudo dos Conceitos e Paradigmas de Programação
Tipos Abstratos de Dados
Classes, Objetos, Atributos e Métodos JAVA
PROGRAMAÇÃO - INTRODUÇÃO George Gomes Cabral. DECOMPOSIÇÃO Dividir para conquistar: Paradigma básico para tratamento de grandes problemas. Nossa meta.
Orientação a Objetos Parte I
Análise e Projeto de Sistemas
Prof. Silvestri – todos os direitos reservados SISTEMAS DISTRIBUIDOS Aula 5 Eduardo Silvestri
INTRODUÇÃO À ORIENTAÇÃO A OBJETOS EM JAVA
UML Diagrama de classes.
SISTEMAS DISTRIBUIDOS Aula 4
© Ricardo Pereira e Silva
Estruturas de Dados Aula 8: Tipos Abstratos de Dados 30/04/2014.
Banco de Dados Aplicado ao Desenvolvimento de Software
PROGRAMAÇÃO ORIENTADA A OBJETOS
OMNeT++.
Paradigmas da Programação – Semestre 2 – Aula 1 Professores: Fábio de Paula Santos Eduardo Mantovani
Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos Professor: Cheli Mendes Costa Introdução a Programação Orientada.
A Linguagem Formal de Especificação VDM-SL
Copyright 2000, Departamento de Informática, UFPE. Todos os direitos reservados sob a legislação em vigor. Orientação a Objetos e Java.
Conceitos de Orientação a Objetos zConceito de tipo zTipos Abstratos de Dados zMódulos/Pacotes zEncapsulamento.
Copyright © 2006 Qualiti. Todos os direitos reservados. Projetar Classes.
TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS ANÁLISE E PROJETO DE SISTEMAS Aula /08/2012 Professor Leomir J. Borba-
20/04/2017 Orientação a Objetos 1 1.
Módulo II Capítulo 1: Orientação a Objetos
Programação Orientada a Objetos para Redes de Computadores Prof. Miguel Elias Mitre Campista POO para Redes de Computadores.
Aplicação de Métodos Formais no Desenvolvimento de Sistemas Multimídia Distribuídos Cláudia Araújo Ribeiro UFPE Junho/2000.
Desenvolvendo sotfware com UML1 Visão Geral de Orientação a Objetos.
Análise e Design de Software Site:
Análise Orientada a Objetos Por Patrícia Braga Centro Universitário Jorge Amado.
Linguagem de Programação – Aula 04 Prof. Me. Ronnison Reges Vidal.
Transcrição da apresentação:

Modelagem de Sistemas Alcides Calsavara

Sumário Alcides Calsavara

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

Realidade e Software Percepção da Realidade observador implementador Sistema de Software Alcides Calsavara

Modelagem e Formalização Percepção da Realidade observador Modelos formalizador implementador Sistema de Software Alcides Calsavara

Refinamento de Modelos Percepção da Realidade observador Modelo 1 ... formalizador Modelo n-1 implementador Sistema de Software Alcides Calsavara

Refinamento de Modelos Percepção da Realidade ( Modelo 0 ) observador Modelo 1 ... formalizador Modelo n-1 implementador Sistema de Software ( Modelo n ) Alcides Calsavara

Refinamento de Modelos Conceitual Percepção da Realidade ( Modelo 0 ) observador Modelo 1 ... formalizador Modelo n-1 implementador Sistema de Software ( Modelo n ) Físico Alcides Calsavara

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

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

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

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

Interação entre Objetos Alcides Calsavara

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

Execução de Métodos invocação evento e m m m Alcides Calsavara

Objeto Comportamento Estado : 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

Comportamento e Estado Alcides Calsavara

Métodos e Atributos Alcides Calsavara

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

Interface A interface de um objeto é o conjunto de métodos que podem ser explicitamente invocados a partir de outros objetos. Alcides Calsavara

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

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

Classes e Objetos Classe A Classe B Alcides Calsavara

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

Tipos Primitivos: Classes: números inteiros números reais valores lógicos (verdadeiro ou falso) caracteres Classes: atributos métodos Alcides Calsavara

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

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

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

Atributos em Classes e Objetos Classe A b : lógico z : inteiro b = V z = 0 b = V z = 7 b = F z = -3 Alcides Calsavara

Associação entre Objetos Classe Automóvel placa : texto proprietário : Pessoa Possuído-por Classe Pessoa nome : texto placa = ABC 1234 nome = João proprietário Alcides Calsavara

Composição de Objetos Classe Automóvel Classe Motor placa : texto motor : Motor Classe Motor potência : real Contém placa = ABC 1234 potência = 2,0 Alcides Calsavara

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

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

Exemplo de ADT Pilha (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

Exemplo de ADT Primeira Parte: Tipos Especificação ADT para pilhas TYPES STACK [G] Alcides Calsavara

Exemplo de ADT Segunda 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

Exemplo de ADT Terceira 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

Exemplo de ADT Quarta Parte: Pré-condições PRECONDITIONS remove ( s : STACK[G] ) require not empty(s) item ( s : STACK[G] ) require not empty(s) Alcides Calsavara

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

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

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

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

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

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

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

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

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

Sobrecarga Atributos e operações podem ser redefinidos (sobrecarregados) por subclasses. Alcides Calsavara

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

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

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

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

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

Diagramas de Estados Representam o comportamento dinâmico de classes individuais Representam o comportamento dinâmico de colaboração entre classes Alcides Calsavara

Elementos de um diagrama 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

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

Notação para Diagrama de Estados Evento ( atributos ) [ condição ] / ação Estado 1 faça : atividade Estado 2 . . . Alcides Calsavara

Diagramas de Estados Exemplo : Linha telefônica no-gancho no-gancho Inativa fora-do-gancho queda-da-linha Queda- da-linha Sinal de discar queda-da-linha dígito( n ) dígito( n ) número invalido Mensagem gravada Discando número ocupado Sinal de ocupado número válido Ligando tronco ocupado Sinal de ocu- pado rápido encaminhado Tocando Mensagem terminada telefone chamado atende Interligando telefone chamado desliga Desligando Alcides Calsavara

Diagramas de Estados Exemplo : jogo de xadrez Início Vez das brancas cheque-mate Pretas vencem empate forçado pretas jogam brancas jogam Empate empate forçado Vez das pretas Brancas vencem cheque-mate Alcides Calsavara

Controle de Operações botão direito pressionado / exibir menu instantâneo Inativo Menu visível botão direito liberado / apagar menu instantâneo cursor movimentado / iluminar item do menu Alcides Calsavara

Condições de Guarda Exemplo : Cruzamento tempo decorrido [ carros nas vias esquerdas N / S ] Norte / Sul podem ir em frente Norte / Sul podem dobrar à esquerda tempo decorrido [ sem carros nas vias esquerdas N / S ] tempo decorrido tempo decorrido tempo decorrido [ sem carros nas vias esquerdas L / O ] Leste / Oeste podem dobrar à esquerda Leste / Oeste podem ir em frente tempo decorrido [ carros nas vias esquerdas L / O ] Alcides Calsavara

Diagramas de Estados Nivelados Exemplo : máquina de vender moedas introduzidas ( quantia ) verificar saldo Inativa Recolhendo dinheiro moedas introduzidas ( quantia ) / acrescentar ao saldo cancelar / devolver moedas Selecionar ( item ) [ item vazio ] [ troco < 0 ] faça : testar item e calcular troco [ troco = 0 ] [ troco < 0 ] faça : entregar item faça : preparar troco Alcides Calsavara

Diagramas de Estados Nivelados Exemplo : máquina de vender Atividade entregar item da máquina de vender braço pronto braço pronto empurrado Faça : mover braço para a fileira correta Faça : mover braço para a coluna correta faça : empurrar item para fora da prateleira Transição selecionar item da máquina de vender dígito( n ) Selecionar( item ) dígito( n ) faça : acrescentar dígito faça : preparar item enter clear Alcides Calsavara

Generalização de Estados Exemplo : transmissão de um carro apertar R Neutro Ré apertar N apertar N apertar F Para a frente pára sobe sobe Primeira Segunda Terceira reduz reduz Alcides Calsavara

Generalização de Eventos Exemplo : eventos de teclado tempo Entrada do usuário dispositivo Botão do mouse caracter do teclado localização caracter controle gráfico Botão do mouse apertado Botão do mouse liberado espaço alfanumérico pontuação Alcides Calsavara

Concorrência de Agregação Carro Ignição Transmissão Freio Acelerador Ignição Girar chave para dar partida [ transmissão em Neutro ] liberar chave Desligada Partida Ligada desligar a chave Acelerador Freio apertar acelerador apertar freio Desligado Ligado Desligado Partido liberar acelerador liberar freio Alcides Calsavara

Concorrência Interna de Objetos Jogando rubber Vulnerabilidade N - S jogo N - S jogo N - S Não vulnerável Vulnerável N-S vence rubber Vulnerabilidade L - O jogo L - O jogo L - O Não vulnerável Vulnerável L - O vence rubber Alcides Calsavara

Sincronização de Eventos Concorrentes Emitindo dinheiro recolhido Faça : entregar dinheiro Preparação Pronta para reinicializar Faça : ejetar cartão cartão recolhido Alcides Calsavara

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

Estrutura de uma Iteração Alcides Calsavara

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)

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

Conclusão Software não é produto: é conhecimento Construção de software é um processo de aquisição de conhecimento Alcides Calsavara

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

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 Alcides Calsavara