Module integration using graph grammars (MIGRATE) - Cravo, Diogo Raphael (2021)
Software, seja desktop, mobile ou web, está se tornando mais e mais conectado. Desenvolvimento de software também está se tornando mais conectado com ecossistemas feitos de redes de milhões de pacotes. Construir software hoje corresponde a escrever código que integra bibliotecas, serviços e aplicações. Essas redes estão sob mudanças constantes devido a necessidades internas (e.g. novas funcionalidades) ou demandas externas (e.g. atualização de dependências). Evitar defeitos de integração neste cenário pode ser um grande desafio, apesar de estratégias como teste e versionamento. Nós estudamos gramáticas de grafos para encontrar um conjunto de gramáticas (gramáticas de verifica ção) que representam como módulos de software se integram e aproveitamos análises de gramáticas de grafos existentes, especificamente análise de pares críticos, para apontar automaticamente possíveis problemas de integração nessas gramáticas. Além disso, nós criamos um formalismo (redes de módulos) que representa de que forma módulos compartilham informação e aproveitamos gramáticas de grafos, pelo fato de que pode se provar seu comportamento funcional (confluência), para traduzir instâncias de redes de módulos para gramáticas de verificação, possibilitando que desenvolvedores criem e modifiquem redes de módulos e então gerem automaticamente avisos que dizem respeito a problemas de integração. Nós resumimos este processo em um framework que cha mamos de integração de módulos utilizando gramáticas de grafos (MIGRATE), o qual ilustramos neste trabalho através de um estudo de caso com um motor de busca por artigos de pesquisa. Nossa abordagem demonstra como aproveitar análise de pares críticos de gramáticas de grafos para descobrir automaticamente alguns defeitos de integração. Ela também serve como caminho para pesquisas futuras exercitando todo o potencial de análises de gramáticas de grafos.