Duarte, Fernando Jorge FerreiraSoares, Rui Pedro Mesquita2024-09-102024-09-102024-07-23http://hdl.handle.net/10400.22/25979This dissertation explores the transformative potential of Artificial Intelligence (AI) in accelerating and automating the development of Java microservices, focusing on the Spring Boot framework. As software development becomes increasingly complex, AI integration promises to simplify coding tasks while meeting technical standards and business requirements. The study begins with a comprehensive literature review on AI-driven code generation, identifying recent advancements and current knowledge gaps. Practical xperimentation follows, involving tools like GitHub Copilot, TabNine, and various versions of ChatGPT to assess their effectiveness in generating functional Java microservices code, integrating open APIs, and maintaining quality standards. The primary goal is to develop an AI-based methodology for generating specific code for a Java microservice within the Spring Boot environment. This goal involves creating open APIs, integrating databases, and connecting to external REST services. The thesis also examines the broader implications of AI in software development, such as data privacy, security, and employment impacts. It considers ethical issues to ensure fair and unbiased code generation. The adopted methodology is reflective and iterative, adjusting to emerging findings and challenges, with regular project team discussions refining AI tool application and evaluation. In conclusion, this research takes a comprehensive approach to AI integration in software development, highlighting its benefits and identifying areas for future research. The findings are expected to significantly contribute to the understanding of how AI technologies can revolutionize software development practices, enhancing efficiency, reducing development time, and ensuring code quality.Esta dissertação investiga o potencial transformador da Inteligência Artificial (IA) na aceleração e automação do processo de desenvolvimento de microserviços em Java, com um foco específico no framework Spring Boot. À medida que o desenvolvimento de software se torna cada vez mais complexo, a integração de tecnologias de IA promete simplificar tarefas de codificação, assegurando que o código gerado atende tanto aos padrões técnicos quanto aos requisitos de negócio. O estudo inicia-se com uma revisão exaustiva da literatura existente sobre geração de código impulsionada por IA, explorando os avanços recentes e identificando as falhas dos conhecimentos atuais. Esta revisão fornece a base teórica necessária para a fase seguinte do trabalho, que envolve a experimentação prática com várias ferramentas de IA, como o GitHub Copilot, TabNine, e diferentes versões do ChatGPT. Estas ferramentas são testadas em cenários de desenvolvimento real, avaliando a sua eficácia na geração de código funcional para microserviços em Java, a sua integração com APIs abertas e a sua capacidade de manter padrões de qualidade. O principal objetivo da investigação é desenvolver uma metodologia baseada em IA para gerar código específico para um microserviço Java dentro do ambiente Spring Boot. Esta metodologia inclui a criação de APIs abertas, a integração com uma base de dados e a ligação a serviços REST externos. Para alcançar este objetivo, foram definidos objetivos específicos como: • Revisão da Literatura: Realizar uma revisão abrangente da literatura sobre geração de código com IA, identificando as técnicas mais eficazes e lacunas de conhecimento. • Comparação e Seleção de Ferramentas de IA: Conduzir uma análise comparativa detalhada de várias ferramentas de IA disponíveis para geração de código, avaliando suas vantagens e limitações no contexto da investigação. • Avaliação de Desempenho: Avaliar a eficácia das metodologias de IA selecionadas em termos de precisão, eficiência e utilidade no processo de geração de código, utilizando métricas objetivas e cenários de teste práticos. • Desenvolvimento de um Estudo de Caso Funcional: Definir e implementar um estudo de caso funcional de complexidade média a alta para o microserviço alvo. • Análise Comparativa com Métodos Tradicionais: Comparar a abordagem impulsionada por IA com métodos tradicionais de geração de código, destacando as forças e fraquezas da IA, neste contexto. • Autonomia da IA em Diferentes Etapas: Determinar o nível de autonomia da ferramenta de IA em várias etapas do desenvolvimento, incluindo a criação de histórias de utilizador, a geração de código correspondente, e a integração de componentes de observabilidade e processos CI/CD. • Análise dos Resultados: Analisar os resultados da investigação para extrair conclusões significativas sobre a eficácia e praticidade da IA na geração de código. Propostas de Melhorias e Futuras Pesquisas: Propor melhorias à metodologia de geração de código baseada em IA e identificar áreas potenciais para futuras investigações. • Identificação de Questões de Segurança e Privacidade: Reconhecer e resolver vulnerabilidades de segurança e questões de privacidade no processo de geração de código impulsionado por IA. Além disso, a tese aborda as implicações mais amplas do uso de IA no desenvolvimento de software, incluindo preocupações com a privacidade dos dados, segurança e impacto no emprego no sector da engenharia de software. A investigação considera também as questões éticas envolvidas, como a necessidade de garantir que o código gerado pela IA é justo e equitativo, evitando perpetuar ou amplificar preconceitos existentes. A metodologia adotada é reflexiva e iterativa, ajustando-se às descobertas e desafios emergentes ao longo do processo. Sessões regulares de discussão e feedback com a equipa do projeto, permitiram refinar a aplicação e realizar a avaliação da ferramenta de IA, assegurando que a investigação se mantém centrada nas necessidades práticas e reais do mundo do desenvolvimento de software. Em última análise, esta pesquisa visa proporcionar uma abordagem equilibrada para a integração da IA no desenvolvimento de software, destacando os seus benefícios e identificando áreas para futuras pesquisas. As conclusões esperam contribuir para uma maior compreensão de como as tecnologias de IA podem revolucionar as práticas de desenvolvimento de software, melhorando a eficiência, reduzindo o tempo de desenvolvimento e garantindo a qualidade do código gerado.engArtificial IntelligenceAIMachine LearningSoftware DevelopmentCode GenerationAutomationJavaMicroservicesSpring BootAI ToolsUsing AI as a development acceleratorUtilização de IA como acelerador do desenvolvimentomaster thesis203691440