luar-x: extensão e generalização do sistema de ... · padrões de projetos, linguagens de...

68
UNIVERSIDADE DO RIO GRANDE DO NORTE FEDERAL UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE CENTRO DE TECNOLOGIA PROGRAMA DE PÓS-GRADUAÇÃO EM ENGENHARIA ELÉTRICA E DE COMPUTAÇÃO Luar-X: Extensão e Generalização do Sistema de Processamento de Modelos Luar Diogo Henrique Duarte Bezerra Orientador: Prof. Dr. Aquiles Medeiros Filgueira Burlamaqui Tese de Doutorado apresentada ao Pro- grama de Pós-Graduação em Engenharia Elétrica e de Computação da UFRN (área de concentração: Engenharia de Computação) como parte dos requisitos para obtenção do título de Doutor em Ciências. Número de ordem do PPgEEC: D168 Natal, RN, Maio de 2016

Upload: dinhcong

Post on 12-Dec-2018

213 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Luar-X: Extensão e Generalização do Sistema de ... · padrões de projetos, linguagens de domínio específico, frameworks e arquiteturas de sis- temas com o objetivo de produzir

UNIVERSIDADE DO RIO GRANDE DO NORTEFEDERAL

UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE

CENTRO DE TECNOLOGIA

PROGRAMA DE PÓS-GRADUAÇÃO EM ENGENHARIA ELÉTRICA E

DE COMPUTAÇÃO

Luar-X: Extensão e Generalização do Sistemade Processamento de Modelos Luar

Diogo Henrique Duarte Bezerra

Orientador: Prof. Dr. Aquiles Medeiros Filgueira Burlamaqui

Tese de Doutorado apresentada ao Pro-grama de Pós-Graduação em EngenhariaElétrica e de Computação da UFRN (área deconcentração: Engenharia de Computação)como parte dos requisitos para obtenção dotítulo de Doutor em Ciências.

Número de ordem do PPgEEC: D168Natal, RN, Maio de 2016

Page 2: Luar-X: Extensão e Generalização do Sistema de ... · padrões de projetos, linguagens de domínio específico, frameworks e arquiteturas de sis- temas com o objetivo de produzir

Catalogação da Publicação na Fonte

Universidade Federal do Rio Grande do Norte - Sistema de Bibliotecas BibliotecaCentral Zila Mamede / Setor de Informação e Referência

Bezerra, Diogo Henrique Duarte.Luar-X: Extensão e Generalização do Sistema de Processamento de Modelos

Luar / Diogo Henrique Duarte Bezerra - Natal, RN, 201653f: il.

Orientador: Prof. Dr. Aquiles Medeiros Filgueira Burlamaqui.

Tese (doutorado) - Universidade Federal do Rio Grande do Norte. Centro deTecnologia. Programa de Pós-Graduação em Engenharia Elétrica e de Compu-tação.

1. Sistema Luar-X - Tese. 2. Processador de Modelos Luar - Tese. 3. Lingua-gem XML - Tese. 4. Reúso - Tese. 5. Template - Tese. 6. Autoria Hipermídia -Tese. I. Burlamaqui, Aquiles Medeiros Filgueira. II. Título.

RN/UF/BCZM CDU 004.423.25

Page 3: Luar-X: Extensão e Generalização do Sistema de ... · padrões de projetos, linguagens de domínio específico, frameworks e arquiteturas de sis- temas com o objetivo de produzir

Luar-X: Extensão e Generalização do Sistemade Processamento de Modelos Luar

Diogo Henrique Duarte Bezerra

Tese de Doutorado aprovada em 30 de Maio de 2016 pela banca examinadora compostapelos seguintes membros:

Page 4: Luar-X: Extensão e Generalização do Sistema de ... · padrões de projetos, linguagens de domínio específico, frameworks e arquiteturas de sis- temas com o objetivo de produzir

Agradecimentos

O meu sentimento de gratidão por esta tese, fruto de um trabalho de quatro anos, é pri-meiramente dedicado ao Deus criador de tudo que há. Seus projetos e engenharias nosfascinam cada vez mais que nos aprofundamos na busca por entendê-los. Este trabalhorepresenta o entendimento de um ponto em uma área de estudo dentre tantas outras quepermeiam o projeto do nosso universo.

Aos meus pais, Altamir e Regineide, agradeço pela educação que me deram, pelo cidadãoque sou e por participarem, tendo grande contribuição, neste projeto de vinte sete anose meio de estudo formal. A tese representa a conclusão deste projeto, juntamente com orecebimento do mais elevado grau acadêmico dos sistemas de ensino superior do país.

Ao prof. Aquiles, são nove anos de parceria. Ele foi o responsável por me guiar e inserirno mundo acadêmico, graduação, mestrado e doutorado. Sou muito agradecido pela opor-tunidade de ter obtido sua orientação em todos momentos até aqui. Por ter acreditado emmim quando no segundo período da graduação, me convidou para participar do projetoTV Mímica e em seguida nos projetos GTMV, GTRM, Luar e Suíte de Testes Ginga. Pe-las indicações de estágio na HXD e mestrado no Lavid/UFPB. Por toda paciência e apoioneste período de doutoramento.

Aos meus irmãos, Diego e Thiago, pelo apoio e companheirismo durante este período detrabalho e doutoramento, em especial a Diego pelo auxílio nas traduções dos artigos.

A minha namorada, Danielle, pelo carinho e paciência durante a fase final do doutora-mento.

Ao prof. Guido Lemos, pelo conselho de fazer o doutoramento na UFRN ao invés daUNICAMP.

Ao prof. Luiz Marcos, por ter me aceitado no PPGEEC como seu orientando no iníciodo doutoramento, pela liderança e permissão de uso dos equipamentos do laboratórioNatalNet.

Ao Rostand, pelo apoio e parceria no projeto OddCI no início do doutoramento.

Aos profs. Artur, Ana e Gustavo, pela parceria, orientações e horas de dedicação ao meensinar sobre magnetismo no projeto de estruturas de anéis para memórias magnéticas.

Aos colegas do Grupo de Magnetismo e Materias Magnéticos, do DFTE, pelo companhei-

Page 5: Luar-X: Extensão e Generalização do Sistema de ... · padrões de projetos, linguagens de domínio específico, frameworks e arquiteturas de sis- temas com o objetivo de produzir

rismo e em especial a Rafaela e o Silas pelos momentos que trabalhamos juntos, muitashoras de simulações e análises.

Aos colegas do laboratório TEAM, pelos momentos, em especial ao Daniel e Sebastiãopelas muitas conversas sobre tudo.

Aos colegas do laboratório NatalNet, pelos anos que passamos juntos, em especial aoBruno, Renato, Justo, Sarah, Érika e Bianor pela companhia durante este período de dou-toramento.

A CAPES, pelas bolsas de estudo que recebi durante a maior parte do doutoramento.

Ao Instituto de Engenharia da UFMT, pelo período de afastamento das atividades conce-didas durante seis meses.

Aos demais, que contribuíram direta ou indiretamente para a conclusão deste trabalho.

Page 6: Luar-X: Extensão e Generalização do Sistema de ... · padrões de projetos, linguagens de domínio específico, frameworks e arquiteturas de sis- temas com o objetivo de produzir

“O fracasso é a oportunidade de co-meçar de novo com mais inteligênciae redobrada vontade.”

(Henry Ford)

Page 7: Luar-X: Extensão e Generalização do Sistema de ... · padrões de projetos, linguagens de domínio específico, frameworks e arquiteturas de sis- temas com o objetivo de produzir

Resumo

O sistema de processamento de modelos Luar, utilizado na autoria de documentosNCL, possui conceitos de desenvolvimento baseados no reúso de descrições por meio demodelos de documentos. Esses conceitos de desenvolvimento podem ser utilizados naautoria de outros documentos baseados em XML por meio da análise, adequação, projetoe criação de uma nova infraestrutura de reúso baseada no sistema Luar. Esta tese apre-senta o sistema de processamento de modelos Luar-X, uma generalização e extensão dosistema de modelos Luar. O Luar-X mantém os conceitos de desenvolvimento do sistemaLuar e modifica, adequa e estende a arquitetura do sistema Luar para permitir o desen-volvimento com linguagens baseadas em XML. Os estudos de caso com as linguagensHTML, SVG e NCL mostram a viabilidade dessa nova infraestrutura de reúso que tornao desenvolvimento de aplicações e a descrição de documentos XML ágil.

Palavras-chave: Luar-X, Processador de Modelos Luar, Autoria Hipermídia, XML,Reúso, Template.

Page 8: Luar-X: Extensão e Generalização do Sistema de ... · padrões de projetos, linguagens de domínio específico, frameworks e arquiteturas de sis- temas com o objetivo de produzir

Abstract

The Luar template processing system used in authoring NCL documents, has deve-lopment concepts based on reuse of descriptions through document templates. Thesedevelopment concepts can be used in the authorship of other XML-based documents th-rough the analysis, adequacy, design and creation of a new reuse infrastructure based onLuar system. This view shows the processing system of models Luar-X, a generalizationand extension Luar model system. The Luar-X keeps the concepts of development of Luarsystem and he changes, adapts and extends the Luar system architecture to enable deve-lopment with XML-based languages. The case studies with HTML, SVG and NCL showthe feasibility of this new reuse infrastructure, which makes application development anddescription of agile XML documents.

Keywords: Luar-X, Luar Template Engine, Hipermedia Authoring, XML, Reuse,Template.

Page 9: Luar-X: Extensão e Generalização do Sistema de ... · padrões de projetos, linguagens de domínio específico, frameworks e arquiteturas de sis- temas com o objetivo de produzir

Sumário

Sumário i

Lista de Figuras iii

Lista de Tabelas iv

Lista de Códigos v

Lista de Símbolos e Abreviaturas vi

1 Introdução 11.1 Motivação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.2 Contribuições . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.3 Organização da Tese . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

2 Fundamentação Teórica 52.1 Sistemas de Processamento de Modelos . . . . . . . . . . . . . . . . . . 5

2.1.1 Modelos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.1.2 Modelo de Dados . . . . . . . . . . . . . . . . . . . . . . . . . . 72.1.3 Processador de Modelos . . . . . . . . . . . . . . . . . . . . . . 72.1.4 Tipos de Sistemas de Modelos . . . . . . . . . . . . . . . . . . . 7

2.2 Sistema de Processamento de Modelos Luar . . . . . . . . . . . . . . . . 82.2.1 Arquitetura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82.2.2 Linguagem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92.2.3 Autoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102.2.4 Biblioteca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

3 Trabalhos Relacionados 153.0.1 eXtensible Stylesheet Language for Transformation . . . . . . . . 153.0.2 Template Attribute Language . . . . . . . . . . . . . . . . . . . . 153.0.3 Python XML Template Language . . . . . . . . . . . . . . . . . 16

i

Page 10: Luar-X: Extensão e Generalização do Sistema de ... · padrões de projetos, linguagens de domínio específico, frameworks e arquiteturas de sis- temas com o objetivo de produzir

3.0.4 XTemplate 3.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . 163.0.5 Template Authoring Language . . . . . . . . . . . . . . . . . . . 173.0.6 Sistema de Processamento de Modelos Luar . . . . . . . . . . . . 173.0.7 Proposta Luar-X . . . . . . . . . . . . . . . . . . . . . . . . . . 18

4 Sistema de Processamento de Modelos Luar-X 194.1 Kernel Luar-X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214.2 Linguagem Luar-X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224.3 Processamento de Modelos em Lote . . . . . . . . . . . . . . . . . . . . 244.4 Plugins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254.5 Portal Luar-X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

5 Resultados 285.1 Estudos de Caso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

5.1.1 XHTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285.1.2 SVG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335.1.3 NCL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345.1.4 Aplicações Diversas . . . . . . . . . . . . . . . . . . . . . . . . 35

6 Conclusões 376.1 Principais Contribuições . . . . . . . . . . . . . . . . . . . . . . . . . . 376.2 Trabalhos Futuros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

Referências bibliográficas 40

A Informações Adicionais 44

B XML - eXtensible Markup Language 49B.0.1 Objetivos principais da linguagem . . . . . . . . . . . . . . . . . 50B.0.2 Características da linguagem . . . . . . . . . . . . . . . . . . . . 50

Page 11: Luar-X: Extensão e Generalização do Sistema de ... · padrões de projetos, linguagens de domínio específico, frameworks e arquiteturas de sis- temas com o objetivo de produzir

Lista de Figuras

2.1 Elementos básicos e fluxo do sistema de processamento de modelos [Bezerra2012] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

2.2 Elementos básicos e fluxo do sistema de processamento de modelos Luar[Bezerra 2012] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

2.3 Elementos básicos e fluxo do Kernel Luar [Bezerra 2012] . . . . . . . . . 92.4 Informações do modelo SlideShow no GingaCDN [Bezerra 2012] . . . . 14

4.1 Elementos básicos e fluxo do sistema Luar-X . . . . . . . . . . . . . . . 204.2 Elementos básicos e fluxo do sistema Luar-X . . . . . . . . . . . . . . . 214.3 Portal Luar-X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

5.1 Imagem de uma página XHTML com uma tabela simples . . . . . . . . . 295.2 Imagem de uma página XHTML . . . . . . . . . . . . . . . . . . . . . . 315.3 Cartão de visita hipotético Luar-X . . . . . . . . . . . . . . . . . . . . . 34

iii

Page 12: Luar-X: Extensão e Generalização do Sistema de ... · padrões de projetos, linguagens de domínio específico, frameworks e arquiteturas de sis- temas com o objetivo de produzir

Lista de Tabelas

3.1 Comparação entre os sistemas . . . . . . . . . . . . . . . . . . . . . . . 18

iv

Page 13: Luar-X: Extensão e Generalização do Sistema de ... · padrões de projetos, linguagens de domínio específico, frameworks e arquiteturas de sis- temas com o objetivo de produzir

Lista de Códigos

2.1 Exemplo de código Luar [Bezerra 2012] . . . . . . . . . . . . . . . . . . 102.2 Exemplo de código Luar para geração de estruturas NCL semelhantes

[Bezerra 2012] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112.3 Descrições de um modelo e seu atributo [Bezerra 2012] . . . . . . . . . . 122.4 Instanciação do modelo SlideShow [Bezerra 2012] . . . . . . . . . . . . 122.5 Trecho de código utilizando modelos componentes [Bezerra 2012] . . . . 134.1 Exemplo de código Luar-X . . . . . . . . . . . . . . . . . . . . . . . . . 224.2 Exemplo de definição de um modelo Luar-X . . . . . . . . . . . . . . . . 234.3 Exemplo de definição do código de geração de um modelo Luar-X . . . . 234.4 Código de utilização do modelo componente TableXHTML . . . . . . . . 244.5 Arquivo de configuração . . . . . . . . . . . . . . . . . . . . . . . . . . 244.6 Exemplo de modelo Luar-X de cabeçalho XHTML . . . . . . . . . . . . 254.7 Exemplo de documento Luar-X utilizando modelo . . . . . . . . . . . . . 254.8 Exemplo do uso de um plugin no Luar-X . . . . . . . . . . . . . . . . . . 265.1 Código de uma tabela simples em XHTML . . . . . . . . . . . . . . . . 295.2 Código de utilização do modelo componente LTableXHTML . . . . . . . 305.3 Código de utilização do modelo componente LPersonalWebPageXHTML 325.4 Código de utilização do modelo LLuarCardSVG . . . . . . . . . . . . . 345.5 Exemplo de autoria com a NCL e plugin JavaScript . . . . . . . . . . . . 35A.1 Descrição gerada pelo modelo completo LPersonalWebPageXHTML . . 44A.2 Descrição gerada pelo modelo completo LSlideShowNCL-luarx-js . . . . 46B.1 Exemplo de documento XML . . . . . . . . . . . . . . . . . . . . . . . 52

v

Page 14: Luar-X: Extensão e Generalização do Sistema de ... · padrões de projetos, linguagens de domínio específico, frameworks e arquiteturas de sis- temas com o objetivo de produzir

Lista de Símbolos e Abreviaturas

ADLs: Architecture Description Languages

AJAX: Asynchronous Javascript and XML

Art TVDI: Arcabouço Tecnológico para Desenvolvimento Ágil e Reutilização de Apli-cações para TVDI com suporte a Serviços Web

CTIC: Coordenadoria de Tecnologia da Informação e Comunicação

GingaCDN: Ginga Code Development Network

HTML: HyperText Markup Language

IBM: International Business Machines

IPTV: Internet Protocol Television

ISDB-TB: Integrated Services Digital Broadcasting, Terrestrial, Brazilian version

ITU-T: ITU Telecommunication Standardization Sector

ITU: International Telegraph Union

MathML: Mathematical Markup Language

NCL: Nested Context Language

NCM: Nested Context Model

PXTL: Python XML Template Language

RDF: Resource Description Framework

RDF: Resource Description Framework

RNP: Rede Nacional de Pesquisa

SDMX: Statistical Data and Metadata eXchange

vi

Page 15: Luar-X: Extensão e Generalização do Sistema de ... · padrões de projetos, linguagens de domínio específico, frameworks e arquiteturas de sis- temas com o objetivo de produzir

SGML: Standard Generalized Markup Language

SMIL: Synchronized Multimedia Integration Language

SPARQL: SPARQL Protocol and RDF Query Language

STTL: SPARQL Template Transformation Language

SVG: Scalable Vector Graphics

TAL: Template Attribute Language

TAL: Template Authoring Language

TemPSS: Templates and Profiles for Scientific Software

TVDI: Televisão Digital Interativa

W3C: World Wide Web Consortium

XBRL: eXtensible Business Reporting Language

XHTML: eXtensible HyperText Markup Language

XML: eXtensible Markup Language

XPath: XML Path Language

XQuery: XML Query

XSIL: Extensible Scientific Interchange Language

XSL: eXtensible Stylesheet Language

XSLT: eXtensible Stylesheet Language for Transformations

Page 16: Luar-X: Extensão e Generalização do Sistema de ... · padrões de projetos, linguagens de domínio específico, frameworks e arquiteturas de sis- temas com o objetivo de produzir

Capítulo 1

Introdução

Atualmente, a tecnologia vem se tornando cada vez mais acessível globalmente e osseus usuários passaram de consumidores à produtores de informações, assumindo umpapel ativo na era da informação.

A manipulação e o acesso à informação é tratada em grande parte por meio de softwa-

res que estão presentes no cotidiano da sociedade. Esses softwares possuem um desenvol-vimento complexo e demandam tempo e trabalho dos programadores, portanto resultamem um custo elevado para a sua criação.

Reconhecendo a complexidade de desenvolvimento dos softwares, os pesquisadorese a indústria buscam novos modelos de desenvolvimento, paradigmas de programação,padrões de projetos, linguagens de domínio específico, frameworks e arquiteturas de sis-temas com o objetivo de produzir mais em um menor tempo e com o menor custo.

O sistema de processamento de modelos Luar [Bezerra et al. 2012] é um exemplo doresultado dessa busca por novos conhecimentos para o desenvolvimento ágil de softwares.Esse sistema foi projetado para a descrição de aplicações em NCL (Nested Context Lan-

guage) [Soares Neto et al. 2010], a linguagem declarativa do Middleware Ginga[LAVID& Telemidia n.d.] para o ISDB-TB (Integrated Services Digital Broadcasting, Terrestrial,

Brazilian version) [SBTVD n.d.]. O Luar baseia-se em técnicas de reúso a partir de mo-delos de documentos para diminuir a carga de codificação do programador e tornar ágil oprocesso de desenvolvimento.

O Luar é eficaz e cumpre o objetivo para o qual foi projetado. Assim, há possibilidadede sua arquitetura e seus conceitos serem aproveitados para outros sistemas de modelosem linguagens baseadas em XML (eXtensible Markup Language) [W3C 2008].

Este trabalho amplia e generaliza a utilização do sistema Luar ao criar o Luar-X,um novo sistema de processamento de modelos que mantém os conceitos de autoria dosistema Luar e utiliza uma nova arquitetura capaz de suportar qualquer linguagem baseadaem XML.

Page 17: Luar-X: Extensão e Generalização do Sistema de ... · padrões de projetos, linguagens de domínio específico, frameworks e arquiteturas de sis- temas com o objetivo de produzir

CAPÍTULO 1. INTRODUÇÃO 2

1.1 Motivação

A técnica de reúso baseada em modelos vem sendo utilizada por desenvolvedoresde diferentes tecnologias. No contexto da TVDI (Televisão Digital Interativa), Santos[Santos & Saade 2010], Neto [Neto et al. 2010] e Bezerra [Bezerra et al. 2012] visam apossibilidade de reúso de estruturas de alguns documentos NCL.

Na Web (XHTML - eXtensible Hipertext Markup Language) Vanoirbeek) [Vanoirbeeket al. 2014] também observa o reúso para diferentes tipos de conteúdos, além de sistemasde modelos consolidados como ThymeLeaf [Fernandez 2011], eRuby [Hansson n.d.],Django [Django n.d.], FreeMarker [Foundation 1999] e muitos outros.

Na computação científica Cohen [Cohen et al. 2015] desenvolveu uma nova ferra-menta, TemPSS (Templates and Profiles for Scientific Software), que faz uso de mode-los como técnica de reúso. Ainda existem aplicações para vetoriais descritos em do-cumentos SVG (Scalable Vector Graphics) [W3C 2001] como os projetos Knockout[Sanderson n.d.] e o Nanotemplates [Okunskiy 2015].

Em RDF (Resource Description Framework), Corby [Corby & Faron-Zucker 2015]criou a STTL (SPARQL Template Transformation Language). Na mesma finalidade e deforma universal, para qualquer documento XML, temos a XSLT (XSL for Transformati-

ons) [W3C 1999b], parte da XSL (eXtensible Stylesheet Language), recomendada pelaW3C (World Wide Web Consortium) [W3C 2004].

Nesse contexto, observamos que existem diversos sistemas de processamento de mo-delos para linguagens baseadas em XML. Esses sistemas possuem características dife-rentes de acordo com as suas especificidades e conceitos. O projeto Luar-X foi motivadopela criação de uma arquitetura que suportasse as especificidades de diferentes linguagensXML e trouxesse os conceitos abstratos de modelos componentes e modelos completos,idealizados pelo sistema Luar, para o ecossistema de sistemas de processamento de mo-delos XML.

Os modelos componentes e completos são modelos de composição que tecnicamentesão iguais, diferindo em conceitos abstratos e idealizados para auxiliarem as autoriase utilizações de documentos por autores. Os modelos são comumente denominados, noinglês, de Templates. O modelo completo descreve um documento total como uma páginaWeb, uma aplicação para TVDI ou um desenho vetorial. O modelo componente descreveo pedaço de um documento que pode representar, entre outros, um passador de imagens,grupos de botões, tabelas ou consultas de banco de dados. Os modelos componentesprecisam, de acordo com as definições de seus autores, se conectarem entre si ou aodocumento que está sendo descrito para comporem um documento total.

Page 18: Luar-X: Extensão e Generalização do Sistema de ... · padrões de projetos, linguagens de domínio específico, frameworks e arquiteturas de sis- temas com o objetivo de produzir

CAPÍTULO 1. INTRODUÇÃO 3

1.2 Contribuições

A principal contribuição deste trabalho é o sistema de processamento de modelosLuar-X, usado para descrição ágil de documentos XML. Esse sistema foi idealizado apartir do trabalho desta tese que iniciou-se com algumas questões de pesquisa apresenta-das a seguir:

Questões de pesquisa

1. Como fazer uso dos conceitos de modelo componente e modelo completo em siste-mas de modelos para linguagens baseadas em XML aplicado ao desenvolvimentoágil?

2. É possível prover uma infraestrutura de reúso capaz de suportar as especificidadesdas linguagens baseadas em XML e permitir customizações pelo desenvolvedor?

3. A nova infraestrutura de reúso baseada no Luar, mantém ágil a autoria de documen-tos descritos em XML?

As questões de pesquisa permitiram a criação da hipótese descrita a seguir:

Hipótese

É possível utilizar a técnica de desenvolvimento e reúso baseada em modelos por

meio da utilização de modelos implementados pelo sistema Luar para descrição ágil

de documentos XML, tornando-a genérica por meio da análise, adequação, projeto e

implementação de um sistema de processamento de modelos que mantém os conceitos e

estende a sua arquitetura.

Para demonstrar tal hipótese, nesta tese realizamos a análise, a adequação, a criação, oprojeto, a implementação e a validação do sistema de processamento de modelos Luar-X.Esse sistema mantém os conceitos de autoria do Luar e possui uma nova arquitetura.

O novo sistema Luar-X, permite a descrição ágil de documentos XML por meio datécnica de desenvolvimento e reúso baseada em modelos e customizações específicas queo desenvolvedor necessitar.

1.3 Organização da Tese

Esta tese está estruturada da seguinte forma: O Capítulo 2 discute aspectos conceituaisrelevantes ao tema desenvolvido, procurando elucidar definições e conceitos necessários

Page 19: Luar-X: Extensão e Generalização do Sistema de ... · padrões de projetos, linguagens de domínio específico, frameworks e arquiteturas de sis- temas com o objetivo de produzir

CAPÍTULO 1. INTRODUÇÃO 4

ao entendimento do sistema desenvolvido. O Capítulo 3 é um estudo de trabalhos rela-cionados. O Capítulo 4 discute a concepção do sistema Luar-X. O Capítulo 5 apresentae discute os resultados obtidos com a construção do Luar-X. Finalmente, o Capítulo 6apresenta as considerações finais e as perspectivas.

Page 20: Luar-X: Extensão e Generalização do Sistema de ... · padrões de projetos, linguagens de domínio específico, frameworks e arquiteturas de sis- temas com o objetivo de produzir

Capítulo 2

Fundamentação Teórica

Neste capítulo serão apresentados os conceitos necessários para o entendimento dotrabalho desenvolvido e exposto ao longo deste documento de tese. Esses conceitos estãorelacionados aos sistemas de processamento de modelos e o sistema Luar.

2.1 Sistemas de Processamento de Modelos

Os sistemas de processamento de modelos [Manolescu 2006, Fowler 2003], comu-mente conhecidos como template engine, são softwares que combinam um ou mais mo-delos com um modelo de dados e produzem um ou mais documentos como resultados.

Esses sistemas realizam o processamento de texto simples e para tal, geralmente, pos-suem recursos e características como variáveis, funções próprias, substituição de texto,inclusão de arquivo, avaliação condicional e laços. Assim, é comum observar o uso des-ses softwares para formatos de documentos como as páginas Web e códigos fontes.

Atualmente, os processadores de modelos fazem parte de diversos frameworks, lin-guagens de programação e podem ser utilizados como pré-processadores e filtros.

A Figura 2.1 apresenta os elementos básicos e o fluxo dos sistemas de modelos.

Page 21: Luar-X: Extensão e Generalização do Sistema de ... · padrões de projetos, linguagens de domínio específico, frameworks e arquiteturas de sis- temas com o objetivo de produzir

CAPÍTULO 2. FUNDAMENTAÇÃO TEÓRICA 6

Processador deTemplates

Templates

Dados DocumentoResultante

Figura 2.1: Elementos básicos e fluxo do sistema de processamento de modelos [Bezerra2012]

Os elementos básicos de um sistema de processamento de modelos são o modelo dedados, o(s) modelo(s), o processador de modelos, a linguagem de modelo e o(s) docu-mento(s) resultante(s). O fluxo do sistema inicia-se com o preenchimento de um ou maismodelos com os dados que seguem para o processador de modelos e são transformadosem um ou mais documentos resultantes.

O desenvolvimento baseado em modelos apresenta uma grande relevância em situa-ções onde há necessidade de produção em escala, padronização e reúso de documentos. Autilização de modelos permite a separação entre a lógica de negócio e a lógica de apresen-tação, constantemente observada no contexto Web, e as linguagens de modelos permitemuma lógica restrita quando comparada a linguagens de programação. Assim, em equipesde desenvolvimento Web, por exemplo, os sistemas de modelos livram os webmasters dofoco na parte técnica e os permitem focar o trabalho no conteúdo e sua apresentação.

2.1.1 Modelos

Os modelos são documentos incompletos que os desenvolvedores podem completá-los com dados de acordo com o documento final desejado [Parr 2004]. A característicados modelos, de serem incompletos, tornam o desenvolvimento baseado em modelos fle-xível e ágil, pois podem ser reusados e modificados de acordo com a necessidade dodesenvolvedor, além de permiti-lo focar na descrição de partes específicas do documento.

Os modelos são descritos com linguagens de domínio específico, linguagens pré-existentes ou linguagens híbridas, que combinam linguagens pré-existentes e linguagenspróprias [Manolescu 2006, Fowler 2003].

Page 22: Luar-X: Extensão e Generalização do Sistema de ... · padrões de projetos, linguagens de domínio específico, frameworks e arquiteturas de sis- temas com o objetivo de produzir

CAPÍTULO 2. FUNDAMENTAÇÃO TEÓRICA 7

2.1.2 Modelo de Dados

O modelo de dados é o elemento que permite a customização de um documento ge-rado pelo processador de modelos. Os dados são definidos pelo desenvolvedor e permitema customização do modelo, possibilitando o reúso de descrições. Os tipos de dados de-pendem do documento e dos dados manipulados pelo sistema de modelos. O documentoque contém o modelo de dados é pré-formatado, como uma base de dados relacional,um documento XML, uma planilha ou documento com formatação própria, definida pelosistema de modelos [Manolescu 2006, Fowler 2003].

2.1.3 Processador de Modelos

Os processadores de modelos são softwares, ou parte de um software, que combinamo(s) modelo(s) com o modelo de dados e produzem um documento ou parte de um do-cumento, com a descrição desejada, como saída. Esses softwares podem ser escritos emdiferentes linguagens e possuírem diferentes conceitos de desenvolvimento. Os documen-tos resultantes, produzidos pelos processadores de modelos, podem ser de diferentes tiposcomo arquivos de texto, documentos XML, códigos fontes e documentos de descrições[Manolescu 2006, Fowler 2003].

2.1.4 Tipos de Sistemas de Modelos

Os sistemas de modelos são classificados em três tipos, de acordo com a localiza-ção onde a geração dos documentos resultantes são realizadas. Os tipos de sistemas demodelos são: do lado do servidor, do lado cliente, e distribuído.

Os sistemas de modelos do lado do servidor possuem processadores de modelos noservidor que geram os documentos de forma dinâmica para os clientes. Os principaisexemplos são os sistemas dos frameworks e plataformas Web.

Os sistemas de modelos do lado cliente realizam o processamento dos modelos com osoftware localmente, de forma estática ou dinâmica. Esse tipo de sistema, de geração es-tática, é mais utilizado para a autoria e descrição de documentos. Os sistemas de geraçãodinâmica são mais comuns no contexto Web, com a utilização de linguagens de modelospelos navegadores.

Nos sistemas de modelos distribuídos o processamento dos modelos são realizados emmúltiplos servidores. Esse tipo de sistema não é muito utilizado, sendo mais comum noambiente Web. O AJAX (Asynchronous Javascript and XML) [W3C 2005] é um exemplodesse tipo de sistema.

Page 23: Luar-X: Extensão e Generalização do Sistema de ... · padrões de projetos, linguagens de domínio específico, frameworks e arquiteturas de sis- temas com o objetivo de produzir

CAPÍTULO 2. FUNDAMENTAÇÃO TEÓRICA 8

2.2 Sistema de Processamento de Modelos Luar

O Luar é um sistema de processamento de modelos para documentos NCL, criado como objetivo de agilizar o desenvolvimento de aplicativos para o ISDB-TB. Nesta seção éapresentado o Luar, sua arquitetura, sua linguagem e os seus conceitos de autoria.

2.2.1 Arquitetura

A arquitetura do sistema Luar foi concebida para permitir o reuso de descrições emdocumentos NCL e possibilitar o desenvolvimento ágil de aplicações para TVDI. A Fi-gura 2.2 apresenta os elementos básicos e fluxo do sistema.

DocumentoNCL

ModelosLuar

Kernel Luar

Tratador deCommandos

Scripts deFunções

Processadorde

Modelos

DocumentoLuar

+ código Lua

Biblioteca de

Modelos

Figura 2.2: Elementos básicos e fluxo do sistema de processamento de modelos Luar[Bezerra 2012]

O sistema Luar possui os elementos básicos de um sistema de processamento de mo-delos padrão e mais alguns elementos para especificidades da infraestrutura de reúso.

O fluxo do sistema inicia-se com os autores que usam os modelos Luar e preenchemos dados dos modelos em um documento Luar. Os autores, por meio de comandos efunções do sistema, enviam o documento Luar para o processador de modelos, no Kernel,que combina os modelos e os dados descritos nesse documento e produzem como saídaresultante um documento NCL. Os documentos NCL com a inserção de códigos Luatornam-se documentos Luar que podem ser compostos por outros modelos e seguiremnovamente o ciclo do sistema.

Os modelos Luar, por padrão, estão na biblioteca de modelos e são baixados pelo Ker-

nel ao serem solicitados por meio de comandos pelos usuários. Os modelos são acessados

Page 24: Luar-X: Extensão e Generalização do Sistema de ... · padrões de projetos, linguagens de domínio específico, frameworks e arquiteturas de sis- temas com o objetivo de produzir

CAPÍTULO 2. FUNDAMENTAÇÃO TEÓRICA 9

localmente e combinados com os dados descritos no documento Luar na sequência que oprocessador os encontra.

Requesições via comandos

Saída

Scripts

Tratador de Comandos

Processador deModelos

Processador deAplicações

Figura 2.3: Elementos básicos e fluxo do Kernel Luar [Bezerra 2012]

Na Figura 2.3 podemos observar os elementos básicos do Kernel Luar. A interaçãono Kernel inicia-se por meio de requisições, por comandos, enviadas pelos usuários. Oscomandos estão relacionados com scripts de funções que executam tarefas como listarmodelos, listar atributos dos modelos, criar projetos Luar, remover modelos, baixar mo-delos e gerar documentos NCL.

O processador de aplicações é responsável por analisar o documento Luar e gerar asua descrição NCL. Ao encontrar alguma utilização de modelo na descrição, o proces-sador de aplicações envia a descrição para o processador de modelos que o processa edevolve a descrição correspondente ao modelo. O processador de aplicações ao finalizarsua tarefa, envia a descrição NCL resultado para o seu script correspondente, que salva adescrição em um arquivo NCL. Os modelos completos são manipulados diretamente peloprocessador de modelos, sem passar pelo processador de aplicações.

2.2.2 Linguagem

A linguagem do Luar foi idealizada pensando nos desenvolvedores de aplicações parao Ginga-NCL, que possui Lua como a linguagem de script da NCL. Assim, foi projetadoo uso de Lua com NCL por meio de scriptlets, pequenos trechos de código entre as tags

delimitadoras <% %>. O aprendizado do Luar é simples para os autores de documentosNCL, pois conhecem a linguagem Lua e não precisam aprender uma nova sintaxe. Osdesenvolvedores precisam apenas combinar as duas linguagens por meio da tag delimita-dora.

Page 25: Luar-X: Extensão e Generalização do Sistema de ... · padrões de projetos, linguagens de domínio específico, frameworks e arquiteturas de sis- temas com o objetivo de produzir

CAPÍTULO 2. FUNDAMENTAÇÃO TEÓRICA 10

1 </head>

2 </body>

3 <port id="pStart" component="slide1" />

4 <%

5 for i=1, #slides do

6 print(’<media id="slide’..i..’" src="’..slides[i]..’" descriptor="dSlide" />’)

7 end

8 %>

Código 2.1: Exemplo de código Luar [Bezerra 2012]

O Código 2.1 apresenta um exemplo da linguagem Luar. As linhas de um a trêspossuem códigos NCL. Nas linhas quatro e cinco observamos as tags delimitadoras. Aslinhas cinco e seis apresentam a definição de uma iteração indo de um até o tamanho databela slides. Na linha seis está sendo impressa a tag <media/> de forma dinâmica, deacordo com a quantidade de elementos na tabela slides e usando os valores dos elementosda tabela para o atributo src.

2.2.3 Autoria

A autoria fazendo uso do sistema Luar pode ser feita de três formas: autoria semuso de modelos, autoria baseada em modelos completos e autoria utilizando modeloscomponentes.

A autoria sem uso de modelos é realizada quando o autor não têm necessidade deusar modelos, mas possui uma grande quantidade de repetições na descrição NCL que irárealizar. Assim, o autor torna o desenvolvimento ágil ao utilizar a linguagem imperativaLua para gerar dinamicamente as descrições NCL pretendidas.

O Código 2.2 apresenta um exemplo de autoria sem uso de modelos, a geração decinquenta descrições das tags <link/>.

Page 26: Luar-X: Extensão e Generalização do Sistema de ... · padrões de projetos, linguagens de domínio específico, frameworks e arquiteturas de sis- temas com o objetivo de produzir

CAPÍTULO 2. FUNDAMENTAÇÃO TEÓRICA 11

1 <%

2 for i=1, 50 do

3 print( ’<link xconnector="onKeySelectionORStartStop">’ )

4 print( ’<bind component="seletorroda1op’ .. i .. ’" role="onSelection">’ )

5 print( ’<bindParam name="keyCode" value="CURSOR_LEFT"/>’ )

6 print( ’</bind>’ )

7 print( ’<bind component="seletorroda1op’ .. i .. ’" role="stop"/>’ )

8 print( ’<bind component="textoroda1op’ .. i .. ’" role="stop"/>’ )

9 if i > 1 then

10 print( ’<bind component="seletorroda1op’ .. (i-1) .. ’" role="start"/>’ )

11 print( ’<bind component="textoroda1op’ .. (i-1) .. ’" role="start"/>’ )

12 else

13 print( ’<bind component="seletorroda1op51" role="start"/>’ )

14 print( ’<bind component="textoroda1op51" role="start"/>’ )

15 end

16 print( ’</link>’ )

17 end

18 %>

Código 2.2: Exemplo de código Luar para geração de estruturas NCL semelhantes[Bezerra 2012]

Os modelos completos e componentes são conceitos importantes no sistema Luar,[Bezerra 2012] apresenta as seguintes definições:

"Os modelos completos possuem a característica de criar uma aplicação com-pleta apenas com o preenchimento de seus atributos. Ao utilizá-lo o autorganha o reúso de toda aplicação sem se preocupar com detalhes do desenvolvi-mento em NCL. Os modelos componentes se caracterizam por serem códigosindependentes que podem se relacionar com outros e com as descrições NCLpara formarem uma aplicação NCL. O modelo componente também pode geraruma aplicação NCL, mas oferece apenas algumas funcionalidades."

A autoria usando modelos completos ou componentes dependem da criação dos mo-delos e do desenvolvimento baseado em modelos, poucos assumem a complexidade decriar um modelo para que muitos usufruam da simplicidade no uso deste. Assim, o de-senvolvimento baseado em modelos torna-se ágil.

As autorias dos modelos são divididas em duas partes: identificação e codificação. Aidentificação é realizada entre as tags <%! %>, nela é obrigatório atribuir à variável tem-

plate uma descrição do modelo, em seguida as variáveis a serem utilizadas pelos autoresdos modelos deverão ser identificadas. Os dados de identificação são utilizados pelo autorque usará o modelo para entender como descrevê-lo e qual sua finalidade. A codificaçãoé um processo subjetivo e específico do criador do modelo e deverá ser feita entre as tags

<% %>. O Código 2.3 apresenta um exemplo de identificação de modelo.

Page 27: Luar-X: Extensão e Generalização do Sistema de ... · padrões de projetos, linguagens de domínio específico, frameworks e arquiteturas de sis- temas com o objetivo de produzir

CAPÍTULO 2. FUNDAMENTAÇÃO TEÓRICA 12

1 <ncl id="slideshow" xmlns="http://www.ncl.org.br/NCL3.0/EDTVProfile">

2 <%!

3 template="O modelo SlideShow cria um passador de slides..."

4 slides="Este atributo deve ser uma tabela Lua.

5 Nas linhas da tabela devem ser indicadas o caminho das..."

6 %>

Código 2.3: Descrições de um modelo e seu atributo [Bezerra 2012]

A autoria utilizando o modelo completo permite o maior nível de reúso proporcionadopelo sistema Luar. O autor necessita atribuir valores as variáveis descritas na identifica-ção do modelo e definir o modelo que está utilizando com a função includeTemplate. Oscódigos e definições são realizadas entre os scriptlets Luar. O Código 2.4 apresenta umexemplo do uso de um modelo que gera uma aplicação para TVDI do tipo apresentaçãode imagens.

1 <%

2 slides={

3 "image1.png",

4 "image2.png",

5 "image3.png"

6 }

7 includeTemplate("SlideShow")

8 %>

Código 2.4: Instanciação do modelo SlideShow [Bezerra 2012]

Os modelos componentes, apesar de não serem um componente de software, foramcriados baseados nesse conceito da engenharia de software. Os componentes de softwaresão partes de softwares independentes que podem ser reunidos para formarem um sistema[Brown & Short 1997].

Os modelos componentes não geram uma aplicação NCL completa e podem ser utili-zados com a autoria sem a utilização de modelos ao comporem funcionalidades desejadasna aplicação. Esse tipo de modelo pode gerar grupo de botões, formulários, tecladosvirtuais, passadores de imagens e outros.

A criação e o uso dos modelos componentes devem levar em consideração a interaçãoentre os modelos componentes e a descrição realizada pelo autor. Em NCL os modeloscomponentes devem ser tratados como objetos de mídia e terem no mínimo um identi-ficador, a variável id, para que eles possam ser iniciados e encerrados, outras interaçõesdevem ser especificadas na identificação do modelo.

Page 28: Luar-X: Extensão e Generalização do Sistema de ... · padrões de projetos, linguagens de domínio específico, frameworks e arquiteturas de sis- temas com o objetivo de produzir

CAPÍTULO 2. FUNDAMENTAÇÃO TEÓRICA 13

1 <port id="pStart" component="sidebar"/>

2 <%

3 id="sidebar"

4 relative=true

5 leftLS={image="esquerda.png", width=20}

6 rightLS={image="direita.png", width=20}

7 includeComponent("LSidebar")

8 %>

9 <%

10 id="buttonGroup"

11 x=50

12 y=70

13 button={}

14 button.width=80

15 button.height=30

16 button[1] = {selected="but1.png", unselected="uBut1.png", start="opt1"}

17 button[2] = {selected="but2.png", unselected="uBut2.png", start="opt2"}

18 button[3] = {selected="but3.png", unselected="uBut3.png", start="opt3"}

19 includeComponent("LButtonGroup")

20 %>

Código 2.5: Trecho de código utilizando modelos componentes [Bezerra 2012]

O Código 2.5 apresenta os exemplos de utilização de dois componentes, o primeirogera a descrição de barras laterais e o segundo gera a descrição de um grupo de botões. Naprimeira linha observamos a porta que inicia o primeiro objeto de mídia, o identificador domodelo LSidebar, essa linha é um exemplo de como os modelos são tratados como objetosde mídia. As linhas dezesseis, dezessete e dezoito possuem a definição dos botões nomodelo LButtonGroup. O atributo start, em todos os botões, define o objeto de mídia queirá iniciar ao ser selecionado o respectivo botão. A interação dos botões foram definidaspreviamente pelo criador do modelo, um exemplo do cuidado que o criador e o usuáriodo modelo devem ter.

2.2.4 Biblioteca

O sistema Luar utiliza o portal GingaCDN como sua biblioteca. O portal é um serviçoWeb com a função de divulgar e promover as tecnologias relacionadas ao Middleware

Ginga e as aplicações para TVDI.Os modelos Luar são disponibilizados no portal como ferramentas. A comunidade

de desenvolvedores podem ter acesso aos modelos, baixá-los via navegadores ou kernel

e adicioná-los em sua biblioteca local. Os modelos podem ser categorizados, descritos eexemplificados de forma textual, com imagens e por meio de vídeos. Os autores aindapodem qualificar os modelos. A Figura 2.4 apresenta a imagem de um modelo no portalGingaCDN (Ginga Code Development Network).

Page 29: Luar-X: Extensão e Generalização do Sistema de ... · padrões de projetos, linguagens de domínio específico, frameworks e arquiteturas de sis- temas com o objetivo de produzir

CAPÍTULO 2. FUNDAMENTAÇÃO TEÓRICA 14

Figura 2.4: Informações do modelo SlideShow no GingaCDN [Bezerra 2012]

Page 30: Luar-X: Extensão e Generalização do Sistema de ... · padrões de projetos, linguagens de domínio específico, frameworks e arquiteturas de sis- temas com o objetivo de produzir

Capítulo 3

Trabalhos Relacionados

Este capítulo apresenta uma descrição de linguagens e sistemas para autoria de mo-delos e documentos XML, a XSLT (eXtensible Stylesheet Language for Transformation),a TAL (Template Attribute Language), a PXTL (Python XML Template Language), aXTemplate 3.0, a TAL (Template Authoring Language) e o Sistema de Processamento deModelos Luar.

3.0.1 eXtensible Stylesheet Language for Transformation

A XSLT [W3C 1999b] é uma linguagem de marcação XML destinada a criação dedocumentos XSL. Os documentos XSL definem a apresentação dos documentos XMLnos navegadores e outros aplicativos que têm suporte para tal.

Os documentos XSL não alteram o documento XML original e não criam outro do-cumento. O navegador/aplicativo que recebe o documento XML original, como ele foicriado, apresenta-o como o documento XSL determina.

A XSLT prevê o uso de modelos com o processamento sendo realizado pelo navega-dor/aplicativo que recebe o documento XML com código XSLT. A XSLT define o local eo documento XML que será inserido no código XML a ser utilizado pelo navegador/apli-cativo.

3.0.2 Template Attribute Language

A TAL [ZOPE 2010c] é uma linguagem para autoria de modelos com foco na ge-ração de páginas XHTML, que também pode ser usada para XML, dinamicamente. Alinguagem tem como objetivo permitir a colaboração e integração entre programadores edesigners. TAL incorpora declarações próprias dentro de tags XHTML ou XML válidasque podem ser trabalhadas com ferramentas populares de design.

Page 31: Luar-X: Extensão e Generalização do Sistema de ... · padrões de projetos, linguagens de domínio específico, frameworks e arquiteturas de sis- temas com o objetivo de produzir

CAPÍTULO 3. TRABALHOS RELACIONADOS 16

A linguagem possui um mecanismo de extensão denominado METAL (Macro Ex-

pansion Template Attribute Language) [ZOPE 2010b] que a complementa e permite areutilização de código de outros modelos. A METAL permite ao desenvolvedor definir eutilizar macros que podem possuir slots. Ao se utilizar uma macro o conteúdo variávelpode ser especificado por um slot.

A princípio, a TAL foi criada para o ZOPE (Z Object Publishing Environment) [ZOPE2010a], um servidor de aplicações web de código aberto escrito na linguagem Python,mas outros projetos também fizeram uso dela e a implementaram em diferentes linguagenscomo Python, C#, JavaScript, Java, Perl, Perl 6, PHP e XSL.

3.0.3 Python XML Template Language

A PXTL [Clover 2010] é uma linguagem que permite o uso de XML com códigoPython, similar ao Luar que permite uso de XML com Lua. Assim, a PXTL permiteembutir código Python nos documentos XML para controlar a geração e transformaçãodos conteúdos dos documentos. Os elementos são condicionais, iteradores, submodelos eimportações. Os atributos são os condicionais, de alterações e atributo raiz.

Esta linguagem possui um processador de modelos, seguindo a arquitetura padrão deum sistema de processamento de modelos como apresentado no Capítulo 2. A PXTLespecifica ainda elementos (tags) e atributos próprios como opção para o desenvolvedorfazer uso.

Apesar de ser um sistema de modelos destinado a documentos XML, a PXTL temcomo principal uso os documentos XHTML.

3.0.4 XTemplate 3.0

A linguagem XTemplate 3.0 é uma linguagem inspirada em ADLs (Architecture Des-

cription Languages) [Clements 1996] que foi criada para definir modelos de composiçãoe facilitar a autoria de programas descritos com a NCL 3.0 [Soares et al. 2010].

A XTemplate 3.0 torna possível a criação de modelos, denominados templates de com-posição. Esses templates de composição descrevem genericamente todo o conteúdo deum contexto NCL. Na autoria, o desenvolvedor apenas indica os elementos que utilizará.Segundo [Santos & Saade 2009], a XTemplate funcionaria como se estivesse criando umdocumento NCL com “buracos” que seriam preenchidos posteriormente pelos autores.

A linguagem XTemplate 3.0 foi criada com o objeto de gerar facilidades para umautor de documentos NCL. O autor deve possuir conhecimento em XPath (XML Path

Page 32: Luar-X: Extensão e Generalização do Sistema de ... · padrões de projetos, linguagens de domínio específico, frameworks e arquiteturas de sis- temas com o objetivo de produzir

CAPÍTULO 3. TRABALHOS RELACIONADOS 17

Language) [W3C 1999a] e XSLT [W3C 1999b] como pré-requisito para utilizar essalinguagem. O sistema de modelos da linguagem XTemplate 3.0 possui uma bibliotecapara criação de bases de modelos que permite o compartilhamento dos modelos entre osdesenvolvedores [Santos & Saade 2010].

Os documentos NCL completos, que foram gerados a partir do processamento dedocumentos XTemplate 3.0, deverão ser executados pelo Middleware Ginga.

3.0.5 Template Authoring Language

A TAL (Template Authoring Language) é uma linguagem criada para definição demodelos de documentos hipermídia. Essa linguagem é declarativa, modular e trabalhade forma independente da linguagem de autoria alvo. A TAL é uma evolução da XTem-

plate 3.0 e permite que autores mais especializados especifiquem modelos de documentospara que outros autores menos especializados criem novos documentos de forma simples,rápida e livre de erros [Neto et al. 2010].

A linguagem TAL também foi projetada para evitar o uso de notações fora de contextodo modelo conceitual e do nível de abstração da linguagem. Essa característica a tornapossível de ser empregada na autoria de outras linguagens declarativas, diferentemente daXTemplate 3.0 [Neto et al. 2010].

3.0.6 Sistema de Processamento de Modelos Luar

O Sistema de Processamento de Modelos Luar foi criado para a autoria de documen-tos NCL baseada no reúso de modelos. O Luar permite usar a linguagem Lua com asdescrições NCL para a criação dos modelos. Essa característica traz simplicidade nodesenvolvimento e facilidade na aprendizagem dos programadores que desenvolvem apli-cações para o Middleware Ginga, pois a linguagem de script do Ginga-NCL é Lua.

O Sistema Luar possui dois conceitos de modelos para o processo de autoria, os mo-delos completos e os modelos componentes. O modelo completo descreve um documentototal como uma página Web, uma aplicação para TVDI ou um desenho vetorial. O mo-delo componente descreve o pedaço de um documento que pode representar, entre outros,um passador de imagens, grupos de botões, tabelas ou consultas de banco de dados. Osmodelos componentes precisam, de acordo com as definições de seus autores, se conec-tarem entre si ou ao documento que está sendo descrito para comporem um documentototal.

O Luar possui um processador e uma biblioteca de modelos. A biblioteca é respon-sável por agregar, manter coleções e compartilhar os modelos entre a comunidade de

Page 33: Luar-X: Extensão e Generalização do Sistema de ... · padrões de projetos, linguagens de domínio específico, frameworks e arquiteturas de sis- temas com o objetivo de produzir

CAPÍTULO 3. TRABALHOS RELACIONADOS 18

desenvolvedores.

3.0.7 Proposta Luar-X

O sistema de processamento de modelos Luar-X provê uma infraestrutura de reúsopara o desenvolvimento baseado em modelos por engenheiros de software. O Luar-Xmantém o uso dos conceitos de modelo completo e componente do Sistema Luar, masmodifica a linguagem de autoria.

A linguagem de autoria do Luar-X por padrão é Lua, mas pode ser qualquer linguagemimperativa combinada com XML, isso é possível por meio de plugins. A combinação daslinguagens simplifica o desenvolvimento de modelos XML, pois as notações já são conhe-cidas na comunidade de desenvolvedores, e permite a criação dos modelos generalizandoe simplificando o desenvolvimento destes.

A PXTL faz uso dessa abordagem de combinar linguagens ao utilizar a linguagemPython juntamente com a XML, sendo uma abordagem semelhante ao Luar-X.

O sistema Luar-X se mostra uma ferramenta de reúso promissora e completa. Neleé possível encontrar características que outros sistemas possuem como as bibliotecas demodelos, que também são encontradas na XTemplate, e o modo de processar modelos,similar a PXTL. Os plugins também são uma característica importante, não encontradano Luar, pois permitirão customizações e darão maior uso a ferramenta.

As linguagens XSLT, XTemplate, Template Authoring Language e Template Attribute

Language diferem do Luar-X ao definirem uma sintaxe própria. A XSLT, XTemplate eTemplate Attribute Language usam notações fora do contexto do modelo conceitual e abs-tração da linguagem alvo, dificultando a aprendizagem de uso por parte do desenvolvedor.A seguir, é apresentado na Tabela 3.1 um resumo das principais características de cadauma das linguagens ou sistemas de modelos apresentados.

XSLT TAL PXTL XTemplate 3.0 TAL Luar Luar-XConceito de Reuso Modelo Modelo Modelo Modelo Modelo Completo e Componente Completo e Componente

Biblioteca Não possui Não possui Não possui Própria Não possui Portal Ginga-CDN PrópriaLinguagem Própria Própria Python Própria Própria Lua Múltiplas

Open Source Sim Sim Sim Sim Sim Sim SimPlugins Não Não Não Não Não Não Sim

Tabela 3.1: Comparação entre os sistemas

Page 34: Luar-X: Extensão e Generalização do Sistema de ... · padrões de projetos, linguagens de domínio específico, frameworks e arquiteturas de sis- temas com o objetivo de produzir

Capítulo 4

Sistema de Processamento de ModelosLuar-X

O sistema Luar-X é o melhoramento, extensão e generalização do sistema de modelosLuar para qualquer linguagem baseada em XML. O Luar-X modificou a sintaxe, a bibli-oteca, permitiu o processamento em lote de modelos e incluiu a possibilidade de plugins

para customização do próprio sistema. Os plugins são uma poderosa característica doLuar-X, pois possibilitam e aumentam as funcionalidades nesse sistema, como por exem-plo, o uso de diferentes linguagens combinadas com a XML para autoria dos documentosLuar-X.

A linguagem Lua foi mantida como padrão no sistema Luar-X. Os conceitos de mo-delos completos e componentes e a forma de interação do usuário com o sistema tambémpermaneceram. A Figura 4.1 apresenta os elementos básicos e fluxo do sistema de mode-los Luar-X.

Page 35: Luar-X: Extensão e Generalização do Sistema de ... · padrões de projetos, linguagens de domínio específico, frameworks e arquiteturas de sis- temas com o objetivo de produzir

CAPÍTULO 4. SISTEMA DE PROCESSAMENTO DE MODELOS LUAR-X 20

DocumentosXML

ModelosLuar-X

Kernel Luar-X

Tratador deCommandos

ProcessadorLuar-X

Scripts deFunções

DocumentosLuar-X

+ código Luar-X

Biblioteca de

Modelos

Plugins Repositóriode

Plugins

Figura 4.1: Elementos básicos e fluxo do sistema Luar-X

Os elementos básicos e o fluxo do sistema Luar-X são os mesmos elementos e fluxosdo modelo genérico de um sistema de processamento de modelos, como apresentado naFigura 2.1.

O sistema Luar-X possui quatro partes: o kernel, a biblioteca de modelos, a linguageme o repositório de plugins. A linguagem é apresentada na Figura 4.1 por meio dos modelose dos documentos Luar-X.

O fluxo do sistema inicia-se com o desenvolvimento de uma aplicação que fará usode modelos. Os modelos são mantidos em coleções na biblioteca. O sistema Luar-Xpode processar um único documento Luar-X ou um lote de documentos, contendo osdados para compor o modelo, que são enviados para o kernel. Os comandos executamfunções específicas do sistema e são utilizados para interação com o kernel. O kernel tema responsabilidade de fazer o processamento dos modelos por meio do processador Luar-X. Após o processamento é gerado o documento XML a partir do modelo e dos dadosrecebidos pelo processador. No processamento, caso detectado, pode ser usado algumplugin para tratamento de uma especificidade do documento. O documento XML torna-se um documento Luar-X ao ser inserido o código Luar-X. Essa característica é útil paraque o desenvolvedor utilize mais modelos ou processe novamente o código XML, casoseja necessário.

A linguagem Luar-X manteve os conceitos de modelos completos e componentes,mas utiliza outros scriptlets e tags delimitadoras para fazer a combinação de linguagemimperativa e a XML.

Page 36: Luar-X: Extensão e Generalização do Sistema de ... · padrões de projetos, linguagens de domínio específico, frameworks e arquiteturas de sis- temas com o objetivo de produzir

CAPÍTULO 4. SISTEMA DE PROCESSAMENTO DE MODELOS LUAR-X 21

A seguir, serão apresentados o kernel, a linguagem, o processamento de modelos emlote, os plugins e a biblioteca de modelos do sistema Luar-X.

4.1 Kernel Luar-X

A Figura 4.2 apresenta com mais detalhes o kernel do sistema Luar-X. Nesta seção,serão detalhados o funcionamento, os elementos e o fluxo da interação desse sistema.

Requisições via comandos

Scripts

Tratador de Comandos

NúcleoProcessador

deModelos

Plugins

DocumentoXML

Resultante

Figura 4.2: Elementos básicos e fluxo do sistema Luar-X

A interação com o kernel do Luar-X acontece por meio de linhas de comandos. Os co-mandos enviados passam pelo tratador de comandos que executa os scripts com a funçãodesejada.

A principal função do kernel é de processar o documento Luar-X descrito pelo desen-volvedor. O documento é enviado ao núcleo do processador Luar-X que faz a leitura dodocumento. No núcleo, na medida que é realizada a leitura do documento, identifica-se nadescrição as tarefas a serem realizadas e essas são enviadas aos determinados elementosresponsáveis. As tarefas são a de processar modelos, processar descrições genéricas ouexecutar plugins.

O processador de modelos recebe o trecho do documento Luar-X para ser combinadocom um modelo, seja ele completo ou componente, e devolve ao núcleo a descrição XMLrespectiva. O processador ainda realiza o processamento de descrições genéricas, que odesenvolvedor utiliza a linguagem Lua para descrição dinâmica XML.

Page 37: Luar-X: Extensão e Generalização do Sistema de ... · padrões de projetos, linguagens de domínio específico, frameworks e arquiteturas de sis- temas com o objetivo de produzir

CAPÍTULO 4. SISTEMA DE PROCESSAMENTO DE MODELOS LUAR-X 22

O núcleo ao detectar um trecho que solicita um determinado plugin para processá-lo,o envia ao plugin responsável. O plugin realiza o tratamento do trecho e devolve o XMLresultante para o núcleo.

Ao fim da leitura do documento Luar-X e com as descrições XML resultantes, o nú-cleo escreve a descrição XML total em um documento XML resultante. O núcleo pode so-licitar alternadamente o processamento via processador de modelos ou plugins, de acordocom a ordem que aparecer no documento Luar-X.

4.2 Linguagem Luar-X

A linguagem do Luar-X foi idealizada a partir da experiência adquirida com o uso dalinguagem do sistema Luar. O padrão de linguagem no sistema é a combinação da lingua-gem Lua com a XML, permitida por meio de scriptlets que são trechos de código entre astags delimitadoras <? ?>. O Luar-X ainda possui em sua linguagem a definição de maisdois tipos de tags delimitadoras, as tags de definição de modelos <?template ?> e a deuso dos plugins <?plugin ?>. O Código 4.1 mostra o exemplo do Código 2.1 reescritoem Luar-X.

1 </head>

2 </body>

3 <port id="pStart" component="slide1" />

4 <?

5 for i=1, #slides do

6 print(’<media id="slide’..i..’" src="’..slides[i]..’" descriptor="dSlide" />’)

7 end

8 ?>

Código 4.1: Exemplo de código Luar-X

O Código 4.2 apresenta um exemplo didático de definição, de um modelo componentede tabela XHTML, com a linguagem do sistema Luar-X. A definição geral do modelodeve ser atribuída a variável template, como na linha dois. As variáveis específicas, queserão usadas pelo modelo, devem ser definidas a seguir como o exemplo da linha quatro.

Page 38: Luar-X: Extensão e Generalização do Sistema de ... · padrões de projetos, linguagens de domínio específico, frameworks e arquiteturas de sis- temas com o objetivo de produzir

CAPÍTULO 4. SISTEMA DE PROCESSAMENTO DE MODELOS LUAR-X 23

1 <?template

2 template = "O modelo LTableXHTML gera uma tabela XHTML simples. As tabelas geradas

3 possuem cabeçalho, linhas e colunas apenas."

45 table = ’Tabela Lua onde deve ser descrita a tabela XHTML conforme o exemplo a seguir:

6 table = {

7 header = {"Linguagem XML","Ano de Criação"},

8 {"XHTML","2002"},

9 {"SVG","1999"},

10 {"NCL","2000"},

11 {"XSIL","1999"},

12 {"RDF","1998"}}

13 ’

14 ?>

Código 4.2: Exemplo de definição de um modelo Luar-X

Ao finalizar a definição o modelo deve conter o código de geração criado pelo autor domodelo. O código de geração deve estar entre as tags delimitadoras <? ?>. O Código 4.3apresenta a continuação do exemplo didático do modelo da tabela XHTML do Código 4.2.

1 <? if table ~= nil then

2 print(’<table border="1">’)

3 if table.header ~= nil then

4 print("<tr>")

5 for i=1, #table.header do

6 print("<th>"..table.header[i].."</th>")

7 end

8 print("</tr>")

9 end

10 for i=1, #table do

11 print("<tr>")

12 for j=1,#table[i] do

13 print("<td>"..table[i][j].."</td>")

14 end

15 print("</tr>")

16 end

17 print("</table>")

18 else

19 print("The table is not defined!")

20 end

21 ?>

Código 4.3: Exemplo de definição do código de geração de um modelo Luar-X

A autoria usando modelos é simples, o autor atribui os valores desejados as variáveisdefinidas na descrição do modelo e usa a função useTemplate() para definir o modelo queestá sendo utilizado. O Código 4.4 apresenta um exemplo de uso do modelo didático detabela XHTML utilizado nesta seção.

Page 39: Luar-X: Extensão e Generalização do Sistema de ... · padrões de projetos, linguagens de domínio específico, frameworks e arquiteturas de sis- temas com o objetivo de produzir

CAPÍTULO 4. SISTEMA DE PROCESSAMENTO DE MODELOS LUAR-X 24

1 <html>

2 <head><title>Tabela XHTML</title></head>

3 <body>

4 <?

5 table = {

6 header = {"Linguagem XML","Ano de Criação"},

7 {"XHTML","2002"},

8 {"SVG","1999"},

9 {"NCL","2000"},

10 {"XSIL","1999"},

11 {"RDF","1998"}

12 }

13 useTemplate(’LTableXHTML’)

14 ?>

15 </body>

Código 4.4: Código de utilização do modelo componente TableXHTML

O uso de plugins é uma característica, que permite extensão e flexibilidade paro osistema de modelos Luar-X. A definição e o uso dos plugins serão apresentados na seção4.4.

4.3 Processamento de Modelos em Lote

Uma característica de algumas aplicações descritas em XML é a utilização de mais deum documento com trechos de códigos e características em comum, um exemplo conhe-cido são as páginas Web descritas em XHTML, que encontramos em diferentes domínios,com o cabeçalho ou rodapé padrão.

Assim, para abstrair essas repetições em diferentes documentos tornou-se possívelo processamento em lote de documentos XML. O arquivo de configuração (config.lrx),apresentado no Código 4.5, possui uma tabela templateData = { } onde são definidos osatributos em comuns a todo o lote de documentos a serem processados.

1 templateData = {

2 title = "Exemplo de uso dos dados em lotes de documentos"

3 }

Código 4.5: Arquivo de configuração

O Código 4.6 apresenta um exemplo hipotético de um modelo Luar-X para cabeçalhosXHTML. As linhas de um a quatro contém a definição do modelo e as linhas de cinco aseis contém os códigos a serem processados juntamente com os dados.

Page 40: Luar-X: Extensão e Generalização do Sistema de ... · padrões de projetos, linguagens de domínio específico, frameworks e arquiteturas de sis- temas com o objetivo de produzir

CAPÍTULO 4. SISTEMA DE PROCESSAMENTO DE MODELOS LUAR-X 25

1 <?template

2 template="O modelo HeaderXHTML estabelece um título no cabeçalho XHTML"

3 title="Este atributo recebe o nome do título (<title>)"

4 ?>

56 <head>

7 <title><? templateData.title ?></title>

8 </head>

Código 4.6: Exemplo de modelo Luar-X de cabeçalho XHTML

No Código 4.7 temos um exemplo da utilização do modelo HeaderXHTML em umdocumento. A inclusão deste modelo poderia ser usada em todo um lote de documentosLuar-X afim de gerar documentos XHTML com cabeçalhos padronizados.

1 <html>

2 <? useTemplate("HeaderXHTML") ?>

3 <body>

4 .

5 .

6 .

7 </body>

8 </html>

Código 4.7: Exemplo de documento Luar-X utilizando modelo

4.4 Plugins

O sistema Luar-X tem o objetivo de ser uma opção de ferramenta para desenvolvi-mento ágil de aplicações descritas em XML. Algumas vezes os desenvolvedores preci-sam tratar as especificidades de cada aplicação, como por exemplo, o uso de folhas deestilo [W3C 2015], JavaScript [W3C 2016], processamento de imagens, linguagens ououtros. Nesse contexto foi projetado o uso de plugins que se integram ao sistema Luar-X para tratamento de características específicas em aplicações, com intuito de agilizar odesenvolvimento e evitar o uso de mais ferramentas pelo desenvolvedor.

Os plugins são instalados e utilizados por meio das descrições nos documentos Luar-X. Foi definido um repositório de plugins on-line e público na Web, onde os desenvol-vedores podem submeter e baixar os plugins criados pela comunidade. O acesso ao re-positório se dá por meio do Portal Luar-X, que será detalhado na seção 4.5, onde osdesenvolvedores podem descrever a funcionalidade do plugin, a versão, qualificá-los edisponibilizar exemplos de uso.

Page 41: Luar-X: Extensão e Generalização do Sistema de ... · padrões de projetos, linguagens de domínio específico, frameworks e arquiteturas de sis- temas com o objetivo de produzir

CAPÍTULO 4. SISTEMA DE PROCESSAMENTO DE MODELOS LUAR-X 26

Os plugins são pequenos softwares que recebem uma descrição própria e a tratamdevolvendo a descrição para o sistema Luar-X. O plugin deve possuir uma interface Lua,com uma função denominada executePlugin(), que deverá receber a descrição detectadapelo núcleo do sistema Luar-X e retornar a descrição XML resultante do processamentodessa descrição. Assim, é possível o desacoplamento desses plugins com o kernel dosistema Luar-X, proporcionando uma maior flexibilidade e extensão ao sistema como umtodo.

Uma notável situação de uso dos plugins no sistema Luar-X é a criação de processa-dores de modelos que fazem uso de outras linguagens imperativas ao invés da linguagemLua. Esses plugins permitem, em um mesmo documento Luar-X, existir trechos de códi-gos e definições de modelos em diferentes linguagens.

A criação do plugin no sistema Luar-X exige apenas a existência de um arquivo de-nominado interface.lua no diretório padrão desse plugin. Nesse arquivo, deverá existir avariável description com a descrição e todas as informações necessárias para o desenvol-vedor fazer uso do plugin. Essa descrição é uma documentação rápida do plugin para odesenvolvedor. O arquivo também deverá ter a função executePlugin() para o núcleo dokernel Luar-X executar o plugin.

A utilização do plugin pelo desenvolvedor é realizada pela escrita do código entre astags delimitadoras <?plugin ?>. O código escrito entre essas tags é definido pelo de-senvolvedor de acordo com a descrição obtida na documentação rápida do plugin e seráprocessado por esse plugin. Entre as tags ainda se faz necessário que o usuário indiqueo plugin que está sendo utilizando pela função usePlugin(). O Código 4.8 apresenta umexemplo do uso de um plugin que realiza o processamento da combinação da linguagemJavaScript com a XML.

1 </head>

2 </body>

3 <port id="pStart" component="slide1" />

4 <?plugin

5 <? usePlugin(’luarx-js_processor’) ?>

6 for(var i=0; i<5; i++){

7 write(’<media id="slide’+i+’" src="’+slides[i]+’" descriptor="dSlide" />’)

8 }

9 ?>

Código 4.8: Exemplo do uso de um plugin no Luar-X

Na criação dos plugins o desenvolvedor possui a liberdade de usar a estrutura dosistema Luar-X, como o arquivo config.lrx, para um acesso global de variáveis. Os plugins

podem processar modelos, vídeos, áudio, imagens ou outros arquivos apontados nos links

Page 42: Luar-X: Extensão e Generalização do Sistema de ... · padrões de projetos, linguagens de domínio específico, frameworks e arquiteturas de sis- temas com o objetivo de produzir

CAPÍTULO 4. SISTEMA DE PROCESSAMENTO DE MODELOS LUAR-X 27

XML. O repositório Luar-X contém os plugins compartilhados que podem ser acessadospor toda a comunidade de desenvolvedores. O respositório de plugins e a biblioteca demodelos estão disponíveis no portal Luar-X.

4.5 Portal Luar-X

O Portal Luar-X é um serviço Web que agrega a biblioteca de modelos e o repositóriode plugins. A biblioteca de modelos é responsável por agregar e manter coleções demodelos que são criadas e compartilhadas pelos autores de modelos. A partir desse portal,os autores podem disponibilizar e ter acesso a novos modelos, utilizando-os na autoria denovos documentos XML. O repositório de plugins possui a função de guardar e ser umponto de compartilhamento e acesso dos plugins desenvolvidos pela comunidade.

O Portal permite a divulgação e o acesso a todas as informações e tecnologias relaci-onadas ao sistema de processamento de modelos Luar-X. No portal é possível categorizaro modelo e o plugin, descrever suas funcionalidades de forma textual ou visual, imagense vídeos, e mantê-los como coleções. Outros autores podem buscar, visualizar e realizaro download dos modelos pelo portal ou utilizando o kernel Luar-X, que adicionará o mo-delo ou o plugin em sua biblioteca local. Ainda é possível que os autores qualifiquemos modelos para que a comunidade de autores identifiquem os mais adequados às suasnecessidades.

LUARLuar-X Template Engine

Diogo Henrique

LSlideShow Template

Description

Images

Video

O template LSlideShow cria um passador de slides. O autor deverá informar apenas as imagens para os slides desejados.

LogoutAccount |

+

Type

Author

Category

Template - Complete

Classification

Diogo Henrique

Presenters

Figura 4.3: Portal Luar-X

Page 43: Luar-X: Extensão e Generalização do Sistema de ... · padrões de projetos, linguagens de domínio específico, frameworks e arquiteturas de sis- temas com o objetivo de produzir

Capítulo 5

Resultados

Neste capítulo são apresentados estudos de caso de utilização do sistema Luar-X comdiferentes linguagens baseadas em XML.

5.1 Estudos de Caso

Os estudos de caso foram realizados com o objetivo de validar o uso do sistema Luar-Xcom diferentes linguagens baseadas em XML. As linguagens foram escolhidas de acordocom o auxílio no processo de desenvolvimento que o sistema Luar-X pode promover:economia de código; padronização; mecanismo de tradução entre linguagens distintas ediferentes propriedades providas pelos plugins.

5.1.1 XHTML

A XHTML é uma reformulação da HTML, linguagem de marcação da Web, paraseguir as regras XML. Os modelos Luar-X para o XHTML reduzem o esforço repetitivode codificação em alguns trechos do código, como a criação de tabelas extensas, e podemdefinir padrões de interface que são reaproveitadas pelo desenvolvedor.

O estudo de caso realizado com XHTML consistiu em usar um modelo componentepara criação de tabelas e um modelo completo para criação de um página Web completa.A Figura 5.1 apresenta a imagem da página Web com uma tabela simples usada no estudode caso, o Código 5.1 descreve a tabela.

Page 44: Luar-X: Extensão e Generalização do Sistema de ... · padrões de projetos, linguagens de domínio específico, frameworks e arquiteturas de sis- temas com o objetivo de produzir

CAPÍTULO 5. RESULTADOS 29

Figura 5.1: Imagem de uma página XHTML com uma tabela simples

1 <table border="1">

2 <tr>

3 <th> Liguagem XML </th>

4 <th> Ano de Criação </th>

5 </tr>

6 <tr>

7 <td> XHTML </td>

8 <td> 2002 </td>

9 </tr>

10 <tr>

11 <td> SVG </td>

12 <td> 1999 </td>

13 </tr>

14 <tr>

15 <td> NCL </td>

16 <td> 2000 </td>

17 </tr>

18 <tr>

19 <td> XSIL </td>

20 <td> 1999 </td>

21 </tr>

22 <tr>

23 <td> RDF </td>

24 <td> 1998 </td>

25 </tr>

26 </table>

Código 5.1: Código de uma tabela simples em XHTML

O Código 5.1 apresenta uma tabela clássica e didática em XHTML. A descrição deuma tabela em XHTML possui muitas repetições. A estrutura de colunas e linhas possuital característica, chegando a utilizar vinte e seis linhas de código para a descrição deuma tabela com duas colunas e seis linhas. O Código 5.2 apresenta a descrição da mesmatabela ao se utilizar o sistema Luar-X com o modelo componente LTableXHTML.

Page 45: Luar-X: Extensão e Generalização do Sistema de ... · padrões de projetos, linguagens de domínio específico, frameworks e arquiteturas de sis- temas com o objetivo de produzir

CAPÍTULO 5. RESULTADOS 30

1 table = {

2 header = {"Linguagem XML","Ano de Criação"},

3 {"XHTML","2002"},

4 {"SVG","1999"},

5 {"NCL","2000"},

6 {"XSIL","1999"},

7 {"RDF","1998"},

8 }

910 useTemplate(’LTableXHTML’)

Código 5.2: Código de utilização do modelo componente LTableXHTML

A utilização do sistema Luar-X para criação da mesma tabela utilizando o modelocomponente LTableXHTML é mais legível e ágil do que a codificação puramente emXHTML. A legibilidade se dá pelo uso da linguagem Lua e sua principal estrutura dedados, a tabela. A agilidade é resultado da quantidade de apenas 10 linhas de código paraa descrição da tabela XHTML. O estudo realizado mostra que é viável o uso de modeloscomponentes com XHTML.

No estudo de caso em questão, foi desenvolvida ainda uma página Web utilizandoo modelo completo. A página foi desenvolvida a partir do modelo LPersonalWebPa-

geXHTML, que cria uma página pessoal.

Page 46: Luar-X: Extensão e Generalização do Sistema de ... · padrões de projetos, linguagens de domínio específico, frameworks e arquiteturas de sis- temas com o objetivo de produzir

CAPÍTULO 5. RESULTADOS 31

Figura 5.2: Imagem de uma página XHTML

Page 47: Luar-X: Extensão e Generalização do Sistema de ... · padrões de projetos, linguagens de domínio específico, frameworks e arquiteturas de sis- temas com o objetivo de produzir

CAPÍTULO 5. RESULTADOS 32

A página Web, representada na Figura 5.2, é composta por um menu, um título e trêsseções. Este modelo foi escolhido pela simplicidade, didática de sua construção e uso deum design moderno. O código dessa página possui cento e oitenta e cinco linhas e nãoé legível. À medida que o código cresce e existe uma hierarquia grande de tags, torna-se difícil sua construção e manutenção. Os autores de documentos XHTML têm umaprática de usar comentários entre os blocos de código, de acordo com a organização dodocumento, para simplificar a visualização e alteração do código.

Os modelos completos, como já apresentado no capítulo três, são os tipos de modeloque proporcionam o maior reúso possível de código, já que eles descrevem um docu-mento XML completo. O Código 5.3 mostra a utilização do modelo completo LPerso-

nalWebPageXHTML, criado para abstrair detalhes de codificação do documento focandonas informações essenciais. Nos atributos, especificados na documentação do modelo,são preenchidos todos os dados relacionados às informações principais da página Web eopcionalmente, pode se alterar algumas propriedades como o esquema de cores. Os deta-lhes e definição de cada modelo são realizados pelo autor do modelo e esse é apenas umsimples exemplo de uso do conceito modelo completo do sistema Luar-X.

O modelo LPersonalWebPageXHTML descreveu a página fazendo uso de apenas vintee sete linhas, mostrando que sintaticamente o uso de modelos completos também é ade-quado para a linguagem XHTML, baseada em XML. O Código A.1 apresenta a descriçãogerada por esse modelo de acordo com o exemplo apresentado no Código 5.3.

Page 48: Luar-X: Extensão e Generalização do Sistema de ... · padrões de projetos, linguagens de domínio específico, frameworks e arquiteturas de sis- temas com o objetivo de produzir

CAPÍTULO 5. RESULTADOS 33

1 paginapessoal = {

2 titulo = "Diogo Henrique",

3 sobre = "Página pessoal destinada a apresent...",

4 profissional = {

5 "Doutorando em Engenharia Elétrica e de Computação na UFRN",

6 lattes = "http://lattes.cnpq.br/7941421723739379",

7 linkedin = "http://br.linkedin.com/pub/d-h-d-b/60/307/71b",

8 }

9 contato = {

10 endereco = "Laboratório Natalnet, DCA, UFRN\n

11 Campus Universitário Lagoa Nova,\n

12 CEP 59078-970 | Natal/RN - Brasil"

13 social = {

14 twitter = "http://twitter.com/diogohdb",

15 facebook = "http://www.facebook.com/diogohdb",

16 googlep = "https://plus.google.com/113790612691620353326",

17 }

18 email = "[email protected]",

19 fone = "+558432155555"

20 }

21 senderMessage = {

22 smtp = "smtp.diogohenrique.com",

23 port = "465",

24 user = "[email protected]",

25 password = "xxxxxx",

26 }

27 }

28 includeTemplate(’LPersonalWebPageXHTML’)

Código 5.3: Código de utilização do modelo componente LPersonalWebPageXHTML

O estudo de caso mostrou que o conceito da linguagem XHTML produz em sua sin-taxe uma repetição de código e determinados padrões na estrutura dos documentos. Essascaracterísticas a tornam uma excelente linguagem para ser usada em conjunto com o sis-tema Luar-X.

5.1.2 SVG

A SVG é uma linguagem XML utilizada para a descrição de formas vetoriais, dese-nhos e gráficos bidimensionais. Atualmente, não é comum que alguém faça a descriçãode um documento SVG textualmente, no entanto existem ferramentas de edição gráficaque utilizam este formato como padrão, como o Inkscape [Harrington 2013].

O estudo de caso com SVG foi projetado para uma situação onde existe repetiçãode formas vetoriais. A produção de cartões de visitas para uma corporação com muitosfuncionários é um exemplo de esforço repetitivo que demanda muito trabalho manual nadescrição dos documentos. A partir desse contexto foi criado um cartão de visita Luar-X

Page 49: Luar-X: Extensão e Generalização do Sistema de ... · padrões de projetos, linguagens de domínio específico, frameworks e arquiteturas de sis- temas com o objetivo de produzir

CAPÍTULO 5. RESULTADOS 34

com nome e e-mail. Para ser impresso em uma folha de tamanho A4 é preciso repetir eorganizar doze cartões em um processo que não é ágil.

LUAR

Sistema de Processamento de ModelosDiogo Henrique Duarte Bezerra

[email protected]

Figura 5.3: Cartão de visita hipotético Luar-X

Por não ser comum a edição e descrição textual de documentos SVG, não apresenta-mos o código neste documento, pois o mesmo possui seis mil seiscentos e quarenta e seislinhas.

O modelo completo LLuarCardSVG foi desenvolvido para agilizar o processo de cri-ação de cartões de visita. O Código 5.4 mostra uma utilização para a criação de umdocumento com doze cartões para cada pessoa atribuída nas variáveis do modelo. Nesseexemplo temos a saída de documentos em lote, uma nova característica explorada pelosistema Luar-X. O reúso proporcionado é imenso, justificado pelo uso de apenas sete li-nhas de código que geram uma grande economia para a equipe responsável pela produçãodos cartões.

1 luarcard = {

2 user = {

3 {name="Diogo Henrique D. Bezerra",email="[email protected]"},

4 {name="Diego Henrique D. Bezerra",email="[email protected]"},

5 {name="Thiago Henrique D. Bezerra",email="[email protected]"}

6 }

7 }

Código 5.4: Código de utilização do modelo LLuarCardSVG

Apesar de ser um padrão não convencional de uso textual, o SVG se mostra compatívelcom o sistema Luar-X, que pode ser utilizada também por equipes de desenvolvimentográfico.

5.1.3 NCL

A linguagem NCL [Soares et al. 2009] é baseada em XML, utilizada na autoria de do-cumentos hipermídia e segue o modelo conceitual NCM (Nested Context Model) [Soares

Page 50: Luar-X: Extensão e Generalização do Sistema de ... · padrões de projetos, linguagens de domínio específico, frameworks e arquiteturas de sis- temas com o objetivo de produzir

CAPÍTULO 5. RESULTADOS 35

& Rodrigues 2005]. Atualmente, é a linguagem declarativa do Middleware Ginga queé responsável pela interativa do ISDB-TB e recomendação H.761 do ITU-T (Internati-

onal Telegraph Union - Telecommunication Standardization Sector) para serviços IPTV(Internet Protocol Television) [LAVID & Telemidia n.d.].

O estudo de caso com NCL tem o objetivo de validar a autoria de documentos dessalinguagem e a utilização dos plugins com o sistema Luar-X. Para tanto, foi utilizado umaaplicação de apresentação de imagens e o plugin de processamento em JavaScript.

O Código 5.5 apresenta a utilização do plugin luarx-js_processor que tem a funçãode receber o código JavaScript, processá-lo e retornar a descrição XML resultante. Oplugin pode processar modelos, de acordo com o seu projeto e proposta. No exemploapresentado, na linha dez, notamos a utilização de um modelo para o processador JavaS-

cript utilizado, o modelo completo LSlideShowNCL-luarx-js. O Código A.2 apresenta adescrição gerada por esse modelo de acordo com o exemplo apresentado no Código 5.5.

1 <?plugin

2 <? usePlugin(’luarx-js_processor’) ?>

34 var slides=[

5 "img1.jpg",

6 "img2.jpg",

7 "img3.jpg",

8 "img4.jpg"

9 ];

10 useTemplate("LSlideShowNCL-luarx-js");

11 ?>

Código 5.5: Exemplo de autoria com a NCL e plugin JavaScript

Esse estudo de caso mostra que o sistema Luar-X é viável para a autoria de documen-tos NCL, sendo mais flexível do que o sistema Luar, que é específico para a autoria NCL,e pode manter o reúso baseado em modelos mesmo com a utilização de plugins.

5.1.4 Aplicações Diversas

O sistema Luar-X já se mostra como ferramenta em ambientes de TVDI, Web e gráfi-cos. Porém, ainda observamos a possibilidade de uso do mesmo no ambiente de compu-tação científica e banco de dados.

Na computação científica temos linguagens baseadas em XML populares na comuni-dade, como a XSIL e a XDMF, ambas utilizadas para representação de dados e parâmetrosna computação de alto desempenho. Pesquisadores que venham a necessitar de dados emambas as linguagens terão dificuldades, pois será necessária a construção de um tradutor

Page 51: Luar-X: Extensão e Generalização do Sistema de ... · padrões de projetos, linguagens de domínio específico, frameworks e arquiteturas de sis- temas com o objetivo de produzir

CAPÍTULO 5. RESULTADOS 36

entre as linguagens. O sistema Luar-X pode ser a solução em situações como esta, sendouma camada acima das linguagens onde gera o documento de acordo com a linguagem,a partir de um modelo. O sistema Luar-X ainda pode ser usado como padronização parageração de documentos de entrada para computação de alto desempenho.

Na área de banco de dados, existem linguagens de consulta, como a XQuery (XML

Query) [W3C 2000] e mapeamento objeto-relacional, como o Hibernate [RedHat 2001].O sistema Luar-X, além de possibilitar o uso de modelos com essas linguagens, podeauxiliar o autor dos documentos a partir de plugins. Um plugin pode fazer leituras nobanco de dados e descrevê-lo em XQuery, por exemplo.

Page 52: Luar-X: Extensão e Generalização do Sistema de ... · padrões de projetos, linguagens de domínio específico, frameworks e arquiteturas de sis- temas com o objetivo de produzir

Capítulo 6

Conclusões

Neste trabalho é proposto o Luar-X, um sistema de processamento de modelos paradocumentos XML. A sua concepção teve como base o sistema de processamento de mo-delos Luar, utilizado para autoria de documentos NCL. O sistema de modelos Luar-Xmantém os conceitos de desenvolvimento de reúso baseado em modelos completos e com-ponentes do Luar. A infraestrutura do Luar-X tomou como base a infraestrutura do Luar,tornando-a extensível por meio do uso de plugins e generalizando a autoria para outraslinguagens baseadas em XML.

O sistema de modelos Luar-X mostra que é possível utilizar a técnica de desenvolvi-mento e reúso baseada em modelos por meio da utilização de modelos para a descriçãoágil de documentos XML. O sistema Luar-X é resultado da análise, adequação, projetoe implementação de uma infraestrutura de reúso que mantém os conceitos e estende aarquitetura do sistema Luar, permitindo a generalização da autoria baseada em modelospara documentos XML.

Os resultados dos estudos de caso mostram que o sistema de processamento de mode-los Luar-X pode ser utilizado com as linguagens XML testadas. Sintaticamente, o Luar-Xé válido para qualquer linguagem XML, pois as regras e definições do padrão XML semantém nas linguagens que seguem o padrão. Assim, podemos afirmar que o sistemade processamento de modelos Luar-X leva consigo o uso dos conceitos de modelo com-ponente e modelo completo e mantém o desenvolvimento ágil ao ser utilizado com aslinguagens baseadas em XML.

6.1 Principais Contribuições

A principal contribuição é a implementação do sistema de processamento de modelosLuar-X para autoria de documentos XML. Além da sua implementação, foi realizado a suavalidação, ou seja, o teste do sistema, dando por finalizada a primeira etapa na construção

Page 53: Luar-X: Extensão e Generalização do Sistema de ... · padrões de projetos, linguagens de domínio específico, frameworks e arquiteturas de sis- temas com o objetivo de produzir

CAPÍTULO 6. CONCLUSÕES 38

de uma infraestrutura de reúso.Durante a pesquisa que resultou nesta tese foi publicado um artigo, na revista IEEE

Latin America Transactions, com o título Agile Development for the Brazilian System of

IDTV with Ginga-NCL: LUAR Validation. Esse artigo apresenta a validação do sistemade processamento de modelos Luar para NCL, o qual prova por meio de um experimentocom usuários, seguindo as técnicas estabelecidas pela Engenharia de Software Experi-mental, que o desenvolvimento utilizando sistema Luar é ágil e simples quando compa-rado ao desenvolvimento apenas com a NCL. Mais dados de referências são encontradosem [Bezerra et al. 2016].

O uso de ferramentas para o desenvolvimento de aplicações descritas em linguagensbaseadas em XML diminui o tempo e a complexidade de desenvolvimento. Com a po-pularização das linguagens XML e o uso em diferentes áreas e domínios de aplicações,é importante a criação de ferramentas que diminuam o esforço de codificação e possi-bilitem aos desenvolvedores focarem em novas funcionalidades e não na implementaçãode soluções já existentes. A partir dessa proposta, o sistema de processamento de mo-delos Luar-X foi criado como uma ferramenta para o desenvolvimento ágil de aplicaçõesdescritas em XML destinada aos desenvolvedores.

6.2 Trabalhos Futuros

O sistema Luar, no princípio, fez parte do projeto Art TVDI (Arcabouço Tecnoló-gico para Desenvolvimento Ágil e Reutilização de Aplicações para TVDI com suporte aServiços Web) pelo programa CTIC (Coordenadoria de Tecnologia da Informação e Co-municação) da RNP (Rede Nacional de Pesquisa). A princípio era um projeto com focona construção de aplicações para o ISDB-TB e existiam perspectivas de popularizaçãonesse ambiente. A criação de aplicações para TVDI no país não cresceu e não houve umaampla utilização e popularização, com isso o sistema Luar não teve continuidade nestaárea.

Assim, sabendo do potencial do sistema Luar, pois apresenta bons resultados e observa-se a possibilidade de extensão para outras linguagens hipermídia fora do contexto deTVDI e da linguagem NCL, foi idealizado o sistema Luar-X. Este trabalho mostrou apossibilidade e viabilidade do sistema Luar-X como um sistema de processamento demodelos genérico para a descrição ágil de documentos XML.

Após a conclusão desta tese, ainda existem tarefas para a continuação do sistemaLuar-X. As tarefas consistem na divulgação da ferramenta à comunidade com intuito depopularizar o seu uso, a criação e atualizações da documentação e disponibilização de

Page 54: Luar-X: Extensão e Generalização do Sistema de ... · padrões de projetos, linguagens de domínio específico, frameworks e arquiteturas de sis- temas com o objetivo de produzir

CAPÍTULO 6. CONCLUSÕES 39

aplicações exemplo. Assim como foi realizado com o sistema Luar, existe também anecessidade de uma validação com os usuários do sistema Luar-X, com o intuito de aferiro grau de agilidade e simplicidade de desenvolvimento proporcionados pelo sistema.

Page 55: Luar-X: Extensão e Generalização do Sistema de ... · padrões de projetos, linguagens de domínio específico, frameworks e arquiteturas de sis- temas com o objetivo de produzir

Referências Bibliográficas

Bezerra, D. H. D., A. M. F. Burlamaqui & D. M. T. de Sousa (2016), ‘Agile developmentfor the brazilian system of idtv with ginga-ncl: Luar validation’, IEEE Latin America

Transactions 14(3), X–X.

Bezerra, Diogo Henrique Duarte (2012), Luar: Um sistema de processamento de templa-tes ncl, Dissertação de mestrado, Universidade Federal da Paraíba - UFPB, CI, DI,PPGI.

Bezerra, Diogo Henrique Duarte, Denio Mariz Timóteo Sousa, Guido Lemos de Souza Fi-lho, Aquiles Medeiros Filgueira Burlamaqui & Igor Rosberg Medeiros Silva (2012),Luar: A language for agile development of ncl templates and documents, em ‘Pro-ceedings of the 18th Brazilian Symposium on Multimedia and the Web’, WebMedia’12, ACM, New York, NY, USA, pp. 395–402.URL: http://doi.acm.org/10.1145/2382636.2382718

Brown, A. W. & Keith Short (1997), On components and objects: The foundation ofcomponent-based development, em ‘International Symposium Assesment of Soft-ware of Software Tools and Technologies, IEEE Computer Society Press, 112-121.’.

Clements, P. C. (1996), A survey of architecture description languages, em ‘Proceedingsof the 8th International Workshop on Software Specifications & Design’.

Clover, Andrew (2010), ‘Python xml templating language’. Acessado em 27 de Abril de2016.URL: http://www.doxdesk.com/pxtl/

Cohen, J., C. Cantwell, D. Moxey, J. Nowell, P. Austing, X. Guo, J. Darlington & S.Sherwin (2015), Tempss: A service providing software parameter templates andprofiles for scientific hpc, em ‘e–Science (e–Science), 2015 IEEE 11th InternationalConference on’, pp. 78–87.

Corby, Olivier & Catherine Faron-Zucker (2015), STTL: A SPARQL-based Transfor-mation Language for RDF, em ‘11th International Conference on Web Information

40

Page 56: Luar-X: Extensão e Generalização do Sistema de ... · padrões de projetos, linguagens de domínio específico, frameworks e arquiteturas de sis- temas com o objetivo de produzir

REFERÊNCIAS BIBLIOGRÁFICAS 41

Systems and Technologies’, Lisbon, Portugal.URL: https://hal.inria.fr/hal-01150623

Django, Software Foundation (n.d.), ‘Django’. Acessado em 28 de Março de 2016.URL: https://www.djangoproject.com/

Fernandez, Daniel (2011), ‘Thymeleaf’. Acessado em 28 de Março de 2016.URL: http://www.thymeleaf.org

Fornari, Miguel Rodrigues (2003), XML – Criação de Documentos XML e Utilização em

Aplicações Práticas, CBCOMP.

Foundation, Apache Software (1999), ‘Apache freemarker’. Acessado em 28 de Marçode 2016.URL: http://freemarker.org/

Fowler, Martin (2003), Patterns of Enterprise Application Architecture, Addison–Wesley.

Furgeri, Sérgio (2001), Ensino Didático da Linguagem XML, Érica.

Hansson, David Heinemeier (n.d.), ‘Ruby on rails’. Acessado em 28 de Março de 2016.URL: http://rubyonrails.org/

Harrington, Bryce (2013), ‘Inkscape’. Acessado em 13 de Abril de 2016.URL: https://inkscape.org/pt/

LAVID & Telemidia (n.d.), ‘About ginga’. Acessado em 28 de Março de 2016.URL: http://www.ginga.org.br/

Manolescu, Dragos (2006), Pattern Languages of Program Design, Addison–Wesley Pro-fessional.

Neto, Carlos S. Soares, Luiz Fernando Gomes Soares & Clarisse Sieckenius de Souza(2010), Tal - linguagem para autoria de templates de documentos hipermidia, em

‘WebMedia - Simpósio Brasileiro de Sistemas Multimídia e Web’.

Okunskiy, Boris (2015), ‘Nanotemplates’. Acessado em 28 de Março de 2016.URL: https://github.com/inca/nanotemplates

Parr, John Terence (2004), Enforcing strict model–view separation in template engines,em ‘Proceedings of the 13th International Conference on World Wide Web’, ACM.

Page 57: Luar-X: Extensão e Generalização do Sistema de ... · padrões de projetos, linguagens de domínio específico, frameworks e arquiteturas de sis- temas com o objetivo de produzir

REFERÊNCIAS BIBLIOGRÁFICAS 42

Ray, Erick T. (2001), Aprendendo XML, Campus.

RedHat (2001), ‘Hibernate’. Acessado em 14 de Abril de 2016.URL: http://hibernate.org/

Sanderson, Steven (n.d.), ‘Knockout’. Acessado em 28 de Março de 2016.URL: http://knockoutjs.com/index.html

Santos, Joel A. F. & Débora C. M. Saade (2009), Linguagem xtemplate 3.0: Facilitandoa autoria de programas ncl para tv digital interativa, em ‘Web Media - SimpósioBrasileiro de Sistemas Multimídia’.

Santos, Joel A. F. & Débora C. M. Saade (2010), ‘Xtemplate 3.0: Adding semantics to hy-permedia compositions and providing document structure reuse’, ACM Symposium

on Applied Computing - ACM SAC .

SBTVD, Fórum (n.d.), ‘Entenda a tv digital’. Acessado em 28 de Março de 2016.URL: http://www.dtv.org.br/

Soares, Luiz Fernando G., M. F. Moreno & Carlos de S. Soares Neto (2010), ‘Ginga-ncl: Declarative middleware for multimedia iptv services’, IEEE Communications

Magazine 48, 74–81.

Soares, Luiz Fernando Gomes, Marcio Ferreira Moreno & Marcelo Ferreira Moreno(2009), ‘Nested context language (ncl) and ginga-ncl for iptv services’, ITU-T Re-commendation H.761. Acesso em 28 de Março de 2016.URL: http://www.itu.int/rec/T-REC-H.761

Soares, Luiz Fernando Gomes & Rogério Ferreira Rodrigues (2005), Nested context mo-del 3.0 part 1 ? ncm core, Relatório técnico, PUC-Rio.

Soares Neto, Carlos de Salles, Luiz Fernando Gomes Soares & Clarisse Sieckenius Souza(2010), ‘The nested context language reuse features’, Journal of the Brazilian Com-

puter Society 16(4), 229–245.URL: http://dx.doi.org/10.1007/s13173-010-0017-z

Vanoirbeek, Christine, Vincent Quint, Stéphane Sire & Cécile Roisin (2014), ‘Alightweight framework for authoring xml multimedia content on the web’, Multi-

media Tools Appl. 70(2), 1229–1250.URL: http://dx.doi.org/10.1007/s11042-012-1159-0

Page 58: Luar-X: Extensão e Generalização do Sistema de ... · padrões de projetos, linguagens de domínio específico, frameworks e arquiteturas de sis- temas com o objetivo de produzir

REFERÊNCIAS BIBLIOGRÁFICAS 43

W3C (1999a), ‘Xml path language (xpath)’. Acessado em 28 de Março de 2016.URL: http://www.w3.org/TR/xpath/

W3C (1999b), ‘Xsl transformation’. Acessado em 28 de Março de 2016.URL: http://www.w3.org/TR/xslt

W3C (2000), ‘Xquery’. Acessado em 14 de Abril de 2016.URL: https://www.w3.org/XML/Query/

W3C (2001), ‘Svg stands for scalable vector graphics.’. Acessado em 28 de Março de2016.URL: http://www.w3schools.com/svg/default.asp

W3C (2004), ‘Xml schema part 0: Primer second edition’. Acessado em 28 de Março de2016.URL: http://www.w3.org/TR/xmlschema-0/

W3C (2005), ‘Javascript web apis’. Acessado em 27 de Abril de 2016.URL: https://www.w3.org/standards/webdesign/script

W3C (2008), ‘Extensible markup language (xml)’. Acessado em 27 de Abril de 2016.URL: https://www.w3.org/XML/

W3C (2013), ‘Extensible markup language (xml)’. Acessado em 01 de Abril de 2016.URL: https://www.w3.org/XML/

W3C (2015), ‘Cascading style sheets’. Acessado em 06 de Abril de 2016.URL: http://www.w3.org/TR/CSS

W3C (2016), ‘Javascript web apis’. Acessado em 06 de Abril de 2016.URL: https://www.w3.org/standards/webdesign/script

ZOPE (2010a), ‘Introducing zope’. Acessado em 27 de Abril de 2016.URL: http://docs.zope.org/zope2/zope2book/IntroducingZope.html

ZOPE (2010b), ‘Metal overview’. Acessado em 27 de Abril de 2016.URL: http://docs.zope.org/zope2/zope2book/AppendixC.html#metal-overview

ZOPE (2010c), ‘Tal overview’. Acessado em 27 de Abril de 2016.URL: http://docs.zope.org/zope2/zope2book/AppendixC.html

Page 59: Luar-X: Extensão e Generalização do Sistema de ... · padrões de projetos, linguagens de domínio específico, frameworks e arquiteturas de sis- temas com o objetivo de produzir

Apêndice A

Informações Adicionais

1 <!DOCTYPE HTML>

2 <html>

3 <head>

4 <title> Diogo Henrique </title>

5 <meta http-equiv="content-type" content="text/html; charset=utf-8" />

6 <meta name="description" content="" />

7 <meta name="keywords" content="" />

8 <link href="http://fonts.googleapis.com/css?family=Source+Sans+Pro:400,400italic,700,900" rel="stylesheet" />

9 <!--[if lte IE 8]><script src="js/html5shiv.js"></script><link rel="stylesheet" href="css/ie8.css" /><![endif]-->

10 <script src="js/jquery.min.js"></script>

11 <script src="js/jquery.dropotron.min.js"></script>

12 <script src="js/config.js"></script>

13 <script src="js/skel.min.js"></script>

14 <script src="js/skel-panels.min.js"></script>

15 <noscript>

16 <link rel="stylesheet" href="css/skel-noscript.css" />

17 <link rel="stylesheet" href="css/style.css" />

18 <link rel="stylesheet" href="css/style-desktop.css" />

19 </noscript>

20 </head>

21 <body class="homepage">

22 <div id="header-wrapper" class="wrapper">

23 <div class="container">

24 <div class="row">

25 <div class="12u">

26 <div id="header">

27 <div id="logo">

28 <h1><a href="#"> Diogo Henrique </a></h1>

29 <span class="byline"> Página Pessoal </span>

30 </div>

31 <nav id="nav">

32 <ul>

33 <li class="current_page_item"><a href="#"> Início </a></li>

34 <li><a href="#about"> Sobre </a></li>

35 <li><a href="#professional"> Profissional </a></li>

36 <li><a href="#contact"> Contato </a></li>

37 </ul>

38 </nav>

39 </div>

40 </div>

41 </div>

42 </div>

43 </div>

44 <div id="intro-wrapper" class="wrapper wrapper-style1">

45 <div class="title"><a name="about" style="text-decoration:none;"> Sobre </a></div>

46 <div class="container">

47 <div class="row">

48 <div class="12u">

49 <section id="intro">

50 <p class="style1"> Página pessoal destinada a apresent... </p>

51 </div>

52 </div>

53 </div>

Page 60: Luar-X: Extensão e Generalização do Sistema de ... · padrões de projetos, linguagens de domínio específico, frameworks e arquiteturas de sis- temas com o objetivo de produzir

APÊNDICE A. INFORMAÇÕES ADICIONAIS 45

54 </div>

55 <div class="wrapper wrapper-style2">

56 <div class="title"><a name="professional" style="text-decoration:none;"> Profissional </a></div>

57 <div class="container">

58 <div class="row">

59 <div class="12u">

60 <div id="main">

61 <section id="features">

62 <p class="style1" style="text-align: center; font-size:1.5em;">

63 Doutorando em Engenharia Elétrica e de Computação na UFRN

64 </p>

65 <header class="style1">

66 <h2> Mais informações... </h2>

67 </header>

68 <ul class="actions actions-centered" style="margin-top: 0em;">

69 <li>

70 <a href="http://lattes.cnpq.br/7941421723739379" class="button button-style1 button-big">

71 Lattes

72 </a>

73 </li>

74 <li>

75 <a href="http://br.linkedin.com/pub/d-h-d-b/60/307/71b" class="button button-style2 button-big">

76 Linked-In

77 </a>

78 </li>

79 </ul>

80 </section>

81 </div>

82 </div>

83 </div>

84 </div>

85 </div>

86 <div id="footer-wrapper" class="wrapper">

87 <div class="title"><a name="contact" style="text-decoration:none;"> Contato </a></div>

88 <div class="container">

89 <div class="row">

90 <div class="12u">

91 <div id="footer">

92 <div>

93 <div class="row">

94 <div class="6u">

95 <section class="footer-one">

96 <form method="post" action="#">

97 <div>

98 <div class="row half">

99 <div class="6u">

100 <input type="text" class="text" name="name" id="contact-name" placeholder="Nome" />

101 </div>

102 <div class="6u">

103 <input type="text" class="text" name="name" id="contact-email" placeholder="Email" />

104 </div>

105 </div>

106 <div class="row half">

107 <div class="12u">

108 <textarea name="message" id="contact-message" placeholder="Mensagem"></textarea>

109 </div>

110 </div>

111 <div class="row">

112 <div class="12u">

113 <ul class="actions">

114 <li><input type="submit" class="button button-style1" value="Enviar" /></li>

115 <li><input type="reset" class="button button-style2" value="Limpar" /></li>

116 </ul>

117 </div>

118 </div>

119 </div>

120 </form>

121 </section>

122 </div>

123 <div class="6u">

124 <section class="footer-two">

125 <div class="feature-list feature-list-small">

126 <div>

Page 61: Luar-X: Extensão e Generalização do Sistema de ... · padrões de projetos, linguagens de domínio específico, frameworks e arquiteturas de sis- temas com o objetivo de produzir

APÊNDICE A. INFORMAÇÕES ADICIONAIS 46

127 <div class="row">

128 <div class="6u">

129 <section>

130 <h3 class="fa fa-home"> Endereço </h3>

131 <p>

132 Laboratório Natalnet, DCA, UFRN, <br />

133 Campus Universitário Lagoa Nova, <br />

134 CEP 59078-970 | Natal/RN - Brasil

135 </p>

136 </section>

137 </div>

138 <div class="6u">

139 <section>

140 <h3 class="fa fa-comment"> Social </h3>

141 <p>

142 <a href="http://twitter.com/diogohdb"> Twitter </a><br />

143 <a href="http://facebook.com/diogohdb"> Facebook </a><br />

144 <a href="https://plus.google.com/113790612691620353326"> Google+ </a>

145 </p>

146 </section>

147 </div>

148 </div>

149 <div class="row">

150 <div class="6u">

151 <section>

152 <h3 class="fa fa-envelope"> Email </h3>

153 <p>

154 <a href="#"> [email protected] </a>

155 </p>

156 </section>

157 </div>

158 <div class="6u">

159 <section>

160 <h3 class="fa fa-phone"> Fone </h3>

161 <p>

162 +55 (84) 3215-5555

163 </p>

164 </section>

165 </div>

166 </div>

167 </div>

168 </div>

169 </section>

170 </div>

171 </div>

172 </div>

173 <hr />

174 </div>

175 <div id="copyright">

176 <span>

177 &copy; Escape Velocity. Design by <a href="http://html5up.net/">HTML5 UP</a>.

178 </span>

179 </div>

180 </div>

181 </div>

182 </div>

183 </div>

184 </body>

185 </html>

Código A.1: Descrição gerada pelo modelo completo LPersonalWebPageXHTML

12 <?xml version="1.0" encoding="ISO-8859-1" ?>

3 <ncl id="main_ncl_file" xmlns="http://www.ncl.org.br/NCL3.0/EDTVProfile">

45 <head>

67 <regionBase>

8 <region id="rgSlide" width="100%" height="100%" left="0%" top="0%" />

9 </regionBase>

10

Page 62: Luar-X: Extensão e Generalização do Sistema de ... · padrões de projetos, linguagens de domínio específico, frameworks e arquiteturas de sis- temas com o objetivo de produzir

APÊNDICE A. INFORMAÇÕES ADICIONAIS 47

11 <descriptorBase>

12 <descriptor id="dSlide" region="rgSlide" />

13 </descriptorBase>

1415 <connectorBase>

16 <causalConnector id="onKeySelectionStartStop">

17 <connectorParam name="keyCode" />

18 <simpleCondition role="onSelection" key="$keyCode" max="unbounded" qualifier="and" />

19 <compoundAction operator="par">

20 <simpleAction role="stop" max="unbounded" qualifier="par" />

21 <simpleAction role="start" max="unbounded" qualifier="par" />

22 </compoundAction>

23 </causalConnector>

24 <causalConnector id="onKeySelectionStop">

25 <connectorParam name="keyCode" />

26 <simpleCondition role="onSelection" key="$keyCode" max="unbounded" qualifier="and" />

27 <simpleAction role="stop" max="unbounded" />

28 </causalConnector>

29 </connectorBase>

3031 </head>

3233 <body>

3435 <port id="pStart" component="img1" />

3637 <media id="img1" src="image/img1.jpg" descriptor="dSlide" />

38 <media id="img2" src="image/img2.jpg" descriptor="dSlide" />

39 <media id="img3" src="image/img3.jpg" descriptor="dSlide" />

40 <media id="img4" src="image/img4.jpg" descriptor="dSlide" />

4142 <link xconnector="onKeySelectionStartStop" id="lkimg1Next">

43 <bind component="img1" role="onSelection">

44 <bindParam name="keyCode" value="CURSOR_LEFT" />

45 </bind>

46 <bind component="img1" role="stop" />

47 <bind component="img4" role="start" />

48 </link>

4950 <link xconnector="onKeySelectionStartStop" id="lkimg1Previous">

51 <bind component="img1" role="onSelection">

52 <bindParam name="keyCode" value="CURSOR_RIGHT" />

53 </bind>

54 <bind component="img1" role="stop" />

55 <bind component="img2" role="start" />

56 </link>

5758 <link xconnector="onKeySelectionStop" id="lkimg1CloseApp">

59 <bind component="img1" role="onSelection">

60 <bindParam name="keyCode" value="RED" />

61 </bind>

62 <bind component="img1" role="stop" />

63 </link>

6465 <link xconnector="onKeySelectionStartStop" id="lkimg2Next">

66 <bind component="img2" role="onSelection">

67 <bindParam name="keyCode" value="CURSOR_LEFT" />

68 </bind>

69 <bind component="img2" role="stop" />

70 <bind component="img1" role="start" />

71 </link>

7273 <link xconnector="onKeySelectionStartStop" id="lkimg2Previous">

74 <bind component="img2" role="onSelection">

75 <bindParam name="keyCode" value="CURSOR_RIGHT" />

76 </bind>

77 <bind component="img2" role="stop" />

78 <bind component="img3" role="start" />

79 </link>

8081 <link xconnector="onKeySelectionStop" id="lkimg2CloseApp">

82 <bind component="img2" role="onSelection">

83 <bindParam name="keyCode" value="RED" />

Page 63: Luar-X: Extensão e Generalização do Sistema de ... · padrões de projetos, linguagens de domínio específico, frameworks e arquiteturas de sis- temas com o objetivo de produzir

APÊNDICE A. INFORMAÇÕES ADICIONAIS 48

84 </bind>

85 <bind component="img2" role="stop" />

86 </link>

8788 <link xconnector="onKeySelectionStartStop" id="lkimg3Next">

89 <bind component="img3" role="onSelection">

90 <bindParam name="keyCode" value="CURSOR_LEFT" />

91 </bind>

92 <bind component="img3" role="stop" />

93 <bind component="img2" role="start" />

94 </link>

9596 <link xconnector="onKeySelectionStartStop" id="lkimg3Previous">

97 <bind component="img3" role="onSelection">

98 <bindParam name="keyCode" value="CURSOR_RIGHT" />

99 </bind>

100 <bind component="img3" role="stop" />

101 <bind component="img4" role="start" />

102 </link>

103104 <link xconnector="onKeySelectionStop" id="lkimg3CloseApp">

105 <bind component="img3" role="onSelection">

106 <bindParam name="keyCode" value="RED" />

107 </bind>

108 <bind component="img3" role="stop" />

109 </link>

110111 <link xconnector="onKeySelectionStartStop" id="lkimg4Next">

112 <bind component="img4" role="onSelection">

113 <bindParam name="keyCode" value="CURSOR_LEFT" />

114 </bind>

115 <bind component="img4" role="stop" />

116 <bind component="img3" role="start" />

117 </link>

118119 <link xconnector="onKeySelectionStartStop" id="lkimg4Previous">

120 <bind component="img4" role="onSelection">

121 <bindParam name="keyCode" value="CURSOR_RIGHT" />

122 </bind>

123 <bind component="img4" role="stop" />

124 <bind component="img1" role="start" />

125 </link>

126127 <link xconnector="onKeySelectionStop" id="lkimg4CloseApp">

128 <bind component="img4" role="onSelection">

129 <bindParam name="keyCode" value="RED" />

130 </bind>

131 <bind component="img4" role="stop" />

132 </link>

133134 </body>

135 </ncl>

Código A.2: Descrição gerada pelo modelo completo LSlideShowNCL-luarx-js

Page 64: Luar-X: Extensão e Generalização do Sistema de ... · padrões de projetos, linguagens de domínio específico, frameworks e arquiteturas de sis- temas com o objetivo de produzir

Apêndice B

XML - eXtensible Markup Language

A XML é uma recomendação da W3C para gerar linguagens de marcações. A lin-guagem surgiu da necessidade que os desenvolvedores tinham em construir documentoscompatíveis com quaisquer computadores e sistemas ao redor do mundo. Ela é um dossubtipos da SGML (Standard Generalized Markup Language), criada pela IBM (Inter-

national Business Machines), capaz de descrever diversos tipos de dados. Seu principalobjetivo é o compartilhamento de informações por meio da Internet. [W3C 2013]

Na década de 90 houve a necessidade de utilizar uma linguagem de marcação queseria implantada na Web. A SGML era candidata apesar de sua complexidade e difícilutilização. Em 1992, a HTML foi desenvolvida por Tim Berners Lee e Robert Caillau noCentro Europeu de Pesquisas de Física de Partículas, que era uma aplicação da SGML,uma forma de representar visualmente os documentos no navegador Web e que tambémera fácil e simples de ser utilizada, por isso logo se tornou popular. [W3C 2013]

A HTML tinha limitações. A Web é um lugar onde se pode compartilhar todos ostipos de informações: vídeos, áudios, fotos, textos e vários outros recursos multimídia,e o HTML não suportava todas essas operações. Era preciso criar uma linguagem demarcação flexível e extensível, que possuísse os mesmos recursos que o SGML e a mesmaaceitação que o HTML, já que o HTML era compatível com programas de todo o mundo.Esta linguagem também deveria ser mais simples de utilizar do que o SGML, que eramuito complexo e por isso tinha pequena aceitação por parte dos desenvolvedores. [W3C2013]

Em meados dos anos 90, a W3C, entidade responsável pela definição da área gráfica daInternet, começou a construir uma linguagem que resolveria esses problemas, superandoas limitações do SGML e do HTML. Foi então que surgiu por volta de 1998 a XML.[W3C 2013]

Por meio da XML desenvolvedores podem criar suas aplicações em qualquer lingua-gem de programação e representar as informações geradas por suas aplicações fazendo

Page 65: Luar-X: Extensão e Generalização do Sistema de ... · padrões de projetos, linguagens de domínio específico, frameworks e arquiteturas de sis- temas com o objetivo de produzir

APÊNDICE B. XML - EXTENSIBLE MARKUP LANGUAGE 50

uso de documentos em XML, que seriam reconhecidos ao redor do mundo. A linguagemXML utiliza tags assim como a HTML, mas suas tags são definidas pelo usuário, nãosendo predefinidas como no HTML. Assim, o usuário define suas tags e palavras chavesdelimitando seu próprio texto. A XML é compatível com diversos conjuntos de caracte-res, sendo possível fazer uso de caracteres especiais em quaisquer idiomas. [W3C 2013]

Entre linguagens baseadas em XML incluem-se XHTML, RDF (Resource Descrip-

tion Framework), SDMX (Statistical Data and Metadata eXchange), SMIL (Synchro-

nized Multimedia Integration Language), MathML (Mathematical Markup Language),NCL, XBRL (eXtensible Business Reporting Language), XSIL (Extensible Scientific In-

terchange Language), XDMF e SVG. A principal característica do XML, de criar umainfraestrutura única para diversas linguagens, é que linguagens pouco utilizadas e conhe-cidas também podem ser definidas sem grande esforço e necessidade de serem submetidasaos comitês de padronização.

B.0.1 Objetivos principais da linguagem

No princípio, a ideia do projeto da XML era a criação de uma linguagem flexívele extensível que pudesse ser lida por software e integrar-se com outras linguagens deprogramação. Os objetivos da XML são:

• Separação do conteúdo da formatação;• Simplicidade e legibilidade, tanto para humanos quanto para computadores;• Possibilidade de definição de tags sem limitação para estruturação de documentos;• Especificação formal para marcação de documentos;• Interligação de bancos de dados distintos;• Concentração na estrutura da informação, e não na sua aparência;• Independência de hardwares, softwares, sistemas operacionais e/ou formatos de

arquivos.

B.0.2 Características da linguagem

A XML possui três características principais: ser um protocolo para conter e geren-ciar informações; uma tecnologia capaz de formatar e filtrar dados e tratar informaçõesrefinando-as à sua forma mais estruturada. [Ray 2001]

Page 66: Luar-X: Extensão e Generalização do Sistema de ... · padrões de projetos, linguagens de domínio específico, frameworks e arquiteturas de sis- temas com o objetivo de produzir

APÊNDICE B. XML - EXTENSIBLE MARKUP LANGUAGE 51

Regras Básicas

A linguagem não define tags para marcações, o usuário é responsável por isso. AXML possui regras para a descrição das marcações. As regras básicas são: [Fornari 2003]

1. O documento XML precisa ter um ou vários elementos.2. A linguagem é case sensitive e não permite que o nome das tags iniciem com nú-

meros.3. A identificação de um elemento é igual na marcação inicial e na marcação final. A

marcação final deve possuir uma barra (/) antes do nome da tag.4. Existe um único elemento, o raiz, que não deve fazer parte do conteúdo de qualquer

elemento.5. Os elementos, delimitados pelas marcações inicial e final, devem estar aninhados.6. O texto entre as marcações inicial e final é o conteúdo do elemento.7. O nome dos elementos podem conter letras, números, hífens ou underline.8. Os nomes dos elementos que começam com XML ou outra combinação dessa pa-

lavra são reservados por padrão.9. Os elementos podem conter nenhum, um ou vários atributo(s). O nome do atributo

é separado do seu valor pelo sinal de igualdade (=). Os caracteres permitidos sãoos mesmos dos elementos. O valor do atributo deve estrar entre apóstrofos (‘ ’) ouaspas duplas (“ ”). Se apóstrofo ou aspas duplas forem usadas no valor do atributo,então o delimitador será o contrário.

10. Caracteres especiais como <, >, &, ” e ’ são escritos como &lt;, &gt;, &amp;,&quot; e &apos; respectivamente.

11. Os comentários podem ser descritos em qualquer lugar do documento utilizando oformato <!- - comentário - ->.

12. Os documentos XML devem iniciar com uma declaração que especifica a versão doXML e do conjunto de caracteres utilizados pelo documento.

Elementos Básicos

O documento XML é composto por três partes bem definidas: o conteúdo dos dados,que são informações disposta entre as marcações; a estrutura, que define a organizaçãodos elementos do documento, e a apresentação, que é a forma das informações seremapresentadas ao leitor. [Furgeri 2001]

A estrutura de um documento XML é organizada por alguns elementos que juntosformam o conteúdo do documento. Esses elementos são as tags, o elemento raiz, as

Page 67: Luar-X: Extensão e Generalização do Sistema de ... · padrões de projetos, linguagens de domínio específico, frameworks e arquiteturas de sis- temas com o objetivo de produzir

APÊNDICE B. XML - EXTENSIBLE MARKUP LANGUAGE 52

instruções de processamento, os comentários, as entidades, os atributos, a declaração dotipo de documento e as seções CDATA. [Furgeri 2001]

As tags são marcadores definidos pelos usuários para conter as informações e daro significado dos dados armazenados, tornando-se os principais elementos de um docu-mento XML. [Furgeri 2001]

O elemento raiz é a marcação principal que contém todo o conteúdo do documento.A partir dele todas as marcações definidas podem ser utilizadas. [Furgeri 2001]

As instruções de processamento são elementos utilizados para informar detalhes àsferramentas que procederão com a interpretação do documento XML. Assim é possívelque o autor passe informações para o software que interpretará o documento. [Furgeri2001]

A XML possui comentários, como todas as linguagens de programação, que permiteao autor descrever detalhes sobre o documento ou partes deste. [Furgeri 2001]

As entidades são blocos de texto que são utilizados no documento ao reconhecer de-terminada marcação. Os interpretadores substituem a entidade referenciada pelo seu con-teúdo. [Furgeri 2001]

Os atributos permitem a descrição e caracterização de propriedades nas marcaçõespresentes no documento XML. [Furgeri 2001]

A declaração do tipo de documento (DTD) é uma instrução no documento XML queaponta para outro documento que é utilizado para verificar se todas as marcações usadasestão seguindo um determinado padrão. [Furgeri 2001]

As seções CDATA possibilitam a utilização de caracteres reservados no conteúdo dodocumento XML. [Furgeri 2001]

Um documento XML é válido, ou bem formado, se seguir todas as regras e recomen-dações descritas anteriormente [Furgeri 2001]. O código B.1 apresenta o exemplo de umdocumento XML bem formado.

1 <?xml version="1.0" encoding="utf-8"?>

2 <instituicao>

3 <funcionario id="12345" >

4 <cargo> Professor </cargo>

5 <nome> Diogo Henrique </nome>

6 <curso> Engenharia de Computação </curso>

7 </funcionario>

8 </instituicao>

Código B.1: Exemplo de documento XML

No código B.1 a linha 1 define a versão XML e a codificação dos caracteres no do-cumento. As linhas 2 e 8 possuem a marcação de início e término do elemento raiz. O

Page 68: Luar-X: Extensão e Generalização do Sistema de ... · padrões de projetos, linguagens de domínio específico, frameworks e arquiteturas de sis- temas com o objetivo de produzir

APÊNDICE B. XML - EXTENSIBLE MARKUP LANGUAGE 53

conteúdo do documento está compreendido entre as linhas 3 e 7 e existem marcações queindicam dados de um determinado funcionário em uma instituição.