Mathias
Mathias
Mathias
1. Sobre a empresa............................................................................................................... 2
1.1 Cultura da empresa ...................................................................................................3
2. Setor da empresa onde o estágio foi realizado ..............................................................
3 3. Período em que o estágio foi realizado...........................................................................
3 4. Métodos, Técnicas e Tecnologias Utilizadas..................................................................
4 5. Projetos realizados...........................................................................................................
6 6. Descrição das Atividades Realizadas...........................................................................
7. Dificuldades e Limitações .............................................................................................
1. Sobre a empresa
Foi realizado um estágio na Opus Software, uma empresa sediada em São Paulo/SP
que se dedica ao desenvolvimento de software para outras empresas (setor de serviços).
Apesar da localização física, a empresa adotou o home office desde a pandemia e segue o
modelo até hoje devido aos bons resultados. A empresa oferece diversas soluções B2B
(Business to Business) para diversos clientes. Em seguida, são descritos alguns detalhes
dos serviços e clientes da empresa.
A empresa Opus Software possui uma base de clientes diversificada, que inclui
empresas como OCTOPUS, GATI e Instituto Ethos, que utilizam seus serviços de gestão
de redes. Além disso, a Opus atende clientes como Pernambucanas e Bradescard no
segmento de automação bancária, fornecendo soluções personalizadas. Outro cliente
importante é a Small World, que busca soluções financeiras na Opus.
No terceiro e quarto mês, iniciei os estudos com Spring Boot, que é a principal
tecnologia usada para desenvolver o back-end dos projetos da empresa, e em Javascript,
que é a base das aplicações front-end. Durante a graduação, na disciplina de Web do curso
de computação, havia aprendido a desenvolver o back-end em Node.js e o front-end com
Javascript e Vue.js. Então essa fase do treinamento me ajudou a entender melhor como
diferentes tecnologias Web podem resolver o mesmo problema de formas diferentes.
5. Projetos realizados
A empresa entende que, em primeiro momento, o estagiário deve desenvolver
projetos separados com o intuito de aprender, em vez de iniciar em algum projeto real ou
contato direto com clientes. Nesse sentido, na primeira etapa foi proposto o
desenvolvimento de um sistema back-end e front-end, em que pude elaborar desde a ideia
da aplicação, os diagramas utilizados para elaborar a sistema, então escrever a aplicação,
documentar e escrever alguns testes integrados. Até a data da escrita deste relatório, apenas
a API da aplicação foi desenvolvida, enquanto a parte gráfica ainda está em esboço. Assim,
apresentarei a seguir mais detalhes desse projeto.
O nome dado ao projeto foi “events”, em que o objetivo era uma sistema em que os
usuários pudessem publicar e divulgar eventos, tal como buscar e se inscrever em eventos.
No esboço inicial, pensei em 3 funções principais: Adicionar, para criar um novo evento;
busca com paginação, para procurar eventos mais próximos e Listar eventos criados ou em
que o usuário está inscrito. A partir dessa concepção, foi feito o esboço da Figura 2.
E a partir disso, elaborei um diagrama simples (Figura 3), para me guiar durante o
desenvolvimento, que passou por algumas modificações. No diagrama inicial, esperava ter
as seguintes tabelas: User, para salvar informações básicas dos usuários; Event, para salvar
eventos criado por usuários; EventEdition, que são edições de um evento, com data,
localização e vagas disponíveis; e por fim, uma tabela de Ingressos, que seria usada para
mapear quem comparecerá ao eventos e obter estatisticas e avaliações ao fim do evento.
No diagrama final, as mudanças ocorreram na relação entre as entidades User e Ingressos;
na criação da entidade Review, para facilitar o armazenamento de avaliações e na alteração
dos status dos ingressos, que antes mapeavam uma situação de compra-venda e passaram a
representar a situação reservado (booked), expirado (expired) ou usado (used).
Figura 2: Tela principal com funções cruciais do sistema. O ícone de localização é a posição do
usuário; os demais ícones dentro do mapa são eventos próximos e o ícone destacado em amarelo é
um evento selecionado pelo usuário para ver mais detalhes.
Figura 3: Relação entre entidades do banco inicial.
● Cursos: SQL, Angular, Spring Boot, HTML/CSS, Javascript e GIT; esses cursos
forneceram os conhecimentos técnicos para fazer o projeto na seção 5;
● Cursos: Soft Skills e Oratória Teste de Software: Os cursos realizados em soft skills,
oratória e testes foram fundamentais para ampliar minhas competências além das
habilidades técnicas. Desenvolver habilidades interpessoais, aprimorar a capacidade
de se expressar claramente e aprender sobre boas práticas de teste foram
importantes para o meu crescimento profissional.
● Curso de Teste de Software com parceria da USP, aula ministrada pelo professor
Delamaro e outros docentes, abordando diversas técnicas de teste de software.
● Projeto descrito na seção 5: O projeto em questão foi uma oportunidade para aplicar
meus conhecimentos técnicos e enfrentar desafios reais. A fase de projeto pode ser
divida em algumas partes:
7. Dificuldades e Limitações
Em resumo, durante o início do estágio, participei de vários treinamentos nos quais
não enfrentei muitas limitações, uma vez que grande parte dos conteúdos abordados eram
revisões dos tópicos estudados durante a graduação ou ampliações desses conceitos,
baseados na ciência da computação. No entanto, no projeto em si, surgiram duas limitações
significativas.
A primeira limitação foi encontrar uma solução otimizada para um problema real de
cálculo de localizações. Isso se deve ao fato de que cada região pode conter uma quantidade
variável de eventos, que pode variar de poucos a centenas ou até mesmo milhares. A busca
desses eventos é uma operação recorrente dentro do escopo do projeto, o que exigiu um
cuidadoso planejamento para lidar eficientemente com essa complexidade.
A segunda limitação foi adaptar o uso da tecnologia proposta, o Spring Boot, para
atender aos requisitos específicos do projeto. Como o meu projeto não se limitava apenas a
operações de CRUD comuns, foi necessário personalizar os padrões do framework para
atender às necessidades específicas. Isso exigiu um trabalho extra para garantir que a
tecnologia escolhida se adequasse aos requisitos do projeto.
Apesar dessas limitações, o objetivo principal do projeto foi alcançado com sucesso,
que era consolidar o conhecimento sobre como criar uma API, implementar operações de
CRUD e desenvolver os serviços associados. Além disso, também foi possível escrever
testes adequados e documentar tanto a aplicação quanto o processo de desenvolvimento.
Essa conquista contribuiu para a consolidação do conhecimento adquirido durante o curso e
me permitiu adquirir novas habilidades práticas relacionadas ao desenvolvimento de
software.
O estágio que estou realizando tem uma relação direta com o curso de graduação em
computação. As disciplinas obrigatórias do curso forneceram os fundamentos teóricos
necessários para entender as diversas áreas da computação. Isso me possibilitou aprofundar
meus conhecimentos em subáreas e tecnologias específicas durante o estágio.
Além disso, percebo que há uma carência no ensino sistemático de boas práticas de
programação, como tornar o código legível e de fácil manutenção. Embora alguns
professores abordem essas práticas em suas atividades, seria vantajoso que o curso
dedicasse mais atenção a esse aspecto tão relevante na prática profissional da computação.