Slide 1

Slide 1 text

No content

Slide 2

Slide 2 text

Jean Carlo Emer Prof. Dr. Carlos Alberto Heuser ORIENTADOR ALUNO MIGRANDO APLICAÇÕES WEB PARA PLATAFORMAS ABERTAS: UM ESTUDO DE CASO

Slide 3

Slide 3 text

INTRODUÇÃO 1.

Slide 4

Slide 4 text

Estudo de caso de migração da aplicação: Sistema de busca e exibição de dados georreferenciados, 2009 A aplicação é escrita em ASP.NET e utiliza banco de dados SQL Server.

Slide 5

Slide 5 text

Objetivo Analisar e justificar o processo de migração da aplicação para tecnologias de código aberto.

Slide 6

Slide 6 text

INSUMOS E CONCEITOS RELACIONADOS 2.

Slide 7

Slide 7 text

Code Standards Convenções que indicam como o código deve ser escrito. Garantia de que grandes aplicações sejam programadas com um estilo consistente.

Slide 8

Slide 8 text

Design Patterns Solução geral e reutilizável para um problema recorrente. O padrão Model-view- controller serviu como base para o desenvolvimento da aplicação.

Slide 9

Slide 9 text

Google Maps Visualização de mapas e imagens de satélite da empresa Google. O serviço oferece uma API que permite a criação de aplicações baseadas em localização.

Slide 10

Slide 10 text

Busca de dados por similaridade Técnica de busca por aproximação de strings. Otimização das consultas através da técnica de Qgrams.

Slide 11

Slide 11 text

Qgrams O valor “colony” gera: ##c #co col olo lon ony ny$ n$$ 1. 2. 3. 4. 5. 6. 7. 8.

Slide 12

Slide 12 text

R1.Ao, R2.Ao, R1.Ai, R2.Aj R1, R1AiQ, R2, R2AjQ R1.Ao = R1AiQ.Ao AND R2.Ao = R2AjQ.Ao AND R1AiQ.Qgram = R2AjQ.Qgram AND |R1AiQ.Pos - R2AjQ.Pos| ≤ k AND |strlen(R1.Ai) – strlen(R2.Aj)| ≤ k R1.Ao, R2.Ao, R1.Ai, R2.Aj COUNT(*) ≥ strlen(R1.Ai) – 1 – (k – 1) * q AND COUNT(*) ≥ strlen(R2.Aj) – 1 – (k – 1) * q AND edit_distance(R1.Ai, R2.Aj, k) SELECT FROM WHERE GROUP BY HAVING

Slide 13

Slide 13 text

R1.Ao, R2.Ao, R1.Ai, R2.Aj R1, R1AiQ, R2, R2AjQ R1.Ao = R1AiQ.Ao AND R2.Ao = R2AjQ.Ao AND R1AiQ.Qgram = R2AjQ.Qgram AND |R1AiQ.Pos - R2AjQ.Pos| ≤ k AND |strlen(R1.Ai) – strlen(R2.Aj)| ≤ k R1.Ao, R2.Ao, R1.Ai, R2.Aj COUNT(*) ≥ strlen(R1.Ai) – 1 – (k – 1) * q AND COUNT(*) ≥ strlen(R2.Aj) – 1 – (k – 1) * q AND edit_distance(R1.Ai, R2.Aj, k) SELECT FROM WHERE GROUP BY HAVING Junção das tabelas que se deseja comparar com suas respectivas tabelas auxiliares que contém os valores de q-gram. Em seguida, os qgrams das tabelas auxiliares estabelecem igualmente uma junção.

Slide 14

Slide 14 text

R1.Ao, R2.Ao, R1.Ai, R2.Aj R1, R1AiQ, R2, R2AjQ R1.Ao = R1AiQ.Ao AND R2.Ao = R2AjQ.Ao AND R1AiQ.Qgram = R2AjQ.Qgram AND |R1AiQ.Pos - R2AjQ.Pos| ≤ k AND |strlen(R1.Ai) – strlen(R2.Aj)| ≤ k R1.Ao, R2.Ao, R1.Ai, R2.Aj COUNT(*) ≥ strlen(R1.Ai) – 1 – (k – 1) * q AND COUNT(*) ≥ strlen(R2.Aj) – 1 – (k – 1) * q AND edit_distance(R1.Ai, R2.Aj, k) SELECT FROM WHERE GROUP BY HAVING O filtro por posição elimina quaisquer pares de qgrams em comum que estabeleçam uma distância superior a desejada. O filtro por tamanho simplesmente compara o tamanho das strings.

Slide 15

Slide 15 text

R1.Ao, R2.Ao, R1.Ai, R2.Aj R1, R1AiQ, R2, R2AjQ R1.Ao = R1AiQ.Ao AND R2.Ao = R2AjQ.Ao AND R1AiQ.Qgram = R2AjQ.Qgram AND |R1AiQ.Pos - R2AjQ.Pos| ≤ k AND |strlen(R1.Ai) – strlen(R2.Aj)| ≤ k R1.Ao, R2.Ao, R1.Ai, R2.Aj COUNT(*) ≥ strlen(R1.Ai) – 1 – (k – 1) * q AND COUNT(*) ≥ strlen(R2.Aj) – 1 – (k – 1) * q AND edit_distance(R1.Ai, R2.Aj, k) SELECT FROM WHERE GROUP BY HAVING O filtro de contagem é implementado, os pares de strings que compartilham somente alguns q-grams são eliminados. Por fim, o conjunto candidato pode ainda conter falsos positivos. por isso o uso de edit_distance(R1.Ai, R2.Aj, k).

Slide 16

Slide 16 text

Geo Colony 1.0 Contempla cerca de 21k lotes de colônias italianas e alemãs do Rio Grande do Sul. A seu desfavor, necessita do licenciamento e uso de tecnologias proprietárias.

Slide 17

Slide 17 text

No content

Slide 18

Slide 18 text

O Instituto de Informática da UFRGS não possui infra estrutura de servidores com as licenças de software requeridas. A necessidade exposta pelo Prof. Dr. Carlos Heuser é a migração da aplicação para tecnologias open source.

Slide 19

Slide 19 text

Tecnologias back end Framework Fuel PHP, flexível e modular, escrito para PHP 5.3+ no padrão HMVC. SGBD MySQL que é compatível com a linguagem SQL:1999.

Slide 20

Slide 20 text

Tecnologias front end Stylus para pré-processar CSS e CoffeeScript que adiciona syntactic sugar para o JavaScript. Backbone para bem estruturar aplicações e Web Storage para persistir dados do usuário.

Slide 21

Slide 21 text

MODELO DA APLICAÇÃO 3.

Slide 22

Slide 22 text

No content

Slide 23

Slide 23 text

Painel de territórios Lista dos territórios que estão sendo mostrados no mapa.

Slide 24

Slide 24 text

Pesquisa por colônia, linha e localidade Dois tipos de busca, uma delas correspondendo com a localização cidades.

Slide 25

Slide 25 text

Pesquisa por proprietários A busca dos proprietários é feita por similaridade.

Slide 26

Slide 26 text

Informações do lote Dados históricos, geoprocessamento e proprietários do lote.

Slide 27

Slide 27 text

IMPLEMENTAÇÃO DA APLICAÇÃO 4.

Slide 28

Slide 28 text

Escolha das plataformas PHP e MySQL são tecnologias de código aberto e multi- plataforma que constituem uma configuração comum em servidores. Bibliotecas de front end para aplicar design patterns.

Slide 29

Slide 29 text

Reescrita da aplicação A aplicação adota novas linguagens e design patterns que inviabilizaram uma evolução do código da aplicação anterior. O uso de Backbone no front end implica uma nova estruturação.

Slide 30

Slide 30 text

Metodologia de desenvolvimento Entregas frequentes, simplicidade e software em funcionamento mais que documentação abrangente são algumas das bases do Manifesto Ágil.

Slide 31

Slide 31 text

No content

Slide 32

Slide 32 text

Back end da aplicação Segue o padrão (H)MVC definindo routes, controllers e models. Busca por similaridade provida pela classe Qgram Search.

Slide 33

Slide 33 text

Modelo de dados Os lotes possuem várias chaves para se conectar aos demais dados de: colônia, linha, núcleo, seção, lado/ala, fonte da informação e cidade atual.

Slide 34

Slide 34 text

Comportamento do front end da aplicação Possui models, collections e views apoiados na biblioteca Backbone. Uma classe de Storage armazena os territórios no browser do cliente.

Slide 35

Slide 35 text

No content

Slide 36

Slide 36 text

Apresentação do front end da aplicação Escrita na linguagem Stylus, que posteriormente gera um único arquivo CSS. A biblioteca Nib auxilia na representação homogênia entre os diferentes browsers.

Slide 37

Slide 37 text

MIGRAÇÃO DOS DADOS 5.

Slide 38

Slide 38 text

Aplicativo SQLyog Através de ODBC, é possível estabelecer conexão com um banco SQL Server para importar os dados.

Slide 39

Slide 39 text

Validando a importação Além de uma série de verificações empíricas, a contagem da quantidade de linhas importadas e o log resultado da importação foram analisados.

Slide 40

Slide 40 text

No content

Slide 41

Slide 41 text

CONCLUSÃO 6.

Slide 42

Slide 42 text

Métodos ágeis Histórias de usuário auxiliaram a atender aos requisitos essenciais da primeira versão da aplicação e, ao mesmo tempo, inserir melhorias.

Slide 43

Slide 43 text

Design Patterns e Code Standards Muitas bibliotecas open source utilizadas, todas aplicadas de maneira a privilegiar a organização e facilitar futuras evoluções.

Slide 44

Slide 44 text

Trabalhos futuros Dois outros trabalhos já foram feitos com base na primeira versão da aplicação. Este trabalho já prevê o acoplamento destas evoluções de maneira trivial.

Slide 45

Slide 45 text

REFERÊNCIAS

Slide 46

Slide 46 text

DOS SANTOS, Vinicius Rosa. Sistema de busca e exibição de dados georreferenciados. Novembro de 2009. SCOTT, Hanselman. Building Web Apps with ASP.NET. Disponível em: http:// www.hanselman.com/blog/ BuildingWebAppsWithASPNETJumpStart8HoursOfFREETrainingVideos.aspx. Acesso em: Maio de 2013. SQL SERVER. Disponível em: http://www.microsoft.com/en-us/sqlserver/default.aspx. Acesso em: Maio 2013 PHP. Disponível em: http://php.net. Acesso em: Maio de 2013 MYSQL. Disponível em: http://www.mysql.com. Acesso em: Maio de 2013 KHAN, Tamuir. Getting Started with Stylus - CSS Pre-Processor. Disponível em: http:// bootstrap.pk/tutorials/getting-started-with-stylus-css-pre-processor. Acesso em: Maio de 2013. COFFEESCRIPT. Disponível em: http://coffeescript.org. Acesso em: Maio de 2013. MOZILLA. JavaScript Overview. Disponível em: https://developer.mozilla.org/en-US/docs/ JavaScript/Guide/JavaScript_Overview. Acesso em: Maio de 2013. NODEJS. Disponível em: http://nodejs.org. Acesso em: Maio de 2013.

Slide 47

Slide 47 text

GOOGLE. Disponível em: http://maps.google.com. Acesso em: Abril de 2013. GIT. Disponível em: http://git-scm.com. Acesso em: Maio de 2013. GRAVANO, Luis; et. al. Approximate String Joins in a Database (Almost) for Free. Proceedings of the 27th International Conference on Very Large Data Bases. San Francisco, CA, EUA. ACM 2001. p. 491-500. SOMMERVILLE, Ian. Software engineering. 9.ed. Boston: Addison-Wesley, 2009. BUSCHMANN, Frank. Pattern-Oriented Software Architecture. Disponível em: http://st- www.cs.illinois.edu/users/smarch/st-docs/mvc.html. Acesso em: Abril de 2013. PILGRIM, Mark. Dive Into HTML5. Disponível em: http://diveintohtml5.info. Acesso em: Abril de 2013. NAZZARO, William F., e SUSCHECK, Charles. New to user stories?. Disponível em: http:// www.scrumalliance.org/articles/169-new-to-user-stories. Acesso em: Abril de 2013. BECK, Kent. et al. Manifesto for Agile Software Development. Disponível em: http:// www.agilemanifesto.org. Acesso em: Abril de 2013. ARAÚJO, Fabrício. Vantagens e desvantagens do PHP. Disponível em: http:// www.inforlogia.com/vantagens-e-desvantagens-do-php. Acesso em: Abril de 2013.

Slide 48

Slide 48 text

MURPHEY, Rebecca. A Baseline for Front-End Developers. Disponível em: http:// rmurphey.com/blog/2012/04/12/a-baseline-for-front-end-developers. Acesso em: Abril de 2013. LITTLE, Gary. InfoBox. Disponível em http://google-maps-utility-library-v3.googlecode.com/ svn/trunk/infobox/docs/reference.html. Acesso em Abril de 2013. MEYER, Kathryn. CSS Tools: Reset CSS. Disponível em: http://meyerweb.com/eric/tools/css/ reset. Acesso em Abril de 2013. SINDOL, 2011. SQL Sever Row Count for all Tables in a Database. Disponível em http:// www.mssqltips.com/sqlservertip/2537/sql-server-row-count-for-all-tables-in-a-database. Acesso em Abril de 2013. LIMA, Douglas de Oliveira. Infra-estrutura para gerenciamento de reputação de usuários e sua aplicação em um caso real. Novembro de 2010. FOLLE, Priscila Azevedo. Editando áreas georreferenciadas no Google Maps. Julho de 2012.