Você está na página 1de 5

EVERTON SALES BRANCO

METAPROGRAMAÇÃO DE SISTEMAS: Implantação de processos, codificação


em metalinguagem e geração de linguagem objeto

Chapecó

03/2019

1. INTRODUÇÃO

O futuro descrito por Miessler (2017) irá exigir de profissionais, não somente
daqueles da área de TI (Tecnologia da Informação), conhecimentos e capacidades
para programar e configurar sistemas de automatização para os mais diversos tipos
de tarefas. Desde médicos que precisarão saber ajustar, programar e calibrar
equipamentos de altíssima precisão em suas cirurgias, até construtores civis que terão
que carregar os projetos de construções em máquinas autônomas e programá-las
para execução das obras. O futuro ainda se desenha, mas o processo de evolução da
automatização em massa é algo irreversível. Segundo Miessler (2017), as formas de
programação serão modernizadas, as linguagens de programação atuais ainda serão
de domínio de programadores avançados, para a grande massa serão desenvolvidas
linguagens simplificadas de programação, usando símbolos, gráficos, voz e textos
com linguagem natural.
Seguindo a linha de raciocínio sobre essa crescente tendência da evolução,
não é difícil entender que a mão-de-obra será muito especializada e específica em
cada área e sobretudo escassa. A formação de profissionais com conhecimento em
programação, além de suas áreas específicas de atuação, além de cara, não tem só
a ver com custo ou tempo, mas também com a predisposição destes profissionais em
aprofundar-se em uma matéria que foge da linha principal de seu interesse.
É necessário definir soluções para que profissionais possam continuar a
aprofundar-se naquilo que fazem melhor e que ao mesmo tempo não fiquem
defasados com a realidade das tecnologias dos mercados que atuem.
O presente trabalho procura expor processos e métodos de desenvolvimento
de um ecossistema para fábricas de softwares, para viabilizar linguagens simplificadas

1
para serem usadas para automatizar a geração de algoritmos complexos, através de
metaprogramação1, facilitando a integração de não-programadores ao time de
desenvolvimento de sistemas destinados às mais diversas áreas do mercado.
O objetivo geral deste TCC é explorar e expor processos e métodos de
desenvolvimento em fábricas de softwares, para que algoritmos complexos,
desenhados por engenheiros de softwares e implementados por programadores,
possam ser replicados, complementados e enriquecidos com o know-how de
profissionais de áreas diferentes da TI, de forma simplificada e automática através de
metaprogramação.
Portanto, para cumprir o objetivo geral, será desenvolvido uma aplicação
funcional base que será submetida à metaprogramação. Os procedimentos
necessários serão implementados em IDE (do inglês Integrated Development
Environment ou Ambiente de Desenvolvimento Integrado) de código livre específica
para esse fim e para concluir, exposição dos resultados.

2. REFERENCIAL TEÓRICO
Este Capítulo apresenta os conceitos necessários para o bom entendimento e
desenvolvimento deste trabalho.

2.1 FÁBRICA DE SOFTWARE


O conceito de fábrica de software descrito por Fernandes e Teixeira (2004, p.
23-28) é a mudança de desenvolvimento manual ou artesanal de softwares para algo
científico, que usa técnicas de engenharia para alcançar o sucesso no
desenvolvimento. A engenharia de software evoluiu no sentido de compreender
métodos, processos, ferramentas, planejamento e análises e desenvolvimento de
softwares, mas sempre com o olhar voltado ao setor técnico, melhorando o
conhecimento para que este setor pudesse entender melhor o que outras áreas
necessitavam. De acordo com os autores citados, uma área de desenvolvimento de

1
Metaprogramação é a programação através de códigos, sinais visuais ou até mesmo sinais sonoros, chamados
de metalinguagem, que ao serem processado geram de forma autônoma outra codificação, esta, chamada de
linguagem objeto.
software ou sistemas é cada vez mais uma fábrica de resultados que precisa estar
cada vez mais orientada para a gestão da operação do negócio do cliente. Então o
grande desafio é para que o caminho inverso seja atingido, ou seja, que outras áreas
possam atuar dentro da engenharia de software para solucionarem seus próprios
problemas, mesmo com conhecimento técnico limitado.
Este trabalho é direcionado a solucionar diretamente um problema pontual
existente em fábricas de softwares. Foi identificado através de contatos com
empresários do setor, que existe uma grande dificuldade em encontrar profissionais
que tenham domínio técnico em programação e ao mesmo tempo conhecimento das
regras de negócio para o qual um sistema em desenvolvimento é destinado.
A situação atual é a integração de profissionais de negócios com a equipe
técnica, porém, essa prática aumenta o desperdício de recursos e tempo com
reuniões, além de que os treinamentos de analistas, programadores e testadores são
elevados. Diante deste processo, a qualidade do sistema também é prejudicada.
Com base na existência da dificuldade de integração de profissionais
interdisciplinares, o cenário onde engenheiros de softwares e programadores
executam tarefas técnicas e profissionais de negócios têm autonomia e capacidade
para oferecer sistemas que atendam às necessidades das empresas de seus clientes,
parece o caminho perfeito para o sucesso em desenvolvimento de software.
Sendo assim, identifica-se a necessidade de implantar mecanismos para que
não-programadores possam atuar no desenvolvimento, melhorias e atualizações das
regras de negócio, agregando alto valor intelectual aos sistemas entregues.

2.2 METAPROGRAMAÇÃO
É importante compreender que metaprogramação usa metalinguagem de
altíssimo nível, DSL (do inglês, Domain Specific Language ou linguagem de domínio
específico), direcionada para resolver uma classe específica de problemas, deixando
de lado toda a abstração de linguagem genérica e focando em problemas que ela foi
desenvolvida para resolver.
Uma DSL se bem desenhada e implementada, pode facilitar muito o reuso de
códigos e componentes, fazendo com que o desenvolvimento de software seja
acelerado e menos propenso à erros. Basta compreender que a sequência de 2 ou 3
palavras pode gerar na linguagem objeto centenas ou milhares de linhas de código. É
uma espécie de mapeamento, onde pode-se determinar que poucas informações
menos formais possam ser convertidas automaticamente numa grande quantidade de
dados complexos.
No contexto deste trabalho, esta especificidade facilita uma ponte entre a área
técnica e a área de negócios, permitindo que profissionais com conhecimento limitado
à DSL, possam tomar decisões de mudanças no desenvolvimento de sistemas.

2.3 LINHA DE PRODUTOS DE SOFTWARE


Para o sucesso desse procedimento é importante o gerenciamento e
rastreabilidade de variabilidades dos produtos de softwares desde os desenhos
iniciais, isso vai permitir a implantação de uma linha de produto de software (LPS).
Fortemente baseada em reuso, segundo Pohl (2005, apud LUZ E LENCO, 2019) a
LPS permite que produtos de softwares compartilhem seus núcleos, ao mesmo tempo
que permitem a instanciação de customizações de funcionalidades específicas.
Luz e Lenco demonstram através do trabalho deles que o desenvolvimento de
uma LPS, por definir claramente quais são as variabilidades de um software, é pré-
requisito para a metaprogramação de software através de uma DSL. Portanto esse
TCC descreve qual é o caminho para implantação de métodos, técnicas e ferramentas
para definição e implementação das variabilidades de software previamente
desenhadas e modeladas por abordagens e técnicas de LPS.

2.4 TRABALHOS RELACIONADOS


Trabalhos complementares a este, são de alta relevância para entendimento
de processos de metaprogramação de sistemas. O já citado trabalho de mestrado de
Luz e Lenco aborda métodos e técnicas de desenvolvimento de LPS, assunto de
extrema importância para modelagem e desenho de softwares com suporte à
metaprogramação de variabilidades.
Sobre a estrutura funcional e organizacional de fábricas de software,
Fernandes e Teixeira também citados anteriormente, publicaram uma importante obra
que discorre sobre a implantação e gestão de operações nestas empresas. Conhecer
a estrutura e seus melhores arranjos, mesmo não sendo assunto objeto deste
trabalho, é um caminho importante para entender quando e quem deve ficar
responsável por modelar e desenhar sistemas aptos a aceitar a incorporação de um
DSL.

REFERÊNCIAS
MIESSLER, Daniel. The Real Internet of Things. San Francisco: Amazon, 2017.

FERNANDES, A. A.; TEIXEIRA D. S. Fábrica de Software: Implantação e Gestão de Operações.


São Paulo: Atlas, 2004.

LUZ, C. D; LENCO, J. M. P. Métodos e técnicas de desenvolvimento de Linha de Produto


de Software. Mestrado em Ciência da Computação, Universidade Estadual de Maringá, Maringá,
Brasil, 2019.

Você também pode gostar