Módulos

modulos do Curso

O Curso de Pós Graduação Lato Sensu em Computação - especialização em desenvolvimento de software para web - está estruturado em 9 módulos, a saber:

1- Academia Ágil

2- Teste Funcional e Estrutural em Aplicações Web e Móveis

3 - User eXperience [para todos] na Web

4- DevOps

5 – Desenvolvimento de Aplicações Web

6 - Machine Learning e Inteligência Artificial no Desenvolvimento de Sistemas

7 - Desenvolvimento de Software do front ao back-end

8 – Metodologia de Pesquisa - Revisão Sistemática

9- Tópicos em Desenvolvimento de Software

Módulos:

1- Academia Ágil

Prof. Gustavo Henrique Castellano

carga horária: 40 horas 

Ementa:

Capacitar o aluno a atuar como membro de times ágeis, implantar frameworks ágeis em larga escala, vivênciar o dia a dia do Scrum e desenvolver na prática um produto ágil.

 Conteúdo Programático:

  1. Objetivos da Academia ágil, pensamento sistêmico, gerenciamento de projetos versus gerenciamento de produtos, iniciativas ágeis versus iniciativas tradicionais, manifesto ágil (e Modern Agile) e o framework cynefin;
  2. O Framework Scrum: visão geral, o scrum team, eventos, artefatos e transparência (essa parte do curso é preparatória para a certificação PSM I da scrum.org);
  3. Machine Learning e Inteligência artificial – Agilidade facilitada usando seus recursos
  4. O Método Kanban e a gestão de fluxo: Filas, tamanho de lotes, limites de WIP e outros.
  5. O Framework SAFe 6: Uma visão geral da agilidade em escala
  6. A carreira de agilista e prova teórica.

 

2- Teste Funcional e Estrutural em Aplicações Web e Móveis
Prof. Auri

Carga horária: 40 horas

Ementa:

Apresentar conceitos e terminologia relacionados ao Teste Funcional e Estrutural, abordando os principais critérios de teste associados, com ênfase em critérios largamente  adotados na indústria como o Particionamento de Equivalência, Análise de Valor Limite e Análise de Fluxo de Controle. Apresentar ferramentas que automatizam o teste funcional e estrutural com ênfase nas que apoiam o teste de aplicações Web desenvolvidas em Java e aplicações móveis para Plataforma Android. Apresentar a integração de arcabouços de teste unitário ou de ferramentas de captura e reprodução para aplicações web com ferramentas de teste funcional e estrutural. Explorar os denominados Large Language Models (LLM) (ChatGPT, Bing, Bard) no apoio à atividade de teste e na geração de dados de teste.

 Conteúdo Programático:

  1. Conceitos e terminologia sobre Teste Funcional e Teste Estrutural.
  2. Critérios de Teste Funcionais.
  3. Critérios de Teste Estruturais baseados em complexidade, fluxo de controle e de dados.
  4. Automatização de critérios de teste funcionais - Apoio de LLM na automatização do teste funcional.
  5. Automatização de critérios de teste estruturais baseados em fluxo de controle - Apoio de LLM na automatização do teste estrutural.
  6. Integração de arcabouços de teste unitário com ferramentas de apoio ao teste funcional.
  7. Integração de arcabouços de teste unitário com ferramentas de apoio ao teste estrutural.
  8. Integração de ferramentas de captura e reprodução com ferramentas de apoio ao teste funcional e estrutural

 

3 - User eXperience [para todos] na Web

Professor Responsável: Profa. Dra. Vânia Paula de Almeida Neris

Colaborador: Profa. Dra. Kamila R. H. Rodrigues

 Carga Horária – 40 horas

 Ementa:

Propiciar aos alunos um embasamento nos princípios, conceitos e vertentes de User eXperience (UX), explorando suas bases e relações com a Interação Humano-Computador. Também serão detalhados e trabalhados de maneira prática os conceitos de usabilidade e acessibilidade e técnicas para o design e a avaliação de sistemas Web para serem aplicados como vantagem competitiva em mercado. Ferramentas de inteligência artificial generativas podem ser usadas como apoio na produção de artefatos, em uma perspectiva de design colaborativo.

 Conteúdo Programático:

  1. Princípios, conceitos e vertentes de User eXperience (UX) para todos na web.
  2. Técnicas de design e avaliação de usabilidade na web: Personas, guidelines, rapid prototyping – baixa fidelidade, Avaliação Heurística e Testes com Usuário.
  3. Técnicas de design e avaliação de acessibilidade na web: guidelines, rapid prototyping – média fidelidade, Avaliação Simplificada de Acessibilidade, Avaliações semi automáticas

  

4- DevOps

Professor Responsável: Prof. Ms. Bruno Lorenço Lopes

Carga Horária – 40 horas

Ementa:

Apresentar os principais tópicos relacionados à área de DevOps, tratando as boas práticas, processos, metodologias e ferramentas utilizadas para aumentar a agilidade e qualidade do processo de desenvolvimento e entrega de software. Em especial, o módulo terá foco em Machine Learning Model Operationalization Management (MLOps), uma área moderna que faz uso de conceitos de DevOps e Engenharia de Dados para promover um processo de desenvolvimento para projetar, construir e gerenciar software que faz uso de machine learning de modo reprodutível e testável. O módulo abordará os principais conceitos referentes à MLOps, suas semelhanças e diferenças em relação ao DevOps, e capacitará os alunos a aplicar na prática o MLOps usando ferramentas modernas.

 Conteúdo Programático:

  1. História do DevOps.
  2. Conceitos do DevOps, práticas e metodologias ágeis.
  3. Continuous Integration, Continuous Delivery e Continuous Deployment com Gitlab e GitHub.
  4. Conceitos de MLOps e boas práticas.
  5. Comparação de MLOps com DevOps.
  6. Criação de pipelines de MLOps com MLFlow.

 

5 – Desenvolvimento de Aplicações Web

Professor Responsável: Prof. Ms. Alex Fernando Orlando

Colaborador: Prof. Ms. Ivan João Foschini

 Carga Horária – 40 horas

Ementa:

Apresentar aos alunos ferramenta para a realização do mapeamento objeto-relacional visando a persistência em banco de dados relacionais. Apresentar conceitos de organizações e aplicações web, arquiteturas de sistemas de software, computação em nuvem. Apresentar web services e arquiteturas SOAP / REST e JSON e implementar uma aplicação web. Discussão aberta com os alunos sobre ferramentas utilizadas - aplicações para aumentar a produtividade durante o processo de desenvolvimento: IDEs, clientes de bancos de dados, ferramentas que utilizam aprendizado de máquina e outras que sejam consideradas relevantes.

 Conteúdo Programático:

  1. Mapeamento Objeto-Relacional - Utilização efetiva da Java Persistence API (JPA) como forma de persistência em banco de dados relacionais, abordando as principais formas de mapeamento de classes e relacionamentos para tabelas.
  2. Conceitos gerais sobre Organizações e Aplicações Web – Lei de Conway, Escolha Excessiva e a vida de um desenvolvedor atual.
  3. Redes e Computação Distribuída – Definições, arquiteturas, falácias, Problemas dos Dois Generais, Teorema CAP, Consistência Eventual, Idempotência, Padrões de Comunicação (transmissão, granularidade, protocolos, formatos, mensagens e APIs).
  4. Memórias e Dados Distribuídos – Hierarquias de memória, caches, dados distribuídos, sharding, multitenancy, replicação, tipos de bancos de dados.
  5. Computação na Nuvem – Definições, provedores, categorias e modelos de serviço, visão geral sobre AWS.
  6. Cases de Aplicações Web.
  7. Web Services – conceitos e contextualização de endpoints e APIs.
  8. Arquiteturas SOAP e REST - Descrição e histórico das arquiteturas. Métodos e códigos HTTP - principais métodos e códigos HTTP utilizados pela arquitetura REST.
  9. JSON - Exemplos desse padrão de formatação de dados para troca de informações entre aplicações.
  10. Spring Boot - Principais características do framework .
  11. Desenvolvimento de um projeto simples que implemente Java e JPA. Desenvolvimento do projeto - implementação de uma API REST completa, utilizando Spring Boot, com acesso a um banco de dados relacional. Exemplos de relacionamento um-para-um, um-para-muitos, muitos-para-muitos (com classe de associação) e heranças. Segurança da aplicação - apenas usuários com papéis específicos podem acessar os endpoints da aplicação de exemplo. Uso de JSON Web Tokens (JWT). Testes de integração dos serviços e cobertura de testes - Exemplos de testes de integração para alguns endpoints da API desenvolvida. Geração automática de um relatório de cobertura de testes, para que seja possível saber quais partes do código estão efetivamente cobertas por testes. Documentação dos serviços - Utilização de uma ferramenta para a documentação dos endpoints da aplicação desenvolvida. Deploy da aplicação na nuvem - Opções disponíveis para o deploy da API desenvolvida.

 

6 - Machine Learning e Inteligência Artificial no Desenvolvimento de Sistemas

Professores Responsáveis:

Prof. Dr. Alan Demétrius Baria Valejo

Prof. Esp. Fabio Velloso da Silva

Carga horária - 40 horas

 Ementa:

Capacitar o aluno no entendimento dos principais tipos de aprendizado de máquina e quais deles são mais adequados para serem empregados em um dado problema/contexto. Apresentar a evolução tecnologia e os impactos nas arquiteturas dos sistemas de software. Apresentar ferramentas e casos de sucesso que empregam Machine Learning e Inteligência Artificial no processo de desenvolvimento de sistemas.

Conteúdo Programático:

  1. Introdução ao aprendizado de máquina: motivação, definições, conceitos básicos e histórico
  2. Noções básicas de análise exploratória de dados e pré-processamento (caracterização e preparação dos dados)
  3. Tipos de aprendizado. Aprendizado de máquina Supervisionado e Aprendizado de máquina Não-supervisionado.
  4. Avaliação de algoritmos de aprendizado de máquina e metodologia experimental.
  5. Arquitetura de Sistemas de Software – Definição e suas características. Modelos de arquitetura tradicionais e evolução da arquitetura de software
  6. Engenharia de Software - paradigmas, design, camadas e padrões e o impacto nos modelos e metodologias de desenvolvimento
  7. Arquitetura e agilidade. Arquitetura modernas. Evolução de arquiteturas de integração Cloud Computing, Virtualização e Containers
  8. Impactos no Machine Learning e IA na arquitetura e processo de desenvolvimento de software.
  9. Abordagens e exemplos do uso de Machine Learning no processo de desenvolvimento de software

 

7 - Desenvolvimento de Software do front ao back-end

Professores Responsáveis: Prof. Ms. Danilo Amaral de Oliveira

Colaborador: Prof. Esp. Samuel Lopes Grigolato

CARGA HORÁRIA - 80 horas

Ementa:

Capacitar o aluno a compreender tecnologias que podem ser utilizadas como parte das soluções web a serem propostas no seu dia a dia de trabalho. A disciplina tem como propósito apresentar a linguagem JavaScript a ser utilizada com as tecnologias Node.Js e React e explorar a linguagem TypeScript juntamente com o framework Angular. React e Angular são as opções que podem ser adotadas para criação de interfaces para as aplicações e com a adoção do runtime Node.js, pode usar a linguagem JavaScript como ferramenta para desenvolvimento de APIs de dados. Será apresentado o framework Fastify para construção de APIs RESTful, o uso de SQL Query Builder Knex para trabalhar com dados, conceitos base do Node.js e, autenticação stateless. Será construída integração com uma API de terceiro relacionada com IA, a fim de demonstrar como incorporar capacidades de ML nas suas próprias aplicações.

 Conteúdo Programático:

 1 Desenvolvimento de APIs com Node.js. Introdução ao Node.js: Apresentação do JavaScript como alternativa de linguagem para desenvolvimento de APIs de dados. Também será apresentado o TS (TypeScript) que é um superconjunto sintático estrito de JavaScript que permite o desenvolvimento de aplicações web mais resilientes e robustas. Análise da arquitetura baseada em eventos do Node.js, com foco nos benefícios de performance e concorrência trazidos por ela. Desenvolvendo APIs de dados com Fastify: Aprofundamento no framework Fastify para o desenvolvimento de APIs de dados, buscando cobrir casos excepcionais como recebimento de arquivos (upload) além do CRUD básico. Trabalhando com dados usando Knex: adicionar persistência de dados na nossa aplicação através do framework de construção de SQL Knex. Gerenciar a evolução da base de dados através da ferramenta nativa de migrações do Knex. Desenvolvimento de mecanismo de autenticação totalmente stateless usando JWT. Adicionando uma camada de testes automatizados com Jest. Integrando uma API de predição de texto: usufruindo de serviços de IA na sua aplicação.

2. Desenvolvimento de Front-End. HTML5/CSS: O HTML e CSS é a base para qualquer página web. Neste tópico entraremos no mundo das aplicações web modernas e ao final do módulo vamos gerar uma aplicação usando a API de predição de texto desenvolvida na parte do backend. Conteúdo preparatório para os outros temas deste tópico. JavaScript: explorar a criação script com JavaScript, novidades do ECMASCript, conceito de variáveis, escopo, operadores, estrutura de controle, funções, closure, patterns para JavaScript, promise, conceitos de programação funcional e melhores práticas.  React: estrutura de um projeto React, componentes, estados, roteamento e integração com Back-End. Também será apresentado ferramentas de testes aplicadas a componentes web para que o aluno possa aprender como desenvolver aplicações com qualidade.

  

8 – Metodologia de Pesquisa – Revisão Sistemática 

Professor Responsável: Profa. Dra. Elis Cristina Montoro Hernandes 

 Carga horária - 40 horas 

 Ementa:

Capacitar o aluno no levantamento bibliográfico científico utilizando Revisão Sistemática com suporte computacional. Capacitar o aluno na utilização de  ferramentas de geração de texto assistidas por máquina como parte do processo de pesquisa acadêmica, complementando o levantamento bibliográfico realizado na revisão sistemática.

 Conteúdo Programático: 

  1. Tipos de trabalhos acadêmicos. 
  2. A importância do levantamento bibliográfico em trabalhos acadêmicos e na vida profissional
  3. O uso de inteligência artificial em trabalhos acadêmicos
  4. O que é Revisão Sistemática (RS) e Mapeamento Sistemático (MS). 
  5. Os processos de Revisão Sistemática da Literatura e Mapeamento Sistemático
  6. Buca por conhecimento científico em repositórios 
  7. A ferramenta StArt
  8. A escrita e a apresentação do Trabalho de Conclusão de curso (TCC).
  9. Uso de ferramentas para geração de textos com machine learning.

 

9 – Tópicos em Desenvolvimento de Software

Professores Responsáveis: Profa. Dra. Sandra Abib

Prof. Dr. Valter Vieira de Camargo, Prof. Dr. Andre Takeshi Endo, Prof. Dr. Daniel Lucredio

Colaborador : Prof. Ms. Reinaldo Luckman de Oliveira e Castro

 Carga Horária – 40 horas

 Ementa:
Apresentar temas relacionados ao processo de desenvolvimento de software que possa contribuir para a formação de um programador experiente e atualizado com o mercado de trabalho.

 Conteúdo Programático:

  1. Padrões de Projeto - sinergia/relação entre os padrões na construção de um sistema de software.
  2. Programação Funcional em Linguagens de Programação Modernas.
  3. Aspectos de Implementação de Sistemas de Software - Arquitetura, modularização dos componentes e qualidade de código do software.
  4. Construção de GUI responsiva com CSS e frameworks.