• Nenhum resultado encontrado

Universidade de Brasília UnB Faculdade UnB Gama FGA Curso de Engenharia de Software. Documentação Framework 0MQ.

N/A
N/A
Protected

Academic year: 2021

Share "Universidade de Brasília UnB Faculdade UnB Gama FGA Curso de Engenharia de Software. Documentação Framework 0MQ."

Copied!
15
0
0

Texto

(1)

 

 

Universidade de Brasília ­ UnB 

Faculdade UnB Gama ­ FGA 

Curso de Engenharia de Software 

 

Documentação Framework 0MQ. 

 

 

 

 

Autores: Cleiton da Silva Gomes  

Hebert Douglas de Almeida  

Thiago Silveira Honorato  

Vanessa Barbosa Martins  

Orientador: Fabricio Braz  

Brasília, DF 

2014 

 

(2)

Sumário

      1. Componentes  1.1. Definição  1.2. Modelo de Componentes  1.2.1. Exemplos de Modelos de Componentes  2. Framework  2.1. Definição  2.2. Classificação  2.3. Pontos de Variação  2.3.1. Frozen spots  2.3.2. Hot spots  3. Sobre o ZeroMQ  3.1 Classificação do framework  3.1.1  Classificação quanto ao contexto  3.1.2 Classificação caixa preta/caixa branca  4. Modelo de Estrutura do Framework  4.1 Diagrama de Classes  4.2 Pontos de Variação  4.2.1 Critérios para FrozenSpot  4.2.2 Critérios para HotSpot  4.3 Classes Principais  4.4 Detalhamento de classes  5. Evidências de Hot Spots no protótipo  6. Referências Bibliográficas     

 

 

(3)

1. Componentes

 

1.1. Definição

 

Um componente de software é um elemento que está em conformidade com um        modelo de componentes e pode ser instalado independentemente e composto sem        modificações Councill & Heineman (2001, p.7). 

 

O termo componente também é comparado com outros termos e conceitos utilizados        no desenvolvimento de software. Para alguns autores um componente de software é qualquer        elemento reusável: código binário, código fonte, estruturas de projeto, especificações e        documentações (Krueger, 1992). 

 

1.2. Modelo de Componentes

 

Para obter o reuso e substitutibilidade de componentes de software, eles também

       

devem ser aderentes a um padrão, que na literatura é chamado de modelo de componentes.        Assim como há mais de um padrão para uma tomada, há mais de um modelo para        componentes de software. Um programador pode criar seu próprio modelo, eventualmente        sendo uma especialização de um modelo disponível. Para compatibilizar componentes de um        modelo para outro, adaptadores podem ser desenvolvidos. Councill & Heineman (2001, p.7) 

       

Um modelo de componentes define vários aspectos da construção e da interação dos        componentes, abordando, entre outros fatores: como especificar o componente, como        instanciar o componente, quais os tipos de conectores e portas disponíveis, qual o modelo de        dados padrão, como as ligações entre os objetos pertencentes a componentes diferentes são        realizadas, como são feitas transações distribuídas, quais são os tipos de interface, as        interfaces obrigatórias, como são tratados o catálogo e a localização dos componentes, o        despacho das requisições e respostas, a segurança, o repositório, o formato, a nomeação, os        meta­dados, a interoperabilidade, a documentação, os mecanismos de customização, a        composição, a evolução, o controle de versões, a instalação e a desinstalação, os serviços de        execução, o empacotamento, etc. [Councill & Heineman, 2001, p.7, p.11; Weinreich &        Sametinger, 2001, p.37;Szyperski,1997, p.32; D’Souza & Wills, 1998, p.396, p.411]. 

 

 

 

 

1.2.1. Exemplos de Modelos de Componentes

 

O OLE(Object Linking and Embedding) é um modelo de componentes proposto pela        Microsoft cujo propósito inicial era integrar em um documento objetos gerados por diversas       

(4)

aplicações. Ao instalar no sistema operacional aplicações compatíveis com o modelo,        elastornam­se disponíveis para receber e oferecer conteúdos. O editor de documento passa a        ser um container que carrega conteúdos disponibilizados pelas demais ligações, como        gráficos, sons, vídeo, figuras. Councill & Heineman (2001, p.7) 

       

COM, DCOM e ActiveX são outros modelos de componentes utilizados pela Microsoft        que vieram da evolução das idéias do modelo original OLE [Brockschmidt, 1996]. Os modelos        oferecem suporte a diversos níveis de complexidade de componentes e possibilitam a        integração de aplicações desenvolvidas por diferentes fabricantes. A solução enfoca        componentes binários interoperáveis. Councill & Heineman (2001, p.7) 

     

O CORBA(Common Object Request Broker Architecture) fornece um modelo de        componentes que possibilita a comunicação entre componentes distribuídos. O CORBA utiliza        a IDL (Interface Definition Language) para descrever a interface pública de seus serviços. O        cliente não é dependente da localização do objeto que está sendo invocado, da linguagem que o        mesmo foi programado ou do sistema operacional que está sendo utilizado. Councill &        Heineman (2001, p.7) 

 

Web Services é um padrão para comunicaçãoentre componentes através da web. A        aplicação utiliza os serviços dos componentes através do protocolo SOAP, que encapsula as        chamadas dos serviços e os retornos em pacotes XML. Councill & Heineman (2001, p.7) 

 

JavaBeans é o modelo básico de componentes da Sun, a partir do qual são feitas        diversas extensões. O JavaBeans define como tratar no componente eventos, propriedades,        introspecção, reflexão, customização e empacotamento [Szyperski,1997].Enterprise Java        Beans é o modelo para a interconexão de componentes remotos em aplicações corporativas.      

2. Framework

 

2.1. Definição

 

Conforme a complexidade do sistema aumenta, começam a surgir dificuldades para o        gerenciamento de todos os arquivos e objetos envolvidos. Faz­se necessário o uso de soluções        semi­prontas, como frameworks, para agilizar e tornar mais rápido o desenvolvimento de        projetos. 

 

Os frameworks são soluções que, na maioria dos casos, seguem padrões de projeto        bem definidos. Tais padrões permitem que sejam reutilizadas soluções para problemas que        outros desenvolvedores já enfrentaram (FIORINI, 2001). 

(5)

 

Segundo, Alexandre Leite (Leite, 2014), framework é uma técnica da Orientação a        Objetos, voltada para a reutilização que se beneficia de três características das linguagens de        programação orientada a objetos: abstração, polimorfismo e herança. 

 

Um framework descreve a arquitetura de um sistema orientado a objetos, os tipos de        objetos e as interações entre os mesmos. Ele pode ser vislumbrado como o esqueleto –        template – de uma aplicação que pode ser customizado pelo programador e aplicado a um        conjunto de aplicações de um mesmo domínio. Com frameworks não se busca apenas        reutilizar simples componentes de software, mas subsistemas, aumentando assim o grau de        reutilização e contribuindo para uma melhor qualidade do produto – software  (Leite, 2014) . 

 

Para (Johnson, 1997), a visão original de reutilização de software estava baseada em        componentes. Os frameworks possuem interfaces mais complexas, mas são de mais fácil        customização de que os componentes. O autor percebe frameworks e componentes como        técnicas diferentes, mas que cooperam entre si, pois um framework pode facilitar a construção        de novos componentes e fornecer uma interface padrão para os mesmos trocarem dados,        manipularem erros e chamarem operações. 

 

Segundo (Fayad, 1999), a utilização de frameworks apresenta os seguintes benefícios:  I.  Melhora a modularização – encapsulamento dos detalhes voláteis de        implementação através de interfaces estáveis. 

II.  Aumenta a reutilização – definição de componentes genéricos que podem ser        replicados para criar novos sistemas. 

III.  Extensibilidade – favorecida pelo uso de métodos hooks que permitem que as        aplicações estendam interfaces estáveis. 

IV.  Inversão de controle – IoC – o código do desenvolvedor é chamado pelo código        do framework. Dessa forma, o framework controla a estrutura e o fluxo de execução dos        programas.  

 

2.2. Classificação

 

Os frameworks podem ser classificados em caixa­branca e caixa­preta (Fayad 97) . Os        frameworks caixa­branca baseiam­se nos mecanismos de herança e ligação dinâmica        (dynamic binding) presentes em orientação a objetos. Os recursos existentes em um        framework caixa­branca são reutilizados e estendidos a partir de: herança de classes do        framework e sobrecarga (overriding) de métodos "hook" pré­definidos. Métodos "hook" são        definidos em interfaces ou classes abstratas e devem necessariamente ser implementados por        uma aplicação. Um exemplo de método hook na linguagem Java é o actionPerformed(Action        Event e) pertencente à interface ActionListener do framework AWT (Abstract Window Toolkit).            Este método é chamado sempre que ocorre um evento ActionEvent correspondendo, por       

(6)

exemplo, a um clique de botão. Os padrões de projeto (design patterns) utilizados são o                Command, o Observer e o Template Method [Gamma 94]. 

 

Frameworks caixa­preta são baseados em componentes de software. A extensão da        arquitetura é feita a partir de interfaces definidas para componentes. Os recursos existentes        são reutilizados e estendidos por meio de: definição de um componente adequado a uma        interface específica e integração de componentes em um framework que utiliza padrões de        projeto como o Strategy (Gamma 94). 

 

Quanto ao contexto de utilização do framework há uma classificação proposta em        (Fayad 97), segundo a qual os frameworks são classificados em: "Framework de Infraestrutura        de Sistema", "Framework de Integração de Middleware" e "Framework de Aplicação". 

Frameworks de infraestrutura de sistema tratam de questões de projeto como sistemas        operacionais, comunicação, interfaces gráficas e linguagens de programação. O framework        AWT seria classificado como um framework de infraestrutura de sistema. 

 

Frameworks de integração de middleware são responsáveis por integrar aplicações        distribuídas e componentes em uma mesma arquitetura. Exemplos de frameworks de        middleware são os ORB (Object Request Broker) como o CORBA ­ Common ORB                      Architecture, e o RMI ­ Remote Method Invocation. 

 

Frameworks de aplicação tratam de questões de projeto de domínios de aplicação,        como telecomunicações, finanças, produção e educação.      

2.3. Pontos de Variação

 

2.3.1. Frozen spots

 

Frozen spots são as partes fixas de um framework, também conhecidos como hook        points. São serviços já implementados pelo framework. Normalmente realizam chamadas        indiretas aos hotspots  (Leite, 2014). 

 

Os frozen spots não foram projetados para adaptação e em um projeto podem ser        encontrados sendo as classes concretas e as que seguem alguns padrões de projeto        propostos por Gamma, como o método template entre outros. Os frozen­spots definem a        arquitetura geral de um sistema, ou seja, seus componentes básicos e os relacionamentos        entre eles. 

(7)

2.3.2. Hot spots

 

Hotspots são as partes flexíveis de um framework. São pontos extensíveis, necessitam        de complementação por funcionalidades/serviços que devem ser implementados. (Leite, 2014). 

 

Segundo Alexandre Leite, Hotspots são partes nos quais os programadores que usam o            framework adicionam o seu código para especificar uma funcionalidade de sua aplicação. São        invocados pelo framework classes (implementadas pelo programador da aplicação) recebem        mensagens de uma classe do framework (frozenspot). Isso geralmente é implementado        através de herança e de métodos abstratos; (Leite, 2014) 

 

Os pontos de extensão caixa branca são formados por classes incompletas.Ou seja, as        classes apresentam apenas a assinatura de seus métodos e precisam que esses métodos        sejam implementados na herança. 

   

Nos pontos de extensão caixa preta, as instanciações são feitas por componentes        adaptados, e não por herança. Os componentes fazem ligações com as demais partes do        framework. Esse ponto de extensão pode ser considerado um conjunto de classes concretas        com uma funcionalidade definida e baixo acoplamento em relação aos outros pontos de        extensão. O ponto de extensão, nesse caso, já está implementado e, assim, não precisa que        sejam feitas adições às suas definições. 

 

3. Sobre o ZeroMQ

 

0mq é um sistema de mensagens, ou "middleware orientado a mensagem". É usado        em ambientes tão diversos como serviços financeiros, desenvolvimento de jogos, sistemas        embarcados, pesquisa acadêmica e na área aeroespacial. 

Sistemas de mensagens funcionam basicamente como mensagens instantâneas para        aplicações. Uma aplicação decide comunicar um evento para outro aplicativo (ou múltiplas        aplicações), ele reúne os dados a serem enviados, clicar no botão "enviar" e lá vamos nós, o        sistema de mensagens cuida do resto. 

Ao contrário de mensagens instantâneas, porém, sistemas de mensagens não têm GUI.        0mq foi originalmente concebido como um sistema de mensagens ultra­rápido para a        negociação de ações e por isso o foco foi a otimização extrema. O primeiro ano do projeto foi        gasto elaboração de metodologia de benchmarking para tentar definir uma arquitetura que fosse        o mais eficiente possível. 

(8)

3.1 Classificação do framework

 

3.1.1 Classificação quanto ao contexto

 

O ZeroMQ é um framework de integração de middleware, pois busca prover a troca                      de mensagens entre componentes de uma determinada aplicação. 

 

3.1.2 Classificação caixa preta/caixa branca

 

O ZeroMQ é um framework caixa preta, pois o processo de instanciação do framework        se apoia em relações de composição entre classes concretas. As relações de composição        ficam claras no diagrama de classes abaixo. O que faz com que seus hot spots tenham o perfil        de variação caixa preta, pois não se apoiam em herança e sobreescrita de métodos. Para usar        o framework basta usar as funcionalidades já prontas, não precisando implementar métodos        incompletos. Essa característica torna o framework mais fácil de ser usado em relação a um        framework caixa branca, pois não são necessários conhecer detalhes da arquitetura para o uso        do framework. 

   

(9)

4. Modelo de Estrutura do Framework

 

4.1 Diagrama de Classes

    Imagem 1­  Diagrama de Classes do zeroMQ     

4.2 Pontos de Variação

 

A partir do diagrama de Classes é possível identificar os pontos de extensão. 

 

4.2.1 Critérios para FrozenSpot

 

● Ser Classe Mãe (super classe) de alguém.  ● Ser Interface ou Classe Abstrata de alguém. 

(10)

● Ser Composto em uma relação de composição, mas não ser componente de um        composto. 

4.2.2 Critérios para HotSpot

  ● Ser subclasse de alguém (relações de herança).  ● Ser subclasse de uma classe abstrata (relação de herança).  ● Implementar uma interface (relação de dependência).  ● Ser componente em uma relação de composição.   

Podem ser identificadas as seguintes classes como hotspots/frozenspots de acordo com a        tabela 1. 

   

Classes  HotSpot  FrozenSpot  É componente  Perfil de  Variação   object_t    X  não  ­  i_poll_events    X  não  ­  array_item_t    X  não  ­  i_writer_events    X  não   ­  i_reader_events    X  não  ­ 

socket_base_t  X    sim  caixa preta 

session_t  X    não  caixa preta 

i_inout    X  não  ­ 

own_t  X    sim  caixa preta 

io_object_t  X    sim  caixa preta 

i_engine_t    X    ­ 

pooller_base_t  X    sim  ­ 

reader_t  X    sim  caixa preta 

(11)

decoder_base_t    X  não  ­ 

decoder_t  X    não  caixa preta 

io_thread_t  X    sim  caixa preta 

pgm_receiver_t  X    sim  caixa preta 

zmq_init_t  X    sim  caixa preta 

x_rep_t  X    sim  caixa preta 

pair_t  X    sim  caixa preta 

x_pub_t  X    sim  caixa preta 

x_sub_t  X    sim  caixa preta 

transient_session_t  X    sim   caixa preta 

connect_session_t  X    sim  caixa preta 

named_session_t  X    sim  caixa preta 

swap_t    X  não   ­  ypipe_t    X  não  ­  signaler_t    X  não  ­ 

y_queue_t 

X      caixa preta    Tabela 1: Classificação de pontos de Variação para algumas classes do ZeroMQ    

4.3 Classes Principais

 

A tabela 2 evidencia as classes principais do framework zeromq e suas funcionalidades.    Classe  Função 

ctx.cpp  A lista de soquetes que foram fechados, mas ainda perduram na        memória por causa de mensagens não enviadas é realizada por esta        classe. 

(12)

own.cpp  Está ligada ao object, é responsável por controlar a comunicação entre        os  processos . 

command.hpp   Ele define todos os comandos disponíveis. 

mailbox.cpp  É uma fila para armazenar os comandos enviados a qualquer objeto que        vivem nessa thread. 

socket_base.cpp  É usado para a comunicação com o usuário. 

decoder_t.cpp  É responsável por tratar a decodificação das mensagens. 

req_t.cpp  É responsável pelas requisições que ocorrem durante as trocas de        mensagem.  signaler_t.cpp   Faz o controle de sinais na comunicação entre os processos.  Tabela 2: classes principais do framework zeromq e suas funcionalidades 

4.4 Detalhamento de classes

 

 

 

(13)

 

 

 

 

 

 

 

5. Evidências de Hot Spots no protótipo

 

No protótipo desenvolvido pelo grupo, alguns métodos foram utilizados para que a        comunicação entre o cliente e o servidor fosse realizada. Esses métodos são apresentados na        tabela a seguir, nela também é evidenciado qual hot spot é exercitado ao se utilizar tal método.        A tabela 3 revela o método do zeromq utilizado e o hot spot exercitado.      Método do 0MQ usado  Hot Spot exercitado  zmq_socket()  socket_base_t.cpp  zmq_ctx_new ()  zmq.cpp 

(14)

ZMQ_REQ()  req_t.cpp , socket_base_t.cpp  zmq_connect()  zmq_connecter_t.cpp  zmq_recv()  zmq.cpp  zmq_close()  socket_base_t.cpp, zmq.cpp  zmq_bind()  zmq.cpp  zmq_ctx_destroy()  zmq.cpp  Tabela 3: método e hot spot exercitado.   

 

 

 

(15)

6. Referências Bibliográficas

   

Councill, B. & Heineman, G.T. (2001) Definition of a Software Component and Its Elements, in:        Component­Based Software Engineering: Putting the Pieces      Together, Hineman, G.T. &        Councill, W.T. (eds), Addison­Wesley, ISBN 0­201­70485­4. 

  

Krueger, C.W. (1992) Software Reuse, ACM Computing Surveys, Volume 4 Issue 2 p131­183.    

Weinreich, R. & Sametinger, J. (2001) Component Models and Component Services: Concepts        and Principles, in: Component­Based Software Engineering: Putting the Pieces Together,        Hineman, G.T. & Councill, W.T. (eds), Addison­Wesley, ISBN 0­201­70485­4. 

  

Szyperski,  C.  (1997)  Component Software: Beyond Object­Oriented Programming,          Addison­Wesley, ISBN 0­201­17888­5 

  

D’Souza, D.F. & Wills, A.C. (1998) Objects, Components and Frameworks with UML: The        Catalysis Approach. Addison Wesley, ISBN 0­201­31012­0, 1998. 

     

Brockschmidt, K. (1996) What OLE Is Really About, MSDN Archive, Microsoft Comporation.        msdn.microsoft.com/archive/en­ 

us/dnarolegen/html/msdn_aboutole.asp   

LEITE,  Alessandro  F.  Padrões  de  projetos.  Disponível  on­line  –  http://www.devmedia.com.br/frameworks­e­padroes­de­projeto/1111 ­ última visita em 21 Junho        de 2014. 

 

FIORINI, S. T. Arquitetura para Reutilização de Processos de Software. 2001. Pontifícia                        Universidade Católica do Rio de Janeiro, Rio de Janeiro. 

 

FAYAD, Mohamed; SCMIDT, Douglas; JOHNSON, Ralph. Building Applications Frameworks.              John Willey, 1999. 

 

JOHNSON, Ralph E. Frameworks = (Components + Patterns). Communications of the                      ACM, Vol. 40. No 10, Outubro 1997, p. 39 – 42.           

Referências

Documentos relacionados

A prescrição antibiótica em odontopediatria deve ser cautelosa e pontual, pois exige do profissional conhecimento sobre os protocolos adequados para a administração medicamentosa,

Estas "Notes" são instrumentos que tiveram apenas como objectivo constituir, respectivamente uma conta de reserva de liquidez e de reserva para algumas despesas

Tendo como pressupostos teóricos a teoria dialógica do discurso (Bakhtin, 2003, 2004), complementada pelas considerações da Clínica da Fonoaudiologia na primeira infância,

• Iniciar a abertura política (devolução do poder aos civis) • Manter as taxas elevadas de crescimento econômico2. O

Fonte: Foster el al.. PROTEÇÃO DAS ÁGUAS SUBTERRÂNEAS CONTROLE DA POLUIÇÃO: VULNERABILIDADE. Fonte: Foster el al.. 4) Mapear o uso e ocupação do solo e estabelecer as

tratamentos: A) folhas adultas e jovens de plantas supridas com soluções nutritivas completa, com omissão de nitrogênio e testemunha; B) aspecto das raízes

Usada para parabenizar um casal que você conhece bem por um noivado recente e perguntar quando será o casamento!. Cumprimentos

A quantidade de precipitados é visualmente maior na amostra B, pelos mesmos motivos relatados previamente. O acabamento superficial das amostras é similar, um