Revista Do Linux
 
OUTRAS SEÇÕES
  Cartas
  Variedades
  Rádio Linux
  CD do Mês
  Coluna do Augusto
  Leitura
  Dicas e truques
  Opinião
 

MIOLO

Framework para desenvolvimento de aplicações complexas em Software Livre

Em 1999, a UNIVATES utilizava um sistema acadêmico/financeiro baseado em softwares proprietários, e o crescimento no número de alunos da instituição a obrigou a buscar uma nova solução. Entre as ofertas comerciais e a possibilidade do desenvolvimento de um novo sistema em software livre, a UNIVATES, felizmente, optou pela segunda opção

O SAGU (sagu.codigolivre.org.br), nosso Sistema Aberto de Gestão Unificada, hoje usado por uma dezena de instituições de ensino no Brasil e sendo avaliado e implantado em tantas outras, foi desenvolvido muito rapidamente (menos de seis meses de escrita de código até a entrada em produção em julho de 2000), graças à adoção quase integral do modelo (ER) de base de dados utilizado em seu antecessor proprietário. Se, por um lado, este modelo acelerou o desenvolvimento do SAGU, por outro, o amarrou a uma estrutura monolítica e pouco flexível, que dificulta não só a escalabilidade do sistema como até mesmo a integração de novas pessoas ao projeto, pela complexidade e tamanho do código. Ainda assim, o SAGU, em sua versão atual, já trazia elementos que eram a base do que viria a ser o MIOLO, como a independência de base de dados, interface web para o usuário, modularidade (os módulos do SAGU correspondem às várias áreas de negócio de uma instituição de ensino) e, principalmente, ser construído com softwares livres e ser ele mesmo um software livre sob a licença GPL.

A idéia do MIOLO foi tomando forma durante o desenvolvimento do GNUDATA (gnudata.codigolivre.org.br, sistema de consultas dinâmicas e estatísticas em bases de dados econômico/demográficos, usado no Banco de Dados Regional da UNIVATES), quando vimos que muito código do SAGU poderia ser reaproveitado e que poderíamos ter uma infra-estrutura formada por um conjunto de objetos que resolvessem questões básicas no desenvolvimento de qualquer sistema complexo envolvendo bases de dados. Para discutir tais questões, no início de 2001, fizemos uma oficina interna de desenvolvimento com toda a equipe de desenvolvimento da UNIVATES, convidando também pessoas como Thomas Spriestersbach, da Interact2000 (e hoje consultor e desenvolvedor de vários de nossos projetos), Alessandro Binhara, da Rede de Excelência em Software Livre, e Leandro Pompermaier, desenvolvedor da HP. A partir daí, começamos a exercitar cada vez mais a escrita de código orientado a objetos no PHP e a diagramar o GNUTECA (gnuteca.codigolivre.org.br), sistema de gestão de acervo, empréstimo e colaboração para bibliotecas). Em maio de 2001, Rasmus Lerdorf, criador do PHP, também esteve na UNIVATES e contribui com inúmeras idéias com relação à orientação a objetos, que foram incorporadas ao MIOLO.

O GNUTECA entrou em operação em fevereiro de 2002 em nossa biblioteca central, e foi o primeiro projeto desenvolvido integralmente com o MIOLO.

Mas o que é, afinal, o MIOLO?

O MIOLO é um Framework escrito em PHP e utilizando apenas conceitos de POO (Programação Orientada a Objetos), que oferece uma grande gama de funções para otimizar e agilizar o processo de criação de sistemas.

Dentre as características importantes implementadas, está a utilização do conceito de modularização: o processo de criação de um novo módulo para um sistema ou mesmo a integração de módulos/sistemas distintos, torna-se uma tarefa muito simples, possibilitando que, com login único e de acordo com os direitos de acesso, um usuário possa interagir em diferentes sistemas no mesmo ambiente de produção. Essa estrutura permite um grande reaproveitamento de funcionalidades, contribuindo também para a padronização do código.

Além disso, o MIOLO possibilita a independência das equipes durante o desenvolvimento de um sistema. A equipe envolvida com a criação da estrutura de Base de Dados não precisa, obrigatoriamente manter um vínculo com a equipe que projeta a interface do sistema. Isso permite que o potencial dos colaboradores envolvidos seja melhor aproveitado, além de facilitar a integração de novas pessoas ao projeto.

O MIOLO trata, de forma transparente, as conexões a Bases de Dados. Dessa forma é fácil, por exemplo, implementar soluções distribuídas, inclusive em diferentes posições geográficas do globo.

Outras características do MIOLO:

• geração e apresentação das páginas utilizando o conceito de temas, o que facilita a mudança e criação de novas interfaces para os usuários;
• automatização do processo de criação e validação de formulários para entrada de dados;
• montagem automática de listagens e controle relacionados;
• controle das conexões e abstração da Base de Dados; controle e manipulação de erros;
• validação de usuários e controle dos direitos de acesso.

As classes do MIOLO estão localizadas no diretório miolo, no qual também se localiza o arquivo miolo.conf que mantém todas as suas configurações. No diretório module estão localizados todos os sistemas desenvolvidos com o MIOLO. Cada módulo/sistema possui 3 diretórios básicos necessários:

• db: que armazena as classes de instruções e comandos relacionados com a base de dados;
• forms: nesse diretório ficam localizadas as classes de formulários;
• handlers: contém os manipuladores, ou seja, os arquivos que conduzem o funcionamento do sistema.

Adicionalmente, também podem existir os seguintes diretórios:

• sql: mantém as instruções sql para criação da base/tabelas do módulo;
• doc: arquivos de documentação;
• etc: outros arquivos;

Gostei! Quero criar um programa Powered by MIOLO!

A melhor maneira de começar é aprender com o que já foi feito, afinal, estamos falando de Software Livre. A própria página do MIOLO faz referência a vários projetos “Powered by MIOLO”, como o Pila, o Scotty, o Qualitas, o próprio GNUTECA e outros, variando muito em grau de complexidade. O MIOLO também possui um módulo “Tutorial” disponível para download e várias listas de discussão.

Claro que, para começar, você vai precisar do MIOLO e seus pré-requisitos, como o PHP, o Apache e o PostgreSQL. O pacote de instalação do MIOLO inclui um instalador gráfico, que irá facilitar bastante a sua vida. Como em todo o projeto de software livre, valem as mesmas recomendações:

• Baixe os pacotes;
• Leia os READMEs, FAQs e INSTALLs;
• Leia o histórico das listas de discussão;
• Inscreva-se nas listas e pergunte!

Feito isto, comece a experimentar com o tutorial, cujo objetivo é exemplificar a utilização das classes e métodos do MIOLO. Obviamente, este é um passo inicial para aprender os conceitos e a sistemática do ambiente, e os arquivos estão exaustivamente comentados para auxiliar nesse sentido. O tutorial fornece dois sistemas de cadastros básicos: cidades e pessoas.

O cadastro de cidades exemplifica a forma mais simples de utilizar o MIOLO, uma vez que a definição e a criação de formulários e instruções sql estão nos próprios manipuladores (os arquivos .inc). Já o cadastro de pessoas estende um pouco mais a funcionalidade, exemplificando como é possível definir externamente as classes de formulários e as classes de comandos/instruções da base de dados, e de que maneira é possível ter acesso às mesmas, utilizando os metódos GetForm e GetBusiness, entre outros. O Tutorial está, juntamente com outros projetos, disponível em demo on-line no site do MIOLO.

No início pode até parecer um pouco complicado, mas à medida que você vai se familiarizando com o ambiente vai entender porque a UNIVATES adotou o MIOLO como seu framework padrão de desenvolvimento e porque outros projetos consagrados de software livre como os sistemas Rau-Tu (www.rau-tu.unicamp.br), Nou-Rau e Código Livre (codigolivre.org.br) estão migrando para o MIOLO. Divirta-se!

legenda: O GNUTECA foi o primeiro software a utilizar o framework MIOLO

olho: GNUTECA, Pila, Scotty e Qualitas são exemplos de software “Powered by MIOLO”


Cesar Brod - cesar@brod.com.br

Vilson Cristiano Gärtner - vgartner@univates.br


A Revista do Linux é editada pela Conectiva S/A
Todos os Direitos Reservados.

Política de Privacidade
Anuncie na Revista do Linux