# data[].attributes.headline
Questão 1. Do ponto de vista do desenvolvimento de software educativo. Pesquise,

# data[].attributes.subject
Questão 1. Do ponto de vista do desenvolvimento de software educativo. Pesquise,

# data[].attributes.body
O Ciclo de Desenvolvimento de Software é um modelo composto por sete fases:

Análise de Requisitos. Estudo de Viabilidade. Design. Codificação. Teste. Instalação. Deploy. Manutenção.

Fase 1: Coleta e Análise de Requisitos

Esta primeira fase do Ciclo de Vida de Desenvolvimento de Software é uma visão geral e das diretrizes do projeto/software.

Todas as partes interessadas – incluindo clientes, vendedores, especialistas do setor, desenvolvedores de software, analistas de negócios e gerentes de projeto -, devem colaborar para juntar as informações necessárias sobre o que será construído. Lembre-se de ser preciso ao descrever os requisitos; quanto mais detalhado for, melhor.

Fase 2: Estudo de viabilidade de produto

Um estudo de viabilidade é uma imagem clara do projeto. Esta etapa do SDLC é uma das mais importantes e às vezes pode ser executada simultaneamente à primeira etapa. É importante que todas as partes interessadas saibam exatamente todo o contexto econômico, técnico, jurídico e de programação deste projeto, porque isso pode alterar o escopo ou demonstrar se o software vai funcionar ou não.

É por isso que a análise como um estudo de viabilidade desempenha um papel relevante no Software Development LifeCycle. Durante o estudo de viabilidade, considere incluir informações como:

Descrição do produto ou serviço

Demonstrativos contábeis

Detalhes de operação e gerenciamento

Pesquisa e política de marketing

Dados financeiros e obrigações fiscais

Requerimentos legais

Plano de implementação do projeto

Tempo e orçamento disponíveis

Fase 3: Design de Software

É hora de projetar! Nesta etapa do SDLC, a equipe produzirá a DSS (Design Document Specification – Especificações de Documentação do Projeto) com base nos requisitos do usuário e na análise detalhada feita na fase anterior.

O documento DDS define a arquitetura geral do sistema e descreve todas as informações para os desenvolvedores começarem a trabalhar no produto, como recursos, input, output, bancos de dados, formulários, esquemas de códigos, especificações de processamento e tempo esperado para entregar o produto.

Os documentos de design mais comuns usados ​​nesta fase são Design de alto nível (HLD – High-Level Design) e Design de baixo nível (LLD – Low-Level Design).

O High-Level Design (HLD) é uma breve descrição da funcionalidade de cada módulo e de como funcionará a relação de interface e dependências entre os módulos. Também inclui as tabelas de banco de dados, identificadas junto com seus elementos-chave, e os diagramas de arquitetura, junto com detalhes técnicos.

O Low-Level Design (LLD) é um documento que descreve a lógica funcional dos módulos, tabelas de banco de dados (tipo e tamanho), detalhes da interface, tipos de problemas de dependência, lista de mensagens de erro e entradas e saídas para cada módulo.

Fase 4: Desenvolvimento de Software

A próxima fase do SDLC é o Desenvolvimento, que também é a mais longa. Seguindo o DDS e as diretrizes de desenvolvimento, os desenvolvedores vão traduzí-los em código-fonte e linguagem de programação. Todos os componentes do software são implementados nesta fase.

Para serem mais eficientes, as tarefas são divididas em unidades ou módulos e atribuídas aos vários programadores, em equipes distribuídas, de acordo com as suas competências.

Esta fase será um documento muito útil para todo o processo, incluindo guias de solução de problemas, FAQs ou apenas comentários no código-fonte para entender porque um determinado procedimento foi utilizado.

Nela, desenvolvedores também precisam usar aplicativos de controle de acesso ou gerenciamento de código-fonte ou ferramentas de programação como compilador, interpretadores e depurador para gerar e implementar o código. Essas ferramentas ajudam os profissionais a rastrear alterações no código e garantir a compatibilidade entre diferentes projetos de equipe e garantir que as metas de destino sejam atendidas.

Além das ferramentas, a qualidade da codificação depende da precisão da comunicação entre todas as partes interessadas, como QA (garantia de qualidade), testadores, DevOps, gerentes de produto e projeto.

Leia: What are the key Development Team Roles, Responsibilities, and Concerns within the Software Development Lifecycle (SDLC)

Fase 5: Testagem de Software

A próxima fase do SDLC é testar o produto desenvolvido. Pesquisas têm mostrado que o processo de teste frequentemente é responsável por 40% do custo de desenvolvimento de software. Com a crescente necessidade de alta qualidade e eficiência, é cada vez mais importante que as organizações aprimorem seus testes de software.

A principal função do teste de software é detectar bugs para descobri-los e detectá-los. O escopo do teste de software inclui a execução desse código em vários ambientes e também o exame dos aspectos do código.

Testers do controle de qualidade (QA) desempenham a função mais importante nesta fase, comparando as funções de software rodando e os requisitos estabelecidos nas etapas anteriores. Além disso, eles são responsáveis ​​por encontrar e relatar bugs e erros aos desenvolvedores e à equipe de revisão do produto. Também podem sugerir e identificar oportunidades de melhoria em segurança ou automação para que o projeto obtenha uma uma maior satisfação do usuário e uma melhor taxa de uso.

As métricas de software ajudam a:

1. Evitar armadilhas que levam a custos excessivos

2. Identificar onde o problema surgiu

3. Esclarecer metas, ao responder a perguntas como:

Qual é a estimativa de cada atividade do processo?

Qual é a qualidade do código que foi desenvolvido?

Como pode o código insuficiente ser melhorado?

Fonte: https://www.ijser.org/researchpaper/Importance-of-Testing-in-Software-Development-Life-Cycle.pdf

Fase 6: Lançamento/implantação

A fase de lançamento e implantação concentra-se em observar como o mercado reage ao seu produto. É hora de lançar a versão final do software após os testes!

Durante a preparação e os procedimentos para a fase de lançamento, a equipe estabelece um procedimento operacional para organizar como o software deve funcionar no ambiente de TI e fornecer um plano de mitigação para apoiar o usuário final no reparo do problema.

Depois disso, é hora de programar cada parte do sistema. Esta fase inclui enviar o programa e programar cada site regional e cada sistema de computador.

Depois que sua equipe implantar o aplicativo e entregá-lo aos usuários, fique atento ao feedback e verifique se há problemas de implantação e o que precisam ser melhorados, de acordo com a expectativa do cliente.

Durante a fase de implantação, não se esqueça de identificar as principais equipes e funções envolvidas, como migrações e atualizações de software e configuração de permissões e funções de acesso, e tente limitar o impacto de quaisquer problemas de configuração inicial usando projetos-piloto.

Fase 7: Manutenção

A fase de manutenção envolve correção de bugs, atualização do aplicativo para as versões mais recentes do software e aprimoramento, adicionando algumas novas especificações mencionadas na primeira fase. Nesse ponto, o ciclo de desenvolvimento está encerrado.

# data[].attributes.headline
Questão 2a-Modelo em Cascata                     Questão 2b-Modelo Iterativo e Incremental

# data[].attributes.subject
Questão 2a-Modelo em Cascata                     Questão 2b-Modelo Iterativo e Incremental

# data[].attributes.body
Questão 2a- Modelo em Cascata:

Vantagens:

Simplicidade: O modelo em cascata é fácil de entender e usar. Ele segue uma abordagem linear e sequencial, o que o torna simples de planejar e gerenciar.

Foco na Documentação: Como cada fase é concluída antes de passar para a próxima, há uma ênfase natural na documentação. Isso pode ser útil para rastrear o progresso e entender o sistema como um todo.

Controle de Custos: Como cada fase é concluída antes de passar para a próxima, é possível estabelecer estimativas de custos mais precisas desde o início do projeto.

Modelo em Cascata:

Desvantagens:

Inflexibilidade: O modelo em cascata é menos adaptável a mudanças nos requisitos ao longo do tempo. Uma vez que uma fase está concluída, pode ser difícil voltar atrás e fazer alterações significativas sem afetar todo o processo.

Avaliação Tardia: Os clientes podem não ver o produto final até que esteja quase pronto. Isso significa que feedbacks importantes só são recebidos nas fases finais do projeto, o que pode resultar em alterações caras e demoradas.

Risco de Entrega Tardia: Como a entrega do produto final ocorre somente no final do ciclo de desenvolvimento, há um risco significativo de atrasos, especialmente se problemas forem descobertos nas fases finais.

Em resumo, enquanto o modelo em cascata oferece simplicidade e controle, o modelo iterativo e incremental proporciona maior flexibilidade e adaptação a mudanças nos requisitos. A escolha entre os dois modelos dependerá das necessidades específicas do projeto, do grau de incerteza dos requisitos e da tolerância a riscos do cliente e da equipe de desenvolvimento. Em muitos casos, uma abordagem híbrida que combina elementos de ambos os modelos pode ser a mais adequada.

Questão 2b- Modelo Iterativo e Incremental

Vantagens:

Adaptabilidade: O modelo iterativo e incremental é altamente adaptável a mudanças nos requisitos. Ele permite que partes do sistema sejam desenvolvidas, testadas e refinadas em ciclos curtos e sucessivos.

Feedback Contínuo: Como o software é entregue em incrementos, os clientes podem fornecer feedbacks ao longo do processo. Isso permite ajustes contínuos com base nas necessidades e nas preferências do cliente.

Redução de Riscos: Ao dividir o projeto em incrementos menores e iterar sobre eles, os riscos são reduzidos. Problemas são identificados mais cedo e podem ser abordados antes que se tornem grandes obstáculos.

Desvantagens:

Complexidade de Gerenciamento: O modelo iterativo e incremental pode ser mais complexo de gerenciar, especialmente em projetos grandes. Requer uma gestão eficaz das iterações, dos recursos e das prioridades.

Possível Escopo Maldefinido: Se os requisitos iniciais não estiverem bem definidos, pode ser difícil determinar quando o produto está completo. Isso pode levar a iterações intermináveis e atrasos no cronograma.

Custos Mais Difíceis de Estimar:

Devido à natureza iterativa do modelo, pode ser desafiador fazer estimativas precisas de custos e prazos desde o início do projeto.

Em resumo, enquanto o modelo em cascata oferece simplicidade e controle, o modelo iterativo e incremental proporciona maior flexibilidade e adaptação a mudanças nos requisitos. A escolha entre os dois modelos dependerá das necessidades específicas do projeto, do grau de incerteza dos requisitos e da tolerância a riscos do cliente e da equipe de desenvolvimento. Em muitos casos, uma abordagem híbrida que combina elementos de ambos os modelos pode ser a mais adequada.

# data[].attributes.headline
Questão 3a - Padrões de Projeto Criacionais Questão 3b. Padrões de Projeto EstruturaisQuestão 3c. Padrões de Projeto Comportamentais

# data[].attributes.subject
Questão 3a - Padrões de Projeto Criacionais Questão 3b. Padrões de Projeto EstruturaisQuestão 3c. Padrões de Projeto Comportamentais

# data[].attributes.body
Questão 3a - Padrões de Projeto Criacionais:

Os padrões de projeto criacionais lidam com a maneira como objetos são criados em uma aplicação. Eles procuram abstrair o processo de criação de objetos, tornando o sistema mais flexível e desacoplado.

Exemplos de padrões criacionais incluem:

Método de Fábrica:

Este padrão define uma interface para criar um objeto, mas permite que as subclasses alterem o tipo de objetos que serão criados. Por exemplo, uma classe CarFactory pode ter um método createCar() que retorna diferentes tipos de carros, dependendo da implementação específica.

Fábrica Abstrata:

Este padrão fornece uma interface para criar famílias de objetos relacionados ou dependentes sem especificar suas classes concretas. Por exemplo, uma AbstractFactory pode criar diferentes tipos de componentes de interface do usuário, como botões e caixas de texto, para diferentes sistemas operacionais.

Questão 3b- b. Padrões de Projeto Estruturais:

Os padrões de projeto estruturais lidam com a composição de classes e objetos para formar estruturas maiores e mais complexas.

Exemplos de padrões estruturais incluem:

Adaptador:

Este padrão permite que objetos com interfaces incompatíveis trabalhem juntos. Ele envolve a criação de uma classe intermediária que converte a interface de um objeto em outra interface que o cliente espera. Por exemplo, um adaptador pode permitir que uma classe escrita para usar uma API antiga interaja com uma nova API.

Decorador:

Este padrão permite adicionar novas funcionalidades a um objeto existente dinamicamente, sem alterar sua estrutura básica. Por exemplo, um decorador pode adicionar funcionalidades adicionais a um objeto gráfico, como bordas coloridas ou sombras, sem modificar a classe do objeto gráfico original.

Questão 3c - c. Padrões de Projeto Comportamentais:

Os padrões de projeto comportamentais lidam com a comunicação entre objetos e como eles colaboram para realizar uma tarefa.

Exemplos de padrões comportamentais incluem:

Observador:

Este padrão define uma dependência um-para-muitos entre objetos, de modo que quando um objeto muda de estado, todos os seus dependentes são notificados e atualizados automaticamente. Por exemplo, em um sistema de ações na bolsa de valores, os investidores podem observar o preço de uma determinada ação e serem notificados quando o preço muda.

Estratégia:

Este padrão define uma família de algoritmos, encapsula cada um deles e os torna intercambiáveis. Isso permite que o algoritmo varie independentemente dos clientes que o utilizam. Por exemplo, em um sistema de processamento de pagamentos, diferentes estratégias podem ser usadas para calcular taxas de imposto com base na localização do cliente.

Esses são apenas alguns exemplos de padrões de projeto em cada categoria. Cada padrão tem suas próprias características e aplicações específicas, e a escolha do padrão adequado depende do problema que está sendo resolvido e das necessidades do projeto.

# data[].attributes.headline
Questão 4-
Classificação de Softwares Educativos

# data[].attributes.subject
Questão 4-
Classificação de Softwares Educativos

# data[].attributes.body
Questão 4- Classificação de Softwares Educativos

Por Plataforma:

Desktop: Softwares educativos que são executados em computadores desktop, como programas instalados localmente.

Web: Aplicativos baseados em navegadores que são acessados pela internet.

Dispositivos Móveis: Aplicativos educativos desenvolvidos para smartphones e tablets.

Por Tipo de Conteúdo:

Tutorial: Softwares que oferecem instruções passo a passo sobre um determinado assunto, geralmente com demonstrações e exemplos interativos.

Simuladores: Aplicações que permitem aos usuários experimentar e explorar fenômenos ou processos de forma virtual, como simulações de física ou química.

Jogos Educacionais: Jogos projetados com o objetivo principal de ensinar ou reforçar conceitos educacionais.

Plataformas de Aprendizagem: Sistemas abrangentes que oferecem uma variedade de recursos educacionais, como vídeos, quizzes, atividades interativas e acompanhamento de progresso.

Por Área de Conhecimento:

>Matemática: Softwares focados no ensino e na prática de conceitos matemáticos, desde aritmética básica até cálculo avançado.

>Ciências: Aplicações que exploram temas científicos, como biologia, física, química e geologia, por meio de experimentos virtuais, simulações e informações interativas.

>Línguas e Literatura: Softwares que ajudam no ensino de idiomas estrangeiros, gramática, ortografia, literatura e habilidades de escrita.

>História e Ciências Sociais: Softwares que abordam eventos históricos, geografia, cultura e sociedade.

Atuação no Processo de Aprendizagem:

Os softwares educativos desempenham um papel importante no processo de aprendizagem, oferecendo uma variedade de benefícios, tais como:

>Engajamento Interativo: Os softwares educativos frequentemente envolvem os alunos em atividades interativas, como jogos, simulações e questionários, que podem aumentar o engajamento e a motivação dos alunos.

>Personalização da Aprendizagem: Muitos softwares educativos oferecem recursos adaptativos que personalizam o conteúdo de acordo com as necessidades e habilidades individuais do aluno, permitindo um aprendizado mais eficaz e individualizado.

>Acessibilidade: Os softwares educativos podem ser acessados a qualquer momento e em qualquer lugar, o que oferece maior flexibilidade aos alunos para aprenderem no próprio ritmo e de acordo com sua própria conveniência.

>Feedback Imediato: Muitos softwares educativos fornecem feedback imediato sobre o desempenho do aluno, permitindo que eles identifiquem rapidamente áreas de melhoria e façam ajustes conforme necessário.

>Facilidade de Acesso a Recursos: Os softwares educativos podem fornecer acesso a uma ampla gama de recursos educacionais, como vídeos, textos, imagens e atividades interativas, que enriquecem a experiência de aprendizagem e oferecem diferentes formas de apresentação do conteúdo.

Em resumo, os softwares educativos desempenham um papel significativo no processo de aprendizagem, oferecendo uma variedade de recursos e benefícios que complementam e enriquecem a experiência educacional dos alunos. Eles podem ser uma ferramenta valiosa para educadores e alunos em uma variedade de contextos educacionais.

# data[].attributes.headline
Questão 5-  Tipos de softwares educativos

# data[].attributes.subject
Questão 5-  Tipos de softwares educativos

# data[].attributes.body
Questão 5- Tipos de softwares educativos

a. Programas de Reforço ou Exercício:

Exemplo: Khan Academy

A Khan Academy é uma plataforma de aprendizado online que oferece uma ampla gama de cursos e exercícios interativos em matemática, ciências, economia, artes e humanidades. Seu objetivo é fornecer uma educação gratuita e de alta qualidade para qualquer pessoa, em qualquer lugar. A Khan Academy oferece exercícios práticos que ajudam os alunos a praticar e reforçar conceitos específicos, com feedback imediato para melhorar o aprendizado. Além disso, oferece vídeos explicativos para ajudar os alunos a entenderem os conceitos de forma clara e concisa.

Site: Khan Academy

b. Jogos Computacionais:

Exemplo: Prodigy Game

O Prodigy Game é um jogo educativo baseado em RPG (Role-Playing Game) que ajuda os alunos a praticar matemática de forma divertida e envolvente. Os alunos criam personagens e embarcam em uma jornada através de um mundo virtual, enfrentando desafios matemáticos ao longo do caminho. O jogo adapta os problemas de acordo com o desempenho do aluno, oferecendo uma experiência personalizada de aprendizado. Além disso, os professores podem acompanhar o progresso dos alunos e identificar áreas de melhoria.

Site: Prodigy Game

c. Software de Apresentação:

Exemplo: Prezi

O Prezi é uma ferramenta de apresentação online que permite criar apresentações dinâmicas e visualmente atraentes. Ele oferece uma abordagem não linear à apresentação de informações, permitindo que os usuários naveguem livremente por diferentes tópicos e ideias. O Prezi oferece uma variedade de modelos e recursos de design para criar apresentações únicas e impactantes, incluindo animações, zooms dinâmicos e colaboração em tempo real. Ele é amplamente utilizado em ambientes educacionais para criar apresentações mais envolventes e interativas.

Site: Prezi