Se você é aluno de graduação e procura tópicos para o seu trabalho de conclusão de curso (TCC), iniciação científica (IC) ou iniciação tecnológica, farei aqui algumas sugestões, porém a lista não é exaustiva. Se você tem uma ideia, que é de alguma forma relacionada a minha área de pesquisa, não existe em entrar em contato. Você pode escrever para [alcemir (at) prp • uespi • br].
Para o seu TCC ou IC, você pode executar o projeto e implementação de ferramentas orientadas à engenharia de software usando uma ou mais das seguintes técnicas: mineração de repositórios de software; análise de dados; processamento de linguagem natural; e algoritmos de aprendizado de máquina.
OBS: Tenho especial interesse se quiser fazer um TCC-Startup
O contexto do seu trabalho pode envolver uma ou mais dos seguintes temas abaixo:
Tecnologias
Blockchain
Web
Dispositivos Móveis
Técnicas
Refatoração e Bad Smells;
Dívida técnica;
Padrões de projeto e estilos de arquitetura de software;
Qualidade de software ou modelos de qualidade;
Controle de variabilidade em software;
Métricas de software;
Avaliação de modularidade, estabilidade de projeto e propensão a erros, comunicação em projetos de software, solução de problemas de software, desenvolvimento distribuído de software, entre outros.
Abordagens de desenvolvimento
Programação orientada à objetos (OOP);
Programação orientada à características (FOP)
Sistemas de software altamente configuráveis / Linha de produtos de software (SPL)
Outras técnicas contemporâneas para modularização/composição/reúso.
Ferramentas
auxiliar desenvolvedores, projetistas, gestores, pesquisadores com os temas anteriores
Se você ainda não consegue desenvolver ideias para seu trabalho à partir dos temas acima, abaixo eu deixo algumas para você pegar e executar. Esta lista também não é exaustiva e posso ter outras para discussão, me procure no campus o na rede para conversarmos.
Esta ideia é inspirada no artigo do workshop VEM'13 intitulado: "Tipar ou não tipar? Compreendendo quais fatores influenciam a escolha por um sistema de tipos", onde os autores investigaram os motivos e características de desta decisão em sistemas de linguagem Groovy disponíveis no GitHub.
Manutenção e evolução de software
Mineração de repositórios de software
Análise estática de código fonte Dart
Esta ideia é inspirada no artigo do workshop VEM'16 intitulado: "Um estudo em larga escala sobre estabilidade de APIs", onde os autores investigaram questões relativas a evolução e estabilidade de APIS.
Algumas possíveis questões de pesquisa:
i) Qual a frequência de mudanças nas bibliotecas pub.dev?
ii) Como a frequência de breaking changes se comporta ao longo do tempo?
iii) Qual o impacto real das breaking changes em aplicações clientes?
iv) Qual a similaridade com o trabalho das evidencias do Xavier et al. [VEM’16]?
Evolução de software
Mineração de repositórios de software
Análise estática de código fonte Dart
A ideia é utilizar o plugin de DT para projetos flutter em repositórios de software escritos utilizando Dart/Flutter
SonarQube Flutter Plugin
Manutenção e evolução de software
Mineração de repositórios de software
Dívida Técnica
A ideia é explorar referencias bibliográfica para entender como o os pesquisadores tem usado os datasets de DT.
Pacotes de análise estática (https://dart-lang.github.io/linter/lints/)
pedantic for rules enforced internally at Google
effective_dart for rules corresponding to the Effective Dart style guide
flutter rules used in flutter analyze
Qual a frequência de uso de regras de análise estática?
Qual a aderência às regras da comunidade (Google, Flutter, Dart)?
Desenvolvedores costumam definir suas próprias regras lint?
O quão frequente os desenvolvedores ignoram regras de lint?
Quais regras lint são mais ignoradas?
Este fato pode ser considerado uma dívida técnica auto-admitida?
Manutenção e evolução de software
Mineração de repositórios de software
Dívida Técnica
Estudos empíricos qualitativos (survey)
A ideia é criar uma ferramenta para minerar e classificar tipos de manutenção de software. Esta ideia é inspirada alguns artigos publicados sobre temas correlatos (MSR'18, JSME'01 e EMSE'17) onde os autores investigaram formas de classificação de atividade de manutenção em repositórios de software.
Manutenção e evolução de software
Mineração de repositórios de software
Aprendizado de máquina aplicado à engenharia de software
A ideia é criar uma plataforma para facilitar e automatizar tarefas de estudos empíricos envolvendo a mineração de repositórios de software. Na prática, seria juntar a GiFT (Diogo) + SEAGLE + RepositoryMiner + VisminerTD para criar uma infraestrutura extensível de experimentação com repositórios de software.
SEAgle: Effortless Software Evolution Analysis (ICSME 2014)
Manutenção e evolução de software
Mineração de repositórios de software
Dívida Técnicas
Aprendizado de máquina aplicado à engenharia de software
A ideia é explorar referencias bibliográfica para entender como o os pesquisadores tem usado os datasets de DT.
Como os pesquisadores usam o GHTorrent [VEM’17]?
Quais os usos mais comuns dos datasets de DT (Shahib MTD 2015/PROMISE 19)?
Qual a quantidade de dados utilizados por estudos baseados no GHTorrent?
Manutenção e evolução de software
Mineração de repositórios de software
Dívida Técnicas
Estudos qualitativos
A ideia é construir uma plataforma para armazenar diplomas, histórico escolar em blockchain para efeito de imutabilidade. Existe portaria do MEC que exige este tipo de plataforma para universidades federais e isto deverá ser aplicado às demais Instituições de Ensino Superior também.
Desenvolvimento de software Web orientado à blockchain
A ideia é construir uma plataforma para controlar todo o processo de produção de um determinado produto, para garantir procedência do mesmo.
Desenvolvimento de software orientado à blockchain
A ideia é construir uma plataforma para armazenar histórico de transações realizadas por empresas para fins de auditoria.
Desenvolvimento de software Web orientado à blockchain
A ideia é construir uma plataforma para armazenar recompensas creditadas à usuários de produtos/serviços de uma dada empresa.
Desenvolvimento de software Web orientado à blockchain
A ideia é construir uma sites/aplicativos para que estudantes com interesse em aprender os conceitos de engenaria de software possam jogar. Sua criatividade é o seu guia.
Transformar o SimulES em um aplicativo para jogar em rede.
Desenvolvimento de software para dispositivos móveis e Web
A ideia é construir uma aplicativo para dispositivos móveis em um contexto quaisquer. Sua criatividade é o seu guia.
Desenvolvimento de software para dispositivos móveis