Name: | Description: | Size: | Format: | |
---|---|---|---|---|
2.2 MB | Adobe PDF |
Authors
Abstract(s)
The complexity of the product developed makes its validation processes too complex, namely
build pipelines. This complexity of build pipelines, coupled with the lack of knowledge in different
teams about their manipulation, means that teams cannot be fully independent. This
independence makes one team responsible for maintaining build pipelines.
The lack of independence on the teams means that they can not develop their components from
end to end, which can lead to a delay in development if the team responsible for maintaining
pipelines cannot fulfill all requests in a short time.
Since the software market is a competitive market, it is necessary to eliminate all sources of
delays, or possible delays, in order to deliver value to customers quickly and frequently. With
this, it is necessary to find a solution that allows different people from different areas and
teams to handle build pipelines, in a simple and fast way, with practically no context about the
concepts, terms, and configurations of build pipelines.
In this work, a DSL is presented with a simple understanding syntax that abstracts some concepts
related to build pipelines, which allows to create build pipelines logic and to program the
automation logic in the same language, and it also allows having code reuse. This solution is
based on two solutions already implemented in the industry and that has been successful: the
use of a DSL; and the existence of libraries of build pipelines.
The design, implementation, and validation were done in the industrial context of OutSystems.
This allowed the validation of the prototype in a real scenario, making a comparison between
the use of the prototype and the form of development of current build pipelines in the context
of this company. The results obtained show evidence that in overall, productivity increases with
the use of DSL.
A complexidade do software faz com que os seus processos de validação também eles sejam complexos, nomeadamente os build pipelines. Esta complexidade dos build pipelines, associada com a falta de conhecimento existente nas diferentes equipas sobre a sua manipulação, faz com que as equipas não consigam ser totalmente independentes. Esta independência faz com que exista uma equipa responsável pela manutenção de build pipelines. A falta de independência das equipas leva a que elas não consigam desenvolver os seus componentes de ponta a ponta, o que poderá levar a um atraso no desenvolvimento se a equipa responsável pela manutenção de build pipelines não conseguir satisfazer todos os pedidos em pouco tempo. Uma vez que o mercado de software é um mercado competitivo, é preciso eliminar todas as fontes de atrasos, ou de possíveis atrasos, para que se consiga entregar valor aos clientes de forma rápida e frequente. Com isto, é necessário encontrar uma solução que permita que diferentes pessoas de diferentes áreas e equipas possam manipular build pipelines, de uma forma simples e rápida, sem possuírem praticamente nenhum contexto sobre os conceitos, termos, e configurações de build pipelines. Neste trabalho é então apresentada uma Domain Specific Language (DSL) com uma sintaxe de simples compreensão que abstrai alguns conceitos relacionados com build pipelines, que permita criar lógica de build pipelines e programar a lógica de automação tudo na mesma linguagem, e que também permita ter reutilização de código. Esta solução é baseada com duas soluções já implementadas na indústria e que obtiveram sucesso, o uso de uma DSL e a existência de bibliotecas de build pipelines. O desenho, implementação e validação foram feitos no contexto industrial da OutSystems. Isto permitiu validar o protótipo num cenário real, fazendo a comparação entre o uso do protótipo e a forma de desenvolvimento de build pipelines atual no contexto desta empresa. Os resultados obtidos mostram evidências de que no geral a produtividade aumenta com o uso da DSL.
A complexidade do software faz com que os seus processos de validação também eles sejam complexos, nomeadamente os build pipelines. Esta complexidade dos build pipelines, associada com a falta de conhecimento existente nas diferentes equipas sobre a sua manipulação, faz com que as equipas não consigam ser totalmente independentes. Esta independência faz com que exista uma equipa responsável pela manutenção de build pipelines. A falta de independência das equipas leva a que elas não consigam desenvolver os seus componentes de ponta a ponta, o que poderá levar a um atraso no desenvolvimento se a equipa responsável pela manutenção de build pipelines não conseguir satisfazer todos os pedidos em pouco tempo. Uma vez que o mercado de software é um mercado competitivo, é preciso eliminar todas as fontes de atrasos, ou de possíveis atrasos, para que se consiga entregar valor aos clientes de forma rápida e frequente. Com isto, é necessário encontrar uma solução que permita que diferentes pessoas de diferentes áreas e equipas possam manipular build pipelines, de uma forma simples e rápida, sem possuírem praticamente nenhum contexto sobre os conceitos, termos, e configurações de build pipelines. Neste trabalho é então apresentada uma Domain Specific Language (DSL) com uma sintaxe de simples compreensão que abstrai alguns conceitos relacionados com build pipelines, que permita criar lógica de build pipelines e programar a lógica de automação tudo na mesma linguagem, e que também permita ter reutilização de código. Esta solução é baseada com duas soluções já implementadas na indústria e que obtiveram sucesso, o uso de uma DSL e a existência de bibliotecas de build pipelines. O desenho, implementação e validação foram feitos no contexto industrial da OutSystems. Isto permitiu validar o protótipo num cenário real, fazendo a comparação entre o uso do protótipo e a forma de desenvolvimento de build pipelines atual no contexto desta empresa. Os resultados obtidos mostram evidências de que no geral a produtividade aumenta com o uso da DSL.
Description
Keywords
Autonomia Build Pipeline Entrega Contínua Integração Contínua Linguagem de Domínio Específico Melhoria da Produtividade Pipeline As Code Redução de Complexidade