UML2Django: Gerador de Código para Framework Web MVC

Tamanho: px
Começar a partir da página:

Download "UML2Django: Gerador de Código para Framework Web MVC"

Transcrição

1 UNIVERSIDADE DE CAXIAS DO SUL DEPARTAMENTO DE INFORMÁTICA CURSO DE BACHARELADO EM CIÊNCIA DA COMPUTAÇÃO MARCOS D. PETRY UML2Django: Gerador de Código para Framework Web MVC Prof. João L. Tavares Orientador Caxias do Sul, Dezembro de 2008

2 Only two things are infinite, the universe and human stupidity, and I m not sure about the former. Albert Einstein

3 AGRADECIMENTOS... AGRADECIMENTOS

4 SUMÁRIO LISTA DE ABREVIATURAS E SIGLAS LISTA DE FIGURAS LISTA DE TABELAS RESUMO RESUMO INTRODUÇÃO Motivação Objetivos Estrutura do Documento CONCEITOS PRELIMINARES Padrão de desenvolvimento MVC UML Digramas de Classe Frameworks de desenvolvimento de aplicações Exemplos Linguagem de programação Python Exemplos DJANGO Características Persistência de dados (model) Visualização de dados (view) Controle de dados (Controller) Fluxo de Execução

5 4 IMPLEMENTAÇÃO Arquitetura geral da implementação proposta Parâmetros XMI utilizados pelo Parser Mapeamento de objetos XMI - Django Model Análise léxico-sintática Extração do XML Análise semântica Algoritmos de geração EXPERIMENTOS E RESULTADOS Uma Classe Duas Classes sem relacionamento Teste de Herança duas Classes relacionadas classes com vários tipos de relacionamento CONCLUSÃO Validação do projeto Trabalhos Futuros REFERÊNCIAS

6 LISTA DE ABREVIATURAS E SIGLAS TCC XMI UML MVC XML DRY URL GLC Trabalho de Conclusão de Curso XML Metadata Interchange Unified Modeling Language Model-view-controller Extensible Markup Language Don t repeat yourself Uniform Resource Locator Gramática Livre-de-Contexto

7 LISTA DE FIGURAS Figura 1.1: Imagem gerada pelo editor UML Figura 3.1: Estrutura do framework Django Figura 3.2: Fluxo de Execução do Framework Django Figura 4.1: Estrutura do parser XMI2Django Figura 4.2: Diagrama de classes do sistema Figura 5.1: Uml Representnado uma classe Figura 5.2: Uml Representnado duas classes sem relacionamento Figura 5.3: Uml representando herança Figura 5.4: Uml representando duas classes relacionadas Figura 5.5: Uml representando várias classes

8 LISTA DE TABELAS Tabela 4.1: Mapeamento de objetos XMI - Django Model

9 RESUMO UML2Django: Gerador de Código para Framework Web MVC Palavras-chave: UML, VMC, Django, Framework, Python.

10 Uml2Django: Code Generator for Web MVC Framawork RESUMO englishabstract

11 11 1 INTRODUÇÃO A cada dia que passa, a funcionalidade e os recursos dos sistemas produzidos evolui, ao mesmo tempo em que é requerido uma maior agilidade no processo de desenvolvimento dos mesmos. Desenvolver software em um curto período de tempo sempre foi um requisito desejável para programadores e empresas. Vários requisitos, padrões e técnicas são criados diariamente, com a finalidade de aumentar a produção e melhorar o processo de construção de sistemas. Como resultado, foram criados diversas ferramentas e frameworks, vários processos e rotinas repetitivas foram automatizados por eles e o tempo gasto no processo de implementação de fato diminuiu. Em geral, um Framework, assim como web frameworks, proporcionam uma infraestrutura de programação para aplicações, de forma que o projetista possa se concentrar na escrita de código eficiente e de fácil manutenção. Mas ainda há diversos pontos a melhorar, ou pelo menos para facilitar o processo de produção de código de forma automatizada, como por exemplo geração automática de código nativo de um framework a partir do esquema de um diagrama de classes. Os frameworks utilizados atualmente, seguem o padrão MVC (LEFF AVRA- HAM; RAYFIELD, 2001), que é um padrão de arquitetura de aplicações que visa separar a lógica da aplicação (Model), da interface do usuário (View) e do fluxo da aplicação (Controller). O uso deste tipo de framework permite que a mesma lógica de negócios possa ser acessada e visualizada por várias interfaces. Neste trabalho adotamos o framework Django 1 (MAURER, 2006), que utiliza o padrão MVC e também sua arquitetura de desenvolvimento estimula o desenvolvedor a aproveitar ao máximo o código já feito, evitando a repetição. Como o objetivo de melhorar o processo de desenvolvimento com Django, este trabalho propõe-se a gerar camada Model do framework Django, através de códigos XML s gerados por editores de diagramas de classe, permitindo assim além de aumentar a velocidade de desenvolvimento de aplicações, a geração e documentação básica do sistema. 1

12 Motivação O Framework escolhido, o Django, recentemente ganhou bastante notoriedade no mundo do software livre, devido a sua praticidade no desenvolvimento de aplicações, foi adotado em diversas empresas e instituições, como por exemplo o Google, Governo Brasileiro e a Universidade de Caxias do Sul. Django é um framework web de alto nível escrito em Python que estimula o desenvolvimento rápido e limpo, concentrando-se no máximo de automatização possível, aderindo ao princípio DRY (Don t repeat yourself). Eliminando processos repetitivos como criação e autenticação de formulários e também a geração automática de interface de administração, mecanismos de cache e internacionalização. Atualmente, o desenvolvimento de aplicações em Django não possui nenhuma ferramenta que gere código a partir de editores, a camada de modelagem é escrita manualmente. Desse modo se a equipe necessitar de algum tipo de documentação, como por exemplo um diagrama de classes, ela terá que repetir o processo de construção novamente. Atualmente existem uma série de aplicativos de geração de código, mas não para Python 2, linguagem do Framework escolhido. A escolha de ferramentas de Geração de Diagramas de classes foi definida tendo como base dois critérios: ser software livre e possuir exportação para XMI. Foram encontradas as seguintes ferramentas que possuem estes requisitos: ArgoUML 3 e Umbrello 4. Umbrello UML Modeller permite a modelização de software através de diagramas UML (Unified Modeling Language) originalmente para o ambiente KDE-Linux, com extensões recentes para Windows e MAC. Umbrello manipula todos os tipos de diagramas UML e é capaz de gerar código para algumas linguagens como Java, C++, Python, PHP, entre outras. No entanto, o código Python gerado a partir dos diagramas do Umbrello ainda não são compatíveis com o framwrok Django, necessitanto algumas adaptações manuais que, dependendo do tamanho do projeto, pode tornar inviável sua execução. ArgoUML é um software para modelagem UML escrito em Java. Possibilitando ser instalado em qualquer plataforma com suporte a esta tecnologia. Possui suporte completo para UML 1.4 padrão e oferece excelentes métodos para criação e manipulação dos seus diagramas em UML. Oferece suporte a geração de código Java nativo e para outras linguagens (C++, C e PHP) através de plugins disponibilizados em seu site. Infelizmente, a exportação para código Python está somente nos planos de seus desenvolvedores. As ferramentas acima salvam o diagrama no formato padrão XMI (XML Meta

13 13 data Interchange) (GROUP, 2007), que segundo Eduardo Bezerra, define XMI como sendo: um padrão baseado em XML para exportar modelos definidos em UML. Esse padrão é importante, pois permite a interoperabilidade entre diversas ferramentas CASE: um diagrama produzido em uma ferramenta A pode ser importado para uma ferramenta B de outro fabricante, considerando que os fabricantes A e B são suporte ao padrão XMI (BEZERRA, 2007) 1.2 Objetivos O objetivo principal deste trabalho é o desenvolvimento de uma ferramenta para a geração automática de código Python a partir da modelização de diagramas gerados por ferramentas de modelagem UML. Esta ferramenta visa o aumento de produtividade e também a diminuição da possibilidade de erros de codificação. Nesta proposta, trataremos da implementação desta ferramenta, integrada ao framework Django, com o objetivo de gerar a classe de modelagem do framework web a partir dos diagramas de classes criados pela ferramenta de criação de modelos UML. Basicamente o processo desta geração segue os seguintes passos: 1. Construção dos diagramas de classes em uma interface gráfica (ex. ArgoUML, Umbrello), Por exemplo, o projeto de um diagrama de classes com seus respectivos componentes para definição de atributos, relacionamentos, cardinalidades, etc, conforme a Figura 1, abaixo: Figura 1.1: Imagem gerada pelo editor UML 2. Geração do script XMI, padrão da OMG (grupo de gerenciamento de objetos) OMG:2007, para troca de informações baseado em XML. O uso mais comum é na troca facilitada de metadados entre as ferramentas de modelagem (baseadas no UML). Um exemplo de um fragmento de script XMI é ilustrado abaixo:

14 1 <?xml version = 1.0 encoding = UTF-8?> 2 <XMI xmi.version = 1.2 xmlns:uml = org.omg.xmi.namespace.uml timestamp = Tue Sep 09 13:16:17 BRT 2008 > 3 <XMI.header> <XMI.documentation> 4 <XMI.exporter>ArgoUML (using Netbeans XMI Writer version 1.0)</XMI.exporter> 5 <XMI.exporterVersion>0.24(5) revised on $Date: :55: (Mon, 06 Nov 2006) $ </XMI.exporte 6 </XMI.documentation> 7 &amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp; <XMI.metamodel xmi.name="uml" xmi.version="1.4"/></xmi.h 8 <XMI.content> 9 <UML:Model xmi.id = d55673f:11c47d175d4:-8000: B 10 name = untitledmodel isspecification = false isroot = false isleaf = false 11 isabstract = false > 12 <UML:Namespace.ownedElement> </UML:Namespace.ownedElement> 17 </UML:Model> 18 </XMI.content> 19 </XMI> Tratamento das informações do XML e geração de código no padrão do framework Django. O diagrama exemplificado na Figura X.X produz o seguinte código Python no framework Django: 1 class Pessoa_ (models.Model): 2 endereco = Field() 3 4 class Pessoa(models.Model): 5 nome = models.charfield() 6 cidade = models.charfield() 7 nascimento = models.datefield() 8 enviar_mail = models.booleanfield() 9 endereco = models.foreignkey(pessoa_ ) 1.3 Estrutura do Documento O presente trabalho está dividido em 3 partes:. Na primeira parte, Capítulo 2, serão abordados os conceitos preliminares necessários para o entendimento dos componentes trabalho, onde apresentamos o padrão de desenvolvimento MVC, uma introdução básica sobre a linguagem python e frameworks de desenvolvimento. O capitulo 3 é dedicado ao framework alvo da aplicação, o Django, onde serão descritos detalhes de seus componentes mais usuais e como o padrão MVC é aplicado a ele. No capitulo 4, apresentamos a proposta de implementação deste trabalho, onde será focado o parser implementado no projeto, a estrutura do sistema, os elementos relevantes do arquivo XMI, a gramática utilizada para ler estes elementos e o processo de tradução para a sintaxe da classe Django. O capítulo 5 é destinado a apresentar os testes com o sistema, onde diversos

15 diagramas de classes serão traduzidos para código Python do Django através da ferramenta implementada neste trabalho. O Capítulo 6 é destinado à apreciação das conclusões final bem como das alternativas de continuidade e trabalhos futuros da presente proposta.

16 16 2 CONCEITOS PRELIMINARES Neste Capítulo, introduziremos alguns conceitos fundamentais necessários ao entendimento dos componentes utilizados no trabalho. Na seção 2.1 apresentamos uma breve introdução sobre o padrão de desenvolvimento MVC. Introduzimos algumas explicações sobre UML na seção 2.2. Na seção 2.3 será abordados definições sofre frameworks. E na seção 2.4 será feita uam brave explicação sobre Python, a linguagem utilizada neste trabalho. 2.1 Padrão de desenvolvimento MVC MVC é um padrão de arquitetura de aplicações que visa separar a lógica da aplicação (Model), da interface do usuário (View) e do fluxo da aplicação (Controller). Permite que a mesma lógica de negócios possa ser acessada e visualizada por várias interfaces. O padrão também é utilizado em padrões de projetos de software, entretanto, MVC abrange mais da arquitetura de uma aplicação do que é típico para um padrão de projeto. Em um projeto de software baseado no padrão MVC, define-se uma arquitetura basica com 3 camadas possivelmente abstratas: Model: Implementa o modelo representando a estrutura de baixo nivel do projeto, podendo ser o modelo objeto-relacional que implementa a camada de dados, e ou num caso de MVC de Interface poderia guardar informações de estado dos controles. Controller: Implementa a camada respónsavel pelo gerenciamentos de eventos no projeto, tais como cliques do usuario, chamando a camada Model para processar os eventos, tambem pode manter informações de estado do usuario na aplicação. View: Gera a interface com usuario de modo que esta somente requisite o processamento de eventos pelo Controller.

17 17 Model-view-controller (MVC) é um padrão de arquitetura de software. Com o aumento da complexidade das aplicações desenvolvidas torna-se fundamental a separação entre os dados (Model) e o layout (View). Desta forma, alterações feitas no layout não afectam a manipulação de dados, e estes poderão ser reorganizados sem alterar o layout. O model-view-controller resolve este problema através da separação das tarefas de acesso aos dados e lógica de negócio, lógica de apresentação e de interacção com o utilizador, introduzindo um componente entre os dois: o Controller. MVC é usado em padrões de projeto de software, mas MVC abrange mais da arquitetura de uma aplicação do que é típico para um padrão de projeto. (BEZERRA, 2007) 2.2 UML A uml é uma linguagem visual para modelar sistemas orientados a bojeto. Isso quer dizer que a UML é uma linguagem que define elementos gráficos que podem ser utilizados na modelagem de sistemas. Esses elementos permitem representar os conceitos de orientação a objetos através dos diagramas criados seguindo a notação UML, é possivel representar diversas perspectivas do sistema. Cada elemento grafico da UML possui sintaxe e uma semântica. A sintaxe de um elemento corresponde à forma predeterminada de desenhar o elemento. A semântica define o que significa o elemento e com que objeto ele deve ser utilizado. Tanto a sintaxe quanto a semântica dos elementos são extensíveis. Essa extensibilidade permite que a UML sejá adaptada às características de cada projeto de desenvolvimento. (BEZERRA, 2007) Embora a UML possua diversos diagramas para representar o sistema (atividades, casos de uso, colaboração, seuquncia, entre outros) o sistema desenvolvido utiliza somente diagramas de classe, pois é o diagrama mais indicado para o propósito do mesmo Digramas de Classe Um diagrama de classes basicamente descreve a estrutura de um sistema, mostrando o as classes do sistema, seus atributos, e as relações entre as classes. Cada classe do diagrama possui um conjunto de objetos: Nome da classe, atributos, relacionamentos e métodos

18 Atributos Definição das características da classe, cada elemento de sua lista de atributos possui um nome e um tipo de dado Relacionamentos Um relacionamento representa uma ligação entre classes, é uma ligação binaria (com duas extremidades) onde cada extremidade é ligada a uma classe, através de uma linha. Existem diferentes tipos de relacionamento: Agregação, composição, Herança Métodos Métodos são Função requerida a um objeto ou seja, as ações que os objetos de uma classe pode executar. 2.3 Frameworks de desenvolvimento de aplicações Estamos em uma época onde as informações são recebidas rapidamente, noticias de qualquer parte do mundo chegam as pessoas de forma quase que instantânea. Grande parte dessa informação é veiculada através da WEB. Para isso o desenvolvimento de Aplicação web é algo muito explorado. Apesar da quantidade de ferramentas de desenvolvimento ser bastante grande, implementar aplicações para Internet não é algo trivial. Construir uma aplicação web totalmente funcional a algo bastante trabalhoso. Muitas tarefas são necessárias para que tal feito seja completo: A Configuração e a criação de tabelas em base de dados, criação de consultas e relacionamentos para as mesmas, geração de código HTML, mapear as URL para ler os códigos, controle de usuários, e estes itens são só a parte básica do desenvolvimento. O desenvolvimento para WEB é muito repetitivo, o passos a serem seguidos são praticamente os mesmos para cada nova aplicação a ser criada. Como tentativa de minimizar ao máximo estes repetitivos passos, foram criadas bibliotecas e frameworks para facilitar o desenvolvimento de aplicações, fazendo com que o desenvolvedor se foque basicamente no objetivo do novo sistema. Deixando a cargo do framework manter as tarefas mais maçantes. Um framework é uma camada de abstração na qual um determinado conjunto de códigos implementam uma certa funcionalidade genérica. sendo esta facilmente customizada pelo usuário, criando assim um funcionalidade expecifica. É função do framework também, validar o código criado pelo usuário. Os frameworks para desenvolvimento web geralmente seguem o padrão de arquitetura de sistema MVC para separar as camadas de negócio, persistência e inter-

19 19 face Exemplos A maioria das linguagens voltadas para o desenvolvimento WEB posuem frameworks: Ruby possui um dos mais famosos frameworks WEB da atualidade, o Ruby on Rails. Python possui uma gama consideravel de ferramentas como o Django, TurboGears, pylons, Zope/Plone, web2py entre outros. PHP que é uma das mais utilizadas linguagens para peogramação WEB possui os frameworks CakePHP, CodeIgniter, PRADO, symfony, Zend, entre outros. Perl possui o Catalyst, Maypole, Jifty 2.4 Linguagem de programação Python Python é uma linguagem de programação de alto nível interpretada, interativa, orientada a objetos e de tipagem dinâmica e forte, lançada por Guido van Rossum em Atualmente possui um modelo de desenvolvimento comunitário e aberto gerenciado pela organização sem fins lucrativos Python Software Foundation. Apesar de várias partes da linguagem possuírem padrões e especificações formais, a linguagem como um todo não é formalmente especificada. O padrão de facto é a implementação CPython. A linguagem foi projetada com a filosofia de enfatizar a importância do esforço do programador sobre o esforço computacional. Prioriza a legibilidade do código sobre a velocidade ou expressividade. Combina uma sintaxe concisa e clara com os recursos poderosos de sua biblioteca padrão e por módulos e frameworks desenvolvidos por terceiros Exemplos Através dos exemplo abaixo, é possivel verificar a simplicidade da linguagem: Fibonacci 1 a =1 2 b =1 3 while a < 800: 4 print a, 5 a,b = b,a+b Números Primos 1 ehprimo = True 2 numero = input ( " Informe o numero : " ) 3 i = 2 4 while i < numero : 5 if numero % i == 0: 6 ehprimo = False 7 break

20 20 8 i += 1 9 if ehprimo : 10 print " Primo : ", numero 11 else : 12 print numero, possui fator, i Cálculo de Fatorial 1 n = int ( raw_input ( " Fatorial de : " )) 2 fatorial = 1 3 print " % d! = " %n, 4 i = n 5 while i > 0: 6 fatorial = fatorial * i 7 print " % d " %i, 8 if i!= 1: print ". ", 9 i -= 1

21 21 3 DJANGO Django (DJANGO THE WEB FRAMEWORK FOR PERFECTIONISTS WITH DEADLINES,????) é um framework para desenvolvimento rápido para web, escrito em Python, que utiliza o padrão MVC (model-view-controller). Foi criado originalmente como sistema para gerenciar um site jornalístico na cidade de Lawrence, no Kansas. Tornou-se um projeto de código aberto e foi publicado sob a licença BSD em O nome Django foi inspirado no músico de jazz Django Reinhardt. Django utiliza o princípio DRY (Don t Repeat Yourself), onde faz com que o desenvolvedor aproveite ao máximo o código já feito, evitando a repetição. 3.1 Características Através do ORM 1 do Django é definida a modelagem de dados através de classes em Python, clamadas modelos. Com isso é possível independente de qual banco de dados escolhido, gerar suas tabelas e manipular seus dados sem necessidade de utilizar linguagem SQL, Os Models também possibilitam criar formulários automáticos e gerar uma interface de administração praticamente completa e facilmente configurável e extensível O Django possui uma linguagem de templates muito extensível e amigável. Através dela é possivel fazer a separação de design, conteúdo e código Python Persistência de dados (model) A Classe de Modelagem é basicamente, a fonte de todos os registros no projeto. Ele contém todos os campos essenciais e relações de tudo que é armazenado no Banco de dados. Geralmente, cada modelo de mapeia uma única tabela de dados. 1 Object-relational mapping

22 22 Figura 3.1: Estrutura do framework Django Visualização de dados (view) A visualização dos dados pelos usuário é feita através das views e do templates. São através deles que os dados recebidos pelos models são manipulados. Os acessos aos dados são feitos através das views. As views são as seções do site, nele os dados recebidos pela camada de persistência são apresentados, criados, editados e deletados por scripts python. Por exemplo em uma aplicação de um blog, haveria as seguintes views: Inicio - exibição das 5 ultimas postagens Postagem - página para uma única entrada. Postagem-Comentário - comentários de umas determinada postagem Ano-arquivo - exibe todos os meses com as inscrições no ano determinado. Mês-arquivo - exibe todos os dias com entradas do mês em questão. Dia-arquivo - exibe todas as entradas em determinado dia. O sistema de templates do django, é um modulo que visa separar a apresentação dos dados lógicos do site. O Template define certo espaços onde são definidas laços de repetições, condicionais e outras funcionalidades do django para manipular variaveis passadas pela view. Normalmente, os templates são utilizados para produzir HTML, mas os templates do Django são capazes de gerar qualquer formato de tipo texto Controle de dados (Controller) Entre a camada de visualização e o usuário, há a camada de controle, ela é responsável pelo processamento de ações de requisições e resposta do usuário (Http

23 23 Request e http Response). Para realizar este processamento o Django conta com Middlewares e Url Dispatcher: As middlerares são trechos de código que analisam requisições feitas pelo usuário. Através dele é possível enviar informações pra view de foram transparente ao usuário como por exemplo, detalhes sobre seções e autenticação. Depois de passar pelos middlewares, a requisição é analisada pelo URL Dispatcher, que verifica o endereço que o usuário acessa e verifica se o mesmo conta no arquivo de urls da aplicação. Cada url está associada a uma view, se a url requisitada não se encontra no arquivo um erro 404 é informado. 3.2 Fluxo de Execução Através de um browser, o usuário faz uma requisição a um site Django, de acordo com a url informada, o Framework verifica se a mesma está nos seus registros de URL. Após a localização da URL, uma view correspondente é invocada, a view requisita informações a classe de modelagem que devolve os dados. Com os dados recebidos da classe de modelagem, o Django armazena em variáveis e envia para um template. O template recebe as variáveis da view e renderiza o template no formato desejado (HTML, PDF). A página renderizada é exibida na tela para o usuário. O processo detalhado pode ser visto na Figura 3.2. Figura 3.2: Fluxo de Execução do Framework Django

24 24 4 IMPLEMENTAÇÃO Neste Capítulo abordamos a implementação da proposta de geração de código python no framework Django a partir de modelos de diagramas de classes. Na seção 4.1 introduzimos a arquitetura geral do sistema proposto, mostrando seus componentes principais e seus relacionamentos. Na seção 4.2 mostramos a delimitação do escopo dos elementos XMI tratados pelo nosso gerador. 4.1 Arquitetura geral da implementação proposta A implementação do Parser XMI-DjangoModel foi feita inteiramente utilizando Python, a mesma linguagem do Framework web Django, não foi criada nenhuma interface gráfica, pois não há necessidade para tal. Basicamente o script recebe como parâmetro o arquivo XML e gera a classe de modelagem. Os principais modeladores Figura 4.1: Estrutura do parser XMI2Django de gráficos UML possuem um método de exportação em arquivo texto para que os diagramas criados possam ser acessados em outro modelador. O método que resulta este texto, está escrito em padrão XMI, que nada mais é que um formato definido pela OMG para representação, intercâmbio e partilha de objectos, modelos e meta-modelos utilizando XML. Teoricamente, os dados XMI exportados em um modelador, deverão ser lidos em outro sem maiores problemas, logo o parser do trabalho em questão, irá gerar o código Django independnete de qual modelador UML utilizado, desde que ele exporte o arquivo XMI

25 Parâmetros XMI utilizados pelo Parser Boa parte das tags contidas no XML gerado pelo editor UML não são utilizadas no parser, pois muitas delas são geradas com a finalidade de exportações para outros aplicativos (como por exemplo, outro editore UML). No trabalho em questão são utilizadas, para uma geração correta da classe de modelagem do Django os sequintes elementos: UML: Namespace. ownedelement O elemento r a i z do xmi, é onde todos os i t e n s do diagrama em questã o UML: DataType L i s t a de t i p o s de dados (name, xmi. id ) o UML: Class C l a s s e s do diagrama de c l a s s e s (name, xmi. id ) + UML: C l a s s i f i e r. f e a t u r e # UML: A t t r i b u t e Atributos da c l a s s e (name, xmi. id ) UML: ModelElement. taggedvalue o UML: TaggedValue L i s t a de v a l o r e s marcados + UML: TaggedValue. type # UML: TagDefinition Apontador para o v a l o r ma + UML: TaggedValue. datavalue Valor do Valor Marcado ( name) UML: S t r u c t u r a l F e a t u r e. type o UML: DataType Um apontador para um t i p o de dado ( xm o UML: A s s o c i a t i o n L i s t a de a s s o c i a ç õ e s e n t r e c l a s s e s + UML: A s s o c i a t i o n. connection # UML: AssociationEnd Tipo de a s s o c i a ç ã o ( Composição, agregação, heranç # UML: AssociationEnd. p a r t i c i p a n t L i s t a de o b j e t o s p a r t i c i p a n t e s da a s s o c i a ç ã o, par UML: Class Um apontador para a c l a s s e ( xmi. i d r e f ) # UML: AssociationEnd. m u l t i p l i c i t y UML: M u l t i p l i c i t y

26 26 o UML: M u l t i p l i c i t y. range + UML: MultiplicityRange M u l t i p l i c i d a d e da a s s o c i a ç ã o (1 o UML: TagDefinition Nome do Valor Marcado ( name, xmi. i d ) Abaixo um exemplo de código XMI gerado pelo editor UML, nele está modelado o uml da figura 1, Duas classes, a primeira (Cidade) com um atributo (nome) e a segunda (Estado) com dois atributos (Nome e Zona) e um relacionamento 1:n entre elas. Os itens em negrito são os elementos que são utilizados pelo parser: 1 <?xml version = 1.0 encoding = UTF-8?> 2 <XMI xmi.version = 1.2 xmlns:uml = org.omg.xmi.namespace.uml timestamp = Tue Sep 09 13:16:17 BRT 2008 > 3 <XMI.header> <XMI.documentation> 4 <XMI.exporter>ArgoUML (using Netbeans XMI Writer version 1.0)</XMI.exporter> 5 <XMI.exporterVersion>0.24(5) revised on $Date: :55: (Mon, 06 Nov 2006) $ </XMI.exporterVersio 6 </XMI.documentation> 7 <XMI.metamodel xmi.name="uml" xmi.version="1.4"/></xmi.header> 8 <XMI.content> 9 <UML:Model xmi.id = d55673f:11c47d175d4:-8000: B 10 name = untitledmodel isspecification = false isroot = false isleaf = false 11 isabstract = false > 12 <UML:Namespace.ownedElement> 13 <UML:Class xmi.id = d55673f:11c47d175d4:-8000: C 14 name = Cidade visibility = public isspecification = false isroot = false 15 isleaf = false isabstract = false isactive = false > 16 <UML:Classifier.feature> 17 <UML:Attribute xmi.id = d55673f:11c47d175d4:-8000: F 18 name = nome visibility = public isspecification = false ownerscope = instance 19 changeability = changeable targetscope = instance > 20 <UML:StructuralFeature.multiplicity> 21 <UML:Multiplicity xmi.id = d55673f:11c47d175d4:-8000: BF > 22 <UML:Multiplicity.range> 23 <UML:MultiplicityRange xmi.id = d55673f:11c47d175d4:-8000: BE 24 lower = 1 upper = 1 /> 25 </UML:Multiplicity.range> 26 </UML:Multiplicity> 27 </UML:StructuralFeature.multiplicity> 28 <UML:StructuralFeature.type> 29 <UML:DataType xmi.idref = d55673f:11c47d175d4:-8000: /> 30 </UML:StructuralFeature.type> 31 </UML:Attribute> 32 </UML:Classifier.feature> 33 </UML:Class> 34 <UML:DataType xmi.id = d55673f:11c47d175d4:-8000: name = CharField isspecification = false isroot = false isleaf = false 36 isabstract = false /> 37 <UML:DataType xmi.id = d55673f:11c47d175d4:-8000: name = IntegerField isspecification = false isroot = false isleaf = false 39 isabstract = false /> 40 <UML:Class xmi.id = d55673f:11c47d175d4:-8000: name = Estado visibility = public isspecification = false isroot = false 42 isleaf = false isabstract = false isactive = false > 43 <UML:Classifier.feature> 44 <UML:Attribute xmi.id = d55673f:11c47d175d4:-8000: name = nome visibility = public isspecification = false ownerscope = instance

27 27 46 changeability = changeable targetscope = instance > 47 <UML:StructuralFeature.multiplicity> 48 <UML:Multiplicity xmi.id = d55673f:11c47d175d4:-8000: C1 > 49 <UML:Multiplicity.range> 50 <UML:MultiplicityRange xmi.id = d55673f:11c47d175d4:-8000: C0 51 lower = 1 upper = 1 /> 52 </UML:Multiplicity.range> 53 </UML:Multiplicity> 54 </UML:StructuralFeature.multiplicity&amp;gt; 55 &nbsp; <UML:StructuralFeature.type> 56 <UML:DataType xmi.idref = d55673f:11c47d175d4:-8000: /> 57 </UML:StructuralFeature.type> 58 </UML:Attribute> 59 <UML:Attribute xmi.id = d55673f:11c47d175d4:-8000: AF 60 name = zona visibility = public isspecification = false ownerscope = instance 61 changeability = changeable targetscope = instance > 62 <UML:StructuralFeature.multiplicity> 63 <UML:Multiplicity xmi.id = d55673f:11c47d175d4:-8000: BD > 64 <UML:Multiplicity.range> 65 <UML:MultiplicityRange xmi.id = d55673f:11c47d175d4:-8000: BC 66 lower = 1 upper = 1 /> 67 </UML:Multiplicity.range> 68 </UML:Multiplicity> 69 </UML:StructuralFeature.multiplicity> 70 <UML:StructuralFeature.type> 71 <UML:DataType xmi.idref = d55673f:11c47d175d4:-8000: /> 72 </UML:StructuralFeature.type> 73 </UML:Attribute> 74 </UML:Classifier.feature> 75 </UML:Class> 76 <UML:Association xmi.id = d55673f:11c47d175d4:-8000: C2 77 name = isspecification = false isroot = false isleaf = false isabstract = false > 78 <UML:Association.connection> 79 <UML:AssociationEnd xmi.id = d55673f:11c47d175d4:-8000: C3 80 visibility = public isspecification = false isnavigable = true ordering = unordered 81 aggregation = composite targetscope = instance changeability = changeable > 82 <UML:AssociationEnd.multiplicity> 83 <UML:Multiplicity xmi.id = d55673f:11c47d175d4:-8000: C4 > 84 <UML:Multiplicity.range> 85 <UML:MultiplicityRange xmi.id = d55673f:11c47d175d4:-8000: C5 86 lower = 1 upper = 1 /> 87 </UML:Multiplicity.range> 88 </UML:Multiplicity> 89 </UML:AssociationEnd.multiplicity> 90 <UML:AssociationEnd.participant> 91 <UML:Class xmi.idref = d55673f:11c47d175d4:-8000: C /> 92 </UML:AssociationEnd.participant> 93 </UML:AssociationEnd> 94 <UML:AssociationEnd xmi.id = d55673f:11c47d175d4:-8000: C6 95 visibility = public isspecification = false isnavigable = true ordering = unordered 96 aggregation = none targetscope = instance changeability = changeable > 97 <UML:AssociationEnd.multiplicity> 98 <UML:Multiplicity xmi.id = d55673f:11c47d175d4:-8000: CA > 99 <UML:Multiplicity.range> 100 <UML:MultiplicityRange xmi.id = d55673f:11c47d175d4:-8000: C9 101 lower = 1 upper = -1 /> 102 </UML:Multiplicity.range> 103 </UML:Multiplicity> 104 </UML:AssociationEnd.multiplicity>

28 <UML:AssociationEnd.participant> 106 <UML:Class xmi.idref = d55673f:11c47d175d4:-8000: /> 107 </UML:AssociationEnd.participant> 108 </UML:AssociationEnd> 109 </UML:Association.connection> 110 </UML:Association> 111 </UML:Namespace.ownedElement> 112 </UML:Model> 113 </XMI.content> 114 </XMI> 4.3 Mapeamento de objetos XMI - Django Model O gerador proposto tem como objetivo traduzir elementos XMI em código python segundo o framework Djando. A Tabela 4.1 ilustra os componentes (tags) XMI considerados e sua respectiva tradução no framework Django. Cada linha da tabela poderá ser gerada por uma ou váriás regras de produção gramaticais aliadas à regras semânticas para geração de código Python. Tag XMI UML:Class UML:Attribute UML:DataType UML:Association, UML:AssociationEnd, UML:AssociationEnd.participant, UML:MultiplicityRange UML:TaggedValue.type, UML:TaggedValue.dataValue Django Classe Django Atributo da Classe Django Tipo do atributo Geração de um atributo da classe UML:TagDefinition, Parametros utilizados nos atributos da classe Tabela 4.1: Mapeamento de objetos XMI - Django Model 4.4 Análise léxico-sintática O parser considerado neste projeto é um top-down descendente para gramáticas do tipo LL( 1 ). Para isto, a gramática livre-de-contexto deve estar livre de recursão a esquerda e deve estar fatorada.. Considerando o escopo delimitado na seção 2.2, a gramática livre-de-contexto (GLC) definida aqui compreende apenas a geração de produções relativas aos componentes de representação de Classe, atributos e relacionamentos do padrão XMI. Para tanto, limitamos nossa gramática a estas tags específicas. Além disso, não foi criada nenhuma validação da sintaxe do XMI, pois, partimos do pressuposto que a mesma esteja correta, pois foi gerada através de um sistema já consolidado. 1 Left-to-Right, Leftmost derivation com lookahead

29 29 Como a estrutura do XMI é basicamente uma estrutura em forma de árvore, a gramatica utilizada no parser é bem simples. A seguir apresentamos a GLC proposta em formato BNF: 1 <UML:Namespace.ownedElement> ::= <UML:DataType> <UML:Class> <UML:Association> 2 <UML:DataType> ::= name "=" " " valor " " xmi.id "=" " " valor " " 3 xmi.idref "=" " " valor " " 4 <UML:Class> ::= UML:Classifier.feature name "=" " " valor " " xmi.id "=" " " valor " " 5 xmi.idref = "valor" 6 <UML:Class> ::= UML:Class name "=" " " valor " " xmi.id "=" " " valor " " <UML:Classifier.feature> 7 <UML:Class> ::= UML:Class xmi.idref "=" " " valor " " 8 9 <UML:Classifier.feature> ::= <UML:Attribute> 10 <UML:Attribute> :: = UML:ModelElement.taggedValue UML:StructuralFeature.type" name "=" " " valor " " xmi.id "=" " " val 11 <UML:ModelElement.taggedValue> ::= "UML:TaggedValue" 12 <UML:TaggedValue> :: = "UML:TaggedValue.type" "UML:TaggedValue.dataValue" 13 <UML:TaggedValue.type> ::= "UML:TagDefinition" 14 <UML:TagDefinition> ::= xmi.idref "=" " " valor " " 15 <UML:TaggedValue.dataValue> ::= name "=" " " valor " " 16 <UML:StructuralFeature.type> ::= "UML:DataType" 17 <UML:Association> ::= "UML:Association.connection" 18 <UML:Association.connection> ::= "UML:AssociationEnd" "UML:AssociationEnd.participant" "UML:AssociationEnd.multiplicity" 19 <UML:AssociationEnd> ::= aggregation "=" " " valor " " 20 <UML:AssociationEnd.participant> ::= "UML:Class" 21 <UML:AssociationEnd.multiplicity> ::= "UML:Multiplicity.range" 22 <UML:Multiplicity.range> ::= UML:MultiplicityRange 23 <UML:MultiplicityRange> ::= lower "=" " " valor " " upper "=" " " valor " " Para auxiliar a extração de dados relevantes do XML, foi utilizado o pacote padrão do Python, o xml.dom.minidom. Com ele foi possível tratar os nomes de tags e diferenças entre os atributos das mesmas. Embora existam outros parsers XML escritos em Python, como por exemplo o ElementTree 2 e o BeautifulSoup 3 o pacote padrão da linguagem foi o escolhido. A justificativa desta escolha se deve ao fato do pacote padrão já fazer parte da distribuição atual do Python, sendo assim, o sistema tende manter maior compatibilidade com futuras versões do interpretador Extração do XML Como foi falado anteriormente, a extração dos dados é feita através do pacote xml.dom.minidom. O minidom é uma implementação mais leve da interface 4. É uma implementação masi simples que o DOM padrão e significativamente menor. O Minidom analiza o código no arquivo XML e cria a estrutura DOM, sendo estra mais facil para manipulação dos itens dos arquivos XML. Uma vez tendo o abjeto DOM, é possivel acessar as as partes de seu documento XML através das suas propriedades e métodos. Estas propriedades são definidos na especificação DOM. A principal DOM Document Object Model interface

30 30 propriedade do objeto é a documentelement, é através dela que extraimos uam tag expecífica do XML. O exemplo pode ser visto abaixo: >>> from xml.dom import minidom >>> dom = minidom.parsestring("<myxml>some data</myxml>") >>> dom.documentelement.nodevalue >>> print dom.documentelement.tagname u myxml Busca dos elementos principais do diagrama (classes, tags, tipo de dados e associações) através do item raiz (UML:Namespace.ownedElement) 1 def finditem(raiz,item): 2 return [x for x in raiz.childnodes if x.nodename == item] 3 4 for classe in xmi_classes: 5 nome = classe.attributes.get( name ).value 6 container = finditem(classe, UML:Classifier.feature )[0] 7 xmi_atributos = finditem(container, UML:Attribute ) Extração dos elementos da classe e busca dos atributos da mesma 1 def finditem(raiz,item): 2 return [x for x in raiz.childnodes if x.nodename == item] 3 4 raiz = doc.documentelement.getelementsbytagname( UML:Namespace.ownedElement )[0] #elemento raiz 5 xmi_tipos = finditem(raiz,"uml:datatype") #lista de tipos 6 xmi_tags = finditem(raiz,"uml:tagdefinition") #valores marcados 7 xmi_classes = finditem(raiz,"uml:class") #lista de classes Extrai os atributos de uma classe: 1 def finditem(raiz,item): 2 return [x for x in raiz.childnodes if x.nodename == item] 3 4 xmi_atributos = finditem(container, UML:Attribute ) 5 for att in xmi_atributos: 6 container_tipo = finditem(att, UML:StructuralFeature.type )[0] 7 container_tipo2 = finditem(container_tipo, UML:DataType )[0] 8 nome = att.attributes.get( name ).value 9 valor= lst_tipos.get_nome(container_tipo2.attributes.get( xmi.idref ).value) 4.5 Análise semântica A tradução para código Django, é baseado em uma abordagem chamada Interlíngua, onde é criada uma estrutura intermediaria de estrutura de dados, utilizando programação orientada a objeto escrita em python, para assim gerar o código Django. A interlíngua (DORR, 1993) é uma estrutura de linguagem intermediária

31 31 baseada na existência de um vocabulário comum compartilhado pelas linguagens que serão traduzidas ou vertidas. O pricipal objetivo da Interlíngua é facilitar o relacionamento entre linguagem algo e destino através de estruturas simples que demonstrem a relação entre as duas. Esta abordagem diminui as decisões de parsing feitas durante a construcão da árvore sintática, já que as diferenças estruturais entre as linguagens são limitadas pela estrutura intermediária. O sistema possui a seguinte estrutura de classes: Figura 4.2: Diagrama de classes do sistema De acordo com os dados contidos no arquivo XML, é feita a busca de elementos e extraído os dados relevantes. Estes dados são armazenadas em forma de objetos python de acordo com a figura XX. Quando a leitura estive completa. Os objetos python são lidos e escrito na tela, já no padrão de modelagem da camada Model do Django Algoritmos de geração Classes 1 for cl in self.classes.lista: 2 yield class %s(models.model): % cl.nome Atributos da classe 1 yield class %s(models.model): % cl.nome 2 for att in cl.atributos: 3 extra = "" 4 if len(att.extras): 5 for ex in att.extras: 6 extra+="%s=%s," %(ex[ nome ],ex[ valor ]) 7 yield %s = models.%s(%s) % (att.nome, att.valor,extra[:-1]) Associações da classe 1 for rel in cl.associacoes: 2 extra = ""

32 32 3 if len(rel.extras): 4 for ex in rel.extras: 5 extra+=", %s= %s " %(ex[ nome ],ex[ valor ]) 6 if rel.cardinalidade[0] == * and rel.cardinalidade[1] == * : 7 yield %s = models.manytomanyfield(%s%s) % \ 8 (str.lower(str(rel.classe)), rel.classe, extra) 9 for rel in cl.associacoes: 10 extra = "" 11 if len(rel.extras): 12 for ex in rel.extras: 13 extra+=", %s= %s " %(ex[ nome ],ex[ valor ]) 14 if rel.cardinalidade[0] == * and rel.cardinalidade[1] == * : 15 yield %s = models.manytomanyfield(%s%s) % \ 16 (str.lower(str(rel.classe)), rel.classe, extra) 17 else: 18 yield %s = models.foreignkey(%s%s) % \ 19 (str.lower(str(rel.classe)), rel.classe, extra)

33 33 5 EXPERIMENTOS E RESULTADOS As classes criadas pelo Parser, foram testadas no Django. Foram criados diversos diagramas, contendo uma grande variedade de tipos de dados, atributos, agregações e herança. Em todos os casos abaixo foram gerados códigos, sendo estes perfeitamente apliciados no framework. 5.1 Uma Classe Primeiro teste feito com o Parser, e o mais simples, verifica a classe contida no XML e lista os atributos da classe. Figura 5.1: Uml Representnado uma classe 1 # coding: utf-8 2 # Este ~A c um modulo de auto gera~a ~A o de classes django. 3 4 from django.db import models 5 6 class Pessoa(models.Model): 7 nome = models.charfield(max_length=15) 8 nascimento = models.datefield() 5.2 Duas Classes sem relacionamento Basicamente o mesmo teste que o anterior, mas com uma classe a mais. 1 # coding: utf-8 2 # Este ~A c um modulo de auto gera~a ~A o de classes django. 3

34 34 Figura 5.2: Uml Representnado duas classes sem relacionamento 4 from django.db import models 5 6 class Pessoa(models.Model): 7 nome = models.charfield(max_length=15) 8 nascimento = models.datefield() 5.3 Teste de Herança O teste abaixo foi realizado para gerar a herança entre classes Figura 5.3: Uml representando herança 1 # coding: utf-8 2 # Este ~A c um modulo de auto gera~a ~A o de classes django. 3 4 from django.db import models 5 6 class Pessoa(models.Model): 7 nome = models.charfield(max_length=45) 8

35 35 9 class Fisica(Pessoa): 10 cpf = models.integerfield() class Juridica(Pessoa): 13 cnpj = models.integerfield() 5.4 duas Classes relacionadas Neste caso foi utilizado um relacionamento 1:n, este relacionamento é representado pelo atributo do tipo ForeignKey da classe Django Figura 5.4: Uml representando duas classes relacionadas 1 ## coding: utf-8 2 # Este ~A c um modulo de auto gera~a ~A o de classes django. 3 4 from django.db import models 5 6 class Cidade(models.Model): 7 nome = models.charfield(max_length=15) 8 9 class Estado(models.Model): 10 nome = models.charfield(max_length=25) 11 zona = models.charfield(max_length=2) 12 cidade = models.foreignkey(cidade) classes com vários tipos de relacionamento Neste exeplo foram criadas várias classes e vários relacionamentos, e o resultado foi satisfatório 1 # coding: utf-8 2 # Este ~A c um modulo de auto gera~a ~A o de classes django. 3 4 from django.db import models 5 6 class Estado(models.Model): 7 nome = models.charfield(max_length=10) 8 zona = models.integerfield() 9 10 class Usuario(models.Model):

36 36 Figura 5.5: Uml representando várias classes 11 username = models.charfield(max_length=10) 12 password = models.charfield(max_length=20) class Cidade(models.Model): 15 nome = models.charfield(max_length=30) 16 estado = models.foreignkey(estado) class Pessoa(models.Model): 19 nome = models.charfield(max_length=35) 20 nascimento = models.datefield() 21 cidade = models.foreignkey(cidade) 22 usuario = models.foreignkey(usuario, unique= True ) 23 fotos = models.manytomanyfield(fotos) class Fotos(models.Model): 26 foto = models.imagefield(upload_to= /upload/teste/ ) 27 data = models.datefield(auto_now=true

37 37 6 CONCLUSÃO 6.1 Validação do projeto O principal objetivo deste trabalho foi alcançado. O objetivo central de geral uma classe Django a partir de um diagrama de classes foi completamente atingido. Praticamente todos es elementos que o Model do Django suporta foram extraidos com sucesso. 6.2 Trabalhos Futuros Há interesse de disponibilizar o parser como software livre, tendo como principal interesse, a evolução do sistema adicionando funções novas, melhorias de performance no código e no gerador, uma atualização do mesmo com possiveis mudanças da estrutura de modelagem do framework Django Atualmente há uma projeto de implementação de maquina de workflow em django chamado GoFlow 1. Uma das possibilidade de trabalho futuro, seria a integração de diagramas de estados com uma maquina de workflow. A proposta seria criar diagramas de classe e da mesma forma que hoje, são geradas classes para o sistema seriam gerados, rotinas de workflow. 1

38 38 REFERÊNCIAS BEZERRA, E. Princípios de Análise e Projeto de Sistemas com Uml. [S.l.]: Campus, DJANGO the web framework for perfectionists with deadlines. DORR, B. J. Interlingual machine translation: a parameterized approach. Artificial Intelligence, v.1, n.63, p , GROUP, O. M. MOF 2.0/XMI Mapping, Version , v.1, n.1, LEFF AVRAHAM; RAYFIELD, J. T. Web-Application Development using the Model/View/Controller Design Pattern., v.1, n.1, MAURER, I. Python Web Frameworks, part 1: Develop for the Web with Django and Python., v.1, n.1, july 2006.

UML2Django: Gerador de Código para Framework Web MVC

UML2Django: Gerador de Código para Framework Web MVC UNIVERSIDADE DE CAXIAS DO SUL DEPARTAMENTO DE INFORMÁTICA CURSO DE BACHARELADO EM CIÊNCIA DA COMPUTAÇÃO MARCOS D. PETRY UML2Django: Gerador de Código para Framework Web MVC Prof. João L. Tavares Orientador

Leia mais

Ferramenta para Geração de Código a partir da Especialização do Diagrama de Classes

Ferramenta para Geração de Código a partir da Especialização do Diagrama de Classes Ferramenta para Geração de Código a partir da Especialização do Diagrama de Classes Alexandro Deschamps (Ápice) alexandro@apicesoft.com Everaldo Artur Grahl (FURB/DSC) egrahl@furb.br Resumo. Uma das grandes

Leia mais

Metadados. 1. Introdução. 2. O que são Metadados? 3. O Valor dos Metadados

Metadados. 1. Introdução. 2. O que são Metadados? 3. O Valor dos Metadados 1. Introdução O governo é um dos maiores detentores de recursos da informação. Consequentemente, tem sido o responsável por assegurar que tais recursos estejam agregando valor para os cidadãos, as empresas,

Leia mais

HTML Página 1. Índice

HTML Página 1. Índice PARTE - 1 HTML Página 1 Índice HTML A HISTÓRIA... 2 O COMEÇO E A INTEROPERABILIADE... 3 Primeira Página... 4 Entendendo seu código... 5 Abrindo o código fonte da sua página... 6 Comentários na página...

Leia mais

Ambiente Web PHP Problemas Frameworks CakePHP Symfony Zend Framework Prado CodeIgniter Demonstração O livro

Ambiente Web PHP Problemas Frameworks CakePHP Symfony Zend Framework Prado CodeIgniter Demonstração O livro Desenvolvimento em PHP usando Frameworks Elton Luís Minetto Agenda Ambiente Web PHP Problemas Frameworks CakePHP Symfony Zend Framework Prado CodeIgniter Demonstração O livro Ambiente Web É o ambiente

Leia mais

Ambiente Web PHP Problemas Frameworks CakePHP Symfony Zend Framework Prado CodeIgniter Demonstração

Ambiente Web PHP Problemas Frameworks CakePHP Symfony Zend Framework Prado CodeIgniter Demonstração Desenvolvimento em PHP usando Frameworks Elton Luís Minetto Agenda Ambiente Web PHP Problemas Frameworks CakePHP Symfony Zend Framework Prado CodeIgniter Demonstração Ambiente Web É o ambiente formado

Leia mais

CONSTRUÇÃO DE UM FRAMEWORK PARA O DESENVOLVIMENTO DE APLICAÇÕES WEB

CONSTRUÇÃO DE UM FRAMEWORK PARA O DESENVOLVIMENTO DE APLICAÇÕES WEB ISBN 978-85-61091-05-7 V EPCC Encontro Internacional de Produção Científica Cesumar 27 a 30 de outubro de 2009 CONSTRUÇÃO DE UM FRAMEWORK PARA O DESENVOLVIMENTO DE APLICAÇÕES WEB Lincoln Fernandes Paulino

Leia mais

PÓS-GRADUAÇÃO EM MATEMÁTICA COMPUTACIONAL INFORMÁTICA INSTRUMENTAL Aula 06: Introdução Linguagem HTML

PÓS-GRADUAÇÃO EM MATEMÁTICA COMPUTACIONAL INFORMÁTICA INSTRUMENTAL Aula 06: Introdução Linguagem HTML PÓS-GRADUAÇÃO EM MATEMÁTICA COMPUTACIONAL INFORMÁTICA INSTRUMENTAL Aula 06: Introdução Linguagem HTML O Desenvolvimento Web O desenvolvimento web é o termo utilizado para descrever atividade relacionada

Leia mais

3 Um Modelo de Operações para a web semântica 3.1. Modelo de Operações

3 Um Modelo de Operações para a web semântica 3.1. Modelo de Operações 34 3 Um Modelo de Operações para a web semântica 3.1. Modelo de Operações As classes do Modelo de Operações representam a definição de como deve ser uma operação em uma aplicação, ou seja, quais os valores

Leia mais

Aula 2 Revisão 1. Ciclo de Vida. Processo de Desenvolvimento de SW. Processo de Desenvolvimento de SW. Processo de Desenvolvimento de SW

Aula 2 Revisão 1. Ciclo de Vida. Processo de Desenvolvimento de SW. Processo de Desenvolvimento de SW. Processo de Desenvolvimento de SW Ciclo de Vida Aula 2 Revisão 1 Processo de Desenvolvimento de Software 1 O Processo de desenvolvimento de software é um conjunto de atividades, parcialmente ordenadas, com a finalidade de obter um produto

Leia mais

Banco de Dados. Profª. Ana Leda

Banco de Dados. Profª. Ana Leda Banco de Dados Profª. Ana Leda Introdução 1 DADO PROCESSAMENTO INFORMAÇÃO 2 Dados x Informação DADO = REPRESENTAÇÃO DE UM FATO, OBJETO, EVENTO, PESSOA, ETC. ENTIDADE = FATO, OBJETO, EVENTO, PESSOA, ETC,

Leia mais

MAPEAMENTO OBJETO RELACIONAL: UM ESTUDO DE CASO

MAPEAMENTO OBJETO RELACIONAL: UM ESTUDO DE CASO MAPEAMENTO OBJETO RELACIONAL: UM ESTUDO DE CASO UTILIZANDO O HIBERNATE Rafael Laurino GUERRA, Dra. Luciana Aparecida Martinez ZAINA Faculdade de Tecnologia de Indaiatuba FATEC-ID 1 RESUMO Este artigo apresenta

Leia mais

Introdução ao Paradigma Orientado a Objetos. Principais conceitos

Introdução ao Paradigma Orientado a Objetos. Principais conceitos Introdução ao Paradigma Orientado a Objetos Principais conceitos Paradigmas de Programação PROGRAMAÇÃO ESTRUTURADA X PROGRAMAÇÃO ORIENTADA A OBJETOS Paradigma Programação estruturada Na programação estrutura

Leia mais

Odyssey-MDA: Uma Ferramenta para Transformações de Modelos UML

Odyssey-MDA: Uma Ferramenta para Transformações de Modelos UML Odyssey-MDA: Uma Ferramenta para Transformações de Modelos UML Natanael E. N. Maia, Ana Paula B. Blois, Cláudia M. Werner COPPE/UFRJ Programa de Engenharia de Sistemas e Computação Caixa Postal 68.511

Leia mais

SCE-557. Técnicas de Programação para WEB. Rodrigo Fernandes de Mello http://www.icmc.usp.br/~mello mello@icmc.usp.br

SCE-557. Técnicas de Programação para WEB. Rodrigo Fernandes de Mello http://www.icmc.usp.br/~mello mello@icmc.usp.br SCE-557 Técnicas de Programação para WEB Rodrigo Fernandes de Mello http://www.icmc.usp.br/~mello mello@icmc.usp.br 1 Cronograma Fundamentos sobre servidores e clientes Linguagens Server e Client side

Leia mais

O Gerenciamento de Documentos Analógico/Digital

O Gerenciamento de Documentos Analógico/Digital Tipos de GED: Document imaging Document management Document Imaging / Document Management O Gerenciamento de Documentos Analógico/Digital Mundo analógico Criação Revisão Processamento Arquivo Mundo digital

Leia mais

4 O Workflow e a Máquina de Regras

4 O Workflow e a Máquina de Regras 4 O Workflow e a Máquina de Regras O objetivo do workflow e da máquina de regras é definir um conjunto de passos e regras configuráveis. Ao longo de sua execução, um usuário consegue simplificar o seu

Leia mais

XML Básico. Murillo Vasconcelos Henriques B. Castro. 17 de maio de 2011

XML Básico. Murillo Vasconcelos Henriques B. Castro. 17 de maio de 2011 XML Básico Murillo Vasconcelos Henriques B. Castro 17 de maio de 2011 O QUE É? Sigla para extensible Markable Language É uma linguagem de marcação, assim como HTML Desenvolvida para ser auto explicativa

Leia mais

ÍNDICE. Delphi... 3 CAPÍTULO 1 INTRODUÇÃO... 06 CAPÍTULO 2 INSTALANDO O DELPHI... 10

ÍNDICE. Delphi... 3 CAPÍTULO 1 INTRODUÇÃO... 06 CAPÍTULO 2 INSTALANDO O DELPHI... 10 Delphi 7 ÍNDICE CAPÍTULO 1 INTRODUÇÃO... 06 CAPÍTULO 2 INSTALANDO O DELPHI... 10 CAPÍTULO 3 INICIANDO O Delphi... 18 FORM DESIGN... 19 CODE EDITOR... 23 OBJECT INSPECTOR... 26 OBJECT TREE VIEW... 29 PALHETA

Leia mais

MAPEAMENTO DE CONSULTAS SQL EM XML ENTRE SISTEMAS GERENCIADORES DE BANCO DE DADOS RELACIONAIS

MAPEAMENTO DE CONSULTAS SQL EM XML ENTRE SISTEMAS GERENCIADORES DE BANCO DE DADOS RELACIONAIS Universidade Federal de Santa Catarina Centro Tecnológico Departamento de Informática e Estatística Curso de Sistemas de Informação RENATO SULZBACH MAPEAMENTO DE CONSULTAS SQL EM XML ENTRE SISTEMAS GERENCIADORES

Leia mais

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 14 PROFª BRUNO CALEGARO

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 14 PROFª BRUNO CALEGARO UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 14 PROFª BRUNO CALEGARO Santa Maria, 01 de Novembro de 2013. Revisão aula passada Projeto de Arquitetura Decisões de projeto de Arquitetura

Leia mais

Padrões de Interação com o Usuário

Padrões de Interação com o Usuário Padrões de Interação com o Usuário Granularidade dos Padrões Padrões estão relacionados a 3 elementos: Contexto ocorre Problema resolve Solução Problemas e Soluções podem ser observados em diferentes níveis

Leia mais

6 Ferramenta de Apoio ao Processo de Desenvolvimento de Sistemas Multi-Agentes

6 Ferramenta de Apoio ao Processo de Desenvolvimento de Sistemas Multi-Agentes 6 Ferramenta de Apoio ao Processo de Desenvolvimento de Sistemas Multi-Agentes A ferramenta MAS-ML Tool surgiu com o objetivo de viabilizar o processo de desenvolvimento proposto na Seção anterior, implementando

Leia mais

4 Desenvolvimento da ferramenta

4 Desenvolvimento da ferramenta direcionados por comportamento 38 4 Desenvolvimento da ferramenta Visando facilitar a tarefa de documentar requisitos funcionais e de gerar testes automáticos em uma única ferramenta para proporcionar

Leia mais

3.1 Definições Uma classe é a descrição de um tipo de objeto.

3.1 Definições Uma classe é a descrição de um tipo de objeto. Unified Modeling Language (UML) Universidade Federal do Maranhão UFMA Pós Graduação de Engenharia de Eletricidade Grupo de Computação Assunto: Diagrama de Classes Autoria:Aristófanes Corrêa Silva Adaptação:

Leia mais

JSF e PrimeFaces. Professor: Ricardo Luis dos Santos IFSUL Campus Sapucaia do Sul

JSF e PrimeFaces. Professor: Ricardo Luis dos Santos IFSUL Campus Sapucaia do Sul JSF e PrimeFaces Professor: Ricardo Luis dos Santos IFSUL 2015 Agenda Introdução Desenvolvimento Web Java Server Faces Exercício 2 Introdução Ao longo dos anos diversas linguagens de programação foram

Leia mais

II Semana de Tecnologia da Informação. Rails Framework

II Semana de Tecnologia da Informação. Rails Framework II Semana de Tecnologia da Informação Rails Framework Rails Instalação Ruby versão 1.8.7 Linux: ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p174.tar.gz ou apt-get install ruby (Debian/Ubuntu) Windows:

Leia mais

Especificação do Trabalho

Especificação do Trabalho Especificação do Trabalho I. Introdução O objetivo deste trabalho é abordar a prática da programação orientada a objetos usando a linguagem Java envolvendo os conceitos de classe, objeto, associação, ligação,

Leia mais

Gerenciamento do ciclo de vida de um documento Simone de Abreu

Gerenciamento do ciclo de vida de um documento Simone de Abreu Gerenciamento do ciclo de vida de um documento Simone de Abreu É o gerenciamento do ciclo de vida de todos os registros, em todos os tipos de mídia, desde a criação até a destruição ou arquivo permanente.

Leia mais

Engenharia de Software e Gerência de Projetos Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios

Engenharia de Software e Gerência de Projetos Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios Engenharia de Software e Gerência de Projetos Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios Cronograma das Aulas. Hoje você está na aula Semana

Leia mais

Luiz Arão Araújo Carvalho Bacharel em Ciência da Computação Desenvolvedor RedeSat-TO maximusmano@gmail.com http://www.maxonrails.wordpress.

Luiz Arão Araújo Carvalho Bacharel em Ciência da Computação Desenvolvedor RedeSat-TO maximusmano@gmail.com http://www.maxonrails.wordpress. Parte II Luiz Arão Araújo Carvalho Bacharel em Ciência da Computação Desenvolvedor RedeSat-TO maximusmano@gmail.com http://www.maxonrails.wordpress.com Rails - Instalação Windows gem install rails Plataformas

Leia mais

Produto: Webscan Relatório II Programas desenvolvidos, testados e documentados

Produto: Webscan Relatório II Programas desenvolvidos, testados e documentados Produto: Webscan Relatório II Programas desenvolvidos, testados e documentados Sérgio Oliveira Campos Contrato N : 2008/000514 Sumário 1 Introdução 1 2 Bibliotecas Utilizadas 2 2.1 Reconhecimento de Texto

Leia mais

SISTEMAS DE INFORMAÇÃO GERENCIAIS

SISTEMAS DE INFORMAÇÃO GERENCIAIS SISTEMAS DE INFORMAÇÃO GERENCIAIS Aluno: Luiza Cavalcanti Marques Orientador: Silvio Hamacher Introdução A modelagem e a utilização de bancos de dados em atividades gerenciais têm sofrido um aumento significativo

Leia mais

Modelagem UML com. Marcio Junior Vieira. 2004 -Ambiente Livre - Marcio Junior Vieira

Modelagem UML com. Marcio Junior Vieira. 2004 -Ambiente Livre - Marcio Junior Vieira Modelagem UML com Software Livre Dia Umbrello ArgoUML Marcio Junior Vieira 2004 -Ambiente Livre - Marcio Junior Vieira Palestrante Marcio Junior Vieira. A 5 Anos Trabalha da área de Desenvolvimento e Análise

Leia mais

3. Fase de Planejamento dos Ciclos de Construção do Software

3. Fase de Planejamento dos Ciclos de Construção do Software 3. Fase de Planejamento dos Ciclos de Construção do Software A tarefa de planejar os ciclos de construção do software pode partir de diretrizes básicas. Estas diretrizes visam orientar que os ciclos de

Leia mais

Modelagem UML com Software Livre. Palestrante: Marcio Junior Vieira www.ambientelivre.com.br

Modelagem UML com Software Livre. Palestrante: Marcio Junior Vieira www.ambientelivre.com.br Modelagem UML com Software Livre Palestrante: Marcio Junior Vieira Palestrante Marcio Junior Vieira. A 5 Anos Trabalha da área de Desenvolvimento e Análise de sistemas. A 4 anos trabalha com Software Livre.

Leia mais

Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO)

Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO) Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO) Parte: 1 Prof. Cristóvão Cunha Objetivos de aprendizagem

Leia mais

Figura 5 - Workflow para a Fase de Projeto

Figura 5 - Workflow para a Fase de Projeto 5. Fase de Projeto A Fase de Projeto caracteriza-se por transformar as informações modeladas durante a Fase de Análise em estruturas arquiteturais de projeto com o objetivo de viabilizar a implementação

Leia mais

3 Estratégia para o enriquecimento de informações

3 Estratégia para o enriquecimento de informações 34 3 Estratégia para o enriquecimento de informações Podemos resumir o processo de enriquecimento de informações em duas grandes etapas, a saber, busca e incorporação de dados, como ilustrado na Figura

Leia mais

Representação de Algoritmos - Linguagens de Programação

Representação de Algoritmos - Linguagens de Programação Representação de Algoritmos - Linguagens de Programação A representação de algoritmos em uma pseudo-linguagem mais próxima às pessoas é bastante útil principalmente quando o problema a ser tratado envolve

Leia mais

Armazenamento e Pesquisa de Topic Maps em Banco de Dados Relacional

Armazenamento e Pesquisa de Topic Maps em Banco de Dados Relacional Armazenamento e Pesquisa de Topic Maps em Banco de Dados Relacional Lucas Indrusiak, Renato Azevedo, Giovani R. Librelotto UNIFRA Centro Universitário Franciscano Rua dos Andradas, 1614 97.010-032 Santa

Leia mais

Resolução da lista de exercícios de casos de uso

Resolução da lista de exercícios de casos de uso Resolução da lista de exercícios de casos de uso 1. Explique quando são criados e utilizados os diagramas de casos de uso no processo de desenvolvimento incremental e iterativo. Na fase de concepção se

Leia mais

DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES

DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES Alexandre Egleilton Araújo, Jaime Willian Dias Universidade Paranaense (Unipar) Paranavaí PR Brasil araujo.ale01@gmail.com, jaime@unipar.br Resumo.

Leia mais

UNIVERSIDADE ESTADUAL DA PARAÍBA CENTRO DE CIÊNCIAS E TECNOLOGIA DEPARTAMENTO DE QUÍMICA CURSO DE LICENCIATURA EM QUÍMICA LINDOMÁRIO LIMA ROCHA

UNIVERSIDADE ESTADUAL DA PARAÍBA CENTRO DE CIÊNCIAS E TECNOLOGIA DEPARTAMENTO DE QUÍMICA CURSO DE LICENCIATURA EM QUÍMICA LINDOMÁRIO LIMA ROCHA UNIVERSIDADE ESTADUAL DA PARAÍBA CENTRO DE CIÊNCIAS E TECNOLOGIA DEPARTAMENTO DE QUÍMICA CURSO DE LICENCIATURA EM QUÍMICA LINDOMÁRIO LIMA ROCHA FACILITADOR VIRTUAL DA APRENDIZAGEM EM QUÍMICA Campina Grande-

Leia mais

Universidade da Beira Interior

Universidade da Beira Interior Universidade da Beira Interior Relatório Apresentação Java Server Pages Adolfo Peixinho nº4067 Nuno Reis nº 3955 Índice O que é uma aplicação Web?... 3 Tecnologia Java EE... 4 Ciclo de Vida de uma Aplicação

Leia mais

UM ESTUDO SOBRE OS FRAMEWORKS JSF E PRIMEFACES NO DESENVOLVIMENTO DE SOFTWARE WEB

UM ESTUDO SOBRE OS FRAMEWORKS JSF E PRIMEFACES NO DESENVOLVIMENTO DE SOFTWARE WEB UM ESTUDO SOBRE OS FRAMEWORKS JSF E PRIMEFACES NO DESENVOLVIMENTO DE SOFTWARE WEB Adriano Schulter Moenster 1, Tiago Piperno Bonetti 1 ¹Universidade Paranaense (Unipar) Paranavaí PR Brasil adrmoenster@gmail.com,

Leia mais

2 Engenharia de Software

2 Engenharia de Software 20 2 Engenharia de Software 2.1 Design de Sistemas Orientados a Objetos Os Sistemas Orientados a Objetos não são mais novidade hoje em dia já estando há muitos anos no mercado. A orientação a objetos permite

Leia mais

Guia de utilização da notação BPMN

Guia de utilização da notação BPMN 1 Guia de utilização da notação BPMN Agosto 2011 2 Sumário de Informações do Documento Documento: Guia_de_utilização_da_notação_BPMN.odt Número de páginas: 31 Versão Data Mudanças Autor 1.0 15/09/11 Criação

Leia mais

Como criar um blog. Será aberta uma janela onde você deverá especificar o título do blog, o endereço do blog, e o modelo.

Como criar um blog. Será aberta uma janela onde você deverá especificar o título do blog, o endereço do blog, e o modelo. Como criar um blog Criando o blog Vá em www.blogger.com. Entre com sua conta google (a mesma que você usa para acessar o gmail). Escolha um perfil. Na página seguinte, clique no botão novo blog. Será aberta

Leia mais

Anexo I Formulário para Proposta

Anexo I Formulário para Proposta PLATAFORMA CGI.br Solicitação de Propostas SP Anexo I Formulário para Proposta Data: 05/07/2013 Versão: 1.1 Plataforma CGI.br Solicitação de Propostas - SP Anexo I Formulário para Proposta 1. Estrutura

Leia mais

TÉCNICAS DE PROGRAMAÇÃO

TÉCNICAS DE PROGRAMAÇÃO TÉCNICAS DE PROGRAMAÇÃO (Adaptado do texto do prof. Adair Santa Catarina) ALGORITMOS COM QUALIDADE MÁXIMAS DE PROGRAMAÇÃO 1) Algoritmos devem ser feitos para serem lidos por seres humanos: Tenha em mente

Leia mais

ANEXO 11. Framework é um conjunto de classes que colaboram para realizar uma responsabilidade para um domínio de um subsistema da aplicação.

ANEXO 11. Framework é um conjunto de classes que colaboram para realizar uma responsabilidade para um domínio de um subsistema da aplicação. ANEXO 11 O MATRIZ Para o desenvolvimento de sites, objeto deste edital, a empresa contratada obrigatoriamente utilizará o framework MATRIZ desenvolvido pela PROCERGS e disponibilizado no início do trabalho.

Leia mais

Análise e Projeto Orientados a Objeto

Análise e Projeto Orientados a Objeto Análise e Projeto Orientados a Objeto Objetivos Comparar e contrastar Análise e Projeto Definir O que vamos fazer na disciplina? Saber uma linguagem de programação orientada a objeto (OO) não é suficiente

Leia mais

Linguagem de. Aula 06. Profa Cristiane Koehler cristiane.koehler@canoas.ifrs.edu.br

Linguagem de. Aula 06. Profa Cristiane Koehler cristiane.koehler@canoas.ifrs.edu.br Linguagem de Programação IV -PHP Aula 06 Profa Cristiane Koehler cristiane.koehler@canoas.ifrs.edu.br Criação de Formulários o Um formulário consiste em uma série de campos que são preenchidos pelo usuário

Leia mais

Soluções via.net para otimização de processos paramétricos com Autodesk Inventor.

Soluções via.net para otimização de processos paramétricos com Autodesk Inventor. Soluções via.net para otimização de processos paramétricos com Autodesk Inventor. Michel Brites dos Santos MAPData A parametrização quando possível já é uma forma de otimizar o processo de criação na engenharia.

Leia mais

Curso: Engenharia de Software com Ênfase em Padrões de Software (UECE Universidade Estadual do Ceará) RUP

Curso: Engenharia de Software com Ênfase em Padrões de Software (UECE Universidade Estadual do Ceará) RUP Conceitos RUP RUP, abreviação de Rational Unified Process (ou Processo Unificado da Rational), é um processo de Engenharia de software criado pela Rational Software Corporation(a qual foi incorporada pela

Leia mais

1 INTRODUÇÃO 1.1 CONCEITO DE PARADIGMAS DE LINGUAGEM DE PROGRAMAÇÃO PARADIGMAS DE LINGUAGEM DE PROGRAMAÇÃO

1 INTRODUÇÃO 1.1 CONCEITO DE PARADIGMAS DE LINGUAGEM DE PROGRAMAÇÃO PARADIGMAS DE LINGUAGEM DE PROGRAMAÇÃO 1 INTRODUÇÃO 1.1 CONCEITO DE PARADIGMAS DE LINGUAGEM DE PROGRAMAÇÃO Desde o seu surgimento, o manuseio da computação é baseado em linguagens de programação. Ela permite que sejam construídos aplicativos

Leia mais

Manual de Integração

Manual de Integração Manual de Integração Versão 1.0 Conteúdo 1 Obtendo e Instalando o MD-e... 4 1.1 Obtendo o Instalador... 4 1.2 Instalando Componentes... 4 1.3 Instalando o MD-e... 4 2 Padrões de Arquivos... 7 2.1 Arquivos

Leia mais

Construindo portais com Plone. Módulo 3 Templates

Construindo portais com Plone. Módulo 3 Templates Construindo portais com Plone Módulo 3 Templates Templates l Quando o Plone vai mostrar uma página, duas perguntas precisam ser respondidas: Ø O que será mostrado? Isto é, quais conteúdos serão buscados

Leia mais

O modelo Entidade-Relacionamento. Agenda: -Modelagem de dados utilizando O Modelo Entidade-Relacionamento

O modelo Entidade-Relacionamento. Agenda: -Modelagem de dados utilizando O Modelo Entidade-Relacionamento O modelo Entidade-Relacionamento Agenda: -Modelagem de dados utilizando O Modelo Entidade-Relacionamento 1 Antes de começarmos: A modelagem conceitual é uma fase muito importante no plamejamento de um

Leia mais

NETBEANS IDE UTILIZAÇAO DE RECURSOS PARA DESENVOLVIMENTO DE PROJETO JAVA WEB

NETBEANS IDE UTILIZAÇAO DE RECURSOS PARA DESENVOLVIMENTO DE PROJETO JAVA WEB NETBEANS IDE UTILIZAÇAO DE RECURSOS PARA DESENVOLVIMENTO DE PROJETO JAVA WEB Rodolfo M. Salomao 1, Willian Magalhães 1 1 Universidade Paranaense (Unipar) Paranavaí PR Brasil rodolfomeneghet@hotmail.com,

Leia mais

Inserindo e Listando registros

Inserindo e Listando registros Inserindo e Listando registros Dando prosseguimento à aula anterior, agora precisaremos construir uma rotina que faça a inserção no banco de dados Escola. A ação agora é inserir o aluno na tabela alunos

Leia mais

GNU Image Manipulation Program, mais conhecido pelo acrônimo GIMP.

GNU Image Manipulation Program, mais conhecido pelo acrônimo GIMP. 3 Ferramentas de Autoria em Multimídia Autoria multimídia é a criação de produções multimídia tais como filmes e apresentações. Estas produções buscam interação com o usuário (aplicações interativas).

Leia mais

Gestão de projectos na Web

Gestão de projectos na Web Gestão de projectos na Web Relatório de desenho de alto nível Versão 1.0, 5 de Maio de 2003 Telmo Pedro Gomes Amaral (mee02013@fe.up.pt) (Grupo 15) Aplicações na Web Mestrado em Engenharia Electrotécnica

Leia mais

Capítulo 2. Processos de Software. 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 1

Capítulo 2. Processos de Software. 2011 Pearson Prentice Hall. Todos os direitos reservados. slide 1 Capítulo 2 Processos de Software slide 1 Tópicos apresentados Modelos de processo de software. Atividades de processo. Lidando com mudanças. Rational Unified Process (RUP). Um exemplo de um processo de

Leia mais

CADERNOS DE INFORMÁTICA Nº 1. Fundamentos de Informática I - Word 2010. Sumário

CADERNOS DE INFORMÁTICA Nº 1. Fundamentos de Informática I - Word 2010. Sumário CADERNO DE INFORMÁTICA FACITA Faculdade de Itápolis Aplicativos Editores de Texto WORD 2007/2010 Sumário Editor de texto... 3 Iniciando Microsoft Word... 4 Fichários:... 4 Atalhos... 5 Área de Trabalho:

Leia mais

Programação Web. Professor: Diego Oliveira. Conteúdo 02: JSP e Servlets

Programação Web. Professor: Diego Oliveira. Conteúdo 02: JSP e Servlets Programação Web Professor: Diego Oliveira Conteúdo 02: JSP e Servlets JSP JSP é um template de uma página Web que usa Java para gerar HTML dinamicamente JSP é considerado server-side e roda em um objeto

Leia mais

Orientação a Objetos

Orientação a Objetos 1. Domínio e Aplicação Orientação a Objetos Um domínio é composto pelas entidades, informações e processos relacionados a um determinado contexto. Uma aplicação pode ser desenvolvida para automatizar ou

Leia mais

Regras Métodos Identificadores Variáveis Constantes Tipos de dados Comandos de atribuição Operadores aritméticos, relacionais e lógicos

Regras Métodos Identificadores Variáveis Constantes Tipos de dados Comandos de atribuição Operadores aritméticos, relacionais e lógicos Lógica Aula 2 Técnicas de Programação Criando algoritmos Regras Métodos Identificadores Variáveis Constantes Tipos de dados Comandos de atribuição Operadores aritméticos, relacionais e lógicos Criando

Leia mais

Internet. Gabriela Trevisan Bacharel em Sistemas de Infomação

Internet. Gabriela Trevisan Bacharel em Sistemas de Infomação Internet Gabriela Trevisan Bacharel em Sistemas de Infomação Histórico da Web World Wide Web o nosso www é o meio de comunicação mais utilizado no mundo atualmente. Através da WWW qualquer usuário conectado

Leia mais

TechProf Documento de Arquitetura

TechProf Documento de Arquitetura TechProf Projeto SuporteProf Versão 1.0 15 de junho de 2016 Responsáveis: Adelson Santos de Melo Filho, Edvaldo Nicolau da Silva, Moisés Luis da Silva Histórico de Revisões Data Versão Descrição Autor

Leia mais

2 Gerenciamento de Log 2.1 Definições básicas

2 Gerenciamento de Log 2.1 Definições básicas 2 Gerenciamento de Log 2.1 Definições básicas Os logs são fontes riquíssimas de informação e são gerados pelos servidores e pelas aplicações conforme eventos significativos acontecem. Em [1], log é definido

Leia mais

ESTENDENDO A UML PARA REPRESENTAR RESTRIÇÕES DE INTEGRIDADE

ESTENDENDO A UML PARA REPRESENTAR RESTRIÇÕES DE INTEGRIDADE ESTENDENDO A UML PARA REPRESENTAR RESTRIÇÕES DE INTEGRIDADE Fabiana Gomes Marinho Faculdade Lourenço Filho Resumo: Na UML, a modelagem conceitual dos dados é descrita pelo diagrama de classes, que através

Leia mais

Ambiente Visual para o Desenvolvimento de Jogos Eletrônicos

Ambiente Visual para o Desenvolvimento de Jogos Eletrônicos Ambiente Visual para o Desenvolvimento de Jogos Eletrônicos Diego Cordeiro Barboza 1, Júlio César da Silva 2 1 UNIFESO, Centro de Ciências e Tecnologia, Curso de Ciência da Computação, diego.cbarboza@gmail.com

Leia mais

JavaServer Faces. Parte 2

JavaServer Faces. Parte 2 JavaServer Faces Parte 2 Recapitulando Aplicações web são aplicações que executam em um servidor Recebem requisições de usuários Retornam respostas ao usuário Browsers só entendem e exibem html O servidor

Leia mais

Unidade 8: Padrão MVC e DAO Prof. Daniel Caetano

Unidade 8: Padrão MVC e DAO Prof. Daniel Caetano Programação Servidor para Sistemas Web 1 Unidade 8: Padrão MVC e DAO Prof. Daniel Caetano Objetivo: Apresentar a teoria por trás dos padrões na construção de aplicações Web. INTRODUÇÃO Nas aulas anteriores

Leia mais

agility made possible

agility made possible RESUMO DA SOLUÇÃO Utilitário ConfigXpress no CA IdentityMinder a minha solução de gerenciamento de identidades pode se adaptar rapidamente aos requisitos e processos de negócio em constante mudança? agility

Leia mais

JavaScript (ou JScript)

JavaScript (ou JScript) 1. Introdução JavaScript (ou JScript) Uma linguagem como o JavaScript permite criar interfaces interativas na web (permite a interação do usuário). Para desenvolver web sites interativos precisamos de

Leia mais

* Técnicas Avançadas. Desenvolvimento de SOFTWARES. Sistemas de Gerenciamento de Conteúdo com Joomla e Magento

* Técnicas Avançadas. Desenvolvimento de SOFTWARES. Sistemas de Gerenciamento de Conteúdo com Joomla e Magento * Técnicas Avançadas Desenvolvimento de SOFTWARES Sistemas de Gerenciamento de Conteúdo com Joomla e Magento * Tópicos Sistema de Gerenciamento de Conteúdo CMS. Fron-end Back-end Instalando Site e Lojas

Leia mais

Utilizando os Diagramas da UML (Linguagem Unificada de Modelagem) para desenvolver aplicação em JSF

Utilizando os Diagramas da UML (Linguagem Unificada de Modelagem) para desenvolver aplicação em JSF Utilizando os Diagramas da UML (Linguagem Unificada de Modelagem) para desenvolver aplicação em JSF Ben-Hur de Sousa Lopes¹, Jaime William Dias¹ ¹Universidade Paranaense (UNIPAR) Paranavaí Paraná Brasil

Leia mais

3 Qualidade de Software

3 Qualidade de Software 3 Qualidade de Software Este capítulo tem como objetivo esclarecer conceitos relacionados à qualidade de software; conceitos estes muito importantes para o entendimento do presente trabalho, cujo objetivo

Leia mais

O CONCEITO DE TDD NO DESENVOLVIMENTO DE SOFTWARE

O CONCEITO DE TDD NO DESENVOLVIMENTO DE SOFTWARE O CONCEITO DE TDD NO DESENVOLVIMENTO DE SOFTWARE Renan Leme Nazário, Ricardo Rufino Universidade Paranaense (Unipar) Paranavaí PR - Brasil renazariorln@gmail.com, ricardo@unipar.br Resumo. Este artigo

Leia mais

Itens estruturais/caso de uso. Itens estruturais/classe ativa. Itens estruturais/componente. Itens estruturais/artefatos. Itens comportamentais

Itens estruturais/caso de uso. Itens estruturais/classe ativa. Itens estruturais/componente. Itens estruturais/artefatos. Itens comportamentais Objetivos da UML Introdução a UML cbraga@ic.uff.br Uma linguagem para: Visualizar Especificar Construir Documentar... e analisar. Desenvolvimento dirigido a modelos 2 Construções básicas Organizadas em

Leia mais

Organização de Computadores Software

Organização de Computadores Software Organização de Computadores Software Professor Marcus Vinícius Midena Ramos Colegiado de Engenharia de Computação (74)3614.1936 marcus.ramos@univasf.edu.br www.univasf.edu.br/~marcus.ramos Objetivos: Entender

Leia mais

Uma Abordagem sobre Mapeamento Objeto Relacional com Hibernate

Uma Abordagem sobre Mapeamento Objeto Relacional com Hibernate Uma Abordagem sobre Mapeamento Objeto Relacional com Hibernate Luis Gustavo Zandarim Soares 1, Késsia Rita da Costa Marchi 1 1 Universidade Paranaense (Unipar) Paraná PR Brasil luisgustavo@live.co.uk,

Leia mais

Portal do Projeto Tempo de Ser

Portal do Projeto Tempo de Ser Sumário Portal do Projeto Tempo de Ser O que é um Wiki?...2 Documentos...2 Localizando documentos...3 Links...3 Criando um Documento...4 Criando um link...4 Editando um Documento...5 Sintaxe Básica...5

Leia mais

REQUISITOS DE SISTEMAS

REQUISITOS DE SISTEMAS REQUISITOS DE SISTEMAS MÓDULO 2 PROCESSOS DE NEGÓCIOS CONTEÚDO 1. PROCESSOS DE NEGÓCIO IDENTIFICAÇÃO CONCEITOS MODELAGEM (BPM e UML) PROCESSOS X REQUISITOS 1. PROCESSOS DE NEGÓCIO IDENTIFICAÇÃO CONCEITOS

Leia mais

1/26/2009. Baseadas em http://www.voelter.de/services/mdsdtutorial.html. Experiência pessoal/profissional/acadêmica

1/26/2009. Baseadas em http://www.voelter.de/services/mdsdtutorial.html. Experiência pessoal/profissional/acadêmica Baseadas em http://www.voelter.de/services/mdsdtutorial.html Experiência pessoal/profissional/acadêmica 1 Metamodelo UML Meu Metamodelo Meu processo de negócios Meu processo de negócios Stereotypes Perfis

Leia mais

Movie Maker. Fazer download de vídeos no You Tube. Para publicar no You Tube. O Windows Movie Maker 2 torna fácil para qualquer pessoa

Movie Maker. Fazer download de vídeos no You Tube. Para publicar no You Tube. O Windows Movie Maker 2 torna fácil para qualquer pessoa Colégio Imperatriz Leopoldina Formação de Professores 2010 Movie Maker Fazer download de vídeos no You Tube O Movie Maker permite a edição de vídeos que estejam publicados no You Tube. É preciso fazer

Leia mais

Manual de Integração

Manual de Integração Manual de Integração Versão 3.10 Conteúdo 1 Obtendo e Instalando o Emissor... 4 1.1 Obtendo o instalador... 4 1.2 Instalando o JAVA e o Framework.NET 2.0... 4 1.3 Instalando o Emissor... 5 2 Padrões de

Leia mais

SISTEMA DE WORKFLOW PARA MODELAGEM E EXECUÇÃO DE PROCESSOS DE SOFTWARE. Aluno: Roberto Reinert Orientador: Everaldo A. Grahl

SISTEMA DE WORKFLOW PARA MODELAGEM E EXECUÇÃO DE PROCESSOS DE SOFTWARE. Aluno: Roberto Reinert Orientador: Everaldo A. Grahl SISTEMA DE WORKFLOW PARA MODELAGEM E EXECUÇÃO DE PROCESSOS DE SOFTWARE Aluno: Roberto Reinert Orientador: Everaldo A. Grahl Roteiro de apresentação Introdução Objetivos Fundamentação Teórica Workflow Processo

Leia mais

Arquitetura de Sistemas Operacionais

Arquitetura de Sistemas Operacionais rquitetura de Sistemas Operacionais Francis Berenger Machado Luiz Paulo Maia Complementado por Sidney Lucena (Prof. UNIRIO) Capítulo 11 Sistema de rquivos 11/1 Organização de rquivos Um arquivo é constituído

Leia mais

Vejamos um exemplo. Vamos supor que queiramos montar uma tabela 3X2, ou seja de 3 colunas por 2 linhas, o código HTML para isso é :

Vejamos um exemplo. Vamos supor que queiramos montar uma tabela 3X2, ou seja de 3 colunas por 2 linhas, o código HTML para isso é : TABELAS As tabelas são muito importantes para o designer de uma home-page. Com elas podese fazer alinhamentos que dificilmente seriam possíveis com simples comandos. A funcionalidade de uma tabela faz

Leia mais

Programação Web Prof. Wladimir

Programação Web Prof. Wladimir Programação Web Prof. Wladimir Linguagem de Script e PHP @wre2008 1 Sumário Introdução; PHP: Introdução. Enviando dados para o servidor HTTP; PHP: Instalação; Formato básico de um programa PHP; Manipulação

Leia mais

Unidade II MODELAGEM DE PROCESSOS

Unidade II MODELAGEM DE PROCESSOS Unidade II 3 MODELAGEM DE SISTEMAS 1 20 A fase de desenvolvimento de um novo sistema de informação (Quadro 2) é um momento complexo que exige um significativo esforço no sentido de agregar recursos que

Leia mais

Web Services. Autor: Rômulo Rosa Furtado

Web Services. Autor: Rômulo Rosa Furtado Web Services Autor: Rômulo Rosa Furtado Sumário O que é um Web Service. Qual a finalidade de um Web Service. Como funciona o serviço. Motivação para o uso. Como construir um. Referências. Seção: O que

Leia mais

Desenvolvendo um Ambiente de Aprendizagem a Distância Utilizando Software Livre

Desenvolvendo um Ambiente de Aprendizagem a Distância Utilizando Software Livre Desenvolvendo um Ambiente de Aprendizagem a Distância Utilizando Software Livre Fabrício Viero de Araújo, Gilse A. Morgental Falkembach Programa de Pós-graduação em Engenharia de Produção - PPGEP Universidade

Leia mais