IBM Rational Rapid Developer Mais Controlo para os Arquitectos Sobre o Código, Desenho e Desenvolvimento O desenvolvimento de aplicações nunca foi fácil. À medida que aumenta a importância do software, também aumenta a sua complexidade. Numa tentativa de reduzir essa complexidade e aumentar a facilidade de utilização, os fornecedores de ferramentas de software têm procurado criar ferramentas RAD (Rapid Application Development) que permitam criar aplicações rapidamente. As primeiras iterações não eram verdadeiras ferramentas, mas antes bibliotecas que forneciam aos especialistas em desenvolvimento funcionalidades chave e colocavam o enfoque sobretudo na geração de interfaces com o utilizador. Em alguns casos, estas propostas foram expandidas para incluir bibliotecas sofisticadas para comunicações e funções chave. No entanto, apesar de aumentarem a rapidez de desenvolvimento, estas bibliotecas eram proprietárias e exigiam uma perícia significativa para serem utilizadas correctamente. Para tornarem o RAD mais prático e abrir a programação a uma base mais alargada de programadores, os fornecedores de ferramentas desenvolveram produtos capazes de fornecer um ambiente completo para os especialistas em desenvolvimento. Como exemplos desses produtos podemos referir o Microsoft Visual Basic e o Sybase PowerBuilder. As linguagens de suporte eram fáceis de aprender e as próprias ferramentas forneciam aceleradores, como os desenhadores de GUIs. Estes permitiam que os utilizadores “desenhassem” a interface com o utilizador através do drag and drop de controlos numa imagem virtual e da ligação de acções (sob a forma de funções de código) aos controlos. Estes ambientes conquistaram rapidamente adeptos e foram criados muitos milhões de linhas de código utilizando as suas ferramentas. Contudo, persistiam alguns problemas. Apesar destas ferramentas terem sido utilizadas para criar muitas aplicações críticas, faziam muito pouco para controlar os métodos utilizados pelos especialistas em desenvolvimento. Na sua maior parte, as aplicações não eram baseadas em modelos nem em arquitecturas robustas. As aplicações resultantes caracterizavam-se normalmente por não serem estruturadas, por serem desenhadas de forma pobre e por serem difíceis de manter. A falta generalizada de práticas de partilha de código também fazia com que as aplicações disponibilizassem frequentemente os mesmos conjuntos de funções base de várias formas diferentes (às vezes com conflitos). Por outro lado, quando as organizações queriam expandir a abrangência de uma aplicação não estruturada para além de um único departamento, a aplicação era difícil de escalar, dado o conjunto de ferramentas utilizado para a criar. De igual modo, as tecnologias subjacentes a esses conjuntos de ferramentas eram proprietárias, pelo que era difícil a sua integração com outras tecnologias. Para combater este caos, a Rational Software Corporation (actual IBM Rational) procurou disponibilizar uma abordagem mais baseada em standards para o ciclo de vida do desenvolvimento de aplicações. Essa abordagem inclui linguagens (UML), ferramentas (Rational Rose, Rational ClearCase, Rational ClearQuest, ou Rational XDE) e melhores práticas da indústria (através do RUP Rational Unified Process). Em Maio de 2003, o Rational Rapid Developer veio juntar-se a esta lista de recursos e tecnologias da Rational. Esta ferramenta fornece uma abordagem RAD orientada à arquitectura, baseada em standards como o J2EE. A nova abordagem chama-se mesmo “architected RAD” e fornece vários aceleradores e controlos, além do desenvolvimento de aplicações. Segundo a IBM Rational, o Rational Rapid Developer permite que os especialistas em desenvolvimento menos experientes possam conjugar esforços com arquitectos experientes e especialistas em desenvolvimento seniores para criarem aplicações desenhadas de forma sólida. O Gartner Group chama a estas ferramentas Architected RAD, ou ferramentas ARAD. Algumas das características destas ferramentas incluem: • • • • O suporte de standards da indústria, como o J2EE, UML, XML, SOAP e MDA. A utilização de padrões de desenho e de construção que sejam standards da indústria, como é o caso do MVC2. Qualidade de engenharia a nível do código criado. Consistência arquitectural a nível de todas as equipas de especialistas em desenvolvimento. Ainda de acordo com o Gartner Group, “não existe melhor forma de aumentar a produtividade, reduzir os custos e assegurar a escalabilidade e o desempenho das aplicações, ao mesmo tempo que se implementam métodos que são minimamente invasivos”. Por outro lado, considera que, “para a maior parte das empresas e aplicações, o ARAD poderá provar ser uma abordagem quase ideal para balancear a rapidez e o custo com uma qualidade e desempenho suficientes das aplicações”. Architected RAD: importar um modelo de base UML O coração de qualquer aplicação é o modelo de base que a descreve – um modelo de domínio, modelo de classe, modelo lógico, modelo entidade, etc. Em todas as instâncias, este modelo de base fornece uma visão das classes chave e das suas relações. O IBM Rational Rapid Developer suporta esta visão graficamente com o seu Class Architect baseado em UML (Figura 1). Figure 1. Modelo de classe UML no IBM Rational Rapid Developer. Podemos desenvolver este modelo de várias formas. Numa delas, podemos utilizar simplesmente as ferramentas de desenho para arrastar, largar e ligar classes e pacotes na imagem da funcionalidade Class Architect dentro do Rational Rapid Developer. No entanto, o mais frequente é que a equipa de desenvolvimento queira reaproveitar elementos já existentes. Neste caso, o arquitecto e os especialistas em desenvolvimento seniores podem importar esses elementos para o projecto da aplicação existente no Rational Rapid Developer. A importação é efectuada principalmente a partir de uma base de dados existente. Utilizando o wizard de importação de base de dados a partir do menu Tools, os arquitectos podem ligar-se à base de dados e importar as definições de tabela e de relação, seleccionando aquilo que pretendem a partir da lista de tabelas e de views. Isto pode ser feito tantas vezes quantas as necessárias ao longo do ciclo de desenvolvimento. Além disso, as alterações que os arquitectos fazem ao modelo no Rational Rapid Developer podem ser propagadas à base de dados ou aos scripts DLL que podem ser corridos pelo administrador de base de dados. O Rational Rapid Developer também fornece a possibilidade de importar definições de elementos herdados, nomeadamente definições de base de dados IMS ou VSAM. De igual modo, os arquitectos podem criar uma classe ou modelo de informação através da utilização da funcionalidade de sincronização de modelo disponibilizada pelo IBM Rational Rapid Developer (Figura 2). Esta funcionalidade estabelece a ligação a modelos existentes, criados nas ferramentas de modelação Rational Rose ou Rational XDE, destinadas principalmente a especialistas de desenvolvimento seniores e arquitectos. As duas ferramentas da IBM Rational são ambientes de modelação ricos baseados no standard UML (Unified Modeling Language). Graças à utilização da funcionalidade de conectividade para acederem aos modelos existentes no Rational Rapid Developer, os arquitectos podem disponibilizar aos utilizadores um modelo de classe completamente desenvolvido, fornecendo-lhes um bom início para o desenvolvimento. Uma vez importado o modelo inicial, os utilizadores podem começar com as actualizações incrementais. Ou seja, à medida que os arquitectos modificam o modelo, os utilizadores recebem as alterações sem terem que voltar a importar todo o modelo. Além disso, os arquitectos podem filtrar facilmente os elementos que ainda não estão prontos para serem utilizados, ou que não são relevantes para a aplicação que uma determinada equipa pretende desenvolver. Figura 2. O IBM Rational Rapid Developer disponibiliza acesso aos modelos de classe UML existentes no IBM Rational Rose ou no IBM Rational XDE. Architected RAD: manter a consistência de desenho e de imagem de marca O IBM Rational Rapid Developer suporta um ambiente de desenho de interfaces de utilizador bastante rico. Os especialistas em desenvolvimento e os designers gráficos podem assim conceber uma interface de utilizador de uma aplicação utilizando controlos drag and drop e grelhas especiais para gerirem e apresentarem conteúdos complexos. O Rational Rapid Developer também suporta a criação de um repositório de estilos, que pode ajudar a garantir aspectos de páginas e uma imagem de marca uniformes. Isto é bastante útil quando temos várias pessoas a criar aplicações e a adicionar conteúdos a um site Web. Um repositório de estilos contém detalhes sobre esquemas de cores, estilos de fontes, temas (explicados mais abaixo), estilos de páginas e controlos de edição e de navegação. Um designer gráfico pode criar uma série de templates que permitam variações de estilo, de cor, de elementos de desenho…, mantendo a consistência da imagem de marca ao longo do site. Na Figura 3, o designer gráfico criou um repositório de estilos com especificações para os botões, tabs, grelhas e labels, bem como algumas templates de documentos. Outra equipa de desenvolvimento poderá importar este repositório de estilos para outra aplicação que esteja a criar com o Rational Rapid Developer, sendo possível determinar quais os controlos e estilos que essa equipa poderá utilizar. Além disso, o designer pode criar temas para o repositório de estilos utilizando o Theme Architect. Os temas são conjuntos de cores, de imagens e de fontes, aos quais pode ser dado um nome. Os temas são depois utilizados especificamente para uma dada página ou carregados de forma dinâmica como uma opção disponibilizada aos utilizadores. Figura 3. Com o IBM Rational Rapid Developer, um designer gráfico pode criar um repositório de estilos que permita a múltiplas pessoas manter a consistência de desenho e de imagem de marca ao longo das páginas de um site Web. Architected RAD: manter o controlo sobre o código O Rational Rapid Developer tem várias funcionalidades que disponibilizam um grande controlo e consistência a nível do código, além de facilitarem o trabalho de codificação aos especialistas em desenvolvimento. Geração de código para múltiplas tecnologias Através da sua combinação de modelos de base, de interacção e de interface com o utilizador, o Rational Rapid Developer pode gerar a maior parte do código para todos os ntiers de uma aplicação J2EE. Actualmente, é capaz de gerar aplicações para uma grande variedade de tecnologias, que o arquitecto/especialista em desenvolvimento pode seleccionar a partir de um menu. A migração de uma aplicação da tecnologia de um fornecedor para a de outro – ou de uma versão mais antiga de uma tecnologia para uma versão mais recente – é tão fácil como seleccionar outra opção de menu e clicar no botão Construct. Isto significa que os especialistas em desenvolvimento podem ter um ambiente de desenvolvimento no seu desktop (por exemplo, Tomcat com SQL Server) e outro ambiente completamente diferente para produção (por exemplo, IBM WebSphere com IBM DB2), sem se preocuparem com as diferenças entre estas tecnologias. Se considerarmos a perspectiva da manutenção das aplicações, esta capacidade assegura que as equipas de desenvolvimento podem investir a maior parte do seu tempo na resolução de problemas de negócio, adicionando novas funcionalidades e capacidades às aplicações, em vez de o gastarem a portar o código de uma tecnologia para outra. Padrões de construção do código Uma funcionalidade única do Rational Rapid Developer tem a ver com o facto de permitir que os arquitectos e os especialistas em desenvolvimento seniores definam padrões de desenho para a construção da aplicação. O Rational Rapid Developer já vem com um conjunto específico de padrões por defeito para classes, páginas, mensagens e componentes (web services), que são carregados com cada aplicação (Figura 4). Para cada categoria, os arquitectos e os designers podem escolher um desses padrões por defeito, ou efectuar misturas e alterações para alcançarem um resultado específico. Figura 4. Padrões de construção por defeito no Rational Rapid Developer. Cada padrão tem um descritor com nome que pode ser atribuído a uma página, mensagem ou componente. Os padrões também podem ser transaccionais ou não transaccionais e podem suportar SQL dinâmico ou procedimentos armazenados. De igual modo, podem suportar beans entidade, JSPs (JSP Model II), ou servlets. Isto permite que os arquitectos seleccionem os padrões que mais se adeqúem à aplicação e impor a sua utilização a quem faz desenvolvimento. Templates de código O Rational Rapid Developer inclui um ambiente de codificação designado por Logic Architect. É aqui que os programadores escrevem realmente a lógica de negócio. Para facilitar este processo e garantir a consistência entre a codificação efectuada por diferentes pessoas, o Logic Architect disponibiliza uma série de templates de código que realizam tarefas comuns de processamento aplicacional de negócio. Os especialistas em desenvolvimento escolhem uma template e respondem às questões do wizard para essa template. Seguidamente, o Logic Architect preenche a template com o código apropriado (Figuras 5 e 6). Figura 5. Templates de código para o Logic Architect. Figura 6. O Logic Architect preenche as templates de código automaticamente. Por exemplo, se o especialista em desenvolvimento seleccionar uma template para chamar um procedimento armazenado, precisará de inserir o nome do descritor de base de dados e o nome do procedimento armazenado. A partir daí, o Logic Architect insere o código automaticamente. Como se trata de um sistema aberto, permite que o arquitecto modifique as templates de código de existentes e/ou adicione outras novas. Os arquitectos e os especialistas em desenvolvimento seniores podem manter o controlo sobre o código que é utilizado ao longo do projecto. Controlo de segurança O Rational Rapid Developer também disponibiliza funcionalidades avançadas para os especialistas em desenvolvimento mais sofisticados, permitindo alargar o acesso a componentes e fornecedores de segurança costumizados. Desta forma, suporta segurança baseada em papéis (role-based), assim como encriptação de dados. Além disso, permite a adição de mecanismos de segurança costumizados que sejam conformes com o standard J2EE JCE (Java Cryptography Extender). Isto permite que os arquitectos criem os seus próprios mecanismos de segurança sob a forma de um fornecedor JCE, ou que melhorem as implementações JCE já existentes de terceiros. Controlo via componentes costumizados Outra forma dos arquitectos poderem controlar o desenvolvimento consiste na utilização de componentes sob a forma de pacotes Java, ou EJBs. Estes componentes orientados para os serviços podem representar lógica de negócio comum que os utilizadores do Rational Rapid Developer poderão chamar a partir dos seus métodos costumizados. Architected RAD: controlo da implementação A maior parte das ferramentas de desenvolvimento disponibilizam um ambiente local onde se podem colocar as aplicações para teste. No entanto, o ambiente de produção real é normalmente bastante mais complexo, pelo que são necessárias competências especializadas para determinar a forma como se deve segmentar a aplicação para ser implementada. O Rational Rapid Developer disponibiliza aos arquitectos e especialistas em desenvolvimento seniores uma ferramenta avançada – o Partition Architect – para criar definições de partição e de implementação para as aplicações. O Rational Rapid Developer fornece um modelo “local” que toma como referência o Apache Tomcat – um motor servlet/JSP open source. De igual modo, suporta a implementação em várias plataformas J2EE, nomeadamente o IBM WebSphere (versões 3.5, 4.0 e 5.0). O Partition Architect permite a segmentação da aplicação em diferentes níveis (apresentação, negócio e dados), bem como de acordo com linhas funcionais (comprador, vendedor, administrador, etc.). Figura 7. O IBM Rational Rapid Developer tem o Partition Architect, que permite um controlo avançado sobre a implementação. Baseado no artigo “IBM Rational Rapid Developer: More control for architects over code, design, and deployment”, de Joseph G. Noonan, Software Quality Engineering Manager, Rational Software (IBM Software Group). Tel: (+351) 239 497 230 / 2 • Fax: (+351) 239 497 231 E-mail: [email protected] • Internet: www.engenharia-software.com