Evolução das plataformas de low-code
26 de outubro de 2022O software desempenha um papel importante na nossa sociedade. O nosso mundo é conduzido por software, desde as coisas que fazemos online até aos carros que conduzimos. De acordo com Gartner, as empresas precisam ter uma estratégia de software para poderem competir. As empresas (e, em menor medida, as organizações sem fins lucrativos) participam desta transformação para um mundo movido por software. No entanto, enfrentam três desafios para o fazer:
Dado o seu foco, parece que as plataformas de low-code estão no bom caminho para resolver os dois primeiros desafios. Permitir que os programadores cidadãos participem no processo de desenvolvimento de software não só resulta num menor número de programadores de software com formação, mas também envolve automaticamente o lado empresarial no desenvolvimento do software. Contudo, ainda não atingimos a utopia. As plataformas de low-code tem de estar à altura de certas expectativas para serem bem-sucedidas. E estas expectativas introduzem novos desafios para os arquitetos de software que concebem uma plataforma de low-code (LCP).
Há uma escassez de engenheiros de software que só parece aumentar.
Além disso, o desenvolvimento de software é complexo e requer um esforço conjunto de engenheiros de software e peritos no domínio. Podemos ver pela crescente popularidade do DDD e BizDevOps que as empresas estão conscientes deste desafio.
Finalmente, o processo não para quando o software é desenvolvido. As empresas não operam no vácuo; fazem parte de um mundo maior habitado por clientes, fornecedores, governos, e concorrentes. Por consequência, as empresas têm que atualizar constantemente o seu software para cumprirem os seus desejos e exigências.
Plataformas de low-code, um conceito identificado pela primeira vez em 2014 pela Forrester, poderia ser a solução para estes desafios. O termo low-code enfatiza que estas plataformas permitem o desenvolvimento de sistemas de software com um baixo esforço de codificação. Visam o cidadão desenvolvedor, profissionais sem formação específica em desenvolvimento de software, através da introdução de abstrações de nível superior, tais como modelos específicos de domínio. Uma discussão em curso é se as plataformas de low-code são inovadoras. Serão elas uma nova marca de desenvolvimento orientado por modelos? Ou uma mistura de model-driven e outras técnicas? Ou representam algo de novo? Eu defendo que, embora de uma perspectiva tecnológica não ofereçam algo novo, o alvo e o foco das plataformas de low-code é diferente das plataformas baseadas em modelos em geral.
Além do mais, as LCP têm que apoiar o desenvolvimento de aplicações modernas, baseadas em nuvens. O software bem-sucedido já não é uma aplicação acessível apenas através de um computador da empresa, as aplicações modernas estão sempre disponíveis a partir de cada dispositivo. Em segundo lugar, estas aplicações não devem ser apenas acessíveis a seres humanos, esperamos também que estas aplicações estejam abertas à comunicação com outros sistemas. Isto significa que outras empresas podem interagir com os dados e processos dentro destas aplicações para criar colaborações. Finalmente, a fim de apoiar as empresas a longo prazo, as plataformas de low-code precisam apoiar a evolução das aplicações de software. A manutenção de software deve ser tão fácil como a criação de novo software. Se os LCPs não incorporarem estes princípios de concepção, o software que os clientes serão capazes de criar com eles não satisfará as expectativas do cliente ou não será capaz de evoluir de acordo com as necessidades do cliente.
Os arquitetos de software responsáveis pela concepção de plataformas de low-code enfrentam um enorme desafio ao mesmo tempo que resolvem estes desafios para os seus clientes. Durante a minha pesquisa de doutorado, tomei o arquiteto de softwares como o meu ponto de vista principal ao mesmo tempo que reunia conhecimentos e criava soluções que apoiavam estes arquitetos de LCP. Este artigo resume as contribuições e sugestões mais importantes para construir a próxima geração de plataformas de low-code, o texto completo da minha dissertação Evolução das Plataformas de Low-Code está disponível no meu website.
Arquitetura baseada em nuvens
Para que os LCPs permitam aos criadores cidadãos desenvolverem sistemas de software cada vez maiores e complexos, precisam de incorporar abordagens que permitam o desenvolvimento de sistemas tão grandes. Exemplos destas abordagens são os padrões arquitetônicos, tais como o estilo de arquitetura microservice (MSA) e as arquiteturas orientadas para eventos. Ambos estes padrões fornecem novas formas de modularização de sistemas de grandes dimensões. Abstrações que melhoram a modularização são essenciais para gerir a complexidade de sistemas de software cada vez mais complexos e de grandes dimensões. A ideia por detrás, por exemplo, do estilo MSA é desenvolver uma série de sistemas de software mais pequenos (e portanto menos complexos) interligados, em vez de um grande sistema monolítico. Uma arquitetura impulsionada por eventos assegura que diferentes partes de um sistema de software, tais como microservice, comunicam de forma assíncrona. Isto resulta num sistema frouxamente acoplado no qual os diferentes microservices podem ser desenvolvidos de forma autônoma. As equipes de desenvolvimento podem concentrar-se numa parte menor do sistema, diminuindo a complexidade das suas tarefas.
O sourcing de eventos e o Command Query Responsibility Segregation (CQRS) são dois padrões arquitetônicos específicos que podem ser aplicados no estilo MSA e em arquiteturas orientadas por eventos. Embora estes padrões ofereçam muitos benefícios, pouco conhecimentos e ferramentas estão disponíveis para os arquitetos de software que precisam abordar a evolução do software. Na minha dissertação, apresentamos várias técnicas para a evolução dos sistemas de origem de eventos que compilamos a partir de entrevistas com vários engenheiros. Os arquitetos de software podem utilizar estas técnicas para criar atualizações contínuas dentro das suas plataformas de low-code.
Gestão de API
As aplicações de software já não podem ser vistas como sistemas isolados, ao participarem em ecossistemas de software, estão ligadas ao mundo exterior. Os ecossistemas de software são utilizados por organizações produtoras de software (SPO) para aumentar o valor do seu software para os seus clientes através da colaboração com terceiros. Estes ecossistemas são formados em torno de plataformas de software, que por sua vez são geridas por orquestradores de plataformas. As plataformas são um conjunto de organizações que servem colaborativamente um mercado de software e serviços.
As Interfaces de Programação de Aplicações (APIs) são indispensáveis nestes ecossistemas de software. A gestão de APIs é, portanto, uma atividade crucial para estes orquestradores. Os terceiros que estendem os sistemas de software dependem destas APIs, tornando essencial que estes APIs estejam disponíveis e possam ser escaladas. Se os LCPs quiserem apoiar a engenharia de ecossistemas de software, precisam oferecer capacidades de gestão de APIs. Portanto, os arquitetos de software dos LCPs precisam planear e desenvolver capacidades de gestão de APIs para que os LCPs possam crescer em maturidade.
Juntamente com os meus co-autores, apresentei não só um modelo geral de maturidade para as práticas de gestão de APIs, API-m-FAMM, mas também pesquisei quatro conhecidas plataformas de low-code para avaliar o seu estado atual de apoio às práticas de gestão de APIs. Concluímos que embora tenham várias capacidades necessárias, em geral ainda não estão concentradas no apoio ao cidadão desenvolvedor de APIs e ecossistemas de software em crescimento. Nos próximos anos, as plataformas de low-code precisam evoluir de plataformas de construção de aplicações para plataformas de construção de plataformas.
Análise de impacto da mudança
O desafio mais difícil para os arquitetos de software que desenvolvem plataformas de low-code é a análise do impacto da mudança. As mudanças que são feitas, tanto pelos engenheiros de software como pelos cidadãos desenvolvedores, dentro de uma plataforma de low-code têm impacto noutras partes da plataforma, incluindo os outros artefatos de software no ecossistema. Enquanto algumas das mudanças são inocentes, outras requerem conversão de dados. A análise do impacto é difícil devido às abstrações de nível superior oferecidas pelas plataformas de low-code, mas para as empresas que utilizam plataformas de low-code esta análise é essencial para manter o controlo sobre as suas aplicações e o LCP deve apoiá-las na determinação dos componentes afetados e na sua evolução (semi)automática.
Na nossa investigação final, propusemos a estrutura da Análise de Impacto para Plataformas de Desenvolvimento de Low-Code. Esta estrutura apoia o processo de evolução do software. Os arquitetos de software podem utilizá-lo na concepção da sua plataforma de low-code, assegurando que as empresas se mantenham no controlo dos seus sistemas.
Trabalho futuro
O trabalho que comecei na minha dissertação não está terminado. Mais conhecimentos, orientações e ferramentas devem tornar-se disponíveis para os arquitetos de software para apoiar a concepção de plataformas de low-code. Isto facilitará o seu trabalho, e permitirá concentrarem-se nas características discriminatórias da sua plataforma: o tipo de aplicações e plataformas que podem ser criadas.