Plano de Ensino

O plano de Ensino está disponibilizado aqui

Organização da Disciplina

Projetos/Grupos

O tema do semestre é Visualização de dados. Para isso, precisamos de DADOS!! As equipes, ou squads, são compostas por até 8 integrantes, serão responsável pela Extração de Dados (Webscraping), pelo armazenamentos dos dados (bancos de dados) e pela apresentação/processamento dos dados.

Quais são as fontes dos dados? Vocês escolhem.. pode ser requisição de uma API, pode ser via webscraping, pode ser fazendo a copia de um banco de dados. Alguns contextos interessantes: Brasil.io, o proprio Siga da unb, dados de saúde, etc.

Cada grupo deve definir o seu próprio escopo.

Apresentações

  • Release 1 (major) - 10 de dezembro de 2022
  • Release 2 (major) - 26 de janeiro de 2022

Release I

  • A Release 1 A ordem de apresentacao é sorteada, mas os grupos sao podem trocar entre si a ordem.

  • Peso da R1 - 40% da nota de projeto

  • Tempo de apresentação: 15 minutos

  • Artefatos avaliados: (I) Documento de Visão do Projeto, (II) Planejamento/Comunicação Interna e Externa (agenda de trabalho + ferramentas), Documento de Arquitetura do Projeto, (III) Especificação das historias de usuários (critérios de aceitação), (IV) Configuração do repositório de acordo com os padrões de comunidade de software livre (Github), (V) Wiki atualizada (VI) Protótipo de alta fidelidade

  • Praticas avaliadas: pareamento, produtividade, participação nos rituais, desempenho

  • Detalhamento da avaliação: Código-Fonte/entregas (30%), (II) Coerência entre a documentação e implementação (10%), (III) Documentação: Doc. visão (15%), doc arq (15%), Requisitos Especificados (10%), Protótipo (10%), (IV) critério extra(10%)

Release II

  • A Release 2 A ordem de apresentacao é sorteada, mas os grupos sao podem trocar entre si a ordem.

  • Peso da R2 - 60% da nota de projeto

  • Tempo de apresentacao: 15 minutos

  • Detalhe da avaliacao: (I) Codigo-fonte entregue (60%): features, implantacao, qualidade, cobertura de testes, testes de aceitacao, (II) documentação/evidências da execução metodologia de desenvolvimento contínua (30%), (III) Tracking (10%)

Critérios de Avaliação

Os critérios de avaliação estão detalhados no plano e ensino aqui.

As notas são dadas em cada critério a partir do nível de maturidade individual na disciplina, de acordo com as três categorias abaixo:

  • Três categorias de avaliação: "iniciante", "saudável", "maduro" e três aspectos de avaliação: "Código", "Equipe" e "Projeto"

Etapa Iniciante

  • peso: 20%
  • Código
    • repositório configurado
    • licença de software
    • ambiente de desenvolvimento configurado
  • Equipe
    • atribuições de papéis
    • standup e mobs iniciais rolando
    • ambiente de trabalho informativo criado (Github)
    • definida política de horas extras
    • planilha para controle de horas trabalhadas
    • execução dos rituais do scrum
  • Projeto
    • meio de comunicação definido
    • Documentos do projeto revisados

Etapa Saudável

  • peso: 30%
  • Código
    • commits frequentes
    • início testes
    • início pipeline de CI/CD (testes + entregável) -Equipe
    • bom rodízio de pares
    • consistência em mobs
    • Planejamento maduro
    • Velocity estável
    • Métricas de produtividade equilibada
    • Comunicação efetiva
  • Projeto
    • boa comunicação
    • ter feito a primeira entrega
    • Ambiente de homologação

Etapa Maduro

  • peso: 50%
  • Código
    • tracking
    • testes automatizados
    • cobertura de testes
    • pipeline de CI/CD (testes + entregável)
    • artefatos para continuidade do projeto
  • Equipe
    • auto organização ("coach invisível")
  • Projeto
    • demais entregas (funcionalidades implementadas + manutenibilidade - como outra equipe pode continuar o projeto)

Obs.: Por manutenibilidade entende-se documentação sobre como ter um ambiente de desenvolvimento completo com os testes passando, ponteiros para pontos interessantes no código para novos contribuidores, e funcionalidades mais simples para estes implementarem enquanto conhecem o sistema.

Aulas

DataDia da SemanaAula
Terça-feiraSprint 0 - Aula 01 Planejamento sprint 0 Apresentação da disciplina Definição da dinâmica do curso Iniciar os treinamentos (git, ágil, documentos)
Quinta-feiraSprint 0 - Aula 2 Ciclo de projeto Apresentação dos Projetos Aula: Revisão de Git https://education.github.com/git-cheat-sheet-education.pdf
Terça-feiraSprint 01 - Aula 01 Planejamento Sprint 1 Definição dos projetos Iniciar a definição de escopo do projeto (Roadmap, documento de visão, EAP, TAP) - Estudar documento de arquitetura
Quinta-feiraSprint 01 - Aula 02 Modelos de processo Métodos ágeis Planejamento ágil Material assincrono: https://youtu.be/OzTGRO7UGyY Material assincrono: https://youtu.be/WiRwKm9M5w8
Terça-feiraSprint 02 - Aula 01 Planejamento Sprint 02 Scrum/Kanban/spotify Papéis, artefatos, rituais Documentos: planning sprint/review sprint/issues Revisar escopo projeto, iniciar documento de Arquitetura, escolha tecnológica. Treinamento papéis, Aula assincrona: https://youtu.be/NoGhC1LaaAE https://youtu.be/Q3MxVo9zdvU
Quinta-feiraSprint 02 - Aula 02 Requisitos ágeis (Épicos, features, História de usuário, task, bugs) Artefatos: EAP, Documento de Visão, Backlog de produto, Backlog da sprint, documento de requisitos funcionais/não funcionais Treinamento: uso do zenhub Slide da aula: https://docs.google.com/presentation/d/1P2-Odi4s-IZ2-OGN9Xqcb5ngqczZDBszqi4w8swawhE/edit?usp=sharing Material complementar (Design com olhar disruptivo): https://youtu.be/vlbB0xYRulQ
Terça-feiraSprint 03 aula 01 Show me the code Grupos apresentarem documentação
Quinta-feiraSprint 03 - Aula 02 Arquitetura de software Components, Camadas, diagramas UMLs Documentos: documento de arquitetura, pipeline Material assíncrono: https://youtu.be/oCjZNteAvg0 https://youtu.be/RCnmxKZjIQM Material de estudo: https://martinfowler.com/architecture/
Terça-feiraSprint 04 - Aula 01 Controle de versão e desenvolvimento colaborativo Gitflow https://about.gitlab.com/images/press/git-cheat-sheet.pdf https://docs.gitlab.com/ee/topics/gitlab_flow.html
Quinta-feiraSprint 04 - Aula 02 Política de Branches - aprendendo o fluxo de colaboração - Pull request, merge request, revisão, papel mantenedor. https://github.com/fga-eps-mds/Qualifying-Software-Engineers-Undergraduates-in-DevOps/issues/24
Terça-feiraSprint 05 - Aula 01 Papéis ágeis - Scrum master Produtividade, métricas ágeis (retrospectiva, burndown, velocity, quadro de conhecimento, health check), maturidade das práticas (comunicação nas issues/PRs, rituais time box, pareamento)
Quinta-feiraSprint 05 - aula 02 Controle de Versão e Integração Contínua Isolamento de ambiente Aula Assíncrona: https://www.youtube.com/watch?v=-Vui7mdYkgk&t=1920s https://www.youtube.com/watch?v=FBrUzyKviJw
Terça-feiraInício Sprint 06 Feriado
Quinta-feiraSprint 06 - aula 02 Entrega Release O que é release - Release Train Release notes - https://github.com/RocketChat/Rocket.Chat/releases/tag/4.5.0 Material de Apoio - https://www.thoughtworks.com/en-br/radar/techniques/release-train https://www.scaledagileframework.com/agile-release-train/
Terça-feiraRelease 01 Vídeo por projeto (Máx 4 minutos) Vídeo por squad (Max 4 minutos)
Quinta-feiraSprint 06 - aula 02 Soft Skills - agilista - agile brazil Slides - https://drive.google.com/file/d/1L01HuKcFPueg6wPwlPdCHgPWN8MQe7nk/view?usp=sharing
Terça-feiraSprint 07 - aula 01 Síncrona - 10 min Início Sprint
Quinta-feiraSprint 07 - aula 02 Extreme Programming (XP) O que é? Práticas (programação pareada, testes automatizados, testes unitários, integração) Slides: https://www.slideshare.net/hotpop/introduo-programao-extrema-extreme-programming-xp
Terça-feiraSprint 08 -Aula 01 Início Sprint
Quinta-feiraSprint 08 - Aula 02 Testes Testes unitários Testes integração Teste aceitação Testes automatizados práticas de testes - TDD + pair programming Slides: https://www.slideshare.net/hotpop/introduo-qualidade-e-testes-geis-de-software Git colaborativo práticas de Gerência de Configuração https://www.slideshare.net/hotpop/gerncia-de-configurao-gil Material complementar: Pytest - https://medium.com/assertqualityassurance/tutorial-de-pytest-para-iniciantes-cbdd81c6d761 https://github.com/pluralsight/intro-to-pytest
Terça-feiraSprint 09 - Aula 01 Síncrona - Avisos Planning - trabalho dos grupos
Quinta-feiraSprint 09 - Aula 02 Qualidade de software Qualidade estática de software Clean Code/SOLID Code climate, LINT Slides: Revisão de Codigo/Code Review: https://github.com/thamara/thamara/blob/7111f8907f2f2737902be4e60d7dc7f56e5d1bcc/presentations/2020-11-19%20Shes%20Tech%20-%20Code%20Review/Revisão%20de%20Código.pdf Dicas: https://github.com/MunGell/awesome-for-beginners
Terça-feiraSprint 10 - Aula 01 Síncrona - Avisos Início Sprint
Quinta-feiraSprint 10 - Aula 02 Pipeline de Integração Stages Build automatizada Testes automatizados qualidade de software deploy
Terça-feiraSprint 11 - Aula 01 Síncrona - Avisos Início Sprint
Quinta-feiraSprint 11 - aula 02 Aula: Licenças de software livre Copyright, patentes e aspectos legais Outros modelos de processo Cascata / RUP
Terça-feiraSprint 12 - aula 01 Início Sprint
Quinta-feiraFeriado
Terça-feiraRelease 02 - MVP - Poc
Quinta-feiraRetrospectiva Disciplina
Terça-feira
Quinta-feiraEntrega notas final - revisão