framework miolo

37
Aplicações Web com Framework Miolo Aluno: Leonardo Gravina Fonseca Orientador: Ely Edison Matos Março 2010

Upload: leonardo-gravina

Post on 05-Jul-2015

662 views

Category:

Technology


1 download

DESCRIPTION

Apresentação monografia de conclusão especialização lato sensu.

TRANSCRIPT

Page 1: Framework Miolo

Aplicações Web com Framework Miolo

Aluno: Leonardo Gravina FonsecaOrientador: Ely Edison Matos

Março 2010

Page 2: Framework Miolo

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)

Page 3: Framework Miolo

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

Page 4: Framework Miolo

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

Page 5: Framework Miolo

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.

Page 6: Framework Miolo

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.

Page 7: Framework Miolo

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.

Page 8: Framework Miolo

Por que o Miolo?

ferramenta livre

para desenvolvimento em PHP

experiência de sucesso na UFJF

contato com um dos desenvolvedores do framework

Page 9: Framework Miolo

Arquitetura do Miolo

orientação a objetos

PHP

Single Page Interface (SPI)

4 camadas: apresentação, negócios, integração e recursos

Page 10: Framework Miolo

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

Page 11: Framework Miolo

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

Page 12: Framework Miolo

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

Page 13: Framework Miolo

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)

Page 14: Framework Miolo

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).

Page 15: Framework Miolo

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

Page 16: Framework Miolo

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

Page 17: Framework Miolo

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

Page 18: Framework Miolo

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

Page 19: Framework Miolo

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

Page 20: Framework Miolo

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 + - - - - + - - - + - - - - + - - - + - - - - + - - - + - - - - + - - - + - - - - + - - - + - - - - + - - - + - - - - + - - - + - - - - + - - - | + - - - + - - - - + - - - | + - - -

Page 21: Framework Miolo

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

Page 22: Framework Miolo

Desenvolvimento com o Framework Miolo

Arquivos principais

• support.inc.php – define as variáveis globais

• miolo.class.php – principal classe do framework.

Page 23: Framework Miolo

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.

Page 24: Framework Miolo

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.

Page 25: Framework Miolo

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

Page 26: Framework Miolo

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

Page 27: Framework Miolo

Estudo de caso: Sistema de Acompanhamento de Metas

Criação da estrutura do módulo, com seus subdiretórios

Page 28: Framework Miolo

Estudo de caso: Sistema de Acompanhamento de Metas

Definição do tema a ser usado

• blue_embrapa, baseado no tema blue, disponibilizado pelo framework

Page 29: Framework Miolo

Estudo de caso: Sistema de Acompanhamento de Metas

Criação do arquivo de configuração do módulo (module.conf)

Page 30: Framework Miolo

Estudo de caso: Sistema de Acompanhamento de Metas

Criação da classe handler (handler.class.php)

• HandlerPat, que simplesmente herda de MHandler

Page 31: Framework Miolo

Estudo de caso: Sistema de Acompanhamento de Metas

Criação do handler principal (main.inc.php)

Page 32: Framework Miolo

Estudo de caso: Sistema de Acompanhamento de Metas

Criação das classes de negócio com os respectivos mapeamentos para persistência

Page 33: Framework Miolo

Estudo de caso: Sistema de Acompanhamento de Metas

Criação dos formulários

Page 34: Framework Miolo

Estudo de caso: Sistema de Acompanhamento de Metas

Criação dos relatórios

Page 35: Framework Miolo

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

Page 36: Framework Miolo

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

Page 37: Framework Miolo

Obrigado!!!