UNIVERSIDADE DO VALE DO TAQUARI CURSO DE ENGENHARIA DE SOFTWARE WHATSHOULDIUSE.DEV, UMA PLATAFORMA DE RECOMENDAÇÃO DE FRAMEWORKS E BIBLIOTECAS Felipe Augusto Dahmer Lajeado, julho de 2024 Felipe Augusto Dahmer WHATSHOULDIUSE.DEV, UMA PLATAFORMA DE RECOMENDAÇÃO DE FRAMEWORKS E BIBLIOTECAS Projeto de Monografia apresentado na disciplina de Trabalho de Conclusão de Curso II, do curso de Engenharia de Software, da Universidade do Vale do Taquari - Univates, como parte da exigência para a obtenção do título de bacharel em Engenharia de Software. Orientador: Prof. Luís Antônio Schneiders. Lajeado, julho de 2024 1 Felipe Augusto Dahmer WHATSHOULDIUSE.DEV, UMA PLATAFORMA DE RECOMENDAÇÃO DE FRAMEWORKS E BIBLIOTECAS A banca examinadora abaixo aprova a Monografia apresentada no componente curricular Trabalho de Conclusão de Curso II, do Curso de Engenharia de Software, da Universidade do Vale do Taquari - Univates, como parte da exigência para obtenção do título de Bacharel em Engenharia de Software: Me. Luis Antônio Schneiders - orientador Universidade do Vale do Taquari - Univates Me. Juliano Dertzbacher Universidade do Vale do Taquari - Univates Me. Mouriac Halen Diemer Universidade do Vale do Taquari - Univates Lajeado, julho de 2024 2 RESUMO Com a crescente expansão da comunidade de desenvolvedores e o aumento significativo no número de projetos de software em diversos setores, surge uma necessidade premente de otimizar o processo de seleção de frameworks e bibliotecas. Escolher as tecnologias adequadas desempenha um papel crucial na qualidade, eficiência e sucesso de qualquer projeto de desenvolvimento de software. O cenário atual, com inúmeras opções de frameworks e bibliotecas disponíveis, muitas vezes pode ser avassalador para desenvolvedores, especialmente para aqueles que estão ingressando no campo. Nesse contexto, a Inteligência Artificial (IA) e o conceito de Data-Driven Decision Making (DDDM) surgem como recursos valiosos para simplificar o processo de seleção. A IA é capaz de compreender as necessidades dos desenvolvedores, levando em consideração uma série de fatores, como o tipo de projeto e requisitos específicos. Isso permite que a plataforma proposta gere recomendações, economizando tempo e esforço no processo de pesquisa. O DDDM complementa essa abordagem ao fornecer uma base sólida para a tomada de decisão. Além disso, o trabalho propôs a realização de testes práticos envolvendo desenvolvedores em linguagens de programação suportadas pela plataforma. Esses testes foram fundamentais para garantir a eficácia, usabilidade e relevância da plataforma, bem como para coletar feedback valioso que irá direcionar aprimoramentos futuros. Entre o feedback coletado se destacam a confirmação do problema de pesquisa, onde todos participantes afirmaram já terem tido alguma dificuldade na seleção de frameworks e bibliotecas, assim como a boa receptividade da plataforma entre os desenvolvedores. Palavras-chave: Frameworks; Bibliotecas; Inteligência Artificial; Data-Driven Decision Making (DDDM). 3 ABSTRACT With the growing expansion of the developer community and the significant increase in the number of software projects across various sectors, there is an urgent need to optimize the process of selecting frameworks and libraries. Choosing the right technologies plays a crucial role in the quality, efficiency, and success of any software development project. The current landscape, with numerous available frameworks and libraries, can often be overwhelming for developers, especially those new to the field. In this context, Artificial Intelligence (AI) and the concept of Data-Driven Decision Making (DDDM) emerge as valuable resources to simplify the selection process. AI can understand developers' needs by considering various factors, such as the type of project and specific requirements. This enables the proposed platform to generate recommendations, saving time and effort in the research process. DDDM complements this approach by providing a solid foundation for decision-making. Furthermore, the work proposed conducting practical tests involving developers in programming languages supported by the platform. These tests were crucial to ensure the platform's effectiveness, usability, and relevance, as well as to gather valuable feedback that will guide future improvements. Among the feedback collected, the confirmation of the research problem stood out, with all participants stating they had experienced difficulty in selecting frameworks and libraries, as well as the positive reception of the platform among developers. Keywords: Framework; Libraries; Artificial Intelligence; Data-Driven Decision Making (DDDM). 4 LISTA DE FIGURAS Figura 1 - Atualização das estatísticas pelo uso de CRONJOB………………………41 Figura 2 - Casos de uso do usuário da plataforma……………………………………..41 Figura 3 - Modelo ER………………………………………………………………………42 Figura 4 - Tela inicial da plataforma………………………………………………………44 Figura 5 - Tela inicial da plataforma com o campo de categorias aberto…………….44 Figura 6 - Tela inicial da plataforma com o campo de prioridade aberto……………..45 Figura 7 - Tela central da plataforma com a prioridade definida para confiabilidade………………………………………………………………………………..46 Figura 8 - Tela central da plataforma com a prioridade definida para comunidade ativa…………………………………………………………………………………………..47 Figura 9 - Tela central da plataforma com a prioridade definida para tendência…………………………………………………………………………………….48 Figura 10 - Fluxograma de mineração de dados da plataforma………………………50 5 LISTA DE GRÁFICOS Gráfico 1 - Número de repositórios criados no GitHub anualmente (Em milhões).....18 Gráfico 2 - Número de pessoas atuando como desenvolvedores de software por ano……………………………………………………………………………………………20 Gráfico 3 - Pergunta sobre o problema de pesquisa que o trabalho tenta solucionar……………………………………………………………………………………54 Gráfico 4 - Pergunta sobre a experiência como desenvolvedor dos respondentes………………………………………………………………………………..55 Gráfico 5 - Pergunta sobre as linguagens de programação…………………………...56 Gráfico 6 - Pergunta intuitividade da interface…………………………………………..57 Gráfico 7 - Pergunta sobre as ferramentas recomendadas……………………………58 Gráfico 8 - Pergunta sobre os indicadores mostrados…………………………………59 Gráfico 9 - Pergunta sobre a recomendação da plataforma para outros desenvolvedores……………………………………………………………………………60 6 LISTA DE QUADROS Quadro 1 - Quadro dos trabalhos relacionados…………………………………………27 Quadro 2 - Requisitos funcionais…………………………………………………………38 Quadro 3 - Requisitos não funcionais……………………………………………………39 7 SUMÁRIO RESUMO 2 ABSTRACT 3 LISTA DE FIGURAS 4 LISTA DE GRÁFICOS 5 LISTA DE QUADROS 6 1 INTRODUÇÃO 10 1.1 Tema 12 1.2 Delimitação do tema 12 1.3 Problema de pesquisa 12 1.4 Hipótese 13 1.5 Objetivo geral 13 1.6 Objetivos específicos 13 1.7 Justificativa 14 1.8 Estrutura 14 2 FUNDAMENTAÇÃO TEÓRICA 16 2.1 Aumento anual na criação de projetos de software. 16 2.2 Aumento anual de pessoas atuando com desenvolvimento de software 17 2.3 Inteligência Artificial e ChatGPT 19 2.4 Mineração de dados 21 2.5 DDDM (Data-Driven Decision Making) 22 2.6 Frameworks e bibliotecas 22 3 TRABALHOS RELACIONADOS 24 4 MATERIAIS E MÉTODOS 28 4.1 Metodologia 28 4.1.1 Pesquisa enquanto aos Métodos Científicos 28 4.1.2 Pesquisa enquanto ao Modo de abordagem 29 4.1.3 Pesquisa enquanto aos Fins da Pesquisa 29 4.1.4 Pesquisa enquanto aos Procedimentos Técnicos 30 4.2 Tecnologias 30 4.2.1 PHP 30 4.2.2 Laravel 31 4.2.3 HTML 32 8 4.2.4 CSS 32 4.2.5 MySQL 33 4.2.6 Inteligência Artificial e ChatGPT 33 4.2.7 DDDM (Data-Driven Decision Making) 34 4.3 Desenvolvimento 35 4.3.1 Requisitos funcionais 35 4.3.2 Requisitos não funcionais 36 4.3.3 Diagramas de casos de uso 37 4.3.4 Modelo de banco de dados 38 4.3.5 Interface da plataforma 40 4.3.6 Fluxo de funcionamento da plataforma 46 5 TESTES, COLETA DOS DADOS E ANÁLISE DOS RESULTADOS 49 6 CONSIDERAÇÕES FINAIS 58 REFERÊNCIAS 60 APÊNDICES 63 APÊNDICE A – Formulário usado para avaliação da plataforma What Should I Use 63 9 LISTA DE ABREVIATURAS E SIGLAS API Application Programming Interface CSS Cascading Style Sheets DDDM Data-Driven Decision Making HTML Hypertext Markup Language IA Inteligência Artificial RF Requisitos Funcionais RNF Requisitos Não Funcionais SQL Structured Query Language TCC Trabalho de conclusão de curso WEB Website 10 1 INTRODUÇÃO A era contemporânea é marcada por uma rápida evolução no desenvolvimento de software, onde a escolha das ferramentas tecnológicas desempenha um papel crucial no sucesso de projetos. Cada vez mais projetos são criados por desenvolvedores e, segundo o Github, durante o ano de 2021 mais de 29 milhões de novos repositórios foram criados, esse número aumentou para mais de 36 milhões em 2022, e já chega perto dos 21 milhões apenas no primeiro semestre de 2023. Com uma ampla gama de linguagens de programação, frameworks e bibliotecas disponíveis, os desenvolvedores enfrentam o desafio de selecionar as melhores opções para atender as necessidades específicas de seus projetos. A escolha errada de um framework ou biblioteca pode levar a problemas como lentidão no desenvolvimento, código de baixa qualidade e até dificuldade no escalonamento do produto, isso pode ocorrer pelo fato de que os desenvolvedores não possuem pleno conhecimento do que estão utilizando. É possível obter recomendações de frameworks e bibliotecas por meio do GitHub, No entanto, é importante notar que, embora seja uma valiosa fonte de informações, muitas vezes falta um contexto abrangente e detalhado sobre a adequação de um framework ou biblioteca específica para um projeto. A comunidade de desenvolvedores muitas vezes se depara com a necessidade de vasculhar inúmeras opções, revisar a documentação, verificar problemas relatados e testar as soluções antes de tomar uma decisão informada. A pergunta que surge é: isso é o que temos de melhor? 11 O uso de IA e Mineração de Dados pode otimizar a seleção de frameworks e bibliotecas para desenvolvedores, oferecendo análises abrangentes e personalizadas com base em uma variedade de fontes de dados. Essa abordagem economiza tempo, melhora a precisão e ajuda os desenvolvedores a tomar decisões informadas, tornando-a uma opção superior para o processo de escolha de tecnologias. Segundo Svensson, Feldt e Torkar (2019) o principal motivo para usar dados, de acordo com os respondentes de sua pesquisa, é que isso melhora as decisões. Eles acreditam que, ao utilizar dados, as decisões se tornam mais informadas e transparentes. A junção de IA, mineração de dados e data-driven decision making (DDDM) em resposta à crescente demanda por soluções que otimizem a seleção de ferramentas tecnológicas, à medida que o cenário de desenvolvimento de software evolui, leva os desenvolvedores a buscarem maneiras mais eficazes de agilizar o processo de escolha, minimizando riscos e maximizando a produtividade. A abordagem proposta busca preencher essa lacuna, fornecendo um sistema de recomendação que sintetiza informações de diferentes fontes e emprega a IA para gerar recomendações personalizadas e justificadas. 1.1 Tema O tema do presente trabalho aborda a problemática de seleção de frameworks e bibliotecas no desenvolvimento de software. Essas escolhas afetam diretamente a qualidade, a eficiência e a manutenção dos projetos. Para esse processo uma plataforma web foi desenvolvida e testada por desenvolvedores. Este tema é escolhido com base na necessidade de simplificar a complexidade da seleção de frameworks e bibliotecas, contribuindo para a eficácia e a qualidade dos projetos de software. 12 1.2 Delimitação do tema A delimitação do tema deste trabalho foca no desenvolvimento de projetos de desenvolvimento web utilizando a linguagem de programação PHP e Javascript. A análise das estatísticas para embasar as recomendações foi realizada por meio da coleta de dados provenientes de repositórios de código-fonte, fóruns de desenvolvedores e plataformas de perguntas e respostas, garantindo a confiabilidade e atualidade das informações. A avaliação da usabilidade e eficácia do sistema ocorrerá por meio de testes práticos envolvendo um grupo restrito de desenvolvedores, considerando critérios como precisão das recomendações, facilidade de utilização da interface e relevância das estatísticas apresentadas. 1.3 Problema de pesquisa Como uma plataforma web de recomendação de frameworks e bibliotecas baseada nas preferências dos usuários, integrando análises de estatísticas de popularidade, contribuição e desempenho, pode ajudar desenvolvedores de software a escolher as ferramentas corretas para seus projetos de software? 1.4 Hipótese A hipótese deste estudo é que a implementação de um sistema de recomendação de frameworks e bibliotecas, com base nas preferências dos desenvolvedores e enriquecido com análises estatísticas, tem o potencial de aprimorar a seleção de tecnologias em projetos de desenvolvimento web. Acredita-se que ao fornecer informações objetivas sobre a popularidade, desempenho e adoção da comunidade para cada opção recomendada, os desenvolvedores estarão melhor equipados para tomar decisões informadas e eficazes. Ao longo da pesquisa, a hipótese será investigada e avaliada através de testes práticos e feedback dos participantes, buscando confirmar ou refutar a contribuição positiva do sistema de recomendação no processo de seleção de frameworks e bibliotecas em uma variedade de contextos de desenvolvimento web. 13 1.5 Objetivo geral O objetivo geral deste trabalho é propor uma plataforma de recomendação que une estatísticas de diferentes fontes com vistas a auxiliar os desenvolvedores na escolha de frameworks e bibliotecas. 1.6 Objetivos específicos - Definir quais serão as linguagens de programação que estarão disponíveis para recomendação na plataforma; - Desenvolver a plataforma de recomendação utilizando PHP com Laravel; - Validar a plataforma com desenvolvedores que trabalham com cada uma das linguagens da versão inicial; - Testar e analisar os resultados. 1.7 Justificativa Com o número de projetos de software em constante crescimento, conforme evidenciado pelo expressivo aumento no número de repositórios no GitHub, a escolha de frameworks e bibliotecas se tornou uma etapa crítica no desenvolvimento de software. Além disso, à medida que o número de desenvolvedores no mercado continua a crescer, como indicado pelas estatísticas fornecidas pelo Statista (2022), a demanda por ferramentas e soluções que otimizem o processo de desenvolvimento de software também aumenta. Com mais profissionais ingressando no campo da programação, a necessidade de orientação na escolha de tecnologias apropriadas se torna ainda mais premente, visto que nem todos possuem o mesmo nível de experiência para tomar decisões informadas. 14 Minha motivação pessoal para a realização deste trabalho decorre da constatação de que os desafios relacionados à escolha de frameworks e bibliotecas são uma barreira comum para muitos desenvolvedores, tanto iniciantes quanto experientes. A experiência de me deparar com esse problema no decorrer de minha trajetória profissional me motivou a buscar uma solução que possa facilitar essa escolha e, assim, contribuir para a eficiência e sucesso de projetos de desenvolvimento de software. Minha experiência prática no desenvolvimento de software revelou a magnitude do desafio de escolher as ferramentas adequadas. Ao me deparar com escolhas que afetaram o desempenho, a manutenção e a escalabilidade dos projetos, percebi que muitas vezes faltavam recursos para auxiliar na tomada de decisões embasadas. É essa experiência real com o problema que me impulsiona a explorar abordagens inovadoras e práticas para desenvolver uma plataforma de recomendação de frameworks e bibliotecas que possa ajudar outros desenvolvedores a enfrentar esse desafio com maior confiança e sucesso. 1.8 Estrutura Este trabalho está estruturado em seis capítulos. No primeiro capítulo é contextualizado o tema, objetivos, justificativas e hipóteses da plataforma proposta. O segundo capítulo trata de conceitos e referências utilizados no desenvolvimento do estudo através de uma revisão teórica. A abordagem começa pelo aumento anual de projetos criados e pessoas atuando com desenvolvimento de software, em seguida conceitos importantes para o trabalho são abordados, como a IA, mineração de dados, DDDM e frameworks e bibliotecas. O terceiro capítulo traz uma relação de trabalhos relacionados com a pesquisa do presente estudo e como cada trabalho relacionado será aproveitado na criação da plataforma de recomendação de frameworks e bibliotecas. Já no quarto capítulo se encontram as metodologias que serão utilizadas no desenvolvimento da plataforma, assim como requisitos e artefatos do website. 15 O quinto capítulo apresenta os resultados obtidos e sua análise detalhada, destacando tanto os pontos positivos quanto as áreas que podem ser melhoradas com base no feedback dos usuários. O sexto aborda as considerações finais do presente estudo que falam sobre a interpretação do autor baseados nos testes. E por fim são apresentadas as referências utilizadas para a escrita desta monografia e os apêndices.. 16 2 FUNDAMENTAÇÃO TEÓRICA Nesta seção, serão apresentados e explicados os conceitos mais importantes relacionados ao tema abordado no presente trabalho. Serão discutidos de maneira detalhada os fundamentos teóricos que sustentam a pesquisa, fornecendo uma base sólida para a compreensão do desenvolvimento e das decisões tomadas ao longo do estudo. Além disso, serão exploradas as terminologias e definições essenciais para que o leitor possa se familiarizar com os aspectos técnicos e metodológicos utilizados. Ao entender esses conceitos, será possível compreender melhor o contexto e a relevância do trabalho, bem como a aplicação prática dos conhecimentos adquiridos. 2.1 Aumento anual na criação de projetos de software. O GitHub, como uma das principais plataformas para hospedagem de projetos de software, tem testemunhado um notável aumento no número de repositórios criados anualmente. Esse crescimento constante demonstra a vitalidade do cenário de desenvolvimento de software e reflete a expansão contínua das atividades de desenvolvedores em todo o mundo. O aumento anual no número de repositórios é um indicador claro da crescente demanda por soluções de software, bem como do constante desenvolvimento de novas ideias e projetos inovadores. Os dados estatísticos revelam que o aumento anual de repositórios no GitHub não está limitado a uma única linguagem de programação ou domínio, abrangendo uma ampla variedade de projetos, desde aplicativos web e móveis até bibliotecas de código aberto e ferramentas de desenvolvimento. Esse fenômeno reflete a 17 diversidade e a versatilidade do desenvolvimento de software moderno, onde desenvolvedores de todas as disciplinas contribuem para a expansão do ecossistema de código aberto. É possível ver no Gráfico 1 o aumento de repositórios criados no GitHub ao passar dos anos, isso cria desafios significativos para desenvolvedores que buscam escolher as ferramentas certas para seus projetos. Gráfico 1 - Número de repositórios criados no GitHub anualmente (Em milhões). Fonte: Do autor, (2024). A vasta gama de opções disponíveis requer a consideração de fatores como desempenho, manutenção e escalabilidade. É nesse contexto de crescente atividade no GitHub que a necessidade de ferramentas de recomendação de frameworks e bibliotecas se torna evidente, a fim de auxiliar os desenvolvedores na tomada de decisões informadas em um ambiente em constante evolução no desenvolvimento de software. 18 2.2 Aumento anual de pessoas atuando com desenvolvimento de software Nos últimos anos, o setor de desenvolvimento de software tem sido marcado por um notável crescimento no número de indivíduos que ingressam nessa carreira. Essa expansão constante da força de trabalho em tecnologia é reflexo do papel cada vez mais central que o desenvolvimento de software desempenha em nossa sociedade altamente digitalizada. O advento de novas tecnologias, juntamente com a crescente dependência de software em diversos setores, tem impulsionado um aumento anual expressivo no número de profissionais que optam por se dedicar a essa carreira dinâmica e em constante evolução. Dados estatísticos, como os fornecidos pela Statista (2022), demonstram um crescimento substancial no contingente de desenvolvedores de software em todo o mundo. Essa tendência não se limita apenas a economias tecnologicamente avançadas, mas é global, abrangendo países de todos os níveis de desenvolvimento. O aumento anual de pessoas atuando na área do desenvolvimento de software é uma resposta à crescente demanda por inovações tecnológicas, à digitalização de processos de negócios e à constante expansão das oportunidades profissionais no campo da tecnologia da informação. Com a expansão da comunidade de desenvolvedores, como é possível ver na Gráfico 2, as colaborações, competições e desafios criativos têm se multiplicado. No entanto, essa dinâmica também traz consigo desafios significativos, à medida que novos profissionais buscam se destacar em um ambiente altamente competitivo. 19 Gráfico 2 - Número de pessoas atuando como desenvolvedores de software por ano. Fonte: Statista, (2024). É nesse contexto de crescimento contínuo e diversidade na área de desenvolvimento de software que a importância de ferramentas de apoio, como a plataforma de recomendação que este trabalho se propõe a desenvolver, se torna evidente. Essas ferramentas podem desempenhar um papel crucial em orientar os desenvolvedores na seleção das melhores tecnologias para seus projetos, considerando as tendências em rápida evolução e o amplo espectro de opções disponíveis. Com o aumento significativo de desenvolvedores no mercado, a IA pode se tornar uma aliada extremamente valiosa, especialmente no que diz respeito à seleção de ferramentas para projetos. Diante da crescente concorrência e da necessidade de agilidade e eficiência, a IA pode desempenhar um papel fundamental na otimização do processo de escolha de tecnologias, auxiliando os desenvolvedores a tomarem decisões mais embasadas e, assim, aprimorar a qualidade e a eficácia de seus projetos. 20 2.3 Inteligência Artificial e ChatGPT A IA desempenha um papel crucial na melhoria do processo de desenvolvimento de software, oferecendo assistência em diversas áreas. Uma das principais formas em que a IA auxilia os desenvolvedores é por meio da automatização de tarefas rotineiras e repetitivas. Segundo Sorte, Joshi e Jagtap (2015), a Inteligência Artificial tem o potencial de ajudar a automatizar atividades no campo de Engenharia de Software, aproveitando sua capacidade de lidar com conhecimento e experiência. Isso inclui a capacidade de conduzir testes de software, gerar código automaticamente e depurar aplicações, economizando tempo e recursos preciosos. Além disso, a IA é uma aliada valiosa na análise de dados e no gerenciamento de informações. Com a capacidade de lidar com grandes volumes de dados, a IA pode identificar tendências, padrões e insights ocultos. Isso é particularmente benéfico no desenvolvimento de software, onde a coleta e análise de dados desempenham um papel crucial. A IA pode ajudar os desenvolvedores a tomar decisões mais informadas, melhorando a eficácia de seus aplicativos e a qualidade do código. A habilidade da IA de processar e analisar grandes quantidades de dados em tempo real permite que os desenvolvedores tenham uma visão mais abrangente e detalhada dos projetos em andamento. Por meio de técnicas de aprendizado de máquina e mineração de dados, a IA pode identificar padrões de uso, prever problemas de desempenho e sugerir melhorias. Isso resulta em um ciclo de desenvolvimento mais ágil e eficiente, onde os desenvolvedores podem ajustar e otimizar suas aplicações de forma contínua, baseando-se em dados concretos e atualizados. Outra forma significativa pela qual a IA beneficia os desenvolvedores é por meio da assistência na tomada de decisões. Sistemas de IA podem fornecer recomendações e insights valiosos durante o processo de desenvolvimento de software, ajudando os desenvolvedores a escolher as melhores abordagens, tecnologias e estratégias. Isso não apenas economiza tempo, mas também contribui 21 para a tomada de decisões mais embasadas e racionais, resultando em aplicativos mais eficientes e inovadores. A IA impulsiona inovações em várias áreas, transformando a maneira como vivemos e trabalhamos. Um exemplo notável é o ChatGPT, um modelo de linguagem desenvolvido pela OpenAI que facilita a interação natural entre humanos e máquinas. Suas capacidades abrangem desde atendimento ao cliente até redação de conteúdo e desenvolvimento de software. No atendimento ao cliente, o ChatGPT melhora a experiência do usuário ao fornecer respostas rápidas e precisas, solucionando problemas e oferecendo suporte contínuo. Isso não apenas aumenta a satisfação do cliente, mas também otimiza a eficiência operacional das empresas. Ele tem a capacidade de compreender e gerar texto de maneira contextual, respondendo a perguntas e mantendo conversas de forma natural com os usuários. O ChatGPT é treinado em uma ampla gama de dados textuais, o que o capacita a fornecer informações, gerar conteúdo, dar recomendações e até mesmo auxiliar em tarefas específicas, tornando-o uma ferramenta versátil para uma variedade de aplicações. Os benefícios do ChatGPT são diversos. Ele é útil na criação de conteúdo, desde a geração de textos e redações até a assistência na escrita técnica. No campo do desenvolvimento de software, segundo Fraiwan e Khasawneh (2023), o ChatGPT pode aprimorar o desenvolvimento de software, oferecendo eficiência na geração de código, melhorias na colaboração e compartilhamento de conhecimento, além de aprimorar a qualidade da documentação. Também pode prever trechos de código e detectar bugs, tornando-o valioso para desenvolvedores. A capacidade do ChatGPT de compreender contextos torna-o valioso para melhorar a interação entre humanos e máquinas, proporcionando respostas e assistência altamente relevantes. 2.4 Mineração de dados A mineração de dados na web é um campo de estudo que se concentra na extração de informações e conhecimento a partir dos vastos volumes de dados disponíveis na internet. A web é um repositório abundante de informações, incluindo 22 páginas da web, redes sociais, blogs, fóruns e muito mais. A mineração de dados na web se tornou essencial para empresas, pesquisadores e instituições que buscam analisar, compreender e tomar decisões com base nos dados extraídos da web. Com o crescimento exponencial da quantidade de dados gerados e compartilhados online, a mineração de dados na web tornou-se uma prática essencial para empresas, pesquisadores e instituições em diversos setores. Estes profissionais e organizações buscam utilizar técnicas avançadas de mineração para analisar e compreender os dados extraídos, possibilitando a tomada de decisões mais informadas e estratégicas. A capacidade de processar e interpretar esses dados permite identificar padrões, tendências e insights que são cruciais para o desenvolvimento de estratégias eficazes, a inovação de produtos e serviços, e a compreensão das necessidades e comportamentos dos usuários em um ambiente digital em constante evolução. A mineração de dados na web tem diversas aplicações práticas. Isso inclui a análise de sentimentos em redes sociais para compreender a opinião do público, a recomendação de produtos com base no histórico de compras do usuário, a detecção de fraudes em transações online e a extração de informações relevantes para fins de pesquisa acadêmica ou de mercado. Além disso, é fundamental para o monitoramento de tendências e a compreensão do comportamento do usuário, auxiliando no desenvolvimento de estratégias de marketing mais eficazes e na tomada de decisões informadas. De acordo com Camilo e da Silva (2009), a mineração de dados desempenha um papel crucial na gestão de informações nas organizações, devido ao crescente volume de dados. Os dados agora são considerados ativos essenciais em projetos de software, graças a técnicas eficientes de extração de informações. Apesar das muitas aplicações benéficas, a mineração de dados na web enfrenta desafios significativos, incluindo a necessidade de lidar com grandes volumes de dados não estruturados, a garantia da privacidade dos usuários e a precisão na extração de informações. Além disso, as técnicas e algoritmos estão em constante evolução para acompanhar a crescente complexidade da web. As tendências futuras incluem o aprimoramento das técnicas de aprendizado de máquina, a análise de dados em tempo real e a adaptação a ambientes móveis, 23 refletindo a natureza dinâmica da web e a constante necessidade de inovação na mineração de dados. 2.5 DDDM (Data-Driven Decision Making) O Data-Driven Decision Making (DDDM) é uma abordagem estratégica que desempenha um papel crucial em diversos contextos, transcendendo o tradicional ambiente empresarial. Fundamentado na coleta e análise meticulosa de dados, o DDDM visa orientar decisões de forma informada e eficaz, oferecendo uma base sólida para a tomada de decisões precisas e bem fundamentadas. Ao se concentrar na análise de dados, o mesmo facilita a identificação de tendências, padrões e insights ocultos que podem não ser evidentes à primeira vista. Isso permite uma compreensão mais profunda e abrangente dos contextos em questão, promovendo uma abordagem mais científica e objetiva na formulação de decisões. Uma das principais aplicações do DDDM é na tomada de decisões estratégicas em uma ampla gama de setores, incluindo saúde, tecnologia, educação e muitos outros. Na tecnologia, por exemplo, a análise de dados pode orientar o desenvolvimento de novos produtos e serviços, ajustando-os com base nas necessidades e comportamentos dos usuários. Além disso, o DDDM é particularmente valioso na resolução de problemas complexos, pois permite a formulação de soluções baseadas em dados concretos e não apenas em suposições ou intuições. Outro aspecto relevante do DDDM é a ênfase na coleta contínua de dados e feedback. Esta abordagem dinâmica e adaptativa é crucial em um mundo em constante evolução, onde as condições e circunstâncias podem mudar rapidamente. A capacidade de ajustar estratégias e decisões com base em dados atualizados garante que as ações tomadas sejam sempre relevantes e eficazes, mesmo diante de novas informações e mudanças no ambiente. Em resumo, o DDDM aprimora a qualidade das decisões ao proporcionar uma visão mais precisa e objetiva das situações, permitindo que as decisões sejam baseadas em evidências sólidas e adaptáveis às necessidades e desafios emergentes. 24 Segundo Svensson, Feldt e Torkar (2019) o principal motivo para usar dados, é a melhora na tomada de decisões de quem visualiza e analisa os dados, desde que os mesmos estejam representados de maneira eficiente para o usuário final. 2.6 Frameworks e bibliotecas Frameworks e bibliotecas são elementos cruciais no desenvolvimento de software, oferecendo uma base sólida e confiável para os desenvolvedores. Essas ferramentas são projetadas para simplificar e agilizar o processo de criação de software, fornecendo estruturas e funcionalidades que podem ser reutilizadas em diversos projetos. A principal vantagem de utilizar frameworks e bibliotecas é a possibilidade de reaproveitar código já testado e otimizado, o que não apenas economiza tempo, mas também reduz a probabilidade de erros, garantindo maior robustez e estabilidade nas aplicações. Os frameworks oferecem um conjunto de ferramentas e convenções que guiam a estrutura e o design do software, facilitando a implementação de funcionalidades complexas e promovendo a consistência ao longo do desenvolvimento. Eles proporcionam um ambiente pré-configurado que estabelece regras e padrões, permitindo que os desenvolvedores se concentrem em criar a lógica de negócio específica do projeto, sem se preocupar com detalhes técnicos subjacentes. Por exemplo, um framework pode incluir suporte para roteamento, autenticação e manipulação de dados, tornando o desenvolvimento de aplicações web mais rápido e organizado. As bibliotecas, por outro lado, fornecem coleções de funções e métodos que podem ser utilizados para realizar tarefas específicas, como manipulação de dados, integração com serviços externos ou criação de interfaces de usuário. Elas permitem que os desenvolvedores adicionem funcionalidades sofisticadas aos seus projetos sem precisar escrever todo o código do zero. Ao utilizar bibliotecas, é possível acessar uma vasta gama de recursos e técnicas que teriam levado muito mais tempo para ser implementadas individualmente. Entre os benefícios estão a economia de tempo, padronização e a adoção de boas práticas. Eles geralmente incorporam convenções de codificação e estruturas 25 bem definidas que orientam os desenvolvedores na criação de software consistente e facilmente mantido. Essa padronização é especialmente valiosa em ambientes de desenvolvimento colaborativo, onde existem diversos desenvolvedores atuando no mesmo projeto. Outro aspecto notável é o aprimoramento do desempenho. Muitos frameworks são otimizados para fornecer um desempenho eficaz, o que é crucial em aplicativos que requerem alta velocidade e eficiência. Isso libera os desenvolvedores da necessidade de se aprofundar em questões de desempenho, permitindo que eles se concentrem mais na lógica de negócios e na funcionalidade do aplicativo. Também é importante apontar que a existência de comunidades ativas em torno de muitos frameworks e bibliotecas é inestimável. Isso significa que os desenvolvedores têm acesso a uma riqueza de recursos, desde fóruns de discussão até tutoriais e documentação detalhada. Essa ampla base de conhecimento não apenas facilita o aprendizado, mas também acelera a resolução de problemas. No geral, frameworks e bibliotecas são pilares essenciais no mundo do desenvolvimento de software, capacitando os desenvolvedores a criar aplicativos de alta qualidade de forma eficaz e segura. 26 3 TRABALHOS RELACIONADOS Os trabalhos mencionados neste capítulo foram encontrados no Google Acadêmico utilizando termos como Frameworks no desenvolvimento de Software, Inteligência Artificial e DDDM. Após a busca, a seleção dos trabalhos foi realizada de forma manual, analisando seus títulos e resumos a fim de escolher os trabalhos que mais se aproximavam deste. O critério utilizado foi de trabalhos desenvolvidos nos últimos 6 anos. No Quadro 1 são apresentados os trabalhos selecionados para leitura e análise. Quadro 1 - Quadro dos trabalhos relacionados. Título Autor(es) Ano de Publicação Link Uso de Frameworks para Aumento de Produtividade no Desenvolvimento Web em Conjunto com o Idioma Inglês Jean Victor Mendes dos Santos, Marco Antônio Nagao, Misael Ramos da Silva, Gustavo Kimura Montanha 2017 http://www.jornacitec.fatecbt.edu .br/index.php/VIJTC/VIJTC/pape r/viewFile/1009/1465 Ethical Aspects of ChatGPT in Software Engineering Research Muhammad Azeem Akbar, Arif Ali Khan, Peng Liang 2023 https://browse.arxiv.org/pdf/230 6.07557.pdf Use ChatGPT to Solve Programming Bugs Nigar M. Shafiq Surameery, Mohammed Y. Shakor 2023 http://journal.hmjournals.com/in dex.php/IJITC/article/view/1679/ 1993 Mining GitHub for research and education: challenges and opportunities Mohammad AlMarzouq, Abdullatif AlZaidan, Jehad AlDallal 2020 https://www.emerald.com/insight /content/doi/10.1108/IJWIS-03-2 020-0016/full/html The Unfulfilled Potential of Richard Berntsson Svensson, Robert Feldt, 2023 https://link.springer.com/chapter/ 10.1007/978-3-030-19034-7_5 27 Data-Driven Decision Making in Agile Software Development Richard Torkar Fonte: Do autor (2024). O objetivo do trabalho “Uso De Frameworks Para Aumento De Produtividade No Desenvolvimento Web Em Conjunto Com O Idioma Inglês” é destacar a importância da atualização constante dos profissionais de TI e do conhecimento do inglês, especialmente ao lidar com frameworks no desenvolvimento de sistemas. Os autores ressaltam que a utilização de frameworks pode melhorar a eficiência e qualidade do desenvolvimento de software. A conclusão destaca que o nível de aprendizado no uso de um framework está diretamente relacionado ao conhecimento de inglês do desenvolvedor, e que a combinação desses elementos pode levar a resultados satisfatórios no desenvolvimento de projetos de software. O objetivo do estudo Ethical Aspects of ChatGPT in Software Engineering Research é compreender as implicações éticas e ameaças potenciais do uso do ChatGPT na pesquisa de Engenharia de Software e desenvolver diretrizes para práticas de pesquisa responsáveis. O estudo conclui que o ChatGPT pode melhorar a eficiência na extração de conhecimento na Engenharia de Software, mas enfatiza a necessidade de abordar preocupações éticas, como plágio, privacidade e viés, e oferece um modelo de tomada de decisão baseado em princípios éticos para orientar a comunidade de pesquisa em na Engenharia de Software no uso responsável do ChatGPT. O objetivo do trabalho Use ChatGPT to Solve Programming Bugs é explorar o uso de modelos de linguagem de IA, como o ChatGPT, para encontrar e corrigir bugs em código de computador, visando melhorar a eficiência e precisão do processo de depuração. A conclusão destaca que o ChatGPT pode desempenhar um papel importante na solução de bugs de programação, fornecendo assistência na depuração, previsão e explicação de bugs, mas ressalta a importância de usá-lo em conjunto com outras ferramentas de depuração para obter os melhores resultados. A pesquisa nesse campo é promissora, mas requer mais avaliações para compreender completamente seu potencial e limitações. 28 O estudo Mining GitHub for research and education: challenges and opportunities busca destacar a importância do uso de dados do GitHub em pesquisas de desenvolvimento de software, abordando desafios e oportunidades. O objetivo é melhorar a validade das pesquisas, especialmente em relação a linguagens de programação práticas. Além disso, destaca o potencial do GitHub para educação e como fonte rica de dados. Os resultados incluem a identificação de desafios na coleta de dados do GitHub e oportunidades para estudos futuros, incentivando o uso mais amplo dessa plataforma. E por fim, The Unfulfilled Potential of Data-Driven Decision Making in Agile Software Development aborda a crescente importância da tomada de decisão baseada em dados (DDDM) nas organizações, com um foco particular em empresas ágeis de desenvolvimento de software. Os resultados da pesquisa mostram que, atualmente, poucos profissionais relatam uma ampla adoção do DDDM em suas práticas de tomada de decisão. No entanto, eles demonstram interesse em explorar o potencial do DDDM em decisões de alto nível e requisitos, embora o uso efetivo ainda não seja generalizado no contexto ágil. Primeiramente, considerando o estudo que destaca a importância dos frameworks no desenvolvimento de sistemas e como podem melhorar a eficiência e qualidade do software, pretende-se explorar como a plataforma proposta pode alavancar essa eficiência. A plataforma ajudará os desenvolvedores a encontrar os frameworks mais adequados para suas necessidades específicas, otimizando o desenvolvimento de projetos e promovendo resultados satisfatórios. Em relação ao ChatGPT, que demonstrou ser uma ferramenta valiosa em estudos anteriores, pretende-se incorporar a IA para fornecer recomendações precisas e personalizadas aos desenvolvedores. A IA poderá entender as necessidades dos desenvolvedores e fornecer sugestões com base em sua entrada, o que será fundamental para simplificar o processo de escolha de tecnologias. No que diz respeito ao estudo que destaca a mineração de dados no GitHub como uma fonte rica de informações, a plataforma se beneficiará da vasta quantidade de dados disponíveis no GitHub para fornecer análises de estatísticas 29 relevantes para cada framework e biblioteca recomendados. Isso contribuirá para que os desenvolvedores tomem decisões informadas com base em dados confiáveis. Por último, a adoção do DDDM na tomada de decisão do usuário será um componente fundamental da plataforma. A apresentação de dados de forma clara e compreensível auxiliará os desenvolvedores na escolha das ferramentas tecnológicas mais adequadas, contribuindo para a eficácia e qualidade de seus projetos de desenvolvimento de software. Ao incorporar esses conceitos dos estudos relacionados, o objetivo é criar uma plataforma que simplifique a seleção de frameworks e bibliotecas e melhore a tomada de decisão dos desenvolvedores, promovendo projetos de software mais eficientes e bem-sucedidos. 30 4 MATERIAIS E MÉTODOS Neste capítulo, são apresentados detalhadamente a metodologia de desenvolvimento adotada, as tecnologias utilizadas e os artefatos gerados durante o projeto. A metodologia de desenvolvimento descreve as fases do projeto, desde o planejamento e definição de requisitos até a implementação e testes. Em seguida, são exploradas as tecnologias escolhidas para o desenvolvimento da plataforma, explicando como cada uma delas contribui para a funcionalidade e eficiência do projeto. Além disso, o capítulo detalha os artefatos criados, como diagramas e documentos técnicos, e descreve os fluxos da plataforma, ilustrando como os usuários interagem com as funcionalidades e como os diferentes componentes se integram. 4.1 Metodologia O presente trabalho fez uso do estudo de caso na sustentação do porquê uma plataforma como a proposta pode ajudar desenvolvedores a escolher os melhores frameworks e bibliotecas para seus projetos. Já a metodologia documental visa usar informações de sites renomados para obter números que mostram o atual cenário no mundo de desenvolvimento de software. Já a pesquisa ação ocorreu durante os testes da plataforma que foram realizados de maneira interativa por desenvolvedores de software que atuam com as linguagens suportadas na primeira etapa do projeto, sendo elas PHP e Javascript. 31 4.1.1 Pesquisa enquanto aos Métodos Científicos Os métodos utilizados no presente estudo são os métodos dedutivo e indutivo. Segundo as autoras Lozada e Nunes (2019) o método dedutivo busca explicar o conteúdo das premissas chegando em uma conclusão, isso é feito utilizando o silogismo que junta duas premissas existentes para chegar em uma terceira premissa, sendo esta a conclusão. Já o método indutivo procura conclusões além das premissas onde a pesquisa se fundamenta, considerando que o conhecimento é baseado na experiência, ignorando assim qualquer princípio existente (LOZADA E NUNES, 2019). Com isso posto, a presente pesquisa teve como objetivo usar o método indutivo e dialético para propor e avaliar o uso de uma plataforma de recomendação de frameworks e bibliotecas e a sua utilidade para desenvolvedores de software decidirem qual a melhor ferramenta para seu projeto. 4.1.2 Pesquisa enquanto ao Modo de abordagem O presente trabalho fez uso da abordagem qualitativa para a pesquisa. Ramos (2009) aponta que normalmente a pesquisa qualitativa tem uso maior na área de ciências sociais quando o pesquisador tem dificuldade de quantificar uma informação. Tende a ser mais adequada para o entendimento do contexto de um acontecimento. Com base nisso o modo qualitativo foi utilizado para verificar com os testadores da plataforma se a mesma realmente ajudou na seleção de frameworks e bibliotecas para um projeto na vida real. Para a coleta de dados o autor deste trabalho entrou contatou desenvolvedores reais para utilizarem ativamente a plataforma e responderem um formulário de feedback após o uso da ferramenta. Após um número satisfatório de respostas ser alcançado, as respostas foram adicionadas a uma planilha onde foi feita a análise dos resultados, buscando padrões de respostas e entendendo o que os testadores acharam da plataforma em si. 32 4.1.3 Pesquisa enquanto aos Fins da Pesquisa O estudo em questão quanto aos fins foi exploratória e experimental. Segundo Ramos (2009) a pesquisa exploratória é a primeira etapa de uma pesquisa científica com objetivo de prover mais conhecimento a respeito de determinado problema. Esse tipo de pesquisa não precisa necessariamente obter respostas, mas sim levantar questões que tragam visibilidade ao tema abordado. Já a pesquisa experimental conta com um diferencial que é a realização de experiências, normalmente em amostragem. A pesquisa de campo por exemplo busca compreender mais a fundo determinada realidade, já a pesquisa laboratorial consiste em um controle sobre as variáveis existentes, (RAMOS 2009). O modelo exploratório da largada ao estudo sobre a necessidade de criação de uma plataforma de recomendação de frameworks e bibliotecas, já o método experimental foi utilizado para testes da plataforma após o desenvolvimento para coletar feedback sobre o funcionamento da mesma. 4.1.4 Pesquisa enquanto aos Procedimentos Técnicos Esta pesquisa fez uso do procedimento técnico do tipo documental. De acordo com Lozada e Nunes (2019) a pesquisa documental utiliza como fontes primárias documentos de diversos tipos que ainda não receberam tratamento analítico, entre os documentos primários estão fotografias, cartas, documentos oficiais e etc. 4.2 Tecnologias Neste capítulo, serão abordadas as principais ferramentas e tecnologias que foram empregadas na construção da aplicação web. As tecnologias selecionadas compreendem o emprego do PHP com o framework Laravel no backend, acompanhado HTML (Hypertext Markup Language) e CSS (Cascading Style Sheets) 33 para o frontend e a elaboração da interface, juntamente com um banco de dados MySQL para o armazenamento dos dados da aplicação. 4.2.1 PHP O PHP é uma linguagem de programação amplamente usada para desenvolvimento web e criação de aplicações dinâmicas. Ela é integrada diretamente ao HTML e é conhecida por sua simplicidade e versatilidade. Com suporte a bancos de dados, é possível criar sites interativos e sistemas web complexos. Segundo a documentação o PHP é uma linguagem de código aberto, com uma grande comunidade de desenvolvedores que contribuem para sua constante evolução. Sua natureza server-side permite que o código seja executado no servidor antes de ser enviado ao navegador do usuário. Essa linguagem é uma escolha popular para criar sites dinâmicos e aplicativos da web devido à sua facilidade de aprendizado e suporte generalizado em hospedagem web. No projeto, utilizei o PHP principalmente para o desenvolvimento do backend da aplicação. Esta escolha permitiu a implementação de lógica de negócios, integração com bancos de dados e a criação de APIs para suportar as funcionalidades da plataforma de recomendação de frameworks e bibliotecas. 4.2.2 Laravel O Laravel é um renomado framework de desenvolvimento PHP amplamente utilizado na criação de aplicativos web. Baseado no padrão de arquitetura MVC (Model-View-Controller), o Laravel simplifica o desenvolvimento ao fornecer ferramentas e bibliotecas poderosas para tarefas comuns, como roteamento, autenticação, manipulação de bancos de dados e muito mais. Ele promove a organização do código, aumentando a produtividade dos desenvolvedores. A documentação também diz que este framework oferece características como Eloquent ORM para interação com bancos de dados de forma eficaz e Blade, um mecanismo de templates flexível. Com uma ativa comunidade de 34 desenvolvedores, o Laravel está sempre em constante evolução e melhoria, tornando-o uma escolha popular para criar aplicações web robustas e escaláveis de forma eficiente e elegante. Em conjunto com o PHP, utilizei o Laravel como framework para o backend da aplicação. Ele facilitou a organização do código com sua estrutura MVC, além de oferecer recursos como roteamento e integração com bancos de dados através do Eloquent ORM. O uso do Blade para templates e a comunidade ativa do Laravel garantiram um desenvolvimento eficiente e escalável do sistema. 4.2.3 HTML O HTML, que significa "Hypertext Markup Language" (Linguagem de Marcação de Hipertexto), é a espinha dorsal da web. É uma linguagem de marcação usada para criar documentos web, definindo a estrutura e o conteúdo das páginas. Com tags e elementos, o HTML permite a criação de textos, links, imagens, formulários e outros elementos que compõem sites e aplicativos da web. HTML é uma linguagem de fácil aprendizado e é a base de todas as páginas da web. Trabalhando em conjunto com o CSS para estilização e o JavaScript para interatividade, o HTML desempenha um papel fundamental na construção de experiências online. À medida que a web evolui, novas versões do HTML, como o HTML5, introduzem recursos avançados para aprimorar a usabilidade e a funcionalidade das páginas. Já para as telas, utilizei HTML para estruturar e criar a base de documentos web, definindo a organização e conteúdo das páginas, como textos, links, imagens, formulários e outros elementos essenciais para construir interfaces de usuário interativas e funcionais. 4.2.4 CSS O CSS, que significa "Cascading Style Sheets" (Folhas de Estilo em Cascata), é uma linguagem de estilo usada em conjunto com o HTML para definir a apresentação e o design de documentos da web. Com o CSS, é possível controlar o 35 layout, cores, tipografia e outros aspectos visuais das páginas web, separando o conteúdo (HTML) da sua apresentação. O CSS permite criar páginas web atraentes e responsivas, garantindo uma experiência consistente em diferentes dispositivos e tamanhos de tela. Ele utiliza regras de estilo, seletores e propriedades para aplicar estilos a elementos HTML específicos. O CSS foi utilizado para estilizar e dar uma apresentação visual atraente às páginas web desenvolvidas. Ele foi essencial para controlar o layout, as cores, as fontes e outros aspectos visuais, garantindo uma experiência de usuário mais agradável e consistente em diferentes dispositivos e navegadores. 4.2.5 MySQL O MySQL é um sistema de gerenciamento de banco de dados relacional de código aberto amplamente utilizado em aplicações web e empresariais. Ele permite o armazenamento, gerenciamento e recuperação eficiente de dados estruturados, organizados em tabelas com relações. O MySQL suporta consultas SQL (Structured Query Language), tornando-o adequado para muitas aplicações, desde pequenos sites até grandes sistemas de gestão de dados. Uma das principais características do MySQL é a sua confiabilidade e desempenho. Ele é conhecido por ser rápido, escalável e altamente seguro. Além disso, o MySQL possui uma grande comunidade de desenvolvedores e é compatível com várias linguagens de programação, tornando-o uma escolha popular para o desenvolvimento de aplicações que dependem de armazenamento e recuperação de dados. 4.2.6 Inteligência Artificial e ChatGPT A aplicação da Inteligência Artificial foi realizada por meio da integração com o ChatGPT. Essa integração permitiu que a plataforma buscasse automaticamente uma lista de bibliotecas e frameworks adequados para cada combinação específica de linguagem de programação e categoria de ferramenta. Utilizando as capacidades 36 de processamento de linguagem natural do ChatGPT, a plataforma foi capaz de compreender as solicitações dos usuários e fornecer uma lista de ferramentas que se encaixam nos filtros selecionados. A escolha de integrar o ChatGPT neste contexto não apenas demonstrou a aplicação prática de técnicas avançadas de IA, mas também facilitou significativamente o processo de recomendação. Ao automatizar a busca e seleção de frameworks e bibliotecas, a plataforma pode oferecer aos desenvolvedores uma ferramenta robusta para tomar decisões informadas, economizando tempo e esforço na pesquisa manual de opções tecnológicas. Além disso, o ChatGPT também foi utilizado para automatizar a geração de um texto explicativo sobre a recomendação fornecida pela plataforma. Essa integração permitiu que, com base nos parâmetros de linguagem de programação, categoria e prioridade definidos pelo usuário, o ChatGPT produzisse um texto detalhado justificando por que uma determinada plataforma foi recomendada. Isso proporcionou uma abordagem personalizada e informativa para ajudar os desenvolvedores a entenderem as escolhas recomendadas pela plataforma. 4.2.7 DDDM (Data-Driven Decision Making) O conceito de DDDM foi aplicado principalmente na coleta e análise dos dados para a geração de recomendações de frameworks e bibliotecas. O DDDM foi utilizado para integrar diversas fontes de dados, como repositórios de código, fóruns de desenvolvedores e informações de linguagens específicas, através de APIs como GitHub e StackOverflow. Esses dados foram processados para extrair métricas significativas, como popularidade, atividade da comunidade e confiabilidade da ferramenta. A análise baseada em dados permitiu que a plataforma gerasse recomendações objetivas para os usuários, levando em consideração suas preferências específicas. Essa abordagem não só aumentou a precisão das recomendações, mas também proporcionou uma base sólida para a tomada de decisões informadas no desenvolvimento de software. 37 Além disso, como a página final da plataforma disponibiliza todos os dados coletados, os usuários podem aplicar o conceito de DDDM por conta própria se julgarem necessário. Isso significa que eles têm a oportunidade de analisar detalhadamente as métricas e informações apresentadas, permitindo tomar decisões alternativas ou validar as recomendações sugeridas com base nos dados fornecidos. Essa abordagem capacita os desenvolvedores a utilizar o DDDM não apenas para receber recomendações, mas também para fazer escolhas informadas e estratégicas no desenvolvimento de seus projetos de software. 4.3 Desenvolvimento A plataforma web foi desenvolvida utilizando a linguagem PHP e framework de desenvolvimento Laravel. Nos próximos capítulos serão apresentados fluxos do sistema, assim como requisitos e artefatos. 4.3.1 Requisitos funcionais No Quadro 2 estão descritos os principais requisitos funcionais que serão desenvolvidos dentro da plataforma de recomendação de frameworks e bibliotecas. Quadro 2 - Requisitos funcionais. Requisitos Funcionais RF1 Buscar as recomendações de frameworks e bibliotecas utilizando a plataforma. O usuário poderá buscar na plataforma por frameworks e bibliotecas que mais se adequem às suas necessidades. RF2 Selecionar qual linguagem está buscando recomendações. O usuário poderá selecionar na plataforma a linguagem para qual o mesmo deseja buscar recomendações. RF3 Selecionar qual tipo de ferramenta está buscando recomendações. O usuário poderá selecionar na plataforma o tipo de ferramenta para qual o mesmo deseja buscar recomendações. RF4 Selecionar qual a prioridade na hora de escolher uma ferramenta. O usuário poderá selecionar na plataforma qual o requisito mais importante na hora 38 de selecionar uma ferramenta, a prioridade pode ser definida como confiança na ferramenta, comunidade ativa em torno da ferramenta ou ferramentas em tendência. RF5 Visualizar o resultado das buscas junto das estatísticas mineradas na web. Após a busca, a plataforma irá disponibilizar além da recomendação, indicadores usados para a tomada de decisão, gráficos e todos os dados disponíveis da lista de ferramentas analisadas. RF6 Permitir que o usuário de uma nota para a recomendação Após terminar sua busca, o usuário poderá avaliar a mesma com uma nota de 1 a 10. Fonte: Do autor (2024). Os requisitos funcionais do TCC são projetados para proporcionar uma experiência eficiente e direta para os desenvolvedores. A maior complexidade está no backend, onde acontecem todas as integrações e análises dos dados. A plataforma permite buscar recomendações de frameworks e bibliotecas, visualizar os resultados das buscas junto com as estatísticas mineradas na web, e permitir que o usuário dê uma nota para a recomendação. Isso garante que a plataforma cumpra sua função principal de maneira útil e acessível, facilitando a escolha das melhores ferramentas para o desenvolvimento de software. 4.3.2 Requisitos não funcionais No Quadro 3 estão representados os requisitos não funcionais para a aplicação proposta no trabalho. Os requisitos não funcionais são essenciais para a implementação eficaz da plataforma, garantindo sua acessibilidade, integração com várias fontes de dados e atualização automática. Esses elementos combinam para criar uma plataforma eficiente e confiável, oferecendo uma base sólida para fornecer recomendações precisas e manter as informações sempre relevantes para os desenvolvedores. Quadro 3 - Requisitos não funcionais. Requisitos não funcionais RFN1 Ser compatível com a web A plataforma deverá ser compatível com a web. RFN2 Integrar com o ChatGPT para as recomendações e outras APIs para obter 39 números e estatísticas A plataforma de busca utilizará o ChatGPT para obter as ferramentas que se enquadram nos parâmetros de busca. RFN3 Integrar com o GitHub para obter dados do repositório da ferramenta A plataforma de busca utilizará a API do GitHub para obter dados para a geração de indicadores, gráficos e tomada de decisão. RFN4 Integrar com o Stackoverflow para obter dados de questões relacionadas a ferramenta A plataforma de busca utilizará a API do StackOverflow para obter dados para a geração de indicadores, gráficos e tomada de decisão. RFN5 Integrar com o gerenciador de pacotes de cada linguagem para obter dados de utilização da ferramenta A plataforma de busca utilizará a API do gerenciador de pacotes de cada linguagem para obter dados para a geração de indicadores, gráficos e tomada de decisão. RFN6 Ser desenvolvido utilizando PHP com Laravel e banco de dados MySQL A linguagem a ser utilizada no backend será PHP, com auxílio do framework Laravel, já o banco de dados será MySQL RFN7 Usar CRONJOB para atualizar as estatísticas de cada framework e biblioteca. O servidor deverá atualizar as estatísticas de cada framework e biblioteca recorrentemente fazendo uso de uma CRONJOB. Fonte: Do autor (2024). O primeiro requisito, a compatibilidade com a web, é fundamental para garantir que a plataforma seja acessível a todos os desenvolvedores, independentemente do dispositivo ou sistema operacional que estejam usando. As integrações com o ChatGPT, GitHub e StackOverflow são essenciais porque permitem fornecer recomendações personalizadas, bem como coletar dados detalhados sobre popularidade, contribuição e desempenho das ferramentas. Essas informações são vitais para gerar indicadores e gráficos que informam a tomada de decisões, tornando a plataforma não só acessível, mas também altamente informativa e útil para os desenvolvedores. 4.3.3 Diagramas de casos de uso Neste capítulo serão apresentados os diagramas de caso de uso que mostram algumas das atividades que serão realizadas na plataforma. A Figura 1 demonstra de maneira simplificada como será a atualização das estatísticas pelo uso de CRONJOB. 40 Figura 1 - Atualização das estatísticas pelo uso de CRONJOB. Fonte: Do autor, (2024). Já a Figura 2 demonstra quais atividades poderão ser realizadas pelo usuário da plataforma. Figura 2 - Casos de uso do usuário da plataforma. Fonte: Do autor, (2024). O usuário final da plataforma possui uma ação principal que consiste em preencher um breve formulário provendo a linguagem de programação desejada, o tipo de ferramenta para qual busca recomendações e sua prioridade, que pode ser confiabilidade da ferramenta, apoio da comunidade ou ferramentas em tendência, após isso a plataforma fará o resto por baixo dos dados e retornará para o usuário tanto a recomendação principal quanto todas as outras ferramentas analisadas e dados utilizados para a tomada de decisão. 41 4.3.4 Modelo de banco de dados Na Figura 3 é possível visualizar o modelo para a arquitetura da base de dados que a plataforma fez uso. Figura 3 - Modelo ER. Fonte: Do autor (2024). A tabela principal é a “tools”, que desempenha um papel central no armazenamento da lista de frameworks e bibliotecas de cada linguagem suportada pela plataforma. Esta tabela não só armazena os nomes das ferramentas, mas também inclui links cruciais para a documentação oficial e para os repositórios dessas ferramentas, facilitando o acesso dos desenvolvedores a recursos importantes para a implementação e o uso eficiente das mesmas. Além da tools, a tabela “additional_links” armazena os links dos gerenciadores de pacotes específicos para cada linguagem, como NPM para JavaScript, Composer para PHP, e Pip para Python. Esses links são essenciais para 42 que os desenvolvedores possam facilmente instalar e gerenciar as dependências de seus projetos. As tabelas “statistics” e “statistics_history” são vitais para a plataforma, pois elas armazenam todas as informações mineradas na web que são usadas para a tomada de decisão na hora da recomendação de frameworks e bibliotecas. Esses dados incluem métricas de popularidade, atividade do repositório, e outros indicadores de saúde e relevância das ferramentas, garantindo que as recomendações sejam baseadas em dados atualizados e precisos. A tabela “assistive_texts” desempenha um papel importante ao armazenar os textos explicativos que justificam por que uma determinada ferramenta é recomendada, com base nos critérios especificados pelo usuário. Esses textos são personalizados e ajudam os desenvolvedores a entender melhor as recomendações fornecidas pela plataforma. Por fim, a tabela “ratings” é responsável por armazenar as notas que os usuários atribuem a cada recomendação de ferramenta. Essas avaliações são coletadas para monitorar a satisfação dos usuários e para ajustar e melhorar continuamente o sistema de recomendação, garantindo que ele permaneça alinhado com as necessidades e expectativas da comunidade de desenvolvedores. 4.3.5 Interface da plataforma No desenvolvimento do trabalho proposto, duas de telas de interface foram criadas, mas essas telas renderizam informações diferentes baseado nos parâmetros fornecidos pelo usuário. A Figura 4 apresenta a tela inicial do aplicativo, logo após o usuário acessar a plataforma. 43 Figura 4 - Tela inicial da plataforma. Fonte: Do autor (2024). Nesta tela, o desenvolvedor pode selecionar a linguagem, a categoria de ferramentas que ele deseja receber recomendações e qual sua prioridade (confiabilidade, comunidade ativa ou tendência). Na Figura 5, a mesma tela é mostrada, mas desta vez com o campo de categorias expandido. Figura 5 - Tela inicial da plataforma com o campo de categorias aberto. Fonte: Do autor (2024). 44 O campo de categorias na plataforma contém uma lista abrangente dos tipos de ferramentas suportadas, abrangendo uma ampla gama de necessidades de desenvolvimento. Essa categorização permite aos usuários especificar claramente o tipo de ferramenta que estão buscando, facilitando uma recomendação precisa e alinhada com suas necessidades específicas de projeto. Já na Figura 6, a mesma tela inicial é mostrada, mas desta vez com o campo de prioridade expandido. Figura 6 - Tela inicial da plataforma com o campo de prioridade aberto. Fonte: Do autor (2024). O campo de prioridades na plataforma desempenha um papel crucial ao determinar qual framework ou biblioteca é mais adequado para o usuário. Baseado em critérios como confiabilidade da ferramenta, suporte da comunidade ou tendências atuais, essa configuração influencia diretamente a recomendação final apresentada ao usuário. Ao permitir que o usuário defina suas prioridades, a plataforma assegura que a recomendação seja alinhada não apenas com as características técnicas da ferramenta, mas também com as preferências individuais. Já a Figura 7, mostra a tela central da plataforma quando a prioridade é definida como confiabilidade, nesta página o usuário recebe a recomendação e todos os dados coletados e analisados. 45 Figura 7 - Tela central da plataforma com a prioridade definida para confiabilidade. Fonte: Do autor (2024). A plataforma começa mostrando a opção recomendada em destaque no topo da página, logo abaixo vem um breve texto explicando o motivo daquela ferramenta ser a ideal baseada nos parâmetros selecionados, a seção Leaders e Charts é dinâmica baseada na prioridade do usuário, as estatísticas representadas nessa área são as utilizadas na tomada de decisão da plataforma para recomendar um framework ou biblioteca. Por fim, existe uma tabela que mostra todos os dados coletados pela plataforma. A Figura 8 mostra a mesma página central, mas desta vez com a prioridade definida como comunidade ativa. 46 Figura 8 - Tela central da plataforma com a prioridade definida para comunidade ativa. Fonte: Do autor (2024). Com uma outra prioridade definida, é possível notar a alteração dos indicadores e gráficos que foram utilizados para a tomada de decisão. Por fim a Figura 9 representa a mesma página mais uma vez, mas agora com a prioridade definida para ferramentas em tendência. 47 Figura 9 - Tela central da plataforma com a prioridade definida para tendência. Fonte: Do autor (2024). Aqui é possível visualizar que os indicadores e gráficos utilizados para a tomada de decisão são diferentes das páginas anteriores, focando principalmente em dados que indiquem tendência de crescimento das ferramentas. 48 4.3.6 Fluxo de funcionamento da plataforma O fluxo principal do sistema resume-se nos seguintes passos: acessar a plataforma, escolher qual das linguagens está buscando uma recomendação, escolher qual tipo de ferramenta está buscando uma recomendação, selecionar a prioridade, visualizar a ferramenta ideal, e, finalmente, dar uma nota para a recomendação. Ao acessar a plataforma, os desenvolvedores encontram uma interface amigável e intuitiva, projetada para facilitar a navegação e a localização de ferramentas e recursos necessários para seus projetos de desenvolvimento. Após isso, o usuário deve selecionar a linguagem de programação para a qual está buscando uma recomendação. As opções disponíveis incluem linguagens populares como PHP, JavaScript e Python. Esta etapa é crucial para garantir que as recomendações sejam relevantes e específicas para o ambiente de desenvolvimento do usuário. Em seguida, o usuário escolhe o tipo de ferramenta que está buscando uma recomendação. Este campo possui uma lista fixa de opções devido à complexidade de deixar a busca aberta e à lentidão de minerar os dados todas as vezes. Na Figura 10 é possível ver como funciona o fluxo de mineração de dados da plataforma. 49 Figura 10 - Fluxograma de mineração de dados da plataforma. Fonte: Do autor (2024). No fluxograma é possível ver que apenas na primeira vez que determinada combinação de linguagem e tipo de ferramenta é selecionada a mineração de dados acontece na web, nas buscas subsequentes os dados são retornados diretamente da base de dados. O processo de mineração de dados ocorre em quatro etapas sequenciais, primeiramente ocorre a integração com o ChatGPT onde os filtros de linguagem e tipo de ferramenta são utilizados para obter uma lista de ferramentas que se encaixam nas opções selecionadas pelo usuário. Os dados buscados com a integração com o ChatGPT incluem o nome da ferramenta, o link para a documentação e o link para o repositório da mesma. O nome da ferramenta é utilizado tanto para visualização como para a integração com a API do 50 StackOverflow onde são minerados dados de comunidade. O link para a documentação é usado exclusivamente para auxiliar o usuário quando o mesmo visualizar a lista de ferramentas analisadas, já o link para o repositório é usado para minerar mais dados na web, o mesmo é utilizado nas etapas de integração com a API do GitHub e as APIs dos gerenciadores de pacotes. A segunda etapa do processo de mineração de dados é a integração com a API do GitHub, nesta integração o foco é obter dados do repositório, como número de estrelas, que indica se um determinado projeto é apreciado pelos desenvolvedores que o utilizam, busca se também dados como forks e issues abertas, que podem indicar se a ferramenta possui muitos bugs em aberto ou se a comunidade está ajudando no desenvolvimento da ferramenta. Por fim, algumas datas como a de criação e última atualização do repositório também são mineradas com o objetivo de garantir que o repositório possua um bom histórico e taxa de atualização de código frequente. A terceira etapa foca na obtenção de dados da comunidade, para isso a integração com a API do StackOverflow foi escolhida, com essa integração é possível obter informações de quantas perguntas existem relacionadas a determinada ferramenta, quantas destas nunca foram respondidas ou quantas foram respondidas, mas não solucionadas pelo criador da questão. Com esses dados é possível gerar estatísticas de engajamento e atividade da comunidade. Essa integração ocorre por meio do nome da ferramenta, já que o modo mais aceito pela comunidade é a de adicionar uma tag na pergunta no StackOverflow que inclua o nome do framework ou biblioteca à qual a dúvida seja pertinente. A última etapa da mineração de dados é a integração com as APIs dos gerenciadores de pacotes de cada linguagem suportada pela plataforma para obter dados reais de uso de cada ferramenta, para isso são buscados dados como downloads diários, semanais e mensais. A partir destes dados é possível determinar se alguma ferramenta está em tendência ou caindo em desuso. Cada uma das linguagens de programação suportadas pela plataforma usa um gerenciador de pacotes diferente, devido a isso foi necessário criar o código de integração com cada um dos gerenciadores de pacotes, para o PHP a integração ocorreu com o gerenciador de pacotes Composer, que usa dados do Packagist. Para Javascript o 51 gerenciador de pacotes escolhido foi o NPM e por fim, o Pip foi utilizado para a linguagem de programação Python. Após todo o processo de mineração de dados, os mesmos são atualizados duas vezes na semana por uma cronjob, garantindo que as informações estejam sempre atualizadas sem comprometer a performance do sistema. O usuário ainda seleciona a prioridade que mais lhe interessa, podendo optar entre confiança na ferramenta, comunidade ativa e ferramenta em tendência. Embora esse campo não influencie a lista de ferramentas retornadas, ele define qual é a ideal para o usuário. Por fim, o usuário pode visualizar a ferramenta ideal, os indicadores e gráficos que foram usados na tomada de decisão, e uma lista de todas as estatísticas mineradas, assim como o link para a documentação de cada ferramenta. Esta visualização é projetada para ser clara e detalhada, oferecendo uma visão abrangente das razões por trás da recomendação, incluindo dados sobre a popularidade da ferramenta, a frequência de atualizações, e o nível de suporte da comunidade. Além disso, os gráficos ajudam a ilustrar a posição da ferramenta em relação a outras opções disponíveis, permitindo que o usuário faça comparações informadas. A plataforma também apresenta uma lista completa das estatísticas mineradas, que inclui informações coletadas de diversas fontes confiáveis na web. Isso proporciona ao usuário uma base sólida de dados para fundamentar sua decisão. No final do processo, há a possibilidade de dar uma nota para a recomendação, permitindo que o sistema continue a melhorar com base no feedback dos usuários. Esse feedback é essencial para ajustar e refinar as recomendações futuras, garantindo que o sistema permaneça útil e relevante para a comunidade de desenvolvedores. 52 5 TESTES, COLETA DOS DADOS E ANÁLISE DOS RESULTADOS Para garantir uma avaliação abrangente e útil da plataforma, o autor deste trabalho entrou em contato diretamente com desenvolvedores reais, fornecendo-lhes acesso ao link da plataforma e ao formulário de avaliação. O mesmo explicou brevemente como o fluxo de testes e avaliação deveria funcionar, incentivando-os a utilizar ativamente a plataforma antes de preencher o formulário detalhado. Os testes da plataforma foram conduzidos por esses desenvolvedores, que utilizaram ativamente a plataforma e foram convidados a preencher um formulário detalhado contendo perguntas objetivas e descritivas. Esse formulário foi projetado para avaliar a experiência geral dos usuários e coletar feedback sobre suas percepções e sentimentos ao utilizar a plataforma. Os desenvolvedores compartilharam suas opiniões sobre diversos aspectos, como a interface, a relevância dos frameworks e bibliotecas recomendados, e a utilidade dos dados exibidos. Esse processo de coleta de feedback forneceu insights valiosos sobre a usabilidade e a eficácia da plataforma. Com essas informações, foi possível identificar áreas de melhoria e implementar ajustes para aprimorar ainda mais a utilidade e a eficiência da plataforma para a comunidade de desenvolvedores. No total, foram submetidas vinte e duas respostas ao formulário proposto. Como foi necessário um contato direto com cada um dos testadores para explicar o objetivo da plataforma e o funcionamento da avaliação, o autor do trabalho entrou em contato com pessoas da sua rede de contatos que trabalham primariamente com as linguagens suportadas pela plataforma. Essa abordagem garantiu que os participantes fossem familiarizados com o propósito da plataforma e a metodologia de avaliação, resultando em um feedback mais relevante e direcionado. 53 Abaixo inicia-se a análise dos resultados, começando pelo Gráfico 3 que mostra os resultados obtidos na primeira questão do formulário. Gráfico 3 - Pergunta sobre o problema de pesquisa que o trabalho tenta solucionar. Fonte: Do autor (2024). As respostas mostram que todos os desenvolvedores já tiveram dúvidas sobre a escolha do melhor framework ou biblioteca para seus projetos. Essa unanimidade valida que o problema abordado no TCC é significativo e relevante, demonstrando que a incerteza na seleção de ferramentas é uma questão comum enfrentada por desenvolvedores, independentemente do nível de experiência ou da complexidade do projeto. A recorrência dessa dúvida sugere a necessidade de uma orientação eficaz na escolha das ferramentas de desenvolvimento. A existência de uma plataforma que oferece recomendações baseadas em dados pode ajudar a resolver essas incertezas, fornecendo insights valiosos sobre popularidade, manutenção e suporte 54 da comunidade, e facilitando a tomada de decisões informadas para otimizar os projetos dos desenvolvedores. O Gráfico 4 representa os dados obtidos na segunda pergunta do formulário, que foca exclusivamente na experiência como desenvolvedor de software do respondente. Gráfico 4 - Pergunta sobre a experiência como desenvolvedor dos respondentes. Fonte: Do autor (2024). A análise das respostas revela que a maioria dos desenvolvedores possui mais de cinco anos de experiência, com quase 73% dos participantes enquadrados nesta categoria. Isso indica que os usuários da plataforma são majoritariamente desenvolvedores experientes, o que mostra que as recomendações fornecidas precisam atender a um público que possui um conhecimento aprofundado sobre frameworks e bibliotecas, e que está em busca de insights mais profundos e detalhados. 55 O Gráfico 5 ainda foca no respondente, tentando entender com qual linguagem de programação que a plataforma suporta que o usuário possui mais experiência. Gráfico 5 - Pergunta sobre as linguagens de programação. Fonte: Do autor (2024). As respostas indicam que a maioria dos desenvolvedores tem mais experiência com PHP e JavaScript, com treze desenvolvedores se especializando em PHP e oito em JavaScript. Não houve nenhuma seleção para Python, o que reflete o foco principal da plataforma em validar as linguagens PHP e JavaScript. Isso se deve ao maior conhecimento e familiaridade do autor do trabalho com essas linguagens, permitindo uma análise mais aprofundada e precisa das recomendações. Já no Gráfico 6 começam as questões objetivas sobre a plataforma que os testadores usaram, a primeira destas questões foca na facilidade de uso da plataforma. 56 Gráfico 6 - Pergunta intuitividade da interface. Fonte: Do autor (2024). Avaliando a intuitividade e facilidade de uso da interface da plataforma, observamos uma gama de opiniões entre os desenvolvedores que a testaram. A maioria atribuiu notas entre três e cinco, indicando uma percepção boa sobre sua acessibilidade, já que nenhuma nota ruim foi apresentada. Com aproximadamente 73% dos participantes dando notas quatro e cinco, a interface foi geralmente bem recebida por sua praticidade. Entretanto, algumas notas três sugerem áreas para melhoria. Esses feedbacks apontam para possíveis ajustes na usabilidade e na apresentação visual, que poderiam elevar a experiência do usuário para um patamar ainda mais alto de intuitividade e facilidade de uso. O Gráfico 7 foca na em tentar entender se as recomendações fornecidas pela plataforma tem relevância baseado no conhecimento do testador do ecossistema da linguagem. 57 Gráfico 7 - Pergunta sobre as ferramentas recomendadas. Fonte: Do autor (2024). Os feedbacks sobre a relevância dos frameworks e bibliotecas recomendados pela plataforma refletem uma percepção positiva geral entre os desenvolvedores que participaram do teste. A maioria dos participantes atribuiu notas altas, principalmente quatro e cinco, indicando que as recomendações foram amplamente consideradas pertinentes e úteis para suas necessidades específicas nas respectivas linguagens de programação. Essas avaliações positivas são um indicativo de que a plataforma está cumprindo seu propósito principal de auxiliar os desenvolvedores na seleção de tecnologias adequadas. A consistência nas notas sugere que as recomendações baseadas em métricas como popularidade, manutenção e suporte da comunidade estão alinhadas com as expectativas dos usuários, proporcionando um guia confiável para a escolha de frameworks e bibliotecas. No entanto, algumas notas três e feedbacks podem sugerir áreas para melhorias ou refinamentos. Explorar esses pontos pode ajudar a identificar como a plataforma pode melhorar ainda mais suas recomendações, garantindo que 58 atendam de maneira ainda mais precisa e eficaz às necessidades variadas dos desenvolvedores. O Gráfico 8 busca analisar se os dados mostrados para o usuário final possuem relevância para sua tomada de decisão. Gráfico 8 - Pergunta sobre os indicadores mostrados. Fonte: Do autor (2024). A plataforma recebeu uma recepção majoritariamente positiva entre os desenvolvedores, que enfatizaram a eficácia dos indicadores, gráficos e tabelas fornecidos para avaliar frameworks e bibliotecas. Os participantes que deram notas altas expressaram que os recursos visuais e informativos da plataforma foram essenciais para tomar decisões embasadas e informadas sobre tecnologias a serem adotadas em seus projetos. Já o Gráfico 9, que consiste na última questão objetiva do formulário, tem como objetivo definir se os testadores acharam a plataforma interessante e fariam a recomendação da mesma para outros desenvolvedores. 59 Gráfico 9 - Pergunta sobre a recomendação da plataforma para outros desenvolvedores. Fonte: Do autor (2024). A plataforma recebeu uma forte aceitação entre os desenvolvedores, como evidenciado pelas notas predominantemente altas dadas à pergunta sobre recomendação para outros profissionais da área. Os participantes que atribuíram notas altas destacaram a eficácia da plataforma em fornecer recomendações relevantes de frameworks e bibliotecas, além de facilitar decisões informadas. Esse feedback positivo indica que os usuários valorizam a utilidade e a precisão das informações apresentadas, refletindo a confiança na plataforma como uma ferramenta valiosa para o processo de desenvolvimento de software. Essas respostas ressaltam não apenas a aprovação da plataforma, mas também a disposição dos desenvolvedores em compartilhar sua experiência positiva com colegas. A recomendação consistente reforça a percepção de que a plataforma não apenas atende, mas supera as expectativas dos usuários ao oferecer recursos 60 que contribuem significativamente para a eficiência e qualidade no desenvolvimento de projetos de software. Uma das perguntas do formulário era um campo aberto onde os respondentes poderiam falar sobre coisas que gostaram ou não na plataforma, a seguir apresento um resumo dos principais comentários e uma análise sobre as respostas. A maioria dos participantes expressou interesse em melhorias que envolvem maior detalhamento e acessibilidade das informações fornecidas pela plataforma. Entre os feedbacks mais comuns estão o desejo por links diretos para repositórios conhecidos que ofereçam mais detalhes sobre frameworks e bibliotecas recomendadas, bem como a inclusão de mais cores e formatos visuais para facilitar a compreensão dos dados apresentados. Além disso, sugestões foram feitas para permitir uma entrada mais livre de categorias fixas ao descrever problemas específicos, oferecendo assim mais flexibilidade na busca por soluções. No entanto, algumas críticas foram levantadas, como a necessidade de melhorias no frontend e a observação de que certas ferramentas não retornaram resultados, o que pode afetar a experiência de uso. Por outro lado, houve reconhecimento positivo pela utilidade geral da plataforma, especialmente destacando sua originalidade e potencial para transformar a maneira como os desenvolvedores procuram por soluções tecnológicas. Embora o feedback aponte áreas específicas para aprimoramento, como a melhoria da experiência do usuário (UX) e a inclusão de documentação mais acessível, a receptividade geral sugere que a plataforma está no caminho certo para se tornar uma ferramenta essencial no arsenal de desenvolvedores experientes. 61 6 CONSIDERAÇÕES FINAIS A plataforma de recomendação de frameworks e bibliotecas tem o potencial de fornecer resultados significativos. Primeiramente, ela se destina a ser uma ferramenta valiosa para desenvolvedores que buscam criar novos projetos ou aprimorar projetos existentes, tornando a escolha das tecnologias apropriadas mais simples e informada. Além disso, a plataforma tem a capacidade de beneficiar tanto desenvolvedores experientes quanto aqueles que estão começando. Para os desenvolvedores experientes, ela pode fornecer novas perspectivas e abordagens dentro do contexto que já conhecem, incentivando a exploração e a inovação. Para os novos desenvolvedores, que podem não estar familiarizados com o vasto ecossistema de linguagens de programação e suas ferramentas associadas, a plataforma se torna um guia valioso para começar a entender e navegar nesse cenário complexo. Baseado nos dados coletados e na análise dos resultados é possível confirmar que as hipóteses estabelecidas neste estudo foram confirmadas, mostrando que uma plataforma de recomendação de frameworks e bibliotecas pode ajudar na tomada de decisão de qual a melhor ferramenta para um determinado projeto. É importante ressaltar que a plataforma pode suportar a adição de novas linguagens e frameworks, indo além do PHP e JavaScript que foram validados neste estudo. Destaco que a plataforma também faz a recomendação de ferramentas em Python, mas esta linguagem não teve a validação de testes de usuários. Trabalhos futuros podem se concentrar na expansão da plataforma para incluir 62 recomendações de frameworks e bibliotecas em outras linguagens de programação. Isso aumentaria ainda mais o valor da plataforma, tornando-a uma fonte abrangente de orientação para desenvolvedores que trabalham em uma variedade de ambientes tecnológicos. Outros tópicos para se explorar futuramente são a possibilidade de adicionar exemplos de uso de cada uma das ferramentas recomendadas, assim como permitir uma busca mais livre de categorias, que atualmente é uma lista fixa de opções. Em resumo, os resultados esperados da plataforma de recomendação de frameworks e bibliotecas são amplos e promissores. Ela não só simplificará a tomada de decisões para desenvolvedores, mas também promoverá a inovação, ajudará os novos desenvolvedores a se situar no ecossistema tecnológico e poderá ser expandida para atender a uma variedade de linguagens de programação. Essa abordagem aberta e adaptável coloca a plataforma em uma posição única para contribuir significativamente para a comunidade de desenvolvimento de software. 63 REFERÊNCIAS AKBAR Muhammad Azeem; KHAN Arif Ali; LIANG Peng. Ethical Aspects of ChatGPT in Software Engineering Research. [S. l.]. 2023. Disponível em https://arxiv.org/pdf/2306.07557.pdf. Acesso em: 07 set. 2023. ALMARZOUQ, Mohammad; ALZAIDAN, Abdullatif; ALDALLAL, Jehad. Mining GitHub for research and education: challenges and opportunities. [S. l.]. 2020. Disponível em https://www.emerald.com/insight/content/doi/10.1108/IJWIS-03-2020-0016/full/html. Acesso em: 02 out. 2023. CHEMIN, Beatris F. Manual da Univates para trabalhos acadêmicos: planejamento, elaboração e apresentação. 5. ed. Lajeado, RS: Univates, 2023. E-book. Disponível em: https://www.univates.br/editora-univates/publicacao/402. Acesso em: 30 ago. 2023. DOS SANTOS Jean Victor Mendes; NAGAO Marco Antônio; DA SILVA Misael Ramos; MONTANHA Gustavo Kimura. Uso de Frameworks para Aumento de Produtividade no Desenvolvimento Web em Conjunto com o Idioma Inglês. [S. l.]. 2017. Disponível em http://www.jornacitec.fatecbt.edu.br/index.php/VIJTC/VIJTC/paper/viewFile/1009/146 5. Acesso em: 22 ago. 2023. FRAIWAN Mohammad; KHASAWNEH Natheer. A Review of ChatGPT Applications in Education, Marketing, Software Engineering, and Healthcare: Benefits, Drawbacks, and Research Directions. [S. l.]. 2023. Disponível em: https://arxiv.org/abs/2305.00237. Acesso em: 02 out. 2023. 64 KALLIAMVAKOU Eirini; GOUSIOS Georgios; BLINCOE Kelly; Leif SINGER; GERMAN Daniel; DAMIAN Daniela. The Promises and Perils of Mining GitHub. [S. l.]. 2014. Disponível em https://kblincoe.github.io/publications/2014_MSR_Promises_Perils.pdf. Acesso em: 22 ago. 2023. LAAZIRI Majida; BENMOUSSA Khaoula; KHOULJI Samira; KERKEB Mohamed Larbi. A Comparative study of PHP frameworks performance. [S. l.]. 2019. Disponível em https://www.sciencedirect.com/science/article/pii/S2351978919303312. Acesso em: 21 ago. 2023. LOZADA, Gisele; NUNES, Karina da S. Metodologia Científica. Grupo A, 2019. 9788595029576. Disponível em: https://integrada.minhabiblioteca.com.br/#/books/9788595029576/. Acesso em: 30 out. 2023. MATIAS-PEREIRA, José. Manual de Metodologia da Pesquisa Científica. Grupo GEN, 2016. 9788597008821. E-book. Disponível em: https://integrada.minhabiblioteca.com.br/#/books/9788597008821/. Acesso em: 30 out. 2023. RAMOS, Albenides. Metodologia da pesquisa científica: como uma monografia pode abrir o horizonte do conhecimento. Grupo GEN, 2009. 9788522465989. E-book. Disponível em: https://integrada.minhabiblioteca.com.br/#/books/9788522465989/. Acesso em: 30 out. 2023. SORTE, Bhagyashree W; JOSHI Pooja P; JAGTAP Vandana. Use of Artificial Intelligence in Software Development Life Cycle: A state of the Art Review. [S. l.]. 2015. Disponível em: https://www.researchgate.net/publication/274254538_Use_of_Artificial_Intelligence_i n_Software_Development_Life_Cycle_A_state_of_the_Art_Review. Acesso em: 02 out. 2023. SURAMEERY Nigar M. Shafiq; SHAKOR Mohammed Y.. Use ChatGPT to Solve Programming Bugs. [S. l.]. 2022. Disponível em http://journal.hmjournals.com/index.php/IJITC/article/view/1679/1993. Acesso em: 22 ago. 2023. 65 SVENSSON Richard Berntsson; FELDT Robert; TORKAR Richard. The Unfulfilled Potential of Data-Driven Decision Making in Agile Software Development. [S. l.]. 2019. Disponível em https://link.springer.com/chapter/10.1007/978-3-030-19034-7_5. Acesso em: 15 out. 2023. CSS. Disponível em: https://developer.mozilla.org/pt-BR/docs/Web/CSS. Acesso em: 22 out. 2023. GitHub. Disponível em: https://github.com. Acesso em: 22 out. 2023. HTML. Disponível em: https://developer.mozilla.org/pt-BR/docs/Web/HTML. Acesso em: 22 out. 2023. Laravel. Disponível em: https://laravel.com. Acesso em: 22 out. 2023. MySQL. Disponível em: https://www.mysql.com. Acesso em: 22 out. 2023. PHP. Disponível em: https://www.php.net. Acesso em: 22 out. 2023. Statista. Disponível em: https://www.statista.com/statistics/627312/worldwide-developer-population. Acesso em: 22 out. 2023. 66 APÊNDICES APÊNDICE A – Formulário usado para avaliação da plataforma What Should I Use 67 68 69