Kursthemen
-
-
Descrição do Projeto
Diagrama Entidade-Relacionamento (ERD)
Modelo e Notação de Processo de Negócio (BPMN)
- Wireframes do front-end
-
-
Sobre CodeLab
Apresentação da disciplina
Conceitos gerais de sistemas complexos
-
Warm-up da disciplina
O que é arquitetura de software
Importância da arquitetura de software
Alguns estilos arquiteturais
-
Arquitetura Orientada a Serviços
Arquitetura de Microsserviços
Padrões de Microsserviços
-
Discussão do problema
Identificação dos requisitos
Proposta de solução / arquitetura
-
Padrões de decomposição
Padrões de APIs externas
Padrões de comunicação entre serviços
Padrões de confiabilidade
Padrões de preocupações transversais
Padrões de arquitetura de banco de dados
Padrões de consistência de dados
-
Breve história da Web
Introdução ao HTML
Introdução ao CSS
Introdução ao TailwindCSS
-
Elementos básicos de JavaScript
Testes em JavaScript
JavaScript na Web
-
Classificando Aplicações Web
VueJS
Vue-Router
Vuex
-
Como o Git funciona?
Como os comandos operam?
Trabalhando com remotes
Workflows e modelos de branching
CI / CD
-
Engenharia de Software
Valores e princípios ágeis
eXtreme Programming - XP
Scrum
Kanban
Modelo Spotify Squads
-
Definição DevOps
Cultura DevOps
Entrega contínua
Runtime and reliability
DevOps e microsserviços
Ferramentas
-
Apresentação Hacknizer
Front-End Hacknizer
Back-End Hacknizer
Dicas para Trabalho Remoto
Parte Prática da Disciplina
-
Servidor Discord
Formação de Times
Front-End Hacknizer
Back-End Hacknizer
Modelo de Dados Hacknizer
-
Processadores CSS
PostCSS
TailwindCSS
Vue CLI
Vue Router
Vuex Store
-
O que é simulação, emulação, virtualização?
Virtualização a nível de SO
Como contêineres funcionam?
Docker API para contêineres
Versionando Ambiente com Dockerfiles
Dockerfiles: Construindo e Rodando
- Combinando Serviços com Docker-Compose
-
Scaffold e Ferramentas Auxiliares
Roteamento
Informações nas Requisições
Respostas Inesperadas e seus Códigos
Rota com lista de Handlers
- Roteadores Específicos
-
-
-
Provinha referente aos conteúdo das aulas 02 e 03.
Responda às seguintes perguntas sobre arquitetura de sistemas.
- Qual a importância da arquitetura de software no processo de desenvolvimento?
- Qual a relação entre arquitetura de software e organização de times ditada pela Lei de Conway?
- Como a arquitetura de microsserviços habilita aos princípios de sistemas complexos na computação?
Responda as perguntas sucintamente e na ordem apresentada!
Duas ou três frases devem bastar para respondê-las :)
- Qual a importância da arquitetura de software no processo de desenvolvimento?
-
Provinha referente ao conteúdo das aulas 04 e 05.
Faça uma modelagem de sistemas referente ao problema descrito a seguir.
Empresas procuram a universidade para captar alunos para seus programas de estágio. Para fazer um recrutamento, as empresas solicitam ajuda de grupos de extensão, que agendam um horário para palestra, reservam sala, e captam público para comparecer ao evento. As empresas oferecem coffee-breaks para os participantes. No final, elas desejam obter uma lista com seus e-mails para futuros contatos.
Divida sua resposta em três partes:
- Discussão do problema
Responda brevemente às seguintes perguntas. É realmente necessário implementar um sistema para o problema descrito acima? Quais as vantagens e desvantagens de criar um sistema para essa situação? - Levantamento (informal) de requisitos
Mapeie os conceitos-chave da situação descrita acima (linguagem ubíqua) e organize o passo a passo necessário para resolver o problema com a ajuda de um sistema (requisitos funcionais). - Proposta de solução / arquitetura
Faça um rascunho dos componentes necessários para resolver o problema utilizando um sistema. Discuta brevemente sobre quando seria adequado implementar essa arquitetura utilizando um monolito ou com microsserviços.
Responda às perguntas sucintamente e na ordem apresentada!
Duas ou três frases devem bastar para respondê-las :)
Encaminhe o desenho da sua arquitetura no formato PNG ou JPEG em anexo. - Discussão do problema
-
Provinha referente ao conteúdo da aula 10.
Responda às seguintes perguntas sobre métodos ágeis.
Explique brevemente cada um dos quatro valores do manifesto ágil (Você precisará de apenas duas ou três linhas para explicar cada um dos valores).
Diferencie as metodologias ágeis XP, Scrum e Kanban, indicando o objetivo de cada uma.
Considerando o contexto de desenvolvimento de sistemas complexos, qual a importância de adoção de estratégias para escalar práticas ágeis, tal como o Spotify Squads?
Responda as perguntas sucintamente e na ordem apresentada!
-
-
-
Lista de exercícios referente à aula 06.
Crie uma página HTML + folha de estilos CSS que implementem o site em anexo (dentro do exercício).
Algumas especificações importantes:- Envie apenas um arquivo index.html e um arquivo style.css
- Utilize tags semânticas sempre que possível (<header>, <footer>, <main>, <em>, etc.)
- Utilize tamanho da fonte padrão 16px, título nível um 32px, título nível dois 24px, e título nível três 19.2px
- Utilize espaçamento de 32px entre o conteúdo e a borda de cada seção do texto
- Utilize espaçamento 16px entre os itens das listas
DICA: Utilize a unidade de medida rem para fazer os tamanhos de fonte relativos ao tamanho de fonte padrão (os valores em px acima são proporcionais ao tamanho da fonte padrão, faça as contas!) -
Lista de exercícios referente à aula 07.
Faça os seguintes exercícios de JavaScript considerando os padrões de código, configurações de ferramentas e os testes automatizados disponíveis no repositório.
O código-fonte desta lista de exercícios pode ser encontrado na pasta js do seguinte repositório do GitLab: https://gitlab.com/jotaf.daniel/js_and_ts
Instruções de uso das ferramentas de desenvolvimento estão disponíveis no README.
Existem três arquivos relevantes para a tarefa:
- js/test/lang/ex01.spec.js
Este arquivo contém testes de unidade pré-disponíveis. Escreva funções com lógica de negócio para que os testes sejam aprovados. A declaração destas funções já existe, mas seus parâmetros e implementações não estão definidas e deverão ser preenchidas por você. - js/test/lang/ex02.spec.js
Este arquivo contém funções com lógica de negócio pré-disponíveis. Escreva testes de unidade relevantes para exercitar a implementação dessas funções. A declaração da suíte de testes já existem, mas seus nomes e implementações não estão definidas e deverão ser preenchidas por você. - js/test/browser/ex03.spec.js
Este arquivo contém a declaração de uma função que gera código HTML e um teste de interface pré-disponíveis. Escreva a implementação dessa função para gerar uma página Web, usando JavaScript, a partir dos dados fornecidos e crie mais quatro testes de interface para verificar se a estrutura HTML: - possui uma lista não ordenada
- possui itens com a classe CSS .name
- possui texto ordenado em ordem alfabética
- possui conteúdo estilizado da seguinte maneira:
- Nome em Negrito - nome@mail.com
Quando escrevemos testes, é possível encontrar bugs relacionados aos exercícios. Sinta-se para fazer correções nas funções dadas! Lembre-se, porém, de indicar qual a alteração feita e escrever um teste que reproduza o cenário que não funcionaria originalmente (mas que com sua modificação vai funcionar).
Para submeter suas respostas, faça um fork do repositório acima, resolva os exercícios e envie um link para o último commit feito no seu fork, cujo formato deve ser análogo a: https://gitlab.com/jotaf.daniel/js_and_ts/-/commit/90479e2bb7fd1bc7cd532a2e21bb8f3e761df50f
Instruções de como fazer o fork no GitLab podem ser encontradas em:
https://docs.gitlab.com/ee/user/project/repository/forking_workflow.html#creating-a-fork - js/test/lang/ex01.spec.js
-
O código apresentado no scaffold não contém testes de unidade, apenas de integração. Sua tarefa consiste de duas partes:
- Refatorar o código das rotas relacionadas à entidade PROJETO para terem seu próprio roteador.
- Estender as funcionalidades da aplicação para dar suporte às rotas abaixo -- lembre-se de adicionar testes relevantes (sejam de integração ou de unidade).
ROTAS:
- DELETE /projects/:slug
Remove o projeto com aquele slug - DELETE /projects/:slug/boards/:name
Remove a board com aquele nome dentro do project com aquele slug - POST /projects/:slug/boards/:name/tasks
Adiciona uma nova task dentro de uma board com aquele nome dentro do project com aquele slug - DELETE /projects/:slug/boards/name/tasks/:id
Remove a task com aquele id dentro da board com aquele nome dentro do project com aquele slug
Para submeter seu trabalho, você deve fazer um fork do repositório https://gitlab.com/jotaf.daniel/intro-express e entregue o link para o último commit feito no seu fork.
Caso precisem de alguma informação adicional do uso do MongoDB, aqui está a documentação oficial do driver que utilizamos https://docs.mongodb.com/drivers/node -- explore à vontade e, se persistirem as dúvidas, não hesite em escrever para os colegas e nós professores aqui no e-disciplinas ou no discord.
-
-
-
-