Você está na página 1de 8

Rapid Application Development

Otavio Rodolfo Piske angusyoung@gmail.com


Fbio Andr Seidel faseidel@yahoo.com.br
Especializao em Software Livre
Centro Universitrio Positivo - UnicenP

Resumo
O RAD uma metodologia de desenvolvimento de grande sucesso em ambientes
proprietrios. Embora as ferramentas RAD livres ainda sejam desconhecidas por grande
parte dos desenvolvedores, a sua utilizao est ganhando fora pela comunidade de
software livre.
A quantidade de ferramentas livres disponveis para o desenvolvimento RAD
aumentou nos ltimos anos e mesmo assim uma parcela dos desenvolvedores tem se
mostrado ctica em relao a maturidade e funcionalidades disponveis nestas
ferramentas devido ao fato de elas no estarem presentes, por padro, na maioria das
distribuies mais utilizadas. Alm disso, elas no contam com o suporte de nenhum
grande distribuidor e, ainda que sejam bem suportadas pela comunidade, este acaba
sendo um empecilho para alguns desenvolvedores.
Outro foco para se utilizar no desenvolvimento RAD a utilizao de frameworks,
onde esses esto disponveis para desenvolvimento em linguagens como C e C++ sendo
as mais utilizadas em ambientes baseados em software livre, embora estas linguagens
no sejam to produtivas para o desenvolvimento de aplicaes rpidas.

Abstract
RAD is a highly successful software development methodology in proprietary
environments. Though free RAD tools is yet unknown for a great range of developers, its
usage is growing in the free software community.
The amount of free RAD tools available has increased in the last years, yet a
considerable amount of developers is skeptic about the maturity and features available in
these tools due to the fact that they are not available by default on the biggest distribution.
Additionally, they do not have the support of any big free software supplier and, though
they are well supported by the free software community, this represents a major drawback
for some developers.
Another focus on RAD development is the use of frameworks, available for
languages like C and C++ which are the most used languages on free software based
environments, though they are not as productive for RAD development.

1. Introduo
O
RAD
(Rapid
Application
Development) surgiu na dcada de 70, anos
em que o desenvolvimento de aplicaes
demorava tanto que se tornava comum os
requerimentos mudarem antes que a
aplicao estivesse pronta. A formalizao
do RAD como prtica de desenvolvimento se

deu em 1991, com a publicao do livro


Rapid Application Development, escrito
por James Martin. Este livro era um
refinamento dos conceitos de prototipao
e desenvolvimento iterativo propostas no
livro A Spiral Model Of Software
Development and Enhancement.[1]
Uma vez que o RAD encoraja a

participao do usurio no processo de


anlise e design, o produto final tende a ter
custos menores de manuteno e menor
tempo de desenvolvimento, em geral
compromentendo a escalabilidade e o
desempenho do sistema.
As Ferramentas RAD esto h muito
tempo inseridas na principal plataforma de
sistemas
proprietrios
(sistemas
operacionais Windows). Neste sistema
operacional se pode fazer a utilizao de
duas ferramentas bastante conhecidas no
mercado de desenvolvimento que so o
Microsoft Visual Basic e o Borland Delphi.
O Visual Basic um produto
composto
de
um
ambiente
de
desenvolvimento e uma linguagem de
programao baseada em eventos, o que
significa que a organizao do fluxo lgico
do programa se concentra em torno dos
eventos emitidos pela interface grfica.
Outra
ferramenta
para
desenvolvimento rpido de aplicaes e
baseado na linguagem Object Pascal o
Delphi. O Delphi tambm oferece um ganho
de produtividade atravs da utilizao de
uma linguagem prtica e direta e uma curva
de
aprendizado
menor
devido
as
construes
simples
utilizadas
pela
linguagem.
Em 2001 a Borland (responsvel
pelo Delphi) lanou o Kylix, uma verso do
Delphi voltada para Linux. Este produto,
devido a seus inmeros bugs, no foi bem
recebido pelos desenvolvedores e acabou
sendo abandonado aps o lanamento da
terceira verso. Uma curiosidade que
assim como o Delphi, cujo nome baseado
na cidade grega de Delphi[2], o nome Kylix
tambm deriva da cultura grega, e seu
significado xcara.
Atualmente

natural
que
desenvolvedores de software procurem por
alternativas
livres cujas funcionalidades
sejam capazes de atender as necessidades
encontradas
no
desenvolvimento
de
aplicaes rpidas.
Ainda que a maioria das ferramentas
para desenvolvimento de aplicaes rpidas
disponveis
atualmente
tenha
suas
funcionalidades
voltadas
para
o
desenvolvimento nas linguagens C++ e
Java, importante citar que existem
alternativas livres para as linguagens mais

utilizadas em ambientes proprietrios como


o Visual Basic e o Delphi.
2. Ferramentas RAD Livres
Algumas das ferramentas RAD para
ambientes livres ainda so desconhecidas
por muitos profissionais de TI, levando-os a
acreditar que o desenvolvimento de
aplicaes para Linux e ambiente UNIX
ainda se encontra preso ao VI; um editor de
textos bastante utilizando em ambientes
Unix/Linux e cuja principal caracterstica a
possibilidade de trabalhar em 2 modos
visuais diferentes, desta maneira sendo
pouco amigvel a usurios pouco
acostumados a trabalhar sem ambientes de
desenvolvimento. Alm disso, a imensa
gama de ferramentas de desenvolvimento
auxiliares como Makefiles (arquivos de
script, cuja finalidade automatizar o
processo de construo e instalao de
softwares a partir do cdigo fonte) e a linha
de comando. Abaixo ser abordado em
detalhes sobre algumas ferramentas RAD
disponveis para ambientes livres e como
os desenvolvedores de Software, podem se
beneficiar dessas ferramentas, aumentando
o nmero de plataformas nas quais os seus
softwares esto disponveis.
2.1.Hbasic
O Hbasic uma IDE (Integrated
Development Environment - Ambiente
Integrado de Desenvolvimento) livre
utilizada para desenvolver programas
utilizando uma linguagem semelhante ao
Basic
ou
C#,
possibilitando
ao
desenvolvedor utilizar 3 bibliotecas bsicas
diferentes: Hbasic Standard (stdgui), Hbasic
NET (.Net Library) e QT-C. Esta
possibilidade
de
escolher
diferentes
dialetos permite ao desenvolvedor uma
curva de aprendizado menor nos casos
aonde o desenvolvedor j conhece uma
das linguagens em questo (como no caso
do C#).
O Hbasic desenvolvido utilizando a
linguagem C++ e o framework de
desenvolvimento C++ QT, que ser

abordado futuramente em outro tpico, desta


maneira tendo todo o look and feel de uma
aplicao nativa Linux e mantendo
o desempenho dentro de padres aceitveis
para aplicaes desktop. Alm disso, sua
IDE conta com todas as funcionalidades
esperadas
em
um
ambiente
de
desenvolvimento moderno, como debugger
embutido, editor de interfaces grficas, etc.
O compilador utilizado pelo Hbasic ainda
possibilita gerar binrios estticos, desta
maneira no sendo necessrio distribuir
outras bibliotecas em conjunto com o
executvel.

Figura 1. - Ambiente de
desenvolvimento do HBasic

A linguagem utilizada pelo Hbasic


uma derivada do Basic, com suporte a
orientao a objetos, acesso a mltiplos
bancos de dados, criao de componentes
em C++, possibilitando extender as
funcionalidades inexistentes no Hbasic. Ao
utilizar classes baseadas no modelo de
hierarquia utilizado pela QT (ex.: criando
uma classe derivada da Qobject) possvel
utilizar o sistema de sinais e slots este
assunto
ser
discutido
em
tpicos
subseqentes fornecido pela QT.
Embora o Hbasic seja um projeto
capaz de despertar o interesse dos fs das
linguagens baseadas no Basic, o HBasic
parece estar descontinuado, no tendo
atualizaes j que, segundo a pgina oficial
do projeto, a ltima atualizao ocorreu em
abril de 2004.
2.2.Gambas
O Projeto Gambas tem como produto
de desenvolvimento um ambiente integrado
de desenvolvimento baseado em um

interpretador Basic com suporte a


Orientao a Objetos. Segundo os
desenvolvedores, a linguagem utilizada
pelo Gambas lembra, de alguma maneira, o
Visual
Basic.
Entretanto,
os
desenvolvedores ressaltam que esta no
um clone da linguagem utilizada no Visual
Basic e no tenta ser compatvel com a
mesma ou com a utilizada no Visual
Basic.Net.

Figura 2. Ambiente de desenvolvimento do Gambas

O Gambas, cujo nome um


acrnimo recursivo cujo significado
Gambas Almost Means BASic (Gambas
quase significa Basic) desenvolvido em
C++ e, assim como o Hbasic, utiliza os
componentes do framework QT para
desenvolvimento da sua interface grfica.
O Gambas multiplataforma,
funcionando sob diferentes verses dos
sistemas operacionais da famlia BSD alm
de funcionar no Windows atravs do
Cygwin. Desenvolvedores interessados em
utliizar bancos de dados em suas
aplicaes tem a possibilidade de utilizar
PostgreSQL, MySQL e SQLite. Segundo os
desenvolvedores espera-se que a prxima
verso do Gambas, atualmente em
desenvolvimento, suporte muitos outros
bancos de dados [3].
A compilao de projetos do
Gambas requer apenas a compilao das
classes
modificadas,
desta
maneira
diminuindo o tempo de compilao e, por
consequncia, de desenvolvimento.
O interpretador Basic utilizado pelo
Gambas desenvolvido atravs de uma
arquitetura de componentes, de tal maneira
que no futuro poder permitir escolher qual

toolkit grfico utilizar.


O
Gambas,
como
informado
anteriormente, no compatvel com o
Visual Basic (embora seja similar ao Visual
Basic em algumas areas), sendo os
principais pontos aonde possvel encontrar
diferenas em relaao ao Visual Basic os
seguintes:
Extenses de arquivos dos arquivos
utilizados
no
projeto
(classes,
formulrios, etc)
Controles
de
formulrios
(componentes de um formulrio) so
private por padro.
Funes
de
converso
de
expresses, valores, strings e datas
do
Gambas
respeitam
as
configuraes regionais (locale).
O Gambas utiliza passagem por valor
para tipos de dados simples (inteiros,
strings, etc) e no podem ser
passadas por referncia, como no
Visual Basic (embora o Visual Basic
possa passar parmetros por valor
atravs do uso da palavra-chave
ByVal).
No existem variveis globais de
escopo de projeto no Gambas. A
documentao do Gambas ensina
como simular o uso de variveis
globais atravs do uso de atributos
estticos pblicos.
No gambas o operador + somente
pode ser utilizado para operaes
aritimticas e no para concatenar
strings.
No gambas no possvel utilizar
GOTO para capturar excesses e/ou
erros.
Os
formularios do Visual Basic
utilizam twips como unidade de
medida de posicionamento nos
formulrios. O Gambas trabalha
diretamente com pixels.
O
Gambas utiliza UTF-8 (UCS
Transformation
Format),
desta
maneira
gerando
aplicativos
completamente passveis de traduo
e internacionalizao.

comerciais.
2.3.Lazarus
O Projeto Lazarus desenvolve um conjunto
de
bibliotecas
para
o
compilador
FreePascal cujo objetivo emular o Delphi.
O compilador no qual o projeto baseado,
o Free Pascal, no apenas capaz de
entender a sintaxe utilizada pelo Delphi
mas tambm capaz de rodar em diversas
outras plataformas como OS/2, Mac OS
X[4].

Figura 1. Ambiente de desenvolvimento do


Lazarus

Ao
contrrio
das
ferramentas
demosntradas anteriormente, o Lazarus
desenvolvido utilizando o toolkit grfico
GTK+ 1.x (figura 1.3), embora os
desenvolvedores j estejam trabalhando
para porta-lo para GTK+ 2.x e QT.
Um dos objetivos do projeto Lazarus
ser compatvel com Delphi de tal maneira
que seja possvel converter projetos do
Delphi e do Kylix para que sejam
desenvolvidos no Lazarus. Segundo os
desenvolvedores j possvel portar
projetos do Kylix ou do Delphi, desde que
no
sejam
utilizados
componentes
especficos do sistema operacional[4]. A
compatibilidade com o Delphi atingida
atravs do LCL (Lazarus Component
Library), uma biblioteca de componentes
que altamente compatvel com a VCL
(Visual Componet Library) utilizada pelo
Delphi.
O Lazarus, assim como o Delphi,
O Gambas, ao contrrio do Hbasic, uma pode ser utilizado para desenvolver os mais
ferramenta mais profissional e completa, variados tipos de aplicaes incluindo:
podendo ser utilizada para desenvolvimento
Aplicativos
console:
aplicativos
de aplicativos desktop bem como aplicaes

console so aplicativos que no tem


uma interface grfica. Isso til para
desenvolvimento de aplicativos como
servidores de aplicao, aplicativos
de modelagem e processamento de
dados.
Bibliotecas
de
carregamento
dinmico: o Lazarus tambm permite
criar bibliotecas de funes, passveis
de serem utilizadas por outros
programas e linguagens. Essas
bibliotecas so os arquivos .dll no
windows e .so no Linux/*BSD.
Aplicativos GUI: aplicativos com
interface grfica de usurio.

3.1.GTK+

A GtK+ (The Gimp ToolKit) no ,


exatamente, um framework devido as suas
inmeras caractersticas de baixo nvel.
Entretanto seria injusto no cita-lo, devido a

sua
enorme
importncia
no
desenvolvimento de software livres.
A
GTK+ mais conhecida por ser a biblioteca
utilizada no desenvolvimento do ambiente
de
desktop
Gnome
(Figura
2.1),
amplamente utilizado no Linux e FreeBSD e
variantes.

A GTK+ composta de um conjuto


de bibliotecas cuja funo auxiliar o
desenvolvimento de interfaces grficas e
O Lazarus uma ferramenta to permitir ao desenvolvedor suportar um
completa quanto o Gambas e com amplo conjuto de funcionalidades, variando
funcionalidades capazes de atender as desde internacionalizao at um conjuto
necessidades dos rfos do Kylix.
de interfaces para acessibilidade. Sendo
escrita na linguagem C, a GTK+
constituda de aproximadamente 500 mil
3. Frameworks
linhas de cdigo fonte[8].
Um Framework uma estrutura de
suporte no qual um projeto de software pode
ser organizado e desenvolvido, desta
maneira evitando que um desenvolvedor
tenha que criar uma estrutura auxiliar para o
desenvolvimento de sua aplicao. [6]
O grande objetivo dos frameworks
tornar o desenvolvimento de aplicaes
menos oneroso ao desenvolvedor, desta
maneira fornecendo a fundao necessria
para que o desenvolvedor gaste mais tempo
trabalhando com os requerimentos do
software do que com os detalhes de baixo
nvel inerentes ao seu desenvolvimento.
Em ambientes livres como o Linux e o
FreeBSD, a maioria dos aplicativos so
desenvolvidos nas linguagens C, C++ e
Java[7]. Sendo as duas primeiras linguagens
mais complexas e, no geral, menos
produtivas do que as linguagens citadas at
o momento neste artigo a utilizao de
Frameworks um diferencial considervel
quando se deseja aumentar a produtividade
e ainda contar com os poderosos recursos
disponveis nestas linguagens. Deste modo,
neste
artigo
so
abordados
dois
Frameworks que atendem exatamente esses
objetivos e esto disponveis para as
linguagens C e C++.

Figura 2. Aplicativos usando GTK+

Embora existam ferramentas para


desenhar as interfaces grficas em GTK+,
por padro elas so criadas chamando
diretamente as funes existentes na
biblioteca, deste modo exigindo do
desenvolvedor um profundo conhecimento
das funes disponveis, para que seja
possvel desenvolver um aplicativo.
A GTK+ um toolkit grfico baseado
em eventos, isto , a execuo do
programa fica em espera at que um
evento ocorra e a funo apropriada seja
chamada.
3.2.wxWidgets
O wxWidgets um conjuto de

bibliotecas que permitem aplicaes em C++


compilarem e rodarem em diferentes tipos
de computadores e sistemas com mudanas
mnimas no cdigo fonte. O desenvolvimento
do wxWidgets inciou-se em 1992 na
Universidade de Edinburgh por Julian
Smart[9].
Uma vez que o wxWidgets prov uma
camada de abstrao entre as APIs do
sistema operacional (incluindo as bibliiotecas
responsveis pelo desenvolvimento de
interfaces
grficas),
as
aplicaes
desenvolvidas utilizando este framework tem
um look-and-feel do sistema operacional
em questo. No Windows a wxWidgets
utiliza a API nativa do Windows, no Linux
utilizada a GTK+, nos Unices a Motif e no
Mac OS X a cocoa utilizada. O wxWidgets
suporta ainda uma vasta gama de outros
sistemas operacionais como HP-UX, AIX,
Solaris e outros.

ser semelhante a MFC o que, a torna


atrativa
para
desenvolvedores
acostumados com desenvolvimento em
Windows mas que desejam suportar outras
plataformas.
O wxWidgets usa uma tabela de
eventos para ligar os eventos os mtodos
responsveis por trata-las.
3.3.QT
A QT um framework de
desenvolvimento criado pela empresa
norueguesa Trolltech, e inicialmente
disponibilizado em 1995.
A QT, ao contrrio da wxWidgets
no uma camada de abstrao entre as
APIs grficas do sistema operacional, mas
sim uma reimplementao das mesmas
utilizando uma API grfica e uma engine de
renderizao prprias. Ainda assim
possvel fazer, atravs de temas e/ou
estilos
com
que
as
aplicaes
desenvolvidas em QT (Figura 2.3) fiquem
parecidas com uma aplicao nativa.

Figura 3. Aplicao desenvolvida com


wxWidgets

Alm das funcionalidades bsicas


utilizadas
pelas
aplicaes
GUI,
o
wxWidgets ainda oferece o suporte a:
Suporte a threads
Drag and drop
Suporte a desenvolvimento de
aplicaes de rede com suporte a
sockets, smtp, http e ftp.
Bancos de dados, atravs de
DAO.
Visualizao
e impresso de
pginas
HTML
utilizando
diferentes
engines
de
renderizao (mozilla e IE).
Unicode.

Figura 4. KDE, ambiente grfico para Unix


e Linux, desenvolvido com a QT.

A QT, assim como a GTK+,


baseada em eventos, utilizando um
esquema de slots e sinais para efetuar a
ligao entre os eventos emitidos pelo
framework e os slots desenvolvidos pelo
programador.
Assim como
a maioria
dos
frameworks a QT oferece uma srie de
funcionalidades, wrappers e ferramentas
para auxiliar no desenvolvimento de
aplicaes. Destacando-se:
Suporte a threads.
Suporte nativo aos bancos de
dados
PostgreSQL,
MySQL,
O wxWidgets ainda reconhecida por
DB2, InterBase, SQLite, Oracle,

Sybase.
Suporte a desenvolvimento de
aplicaes de rede com suporte a
sockets, http e ftp.
Suporte ao desenvolvimento de
servidores de rede.
Possibilidade de integrar controles
ActiveX em aplicativos rodando
sobre a plataforma Windows.
Engine HTML embutida.
Possibilidade de desenvolvimento
de aplicaes sem a necessidade
de embutir uma interface grfica.
Isso torna possvel utilizar as
classes disponveis na QT para o
desenvolvimento de aplicaes
console. (Disponvel na QT 4.0 ou
superior)
Engine, parser e gerador XML
embutido, com suporte a DOM e
SAX.

De todos os frameworks demonstrados


anteriormente a QT , de longe, o mais
completo.
Um dos destaques da QT o seu
conjunto de ferramentas auxiliares ao
desenvolvimento
de
aplicaes.

importante citar:
Qmake: aplicativo responsvel por
gerenciar e executar, de maneira
portvel, os scripts de construo
e compilao do aplicativo.
Assistant: um aplicativo que serve
como um navegador da imensa
documentao disponibilizada pela
Trolltech. O Assistant lembra, de
certo modo, as ferramentas
disponibilizadas na MSDN Library
(a
documentao
de
desenvolvimento do Windows,
disponibilizada pela Microsoft).
Designer: ao contrrio os outros
frameworks, a Trolltech fornece
como parte do pacote padro
disponibilizado na QT um intuitivo
designer de interfaces grficas.
Linguist: utilitrio utilizado para
efetuar a traduo de aplicativos
desenvolvidos com a QT.
A Troltech disponibiliza documentao de
qualidade sobre a QT, tornando o seu
aprendizado mais prtico visto as outras

alternativas.
4. Concluso
As ferramentas RAD e os Frameworks
oferecem
um
enorme
ganho
de
produtividade para o desenvolvedor,
tornando possvel dedicar mais tempo
parte do desenvolvimento ligada s regras
de negcio. A partir da analise de algumas
das ferramentas RAD disponveis, bem
como suas funcionalidades e defeitos
possvel identificar as ferramentas mais
adequadas para cada trabalho.
O
Gambas
demonstrou-se
a
ferramenta RAD mais madura entre todas
as ferramentas abordadas, possuindo
caractersticas capazes de tornar o
desenvolvimento mais produtivo, como por
exemplo o suporte internacionalizao. A
ferramenta RAD Lazarus, similar ao
Gambas, mas possui dependncia de
bibliotecas ultrapassadas, deixando o
desenvolver sem opes e tendo que
depender de bibliotecas que ficaro sem
suporte em poucos anos.
Ainda que as ferramentas RAD livres
tenham que evoluir bastante at chegarem
ao nvel das ferramentas RAD proprietrias,
bastante claro que elas podem ser
utilizadas para o desenvolvimento de
aplicaes simples, prottipos e at mesmo
para portar aplicaes originalmente
desenvolvidas
para
ambientes
proprietrios.
Entre os Frameworks abordados,
todos demonstraram um bom nvel de
produtividade e diferenciam-se apenas
pelas
ferramentas
disponibilizadas,
documentao e licena. O wxWidgets
possui similaridade com a MFC sendo uma
boa opo aos desenvolvedores C/C++
acostumados com o ambiente Windows.
Os Frameworks, especialmente a
GTK+ e a QT, so utilizados em inmeros
grandes projetos (proprietrios e livres)
sendo possvel assegurar sua maturidade,
confiabilidade e estabilidade.

5. Referncias
[1] Blue Ink.biz. Rapid Application Development.

http://www.blueink.biz/RapidApplicationDevel
opment.aspx, visitado em 29/05/2006.
[2] Thorpe, Danny. Borland History: Why the name
Delphi?

http://bdn.borland.com/article/0,1410,20396,
00.html, visitado em 19/05/2006.
[3] Gambas Documentation.

http://gambasdoc.org/help/doc/faq, visitado em
19/05/2006.
[4] Lazarus Project.

http://www.lazarus.freepascal.org/modules.p
hp?op=modload&name=StaticPage&file=ind
ex&sURL=about, visitado em 19/05/2006.
[5] Lazarus Project.

http://www.lazarus.freepascal.org/modules.p
hp?op=modload&name=FAQ&file=index&my
faq=yes&id_cat=1#q6, visitado em 19/05/2006.
[6] Framework.

http://en.wikipedia.org/wiki/Framework,
visitado em 19/05/2006.
[7] Freshmeat.net

http://freshmeat.net/browse/160/, visitado em
19/05/2006.
[8] Taylor, Owen. Why GTK_MODULES is not a
security hole. http://www.gtk.org/setuid.html,
visitado em 19/05/2006.
[9] Bolia, Priyank. Introduction to wxWidgets.

http://www.codeproject.com/library/wxwidget
s.asp, visitado em 19/05/2006.