1 Design Patterns & MDSoC Casos de uso em software ITS Tiago Delgado DiasSoftware

Slides:



Advertisements
Apresentações semelhantes
Soluções elegantes para problemas recorrentes
Advertisements

Padrão de Projeto Iterator
1 Programação Orientada aos COMponentes Quartas à Tarde no DEI 12 de Abril de 2000.
Desenvolvimento de Software Orientado por Aspectos Autores: 4033 – Daniel Grilo 4223 – Nelson Rodgrigues Autores: 4033 – Daniel Grilo 4223 – Nelson Rodgrigues.
Engenharia de Software
Evolução dos SGBD’s (2ª Parte).
Aspect Oriented Software Development - AOSD 1 Elaborado por: Bruno Nunes nº 3202 Pedro Casqueiro nº 2163.
Sistema para Criação e Testes de Modelos Formais
Orientação por Objectos > Modelo de Processo OO > Identificação de Classe e Objectos Aula 12.
Adriano Teixeira João Vide Luís Silva Maria Pedroto
1º workshop TELESAL 23/11/07 Sistema de monitorização e controlo baseado em IEEE /ZigBee e TCP/GPRS. Financiado por: Sistema de Monitoria.
Padrão de Projeto Memento
Processo de Reengenharia Prático Pós- Graduação Pós- Graduação Karolyne Almeida Siqueira Michael Caldas da Silva.
1 Introdução aos padrões de projeto (GoF) Conceitos preliminares –Mecanismos de herança –Princípio de Substituição de Liskov –Acoplamento concreto x Acoplamento.
1 Comunicação Inter-Processos -> RMI -> RPC -> TCP -> UDP (Abstração de passagem de mensagem)
Introdução ao paradigma de programação: Orientado a Objetos
Processo Desenvolvimento de Software Tradicional
Introdução Visão Geral do Método.
Documentação da Neptus Framework
Estudo comparativo de arquitecturas para aplicações empresariais
ESTRUTURA DA APRESENTAÇÃO
Uma visão geral Grupo: Alexandre Henrique Vieira Soares
Middleware e Sistemas Distribuídos
Separation of Concerns (SoC)
Fundamentos da Engenharia de Software
Padrões de projeto detalhados Factory Method, Abstract Factory
Vector To Raster Factory & Strategy Eric Silva Abreu São José dos Campos - 15 de dezembro de 2006.
Linguagens Orientadas a Objeto
Conceitos.
Arquiteturas de Referência
Desenvolvimento de Sistemas Orientados a Aspectos
Sistemas Distribuídos
Gestão de Redes e Sistemas Distribuídos Teresa Maria Vazão Fevereiro 2003 IST/INESC Contactos:IST/Tagus-Park Tel:
Gestão de Redes e Sistemas Distribuídos Teresa Maria Vazão Julho 2005 Ferramentas de Gestão Plataformas de Gestão IST/INESC-ID Contactos: IST/Tagus-Park.
AdverServer Servidor de Ranking para AdverGames Parte 3 Felipe Maia.
Fevereiro/ Resultado dos Projetos de Software Pesquisa Motivação.
Hyper/J TM : Multi-Dimensional Separation of Concerns for Java TM Peri Tarr, Harold Ossher, Vincent Kruskal, and Matthew Kaplan Por Sérgio Soares.
DC - UFC Copyright © 2003 Misael Santos e Rossana Andrade 1 Padrões de Projeto para Sistemas Web Misael Santos e Rossana Andrade Universidade.
Desenvolvimento Rápido de Aplicação (RAD)
LEONARDO SIMAS JUSSI BARROS WESLLEY VIEIRA Flyweight.
Programação orientada a objectos em C++
SISTEMAS DISTRIBUIDOS Aula 4
Padrões de Projeto These slides complement the E-book, Programming in the Large With Design Patterns available on both Kindle and Nook. Additional supporting.
O primeiro passo para a nuvem
Índice Capítulo 1 - Quem somos Capítulo 2 - Âmbito do Projecto
Design Pattern (Padrões de Projeto)
Padrões de Interação com o Usuário
April 05 Prof. Ismael H. F. Santos - 1 Módulo I Princípios e Padrões de Projeto de SW em Java Professores Eduardo Bezerra –
Padrão de Projeto Iterator Projeto de Sistemas de Software Thiago Pinheiro de Araújo.
Trabalho Final de Padrões de Projeto
Desenvolvimento de Software Dirigido a Modelos
Tarciane Andrade Análise de Casos de Uso Tarciane Andrade
April 05 Prof. Ismael H. F. Santos - 1 Modulo I Princípios e Padrões de Projeto de SW em Java Professores Eduardo Bezerra –
Abstract Factory Pattern Algumas aplicações precisam criar objetos de classes que podem mudar ex: elementos de um sistema GUI. –Diferentes padrões precisam.
Padrões de projeto M.Sc. Sílvio Bacalá Jr..
Gestão de Redes e Sistemas Distribuídos Teresa Maria Vazão Fevereiro 2003 IST/INESC Contactos:IST/Tagus-Park Tel:
1 Design Patterns Israel Rios. 2 Origens A idéia de padrões de projeto não teve origem na ciência da computação Christopher Alexander A Pattern Language:
Objetos Distribuídos Frameworks Orientados a Objetos.
Frameworks e Componentes Daniel Fernando Pavelec.
Serviços baseados em dispositivos pessoais móveis Seminários Taguspark Mobilidade 2005 Miguel Pardal 21 de Março de 2005.
1 - Introdução a Padrões de Projeto
Orientação a Objetos e Java Alexandre Mota  Centro de Informática, UFPE.
UML (Unified Modeling Language) Linguagem Unificada de Modelagem
Padrões de Projeto Aula 9 – Padrão Adapter.
CIn-UFPE1 Projeto de Gerenciamento de Dados. CIn-UFPE2 Objetivos n Definir o que significa gerenciamento de dados do sistema; n Entender abordagens diferentes.
Padrões de Projeto de Criação Padrões de Projeto Orientados a Objetos Prof a. Danielle Martin Universidade de Mogi das Cruzes.
Jadson Xavier Muller Oliveira.  É difícil encontrar alguma definição consensual de padrão.  Definição aceitável: - São idéias que foram úteis em algum.
1 Introdução aos Padrões de Projetos Créditos: Prof. Fabio Kon - IME/USP Adaptações: Prof. Nécio de Lima Veras.
Introdução a Padrões de Projeto Padrões de Projeto Orientado a Objetos Profa. Danielle Martin Universidade de Mogi das Cruzes.
Padrões de Projeto Aula 12 – Padrão Adapter. PADRÃO ADAPTER Soluções simples para problemas reais! 2.
Transcrição da apresentação:

1 Design Patterns & MDSoC Casos de uso em software ITS Tiago Delgado DiasSoftware

2 Agenda Design Patterns – o que são? Identificação e apresentação de padrões usados na plataforma iBrisa Para além dos padrões: - Multi-Dimensional Separation of Concerns - MDSoC com partial types (.NET 2.0) - Hyper/Net, MDSoC para além das classes

3 Design Patterns Soluções para problemas típicos Abordagem com origem na Arquitectura (Christopher Alexander'77) Aplicação à programação em 1987 por Kent Beck (Extreme Programming, Agile) e Ward Cunningham (Wiki) apresentada na OOPSLA'87 Popularização em 1994 com o livro do Gang-of-Four (Erich Gamma, Richard Helm, Ralph Johnson e John Vlissides) São assim padrões catalogados e com sugestões de aplicação em linguagens correntes (Java, C#, etc.), tipicamente OO São um recurso utilizado na fase de desenho Principais factores a favor: - Ampla utilização, - presença (através de templates) nas frameworks (Java,.NET), - garantias empíricas

4 iBrisa – Padrões: Componente Se considerado como um padrão (B. Appleton, Component Design Patterns) será o padrão mais utilizado no software contemporâneo Promove a modularização através da oferta de funcionalidades a camadas de mais alto nível (ou ao utilizador final) Utilizado no iBrisa a nível de arquitectura: - Separação em camadas, tipicamente: –Dados –Serviços –Interface através da utilização de bibliotecas e frameworks

5 iBrisa – Padrões: Componente (2) através da utilização de Web Controls, ex.: - Controlo de autenticação - Localização de elementos - Listagem de PMVs Toll.Services Traffic Tolls.CAD Tolls.Sinoptic Atlas.Video Video.Services Atlas.Logging Atlas.Matrix Atlas.Security CAD Atlas.Security Atlas.Audit iBrisa.SIC SGI SGMA SGDT Cross-cut do módulo de portagens AUTENTICAÇÃO

6 iBrisa – Padrões: Provider/Adapter Um adaptador funciona como mediador entre interfaces distintas: É o mecanismo chave para a independência de fornecedores de equipamentos/serviços no Traffic Atlas É devido a este padrão que é possível: - com a mesma interface gerir a video-wall do CCO e a componente da concessão Brisa nas Estradas de Portugal - notificar a ocorrência de uma incidência via , SMS ou de um serviço Datex Por se ter aplicado este padrão seria possível: - Trocar por completo a solução de call-center usada no CCO e não alterar a componente de gestão de canais de comunicações - Introduzir equipamentos (CCTVs, PMVs, EMs) de novos fornecedores na rede sendo geridos através do Traffic Atlas Consumidor de serviço Adaptador #1 Fornecedor de serviço #1 Consumidor de serviço Adaptador #N Fornecedor de serviço #N

7 iBrisa – Padrões: Observer e Hook Ambos os padrões definem um ponto de registo para acções a tomar caso se verifiquem determinadas condições No caso do Hook as acções que tratam o evento vão definir em conjunto uma resposta para a origem do evento (por exemplo validar um conjunto de condições necessárias para a efectivação do evento) O padrão do Observador é utilizado no Traffic Atlas: - através do mecanismo de eventos do.NET - em situações em que é necessário efectuar acções não operacionais para uma dada situação (ex. sincronizar o estado de um equipamento, registar uma operação efectuada ou registar um alarme) - quando existe mais do que uma acção para o evento separa o código de cada acção, nos casos restantes separa o código operacional de funcionalidades transversais, como o registo de ocorrências (logging) São utilizados Hooks no Traffic Atlas: - através da implementação de uma classe específica - para o tratamento de alterações do estado da sessão dos utilizadores (valida-se se um operador pode abandonar o seu posto sem deixar zonas por operar, etc.)

8 Padrões e limitações Objectivos comuns aos padrões apresentados: - Modularização - Separação de conceitos Contudo estes objectivos não são antingidos na totalidade: - A estrutura de componentes nem sempre permite a separação desejada –Pode não ser possível ter uma visão unificada de todo código envolvido numa dada funcionalidade (ex. controlo de portagens), quando existem requisitos de alteração de funcionalidade esta possibilidade é desejável –Por vezes não é possível testar uma funcionalidade ou um conjunto de funcionalidades de forma isolada - O código que lança os eventos ou hooks encontra-se disperso pelo código operacional –Por exemplo para acrescentar a alteração do estado de um SOS como fonte de um evento de acção (usado para registar acções em BD e para alterar o estado dos equipamentos) é necessário alterar o projecto de serviços de SOS –É contudo possível adicionar um novo tratamento do evento de acções sem ser necessária qualquer alteração aos módulos que despoletam o evento

9 Para além dos padrões Aspect oriented software - Separação de funcionalidades cross-cutting - Extensão às linguagens orientadas aos objectos (OO) - As soluções de AOP mais conhecidas são baseadas no AspectJ, de Gregor Kiczales, 1997 Multi-Dimensional Separation of Concerns (MDSoC) - Abordagem AOP desenvolvida desde 1999 por Peri Tarr e Harold Ossher, com uma implementação: Hyper/J - Promove uma separação equilibrada e equalitária das estruturas de classes num hiper-espaço populado por funcionalidades/requisitos - O programador manipula o software a este nível dentro do hiper- espaço, uma classe pode existir em várias funcionalidades distintas e ser vista parcialmente em cada uma - Tal como outras abordagens AOP para além da separação tem uma fase de composição em que o hiper-espaço é condensado numa implementação OO clássica

10 MDSoC – Aplicação a ITS Inicialmente utilizaram-se os partial types do.NET 2.0 para uma primeira experiência de MDSoC na área de ITS Classe Portagem com 2 funcionalidades: Cobrança e Contagem

11 MDSoC – Aplicação a ITS (2) Alguns métodos continuavam a combinar funcionalidades distintas: public int ChargeToll(Toll originToll) { int amountToCharge = this.AmountFromOtherToll(originToll); amountCharged += amountToCharge; // This region shouldn't be aware of this traffic management variable numVehiclesPassedThisHour++; return amountToCharge; }

12 Hyper/Net Desenvolveu-se um protótipo para.NET que permite a composição de métodos entre tipos parciais: Hyper/Net - Baseado no Hyper/J, oferece os métodos de composição: –Override, Merge, Bracket - Utiliza os partial types para a composição de classes - Utiliza um conjunto de atributos para definir os métodos de composição e as suas propriedades –ex. a política de composição de retornos dos métodos compostos Utilizando o Hyper/Net já foi possível separar totalmente as 2 funcionalidades - Na classe da funcionalidade de contagem acrescentou-se: [HyperNet.MethodMerge(HyperNet.MethodMergeAction.Merge, -3, ChargeTollMerge)] public int ChargeToll(Toll originToll) { numVehiclesPassedThisHour++; return 0; }

13 Hyper/Net (2) Uma terceira funcionalidade, de congestion charging, foi adicionada sem quaisquer alterações às 2 funcionalidades existentes Vantagens: - É possível ter uma separação total baseada numa estrutura de funcionalidades - É possível remover (1 click) e adicionar funcionalidades (alguns clicks ;) ) sem alterações ao código existente - Podem-se continuar a aplicar padrões existentes - Finalmente é possível mapear requisitos directamente no código