framework miolo

Post on 05-Jul-2015

662 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

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

top related