framework miolo
DESCRIPTION
Apresentação monografia de conclusão especialização lato sensu.TRANSCRIPT
Aplicações Web com Framework Miolo
Aluno: Leonardo Gravina FonsecaOrientador: Ely Edison Matos
Março 2010
Introdução
A web não é mais usada apenas para pesquisas e disponibilização de conteúdo estático.
• popularização conexões rápidas
• amadurecimento das ferramentas para esse ambiente
• usuários mais exigentes
• aplicações interativas
• computação em nuvem (Gmail, Google Docs, Flickr)
Introdução
Devido a toda essa maturidade que a Web está alcançando, a forma de desenvolvimento para esse ambiente também está mudando.
• orientação a objetos
• padrões de projeto
• gerenciadores de conteúdo
• frameworks
Objetivo
fazer um estudo sobre o framework Miolo, como uma ferramenta de desenvolvimento de sistemas para o ambiente web.
• vantagens da utilização de frameworks no desenvolvimento web
• arquitetura do Miolo e os padrões utilizados por ele
• estudo de caso: Sistema de Acompanhamento de Metas
Framework
... uma “base” de onde se pode desenvolver algo maior ou mais específico. É uma coleção de códigos-fonte, classes, funções, técnicas e metodologias que facilitam o desenvolvimento de novos softwares. (MINETTO, 2007, p. 17).
não é uma idéia nova.
exige um esforço inicial para se começar a produzir.
bem específico.
Vantagens do Framework
disponibiliza uma camada de infra-estrutura.
separa o desenvolvimento da aplicação em camadas.
facilita manutenção por outros profissionais.
ganhos a médio e longo prazo compensam esforço inicial.
Framework Miolo
começou a ser desenvolvido em 2001 pela Univates/RS (Unidade Integrada Vale do Taquari de Ensino Superior).
desde de 2004 está sob a responsabilidade da Solis, uma Cooperativa de Soluções Livres.
em 2003, a UFJF passou a utilizar o Miolo para desenvolver suas aplicações corporativas.
está na versão 2.5 (disponibilizada em 2008).
utilizado também na Espanha, pela Agropic (Aplicación Web de Producción Integrada y Certificación Agroalimentaria), no projeto Rastre.
Por que o Miolo?
ferramenta livre
para desenvolvimento em PHP
experiência de sucesso na UFJF
contato com um dos desenvolvedores do framework
Arquitetura do Miolo
orientação a objetos
PHP
Single Page Interface (SPI)
4 camadas: apresentação, negócios, integração e recursos
Arquitetura do Miolo: camada de apresentação
formulários, menus, relatórios e controles visuais em geral
scripts javascript, arquivos pdf, renderização HTML
tema
Arquitetura do Miolo: camada de negócios
domínio da aplicação
classes criadas pelo desenvolvedor (classes de negócio)
• sub-classes de MBusiness
• declaradas da seguinte forma: class Business<modulo><classe> extends Mbusiness
Arquitetura do Miolo: camada de integração
classe Miolo
• representa o framework
• expõe métodos que integram as diversas camadas
handlers
• responsáveis pela interação com o usuário
• implementação de um determinado caso de uso do sistema (cada ação do usuário tem um handler correspondente)
• atuam como controladores, integrando as regras de negócio e a interface com o usuário
Arquitetura do Miolo: camada de recursos
Camada DAO (Data Access Objects)
• abstrair o acesso ao banco de dados relacional
• encapsula o acesso aos SGBDs Oracle, PostgreSQL, MySQL, SQLite, MSSQL, Firebird e ODBC.
Camada de persistência de objetos
• mapeamento objeto-relacional ou ORM (Object Relational Mapping)
• arquivos XML são utilizados para o mapeamento das classes persistentes e das classes associativas
• mapeamento permite que métodos como save, retrieve e delete registrem automaticamente o estado dos objetos na base de dados relacional e vice-versa (padrão ActiveRecord)
Padrões de projeto
Padrões de projeto são soluções já testadas e documentadas para a solução de certo problema (MINETTO, 2007).
São independentes de linguagem de programação e sua utilização, apesar de não ser a forma mais rápida nem a mais simples de implementar uma solução, com certeza trás benefícios a médio e longo prazo com o reuso e a manutenção do código-fonte (DALL’OGLIO, 2007).
Outros padrões utilizados pelo Miolo
Singleton
• garantir que uma classe tenha somente uma instância e fornecer um ponto global de acesso para a mesma
• instanciar objeto apenas uma vez, para evitar perda de informações ou uso de informações erradas
• garantir que o objeto só será criado quando realmente se precisar dele, evitando o consumo desnecessário de recursos
• no framework Miolo, a classe Miolo é a principal e é implementada com o padrão Singleton
Outros padrões utilizados pelo Miolo
Façade
• disponibilizar uma única interface para um conjunto de interfaces de um subsistema
• o cliente acessa um objeto da classe Façade, que atua como uma “fachada”, tendo a responsabilidade de encaminhar a solicitação para as demais classes da aplicação, retornando os resultados
• no framework, a classe Miolo atua como essa fachada, para o acesso aos serviços disponibilizados nas demais classes
Outros padrões utilizados pelo Miolo
Front Controller
• ponto comum de entrada da aplicação
• controla a navegação na camada de apresentação da aplicação (verificações de segurança, log de operações, autenticação, padronização de interface com o usuário etc.)
• no Miolo, único ponto de entrada para a aplicação é o arquivo index.html
Outros padrões utilizados pelo Miolo
Factory Method
• a “fábrica” centraliza a geração de objetos, disponibilizando uma interface única para a criação de instâncias
• a classe Miolo apresenta quatro Factories Methods: GetDatabase, GetBusiness, GetUI e GetTheme
• com GetBusiness, por exemplo, é possível instanciar qualquer objeto de qualquer módulo
Desenvolvimento com o Framework Miolo
exige um esforço inicial do desenvolvedor para começar a produzir, como todo framework
para aproveitar toda a infra-estrutura disponibilizada, deve-se conhecer suas convenções, variáveis, estrutura de diretórios, recursos disponíveis, principais classes e conceitos
Desenvolvimento com o Framework Miolo
Estrutura de diretórios- - - - - < d i r e t ó r i o – b a s e >+ - - - c l a s s e s| + - - - c o n t r i b| + - - - d a t a b a s e| + - - - d o c| + - - - e t c| + - - - e x t e n s i o n s| + - - - e z p d f| + - - - f l o w| + - - - m o d e l| + - - - p e r s i s t e n c e| + - - - p s l i b| + - - - s e c u r i t y| + - - - s e r v i c e s| + - - - u i| + - - - - + - - - c o n t r o l s| + - - - - + - - - p a i n t e r| + - - - - + - - - r e p o r t| + - - - - + - - - t h e m e s| | + - - - s y s t e m
| + - - - u t i l s+ - - - d o c s+ - - - e t c| + - - - m i o l o . c o n f| + - - - m k r o n o . c o n f+ - - - h t m l| + - - - d o w n l o a d s| + - - - i m a g e s| + - - - r e p o r t s| + - - - s c r i p t s+ - - - l o c a l e+ - - - m o d u l e s| + - - - a d m i n| + - - - m o d u l o 1| + - - - m o d u l o 2| + - - - . . . .+ - - - v a r
+ - - - d b+ - - - l o g+ - - - r e p o r t+ - - - t r a c e
| | + - - - . . .
| | | |
- - - - - < d i r e t ó r i o – b a s e >+ - - - m o d u l e s| + - - - m o d u l o 1| + - - - c l a s s e s
| f o r m s| m e n u s| s q l| h a n d l e r s| g r i d s| r e p o r t s| e t c| h t m l| | + - - - i m a g e s| f i l e s| u i| c o n t r o l s
+ - - - -
| | + - - - m a p + - - - - + - - - + - - - - + - - - + - - - - + - - - + - - - - + - - - + - - - - + - - - + - - - - + - - - + - - - - + - - - + - - - - + - - - | + - - - + - - - - + - - - | + - - -
Desenvolvimento com o Framework Miolo
Arquivos principais
• index.html – acessado pelo servidor web para iniciar a aplicação. Chama o arquivo index.php
• index.php – manipulador principal do Miolo. Por isso é utilizado por todos os módulos e é sempre definido nos links.
• miolo.conf – arquivo XML que contém as configurações do ambiente, tais como: tema a ser usado, módulo inicial a ser executado, base de dados a ser utilizada e indicação dos diretórios dos diversos recursos disponíveis (classes, módulos, logs, trace, banco de dados, relatórios etc.). As configurações aqui definidas podem ser sobrepostas no arquivo module.conf de cada módulo
Desenvolvimento com o Framework Miolo
Arquivos principais
• support.inc.php – define as variáveis globais
• miolo.class.php – principal classe do framework.
Desenvolvimento com o Framework Miolo
Principais conceitos
• Aplicação: de maneira geral, cada instalação do framework está ligada a uma única aplicação, que é composta por um ou vários módulos integrados. Desta forma, é possível a reutilização de componentes como formulários e relatórios de módulos diferentes, dentro da mesma aplicação.
• Módulo: representa um sub-sistema da aplicação, com as classes de negócio que estão fortemente ligadas. Os diversos módulos podem se comunicar
• Controles (widgets): componentes que compõem a interface com o usuário (formulários, grids, botões etc.), usados na exibição das páginas da aplicação.
Desenvolvimento com o Framework Miolo
Principais conceitos
• Página: controle específico, instanciado da classe MPage, que serve de base para a exibição de uma página HTML.
• Tema: controle específico, instanciado da classe MTheme, que define o visual para os controles que serão apresentados na página HTML.
• Handler: instanciado da classe MHandler, é o responsável por encaminhar as solicitações feitas pelo usuário por meio do navegador
• Namespace: atua como um aliases ou apelido para os diretórios.
Desenvolvimento com o Framework Miolo
Outros recursos disponíveis
• Internacionalização
• Debug
• Tratamento de exceções
• Suporte a Ajax
• Segurança: autenticação, autorização, auditoria (log).
• Geração de relatórios: pdf (biblioteca ezPdf) ou html (classe MBTemplate)
• Web Forms: MForm, MFormAjax e MCompoundForm
Estudo de caso: Sistema de Acompanhamento de Metas
Modelagem das classes e do banco de dados
producaocientifica
subcategoria
bop
+ idProducao
+ idSubCategoria+ nomeSubCategoria
0..*
0..*
0..*
1..* 1..* 1
1
1
+ idBop+ tituloBop+ veiculoBop+ instituicaoBop+ cidadeBop+ nBop+ paginasBop+ mesBop+ anoBop+ dataLancamentoBop
nucleo
+ idNucleo+ nomeNucleo
autor
+ idAutor+ nomeAutor
categoria
+ idCategoria+ nomeCategoria
livro
+ idLivro+ tituloLivro+ instituicaoLivro+ cidadeLivro+ paginasCdLivro+ mesLivro+ anoLivro+ tipoLivro+ dataLancamentoLivro
p r o d u c a o c i e n t i f i c a
i d P r o d u c a o ( P K )i d S u b C a t e g o r i a ( F K )i d N u c l e o ( F K )
a u t o r
i d A u t o r ( P K )n o m e A u t o r
a u t o r i a
i d A u t o r i a ( P K )i d A u t o r ( F K )i d P r o d u c a o ( F K )
s u b c a t e g o r i a
i d S u b C a t e g o r i a ( P K )n o m e S u b C a t e g o r i ai d C a t e g o r i a ( F K )
n u c l e o
i d N u c l e o ( P K )n o m e N u c l e o
c a t e g o r i a
i d C a t e g o r i a ( P K )n o m e C a t e g o r i a
Estudo de caso: Sistema de Acompanhamento de Metas
Criação da estrutura do módulo, com seus subdiretórios
Estudo de caso: Sistema de Acompanhamento de Metas
Definição do tema a ser usado
• blue_embrapa, baseado no tema blue, disponibilizado pelo framework
Estudo de caso: Sistema de Acompanhamento de Metas
Criação do arquivo de configuração do módulo (module.conf)
Estudo de caso: Sistema de Acompanhamento de Metas
Criação da classe handler (handler.class.php)
• HandlerPat, que simplesmente herda de MHandler
Estudo de caso: Sistema de Acompanhamento de Metas
Criação do handler principal (main.inc.php)
Estudo de caso: Sistema de Acompanhamento de Metas
Criação das classes de negócio com os respectivos mapeamentos para persistência
Estudo de caso: Sistema de Acompanhamento de Metas
Criação dos formulários
Estudo de caso: Sistema de Acompanhamento de Metas
Criação dos relatórios
Conclusões
dificuldade inicial para compreender o framework e começar a produzir
versão atual do Miolo não é “comercial”
a partir do momento em que essa compreensão acontece, fica facilitado o trabalho do desenvolvedor, que pode se concentrar nas tarefas relativas ao domínio do sistema, tendo as tarefas comuns a maioria das aplicações disponíveis no framework
Trabalhos futuros
desenvolvimento de uma aplicação que de alguma forma interaja com a que foi desenvolvida neste trabalho. Desta forma, a reutilização e a integração das diversas aplicações desenvolvidas com o Miolo, por meio de módulos, poderia ser testada
conhecer melhor o trabalho feito na UFJF para uma avaliação mais completa do Miolo
Obrigado!!!