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