FATEC DE BARUERI
Engenharia de Software
JAVALEARNERS
Ana Maria Melo de Oliveira | RA: 2090782311009
Davi Araujo Oliveira | RA: 2090782311020
Gabriel Spisso | RA: 2090782311038
Isac de Oliveira Nascimento | RA: 2090782311022
Luiz Eduardo Trindade Almeida | RA: 2090782311003
Documentação de Engenharia de Software
Barueri
2023
1. Introdução
O projeto JavaLearners trata-se de um aplicativo educacional interativo que ensina
programação em Java de forma divertida e envolvente, por meio de uma abordagem baseada
em jogos. O aplicativo oferece uma série de módulos e desafios temáticos que permitem aos
usuários aprender Java enquanto resolvem quebra-cabeças, completam missões e ganham
recompensas. Recursos Principais: Módulos de aprendizado estruturados; Desafios e missões
com temas interessantes; Tutoriais em vídeo e exemplos de código; Comunidade de
aprendizado para compartilhar experiências e obter suporte; Monitoramento do progresso do
usuário.
O projeto tem como objetivo diminuir a dificuldade na aprendizagem de linguagens de
programação, trazendo uma maneira disruptiva de estudar. O maior desafio com esse tipo de
programação, é a dificuldade de aprendizagem, o aplicativo inova e traz uma maneira
diferente de aprender a linguagem de programação Java.
1.1 Clientes
Stackholders – Investidores de Empresas de tecnologia, Escolas e Faculdades que ensinam a
linguagem de programação Java.
Usuário Principal – Alunos da área de TI interessados em aprender Java.
Usuário Secundário – Professores de cursos, ou faculdades.
Usuário Potencial – Público geral que tem interesse no aprendizado de Linguagens de
programação, Profissionais em programação.
1.2 Problema solucionado
O principal problema apresentado nesse segmento de aplicativo, principalmente nessa
linguagem de programação em específico, é a grande dificuldade de aprendizagem,
necessitando de grandes cursos e especialização nesse conteúdo. A proposta do aplicativo é
facilitar e trazer mais acessibilidade no aprendizado desta linguagem de programação,
trazendo propostas diferentes, de forma mais interativa e dinâmica, apresentando jogos,
tarefas interativas, não deixando de lado o mais importante, o conteúdo.
2. Modelagem de Negócio
2.1 Concorrentes
Mimo - É o único software que encontramos no mercado que oferece um serviço
muito semelhante ao nosso, com a proposta de ser muito parecido com o duolingo, porém
ensinando linguagens de programação. Entretanto, o Mimo ensina as seguintes linguagens:
Python, JavaScript, HTML, SQL e CSS. Já este projeto, visa oferecer apenas a linguagem
Java, linguagem essa que não é oferecida pelo nosso concorrente, e é justamente esse nosso
principal diferencial.
2.1.1 Quais são nossas vantagens sobre o concorrente?
Foco exclusivo na linguagem Java: Nosso projeto tem foco apenas na linguagem
Java, enquanto o Mimo oferece várias linguagens e nenhuma delas é o Java.
Abordagem acolhedora e amigável: Nosso projeto visa ter uma interface amigável e
com interações sugestivas, obviamente sem prejudicar o foco necessário para o aprendizado,
criando assim uma experiência de estudo de programação agradável e diferente do restante do
mercado.
Conteúdo adaptado para iniciantes: O JavaLearner tem como público-alvo aqueles
que querem trocar de área de atuação ou mesmo começar a programar e não tem muita noção
sobre esse nicho do mercado.
2.2 Regras de negócio:
As regras de negócio para o software JavaLearners definem o que é permitido e o que
não é permitido dentro do contexto do aplicativo. Algumas dessas regras podem incluir:
Conteúdo focado em Java: O software deve se concentrar exclusivamente na
linguagem de programação Java, tanto em termos de ensino quanto de prática.
Interface amigável e interativa: O aplicativo deve ter uma interface amigável e
interativa para tornar a experiência de aprendizado agradável para os usuários.
Acessibilidade: O software deve ser acessível a todos os usuários interessados em
aprender Java, independentemente de seu nível de habilidade prévio.
Progresso do usuário: O aplicativo deve ser capaz de rastrear o progresso individual
do usuário para fornecer feedback personalizado e adaptar o conteúdo conforme necessário.
Segurança dos dados: Todas as informações dos usuários devem ser protegidas de
acordo com os padrões de segurança da informação para garantir a privacidade e a
confidencialidade dos dados.
2.3 Vantagem do software
A vantagem do software JavaLearners reside em sua abordagem inovadora e focada
para ensinar a linguagem de programação Java. Algumas das vantagens específicas incluem:
Foco exclusivo na linguagem Java: Enquanto outros aplicativos oferecem uma
variedade de linguagens de programação, JavaLearners se destaca por se concentrar
exclusivamente na linguagem Java, atendendo a um nicho específico de usuários interessados
em aprender essa linguagem em particular.
Conteúdo adaptado para iniciantes: JavaLearners é ideal para iniciantes na
programação ou aqueles que desejam mudar para o campo da tecnologia, fornecendo um
caminho estruturado para aprender os conceitos fundamentais de Java de uma maneira
acessível e compreensível.
3. Análise financeira
Possibilita na antecipação das consequências financeiras durante o
cumprimento das atividades da empresa. Segue tabela:
Figura 1. Estimativa de Gastos
3.1 ROI
Estimativa de Dados:
500 pessoas assinaram o plano básico a $9,99 por mês;
1.000 pessoas assinaram o plano premium a $19,99 por mês;
Período de um ano.
Receita do Plano Básico:
Receita do Plano Premium:
Receita Total:
Investimento Total:
R$200.000,00
ROI:
4. Requisitos de software
4.1 Método e técnica de levantamento de requisitos
Para levantar os requisitos do software, utilizamos uma abordagem centrada no
usuário, incluindo entrevistas com potenciais usuários, análise de casos de uso e feedback de
especialistas em Java e educação em tecnologia.
4.1.1 Técnica 1: Entrevistas com Potenciais Usuários
Realizamos entrevistas estruturadas com estudantes, profissionais e instrutores de Java
para identificar suas necessidades, preferências e desafios no aprendizado e ensino de Java.
4.1.2 Técnica 2: Análise de Casos de Uso
Analisamos casos de uso de plataformas de aprendizado existentes, bem como padrões
de comportamento de usuários em ambientes de aprendizado online, para entender melhor
como projetar uma experiência de usuário eficaz e envolvente.
4.2 Requisitos funcionais
[RF001] Selecionar Curso de Linguagem Java
Prioridade: x Essencial Importante Desejável
Descrição: Este requisito permite que o usuário escolha um curso de Linguagem Java na lista
de cursos disponíveis na plataforma JavaLearner durante o processo de iniciar um novo curso.
[RF002] Criar Conta de Usuário
Prioridade: x Essencial Importante Desejável
Descrição: Este requisito permite que um usuário crie uma nova conta na plataforma
JavaLearner, fornecendo informações como nome, e-mail e senha.
[RF003] Visualizar Lista de Cursos Favoritos
Prioridade: Essencial x Importante Desejável
Descrição: Este requisito permite que o usuário visualize uma lista dos cursos marcados como
favoritos para facilitar o acesso rápido aos cursos de seu interesse.
[RF004] Marcar Curso como Concluído
Prioridade: Essencial x Importante Desejável
Descrição: Este requisito permite que o usuário marque um curso como concluído após
terminar todas as lições, para acompanhar seu progresso e histórico de aprendizado.
[RF005] Compartilhar Curso em Redes Sociais
Prioridade: Essencial Importante x Desejável
Descrição: Este requisito permite que o usuário compartilhe informações sobre um curso em
suas redes sociais, promovendo a plataforma JavaLearner e incentivando outros usuários a
participarem.
[RF006] Pesquisar Cursos por Categoria
Prioridade: x Essencial Importante Desejável
Descrição: Este requisito permite que o usuário pesquise cursos específicos por categoria (por
exemplo, iniciante, intermediário, avançado) para encontrar conteúdo relevante para seu nível
de habilidade.
[RF007] Avaliar Curso e Deixar Comentário
Prioridade: Essencial Importante x Desejável
Descrição: Este requisito permite que o usuário avalie um curso e deixe um comentário para
fornecer feedback aos criadores de conteúdo e ajudar outros usuários na escolha de cursos.
[RF008] Avaliar Desempenho do Usuário
Prioridade: Essencial x Importante Desejável
Descrição: Este requisito permite que a plataforma JavaLearner avalie o desempenho dos
usuários em diferentes cursos, acompanhando o progresso, a participação e o desempenho nas
avaliações, para fornecer feedback personalizado e recomendações de melhoria.
[RF009] Gerenciar Certificados de Conclusão
Prioridade: Essencial x Importante Desejável
Descrição: Este requisito permite que os usuários gerenciem e baixem certificados de
conclusão de cursos concluídos com sucesso na plataforma JavaLearner, fornecendo uma
comprovação tangível de suas habilidades e realizações.
4.3 Requisitos não funcionais
[RNF001] Usabilidade da Interface do Usuário
Prioridade: x Essencial Importante Desejável
Descrição: A interface do sistema deve ser intuitiva, proporcionando facilidade de
aprendizado, eficiência, facilidade de recordação, satisfação e minimizando o número de erros
durante a interação com o sistema. Isso inclui a utilização de elementos visuais claros, uma
estrutura de navegação lógica, feedbacks claros e informativos, garantindo uma experiência
de usuário satisfatória.
[RNF002] Segurança dos Dados do Usuário
Prioridade: x Essencial Importante Desejável
Descrição: O sistema deve garantir a segurança e a privacidade dos dados dos usuários,
utilizando criptografia de ponta a ponta e práticas de segurança recomendadas para proteger
informações sensíveis, como senhas e informações de pagamento.
[RNF003] Compatibilidade com Dispositivos Móveis
Prioridade: x Essencial Importante Desejável
Descrição: A plataforma JavaLearner deve ser compatível e responsiva em dispositivos
móveis, como smartphones e tablets, garantindo uma experiência de usuário otimizada em
diferentes tamanhos de tela e sistemas operacionais móveis, como Android e iOS. 100% das
funcionalidades devem estar disponíveis em dispositivos móveis.
[RNF004] Tempo de Resposta do Servidor
Prioridade: Essencial x Importante Desejável
Descrição: O sistema JavaLearner deve ter um tempo de resposta do servidor rápido,
garantindo que as solicitações dos usuários e as páginas sejam carregadas em um tempo de até
1 segundo, proporcionando uma experiência de usuário ágil e responsiva.
[RNF005] Escalabilidade da Infraestrutura
Prioridade: Essencial Importante x Desejável
Descrição: A infraestrutura da plataforma JavaLearner deve ser escalável, capaz de lidar com
até 5.000 usuários simultâneos sem comprometer o desempenho ou a disponibilidade do
sistema.
[RNF006] Disponibilidade do Suporte ao Cliente
Prioridade: Essencial Importante x Desejável
Descrição: A equipe de suporte ao cliente da plataforma JavaLearner deve estar disponível
para ajudar os usuários com dúvidas, problemas técnicos ou solicitações de assistência,
proporcionando um serviço eficiente e responsivo. Com prazo de resposta da solicitação de
até 24 horas.
[RNF007] Resiliência a Falhas de Servidor
Prioridade: x Essencial Importante Desejável
Descrição: O sistema JavaLearner deve ser projetado com mecanismos de recuperação de
falhas para lidar com interrupções temporárias de servidor ou quedas de serviço, minimizando
o impacto nos usuários e garantindo uma experiência de usuário contínua. Com tempo de
recuperação, após uma falha de servidor, sendo de até 5 minutos.
[RNF008] Acessibilidade
Prioridade: x Essencial Importante Desejável
Descrição: A plataforma JavaLearner deve ser acessível para usuários com deficiências,
seguindo as diretrizes de acessibilidade da Web (WCAG) e oferecendo suporte para
tecnologias assistivas, como leitores de tela, controles de voz e navegação por teclado,
garantindo uma experiência inclusiva para todos os usuários. Conformidade com o nível AA
das diretrizes WCAG.
[RNF009] Eficiência no Armazenamento de Dados
Prioridade: Essencial x Importante Desejável
Descrição: O sistema deve ser eficiente no armazenamento e gerenciamento de dados dos
usuários e cursos, utilizando técnicas de compactação e otimização de banco de dados para
garantir um uso eficiente dos recursos de armazenamento e processamento.
4.4 Requisito de usuário/sistema
[RUS001] Acesso com conexão à internet
Prioridade: x Essencial Importante Desejável
Descrição: Os usuários devem acessar a plataforma de aprendizado de Java em qualquer
dispositivo, desde que com conexão à internet.
[RUS002] Navegação Intuitiva e Orientação para Iniciantes
Prioridade: x Essencial Importante Desejável
Descrição: Os usuários, especialmente os iniciantes em programação Java, devem ser capazes
de navegar facilmente pela plataforma e receber orientações claras sobre por onde começar,
quais recursos acessar e como progredir em seu aprendizado.
[RUS003] Feedback Interativo e Personalizado
Prioridade: Essencial x Importante Desejável
Descrição: Os usuários devem receber feedbacks interativos e personalizados sobre seu
progresso no aprendizado de Java, incluindo avaliações de desempenho, sugestões de
melhoria e recomendações de recursos adicionais com base em seu estilo de aprendizado e
áreas de interesse.
[RUS004] Personalização do Conteúdo e Recomendações
Prioridade: Essencial x Importante Desejável
Descrição: A plataforma JavaLearner deve oferecer recursos de personalização de conteúdo e
recomendações adaptadas aos interesses, nível de habilidade e progresso de cada usuário,
proporcionando uma experiência de aprendizado mais relevante e engajadora.
4.5 Requisitos de negócio
[RN001] Modelo de Negócio Freemium
Prioridade: x Essencial Importante Desejável
Descrição: A plataforma JavaLearner deve adotar um modelo de negócio "freemium",
oferecendo funcionalidades básicas gratuitas para todos os usuários, com a opção de upgrade
para uma assinatura paga que desbloqueia recursos avançados e conteúdo premium.
[RN002] Parcerias Estratégicas com Instituições Educacionais
Prioridade: Essencial x Importante Desejável
Descrição: A plataforma JavaLearner deve estabelecer parcerias estratégicas com instituições
educacionais, como escolas, universidades e empresas de treinamento, para promover o uso
da plataforma como recurso complementar em programas de ensino de programação Java.
[RN003] Parte de Receita Baseado em Publicidade
Prioridade: Essencial x Importante Desejável
Descrição: A plataforma JavaLearner explora um modelo de receita baseado em publicidade,
exibindo anúncios relevantes para os usuários do plano "freemium" durante sua interação com
a plataforma, como banners publicitários ou patrocínios de conteúdo.
[RN004] Estratégia de Upselling para Assinatura Premium
Prioridade: x Essencial Importante Desejável
Descrição: A plataforma JavaLearner deve implementar uma estratégia eficaz de upselling
para incentivar os usuários do plano básico a fazer upgrade para o plano premium. Isso inclui
a oferta de benefícios exclusivos e demonstração do valor adicional proporcionado pelo plano
premium, como acesso a módulos premium, recursos avançados de aprendizado e suporte
prioritário.
[RN005] Programa de Recompensas para Usuários Ativos
Prioridade: Essencial Importante x Desejável
Descrição: A plataforma JavaLearner deve implementar um programa de recompensas para
incentivar a participação e o engajamento dos usuários. Isso pode incluir pontos de fidelidade
por conclusão de cursos, que podem ser trocados por descontos em assinaturas premium,
acesso antecipado a novos recursos ou brindes exclusivos.
5. Modelagem de software
5.1 IDEF 0
Figura 2. Representação Gráfica IDEF0
5.2 IDEF 1
Figura 3. Representação Gráfica IDEF1
5.3 Canvas
Figura 4. Canvas
5.4 BPMN
Figura 5. BPMN
6. Análise SWOT
6.1 Strengths (Forças)
6.1.1 Conteúdo de Qualidade
Oferecimento de conteúdo de alta qualidade, incluindo tutoriais, exercícios práticos e
projetos.
6.1.2 Experiência do Usuário
Interface intuitiva e amigável, facilitando a navegação e o aprendizado.
6.1.3 Modelo de Negócio
Implementação de um modelo freemium com estratégia de upselling para o plano
premium, possibilitando atrair usuários e gerar receita.
6.1.4 Engajamento da Comunidade
Estabelecimento de uma comunidade ativa de aprendizado e colaboração, onde os
usuários podem interagir, compartilhar conhecimentos e colaborar em projetos.
6.2 Weaknesses (Fraquezas)
6.2.1 Dependência da Conexão à Internet
O aplicativo requer conexão à internet para acesso ao conteúdo, o que pode limitar a
acessibilidade em áreas com conectividade instável.
6.2.2 Barreira de Entrada para Planos Pagos
A transição de usuários do plano gratuito para o plano premium pode ser difícil devido
à resistência em pagar por conteúdo que está disponível gratuitamente em outros lugares.
6.2.3 Diversidade de Idiomas
Limitação na oferta de conteúdo em vários idiomas pode restringir o alcance global da
plataforma.
6.2.4 Concorrência
Presença de concorrentes estabelecidos no mercado de ensino de programação, o que
pode dificultar a aquisição e retenção de usuários.
6.3 Opportunities (Oportunidades)
6.3.1 Expansão de Conteúdo
Oportunidade de expandir o conteúdo para cobrir outras linguagens de programação
além de Java, aumentando assim o público-alvo da plataforma.
6.3.2 Parcerias Estratégicas
Potencial para estabelecer parcerias estratégicas com instituições educacionais,
empresas de tecnologia e outras organizações para expandir o alcance e a oferta de serviços.
6.3.3 Mercado em Crescimento
A crescente demanda por habilidades de programação oferece oportunidades para o
crescimento do mercado de educação em tecnologia.
6.3.4 Personalização do Conteúdo
Possibilidade de oferecer conteúdo personalizado e recomendações com base nas
necessidades e preferências individuais dos usuários, aumentando assim o engajamento e a
retenção.
6.3.5 Inovação Tecnológica
Integração de novas tecnologias, como realidade virtual ou inteligência artificial, para
aprimorar a experiência de aprendizado e diferenciar a plataforma da concorrência.
6.4 Threats (Ameaças):
6.4.1 Mudanças no Mercado
Rápidas mudanças no setor de tecnologia podem exigir atualizações frequentes de
conteúdo e tecnologia para manter a relevância da plataforma.
6.4.2 Segurança de Dados
Aumento das preocupações com segurança e privacidade de dados podem afetar a
confiança dos usuários na plataforma.
6.4.3 Concorrência Crescente
Surgimento de novos concorrentes e plataformas de ensino de programação pode
intensificar a competição e reduzir a participação de mercado.
6.4.4 Instabilidade Econômica
Flutuações econômicas podem afetar o poder de compra dos consumidores e reduzir a
disposição para investir em educação adicional.
6.4.5 Regulamentações Governamentais
Mudanças nas regulamentações governamentais, como políticas de privacidade de
dados ou leis de educação, podem impactar as operações e os custos da plataforma.
6.5 Figura Análise SWOT
Figura 6. SWOT ANALYSIS