Rapid Application Development Otavio Rodolfo Piske – [email protected] Fábio André Seidel – [email protected] Especialização em Software Livre Centro Universitário Positivo - UnicenP

Resumo

O RAD é uma metodologia de desenvolvimento de grande sucesso em ambientes proprietários. Embora as ferramentas RAD livres ainda sejam desconhecidas por grande parte dos desenvolvedores, a sua utilização está ganhando força pela comunidade de software livre. A quantidade de ferramentas livres disponíveis para o desenvolvimento RAD aumentou nos últimos anos e mesmo assim uma parcela dos desenvolvedores tem se mostrado cética em relação a maturidade e funcionalidades disponíveis nestas ferramentas devido ao fato de elas não estarem presentes, por padrão, na maioria das distribuições mais utilizadas. Além disso, elas não 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 utilização de frameworks, onde esses estão disponíveis para desenvolvimento em linguagens como e C++ sendo as mais utilizadas em ambientes baseados em software livre, embora estas linguagens não sejam tão produtivas para o desenvolvimento de aplicações rápidas.

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 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. Introdução deu em 1991, com a publicação do livro O RAD (Rapid Application “Rapid Application Development”, escrito Development) surgiu na década de 70, anos por James Martin. Este livro era um em que o desenvolvimento de aplicações refinamento dos conceitos de prototipação demorava tanto que se tornava comum os e desenvolvimento iterativo propostas no requerimentos mudarem antes que a livro “A Spiral Model Of Software aplicação estivesse pronta. A formalização Development and Enhancement”.[1] do RAD como prática de desenvolvimento se Uma vez que o RAD encoraja a participação do usuário no processo de utilizadas em ambientes proprietários como análise e design, o produto final tende a ter o e o . custos menores de manutenção e menor tempo de desenvolvimento, em geral compromentendo a escalabilidade e o 2. Ferramentas RAD Livres desempenho do sistema. As Ferramentas RAD estão há muito Algumas das ferramentas RAD para tempo inseridas na principal plataforma de ambientes livres ainda são desconhecidas sistemas proprietários (sistemas por muitos profissionais de TI, levando-os a operacionais Windows). Neste sistema acreditar que o desenvolvimento de operacional se pode fazer a utilização de aplicações para e ambiente duas ferramentas bastante conhecidas no ainda se encontra preso ao ; um editor de mercado de desenvolvimento que são o textos bastante utilizando em ambientes Visual Basic e o Borland Delphi. Unix/Linux e cuja principal característica é a O Visual Basic é um produto possibilidade de trabalhar em 2 modos composto de um ambiente de visuais diferentes, desta maneira sendo desenvolvimento e uma linguagem de pouco amigável a usuários pouco programação baseada em eventos, o que acostumados a trabalhar sem ambientes de significa que a organização do fluxo lógico desenvolvimento. Além disso, a imensa do programa se concentra em torno dos gama de ferramentas de desenvolvimento eventos emitidos pela interface gráfica. auxiliares como Makefiles (arquivos de Outra ferramenta para script, cuja finalidade é automatizar o desenvolvimento rápido de aplicações e processo de construção e instalação de baseado na linguagem é o softwares a partir do código fonte) e a linha Delphi. O Delphi também oferece um ganho de comando. Abaixo será abordado em de produtividade através da utilização de detalhes sobre algumas ferramentas RAD uma linguagem prática e direta e uma curva disponíveis para ambientes livres e como de aprendizado menor devido as os desenvolvedores de Software, podem se construções simples utilizadas pela beneficiar dessas ferramentas, aumentando linguagem. o número de plataformas nas quais os seus Em 2001 a Borland (responsável softwares estão disponíveis. pelo Delphi) lançou o Kylix, uma versão do Delphi voltada para Linux. Este produto, devido a seus inúmeros bugs, não foi bem 2.1.Hbasic recebido pelos desenvolvedores e acabou sendo abandonado após o lançamento da terceira versão. Uma curiosidade é que O Hbasic é uma IDE (Integrated assim como o Delphi, cujo nome é baseado Development Environment - Ambiente na cidade grega de Delphi[2], o nome Kylix Integrado de Desenvolvimento) livre também deriva da cultura grega, e seu utilizada para desenvolver programas significado é xícara. utilizando uma linguagem semelhante ao Atualmente é natural que Basic ou C#, possibilitando ao desenvolvedores de software procurem por desenvolvedor utilizar 3 bibliotecas básicas alternativas livres cujas funcionalidades diferentes: Hbasic Standard (stdgui), Hbasic sejam capazes de atender as necessidades NET (.Net ) e -C. Esta encontradas no desenvolvimento de possibilidade de escolher diferentes aplicações rápidas. “dialetos” permite ao desenvolvedor uma Ainda que a maioria das ferramentas curva de aprendizado menor nos casos para desenvolvimento de aplicações rápidas aonde o desenvolvedor já conhece uma disponíveis atualmente tenha suas das linguagens em questão (como no caso funcionalidades voltadas para o do C#). desenvolvimento nas linguagens C++ e O Hbasic é desenvolvido utilizando a , é importante citar que existem linguagem C++ e o framework de alternativas livres para as linguagens mais desenvolvimento C++ QT, que será abordado futuramente em outro tópico, desta interpretador Basic com suporte a maneira tendo todo o “look and feel” de uma Orientação a Objetos. Segundo os aplicação nativa Linux e mantendo desenvolvedores, a linguagem utilizada o desempenho dentro de padrões aceitáveis pelo lembra, de alguma maneira, o para aplicações desktop. Além disso, sua Visual Basic. Entretanto, os IDE conta com todas as funcionalidades desenvolvedores ressaltam que esta não é esperadas em um ambiente de um clone da linguagem utilizada no Visual desenvolvimento moderno, como debugger Basic e não tenta ser compatível com a embutido, editor de interfaces gráficas, etc. mesma ou com a utilizada no Visual O compilador utilizado pelo Hbasic ainda Basic.Net. possibilita gerar binários estáticos, desta maneira não sendo necessário distribuir outras bibliotecas em conjunto com o executável.

Figura 2. Ambiente de desenvolvimento do Gambas Figura 1. - Ambiente de desenvolvimento do HBasic O Gambas, cujo nome é um A linguagem utilizada pelo Hbasic é acrônimo recursivo cujo significado é uma derivada do Basic, com suporte a “Gambas Almost Means BASic” (Gambas orientação a objetos, acesso a múltiplos quase significa Basic) é desenvolvido em bancos de dados, criação de componentes C++ e, assim como o Hbasic, utiliza os em C++, possibilitando extender as componentes do framework QT para funcionalidades inexistentes no Hbasic. Ao desenvolvimento da sua interface gráfica. utilizar classes baseadas no modelo de O Gambas é multiplataforma, hierarquia utilizado pela QT (ex.: criando funcionando sob diferentes versões dos uma classe derivada da Qobject) é possível sistemas operacionais da família BSD além utilizar o sistema de sinais e slots – este de funcionar no Windows através do assunto será discutido em tópicos Cygwin. Desenvolvedores interessados em subseqüentes – fornecido pela QT. utliizar bancos de dados em suas Embora o Hbasic seja um projeto aplicações tem a possibilidade de utilizar capaz de despertar o interesse dos fãs das PostgreSQL, MySQL e SQLite. Segundo os linguagens baseadas no Basic, o HBasic desenvolvedores espera-se que a próxima parece estar descontinuado, não tendo versão do Gambas, atualmente em atualizações já que, segundo a página oficial desenvolvimento, suporte muitos outros do projeto, a última atualização ocorreu em bancos de dados [3]. abril de 2004. A compilação de projetos do Gambas requer apenas a compilação das classes modificadas, desta maneira 2.2.Gambas diminuindo o tempo de compilação e, por consequência, de desenvolvimento. O interpretador Basic utilizado pelo O Projeto Gambas tem como produto Gambas é desenvolvido através de uma de desenvolvimento um ambiente integrado arquitetura de componentes, de tal maneira de desenvolvimento baseado em um que no futuro poderá permitir escolher qual toolkit gráfico utilizar. comerciais. O Gambas, como informado anteriormente, não é compatível com o Visual Basic (embora seja similar ao Visual 2.3. Basic em algumas areas), sendo os principais pontos aonde é possível encontrar O Projeto Lazarus desenvolve um conjunto diferenças em relaçao ao Visual Basic os de bibliotecas para o compilador seguintes: FreePascal cujo objetivo é emular o Delphi. − Extensões de arquivos dos arquivos O compilador no qual o projeto é baseado, utilizados no projeto (classes, o , não apenas é capaz de formulários, etc) entender a sintaxe utilizada pelo Delphi − Controles de formulários mas também é capaz de rodar em diversas (componentes de um formulário) são outras plataformas como OS/2, Mac OS “private” por padrão. X[4]. − Funções de conversão de expressões, valores, strings e datas do Gambas respeitam as configurações regionais (“locale”). − O Gambas utiliza passagem por valor para tipos de dados simples (inteiros, strings, etc) e não podem ser passadas por referência, como no Visual Basic (embora o Visual Basic possa passar parâmetros por valor através do uso da palavra-chave ByVal). Figura 1. Ambiente de desenvolvimento do − Não existem variáveis globais de Lazarus escopo de projeto no Gambas. A documentação do Gambas ensina Ao contrário das ferramentas como simular o uso de variáveis demosntradas anteriormente, o Lazarus é globais através do uso de atributos desenvolvido utilizando o toolkit gráfico estáticos públicos. GTK+ 1.x (figura 1.3), embora os − No gambas o operador “+” somente desenvolvedores já estejam trabalhando pode ser utilizado para operações para porta-lo para GTK+ 2.x e QT. aritiméticas e não para concatenar Um dos objetivos do projeto Lazarus strings. é ser compatível com Delphi de tal maneira − No gambas não é possível utilizar que seja possível converter projetos do GOTO para capturar excessões e/ou Delphi e do Kylix para que sejam erros. desenvolvidos no Lazarus. Segundo os − Os formularios do Visual Basic desenvolvedores já é possível portar utilizam “twips” como unidade de projetos do Kylix ou do Delphi, desde que medida de posicionamento nos não sejam utilizados componentes formulários. O Gambas trabalha específicos do sistema operacional[4]. A diretamente com pixels. compatibilidade com o Delphi é atingida − O Gambas utiliza UTF-8 (UCS através do LCL (Lazarus Component Transformation Format), desta Library), uma biblioteca de componentes maneira gerando aplicativos que é altamente compatível com a VCL completamente passíveis de tradução (Visual Componet Library) utilizada pelo e internacionalização. Delphi. O Lazarus, assim como o Delphi, O Gambas, ao contrário do Hbasic, é uma pode ser utilizado para desenvolver os mais ferramenta mais profissional e completa, variados tipos de aplicações incluindo: podendo ser utilizada para desenvolvimento − Aplicativos console: aplicativos de aplicativos desktop bem como aplicações console são aplicativos que não tem 3.1.GTK+ uma interface gráfica. Isso é útil para desenvolvimento de aplicativos como A GtK+ (The Gimp ToolKit) não é, servidores de aplicação, aplicativos exatamente, um framework devido as suas de modelagem e processamento de inúmeras características de baixo nível. dados. Entretanto seria injusto não cita-lo, devido a − Bibliotecas de carregamento sua enorme importância no dinâmico: o Lazarus também permite desenvolvimento de software livres. A criar bibliotecas de funções, passíveis GTK+ é mais conhecida por ser a biblioteca de serem utilizadas por outros utilizada no desenvolvimento do ambiente programas e linguagens. Essas de desktop Gnome (Figura 2.1), bibliotecas são os arquivos .dll no amplamente utilizado no Linux e FreeBSD e windows e .so no Linux/*BSD. variantes. − Aplicativos GUI: aplicativos com A GTK+ é composta de um conjuto interface gráfica de usuário. de bibliotecas cuja função é auxiliar o desenvolvimento de interfaces gráficas e O Lazarus é uma ferramenta tão permitir ao desenvolvedor suportar um completa quanto o Gambas e com amplo conjuto de funcionalidades, variando funcionalidades capazes de atender as desde internacionalização até um conjuto necessidades dos órfãos do Kylix. de interfaces para acessibilidade. Sendo escrita na linguagem C, a GTK+ é constituída de aproximadamente 500 mil 3. Frameworks linhas de código 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 aplicação. [6] O grande objetivo dos frameworks é tornar o desenvolvimento de aplicações menos oneroso ao desenvolvedor, desta maneira fornecendo a fundação necessária Figura 2. Aplicativos usando GTK+ para que o desenvolvedor gaste mais tempo trabalhando com os requerimentos do Embora existam ferramentas para software do que com os detalhes de baixo desenhar as interfaces gráficas em GTK+, nível inerentes ao seu desenvolvimento. por padrão elas são criadas chamando Em ambientes livres como o Linux e o diretamente as funções existentes na FreeBSD, a maioria dos aplicativos são biblioteca, deste modo exigindo do desenvolvidos nas linguagens C, C++ e desenvolvedor um profundo conhecimento Java[7]. Sendo as duas primeiras linguagens das funções disponíveis, para que seja mais complexas e, no geral, menos possível desenvolver um aplicativo. produtivas do que as linguagens citadas até A GTK+ é um toolkit gráfico baseado o momento neste artigo a utilização de em eventos, isto é, a execução do Frameworks é um diferencial considerável programa fica em espera até que um quando se deseja aumentar a produtividade evento ocorra e a função apropriada seja e ainda contar com os poderosos recursos chamada. disponíveis nestas linguagens. Deste modo, neste artigo são abordados dois Frameworks que atendem exatamente esses 3.2.wxWidgets objetivos e estão disponíveis para as linguagens C e C++. O wxWidgets é um conjuto de bibliotecas que permitem aplicações em C++ ser semelhante a MFC o que, a torna compilarem e rodarem em diferentes tipos atrativa para desenvolvedores de computadores e sistemas com mudanças acostumados com desenvolvimento em mínimas no código fonte. O desenvolvimento Windows mas que desejam suportar outras do wxWidgets inciou-se em 1992 na plataformas. Universidade de Edinburgh por Julian O wxWidgets usa uma tabela de Smart[9]. eventos para ligar os eventos os métodos Uma vez que o wxWidgets provê uma responsáveis por trata-las. camada de abstração entre as do sistema operacional (incluindo as bibliiotecas responsáveis pelo desenvolvimento de 3.3.QT interfaces gráficas), as aplicações A QT é um framework de desenvolvidas utilizando este framework tem desenvolvimento criado pela empresa um “look-and-feel” do sistema operacional norueguesa Trolltech, e inicialmente em questão. No Windows a wxWidgets disponibilizado em 1995. utiliza a API nativa do Windows, no Linux é A QT, ao contrário da wxWidgets utilizada a GTK+, nos Unices a e no não é uma camada de abstração entre as Mac OS X a é utilizada. O wxWidgets APIs gráficas do sistema operacional, mas suporta ainda uma vasta gama de outros sim uma reimplementação das mesmas sistemas operacionais como HP-UX, AIX, utilizando uma API gráfica e uma engine de Solaris e outros. renderização próprias. Ainda assim é possível fazer, através de temas e/ou estilos com que as aplicações desenvolvidas em QT (Figura 2.3) fiquem parecidas com uma aplicação nativa.

Figura 3. Aplicação desenvolvida com wxWidgets

Figura 4. KDE, ambiente gráfico para Unix Além das funcionalidades básicas e Linux, desenvolvido com a QT. utilizadas pelas aplicações GUI, o wxWidgets ainda oferece o suporte a: A QT, assim como a GTK+, é − Suporte a threads baseada em eventos, utilizando um − Drag and drop esquema de slots e sinais para efetuar a − Suporte a desenvolvimento de ligação entre os eventos “emitidos” pelo aplicações de rede com suporte a framework e os “slots” desenvolvidos pelo sockets, smtp, http e ftp. programador. − Bancos de dados, através de Assim como a maioria dos DAO. frameworks a QT oferece uma série de − Visualização e impressão de funcionalidades, wrappers e ferramentas páginas HTML utilizando para auxiliar no desenvolvimento de diferentes engines de aplicações. Destacando-se: renderização (mozilla e IE). − Suporte a threads. − Unicode. − Suporte nativo aos bancos de dados PostgreSQL, MySQL, O wxWidgets ainda é reconhecida por DB2, InterBase, SQLite, Oracle, Sybase. alternativas. − Suporte a desenvolvimento de aplicações de rede com suporte a sockets, http e ftp. 4. Conclusão − Suporte ao desenvolvimento de servidores de rede. − Possibilidade de integrar controles As ferramentas RAD e os Frameworks ActiveX em aplicativos rodando oferecem um enorme ganho de sobre a plataforma Windows. produtividade para o desenvolvedor, − Engine HTML embutida. tornando possível dedicar mais tempo à − Possibilidade de desenvolvimento parte do desenvolvimento ligada às regras de aplicações sem a necessidade de negócio. A partir da analise de algumas de embutir uma interface gráfica. das ferramentas RAD disponíveis, bem Isso torna possível utilizar as como suas funcionalidades e defeitos é classes disponíveis na QT para o possível identificar as ferramentas mais desenvolvimento de aplicações adequadas para cada trabalho. console. (Disponível na QT 4.0 ou O Gambas demonstrou-se a superior) ferramenta RAD mais madura entre todas − Engine, parser e gerador XML as ferramentas abordadas, possuindo embutido, com suporte a DOM e características capazes de tornar o SAX. desenvolvimento mais produtivo, como por exemplo o suporte internacionalização. A De todos os frameworks demonstrados ferramenta RAD Lazarus, é similar ao anteriormente a QT é, de longe, o mais Gambas, mas possui dependência de completo. bibliotecas ultrapassadas, deixando o Um dos destaques da QT é o seu desenvolver sem opções e tendo que conjunto de ferramentas auxiliares ao depender de bibliotecas que ficarão sem desenvolvimento de aplicações. É suporte em poucos anos. importante citar: − Qmake: aplicativo responsável por Ainda que as ferramentas RAD livres gerenciar e executar, de maneira tenham que evoluir bastante até chegarem portável, os scripts de construção ao nível das ferramentas RAD proprietárias, e compilação do aplicativo. é bastante claro que elas podem ser − Assistant: um aplicativo que serve utilizadas para o desenvolvimento de como um navegador da imensa aplicações simples, protótipos e até mesmo documentação disponibilizada pela para portar aplicações originalmente Trolltech. O Assistant lembra, de desenvolvidas para ambientes certo modo, as ferramentas proprietários. disponibilizadas na MSDN Library Entre os Frameworks abordados, (a documentação de todos demonstraram um bom nível de desenvolvimento do Windows, produtividade e diferenciam-se apenas disponibilizada pela Microsoft). pelas ferramentas disponibilizadas, − Designer: ao contrário os outros documentação e licença. O wxWidgets frameworks, a Trolltech fornece possui similaridade com a MFC sendo uma como parte do pacote padrão boa opção aos desenvolvedores C/C++ disponibilizado na QT um intuitivo acostumados com o ambiente Windows. designer de interfaces gráficas. Os Frameworks, especialmente a − Linguist: utilitário utilizado para GTK+ e a QT, são utilizados em inúmeros efetuar a tradução de aplicativos grandes projetos (proprietários e livres) desenvolvidos com a QT. sendo possível assegurar sua maturidade, confiabilidade e estabilidade. A Troltech disponibiliza documentação de qualidade sobre a QT, tornando o seu aprendizado mais prático visto as outras 5. Referências [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.