Programação de um backoffice em OutSystems

Este artigo vem na sequência de um pequeno projeto feito em freelancing que consistia num gestor de sócios para uma escola de dança. O objetivo é demonstrar as capacidades do OutSystems (e da sua cloud) neste tipo de projeto.

OutSystems é uma empresa de software nascida em Portugal com sede em Atlanta, EUA. Foca o seu negócio numa plataforma de ferramentas CASE (Computer-aided software engineering: software de apoio à conceção e implementação de outro software).

Tal plataforma segue e suporta os seguintes princípios basilares:

  • RAD: Rapid application development: metodologia de desenvolvimento de software que se foca mais no desenvolvimento em detrimento das tarefas de planeamento e que prevê um ajuste dinâmico/adaptativo de requisitos ao longo do tempo;
  • Agile: conjunto de métodos pragmáticas para desenvolvimento de software que se foca nas pessoas, em adaptação à mudança, em iterações, colaboração com o cliente, equipas multidisciplinares, entre outros (ver agile manifesto).

A plataforma OutSystems permite desenvolver facilmente:

  • desenvolver aplicações web, especialmente do estilo CRUD (Create, Read, Update, Delete);
  • consumir serviços externos (SOAP/REST);
  • providenciar serviços a consumidores externos (SOAP/REST);
  • criar websites multiplataforma (mobile/desktop);
  • integrar com BD existentes e com SAP;
  • operar com email, SMS, ficheiros Excel/CSV.

Sendo agile, facilita a criação e mudança rápidas e sem dores de cabeça. Por exemplo, é possível:

  • alterar o nome de um campo de uma tabela da BD, após ter todo o software completo, sem ter que fazer qualquer alteração extra em todo o stack (as alterações são efetuadas automaticamente em cascata);
  • criar uma tabela com paginação, carregamento Ajax e ordenação com um drag-and-drop da tabela BD para a interface;
  • criar um formulário de criação/edição de uma entidade (ex: sócio) com um drag-and-drop da tabela BD para a interface;
  • editar um novo campo num formulário (ou até listá-lo na tabela) com um simples drag-and-drop desse mesmo campo para a interface.

Para tornar isto real, a OutSystems oferece um conjunto de ferramentas para criar, correr e gerir a sua aplicação:

  • “Development Environment” (criar):
    • Service Studio: o produto central da plataforma; uma espécie de IDE;
    • Integration Studio: para integrar com código externo;
  • “Personal Environment” (correr): uma cloud PaaS (Platform as a Service)  na qual irá residir a aplicação, a BD e outros recursos;
  • “Service Center” (gerir): uma webapp para gestão das suas aplicações.

Tais ferramentas são gratuitas dentro de certos limites, os quais permitem criar aplicações reais. Como e porquê? A justificação é a mesma que para outras clouds:

  • ganhar popularidade;
  • receber avisos de bugs e sugestões da comunidade, servindo melhor o cliente pagante;
  • lançar a possibilidade de se evoluir para a versão licenciada, com todas as capacidades e garantias.

Foquemo-nos no Service Studio, o IDE por excelência. Uma das suas imagens de marca é a programação visual (visual RAD):

Definição da interface-utilizador através de WYSIWYG

Programação da lógica e processos de negócio através de fluxogramas

Diagrama do esquema de dados

O resultado desta programação visual irá naturalmente gerar:

  • código client-side (HTML, JavaScript, CSS, imagens)
  • código server-side (Java ou C#) para um determinado runtime (Java EE ou .NET)
  • Queries SQL e esquemas de BD para a BD escolhida

Há ainda que destacar as funcionalidades do Service Studio:

  • segurança: autenticação e autorização “de origem“;
  • temporizadores (timers): serviços que correm assincronamente em background;
  • temas com suporte nativo a mobile (one code base);
  • internacionalização/localização: suporte a diferentes linguagens;
  • sistema de plugins:
    • se precisar de uma nova funcionalidade pode importá-la facilmente;
    • pode criar os seus plugins/componentes reutilizáveis na sua aplicação;
    • pode partilhar componentes com a comunidade, através do OutSystems Forge.

Eu e o Henrique Dias decidimos apostar nesta tecnologia (usando a cloud gratuita) para desenvolver o backoffice da escola de dança Arte & Dança. O objetivo era gerir sócios, pagamentos, horário, presenças, professores, modalidades e pacotes, assim como as relações entre si. O projeto foi totalmente desenvolvido no tempo combinado, com sucesso.

Backoffice visto em desktop

Backoffice visto em mobile

Achámos que OutSystems (usando a cloud gratuita) seria a ferramenta adequada, devido:

  • à natureza CRUD do problema;
  • à autenticação já estar feita de raiz;
  • à cloud PaaS gratuita, que iria diminuir custos ao cliente;
  • à rapidez de desenvolvimento.

A documentação da API é razoável (parece um pouco desconexa e sem grande SEO); o portal de aprendizagem é excelente (tem cursos gratuitos). Tudo isto é complementado por uma comunidade vibrante que se expressa nos fóruns oficiais ajudando-se entre si, oferecendo tutoriais e discutindo novas funcionalidades.

Curso de OutSystems

Com o OutSystems é possível ter aplicações web complexas desenvolvidas em tempo recorde (uma app que pode incluir integrações, gestão de diversas tabelas e suporte mobile é facilmente feita numa semana por uma pessoa que saiba um pouco de OutSystems). A curva de aprendizagem é rápida e progressiva, pois o software guia-nos passo-a-passo. O programador pode então focar-se mais no problema em si e menos em questões repetitivas e bugs comuns que simplesmente deixam de acontecer.

Há provavelmente uma geração de código superior ao código tradicional e há que considerar o tempo de aprendizagem (que me parece reduzido, caso já se saiba os standards web). De notar que a cloud OutSystems é gratuita para um programador e permite várias apps (ficando disponíveis em http://a-sua-cloud.outsystemscloud.com/a-sua-app). Em ambientes empresariais e aplicações maiores, há que considerar a versão licenciada.

Há uma aparente dependência (lock-in) de uma ferramenta (equivalente, em mobile, a uma dependência do Xamarin). A verdade é que:

  • o código gerado é standard:
  • OutSystems afirma que é possível obter tal código:
    «If you ever decide to stop using OutSystems Platform, you can detach the source code of your applications. You can then manage them as any other .Net or Java application and use the IDEs and version control systems of your choice.»

Não acho que sirva todos os propósitos, como qualquer outra ferramenta tecnológica. Contudo, recomendo conhecer, para que passe a constar “no seu cinto de ferramentas”, usando-a quando achar adequada. Vale a pena experimentar, nem que seja só para pôr à prova a programação visual de alto nível, na qual se fazem queries, “ifs” e “fors” com ícones e setas.

Para começar, basta fazer o download do “Development Environment (é necessário registo), instalar e executar.

Deixar uma resposta