LabXP2020
Laboratório de Programação Extrema 2020
As metodologias ágeis de desenvolvimento de software têm se mostrado bastante eficazes para o desenvolvimento de sistemas de software. Neste curso, os estudantes utilizam a metodologia de Programação eXtrema (XP), sob a orientação do professor e monitor (meta-coach), para desenvolver um sistema de software orientado a objetos de alta complexidade. Através dessa experiência prática no laboratório, se faz possível a aquisição de conhecimentos e a assimilação de práticas das metodologias ágeis que serão extremamente importantes para o estudante em sua futura carreira, seja ela acadêmica ou empresarial, como desenvolvedor de software.
Palestrantes externos
- Mob Programming - Woody Zuill - https://uclab.xyz/labxp-2020-mob-programming
- Disciplined Agile - Scott Ambler - https://uclab.xyz/labxp-2020-disciplined-agile
- Lean Startup - Xiaofeng Wang - https://uclab.xyz/labxp-2020-lean-startup
- Dívida Técnica - Graziela Tonin - https://uclab.xyz/labxp-2020-divida-tecnica
- Segurança Psicológica - Ceci Fernandes - https://uclab.xyz/labxp-2020-seguranca-psicologica
- Sistemas Binários de Software - Hugo Corbucci - https://uclab.xyz/labxp-2020-sistemas-binarios-de-software
- BOSSA nova - Jutta Eckstein - https://uclab.xyz/labxp-2020-bossa-nova
- Escrever Testes vs Testar - Maurício Aniche - https://uclab.xyz/labxp-2020-escrever-testes-vs-testar
- Sufficient Design - Joshua Kerievsky - https://uclab.xyz/labxp-2020-sufficient-design
- Organizational Structure Patterns - Damian Tamburri - https://uclab.xyz/labxp-2020-organizational-structure-patterns
- Agilidade no Mundo Real - Dairton Bassi - https://uclab.xyz/labxp-2020-agilidade-no-mundo-real
- The Power of the Agile Mindset - Linda Rising - https://uclab.xyz/labxp-2020-agile-mindset
- Arquitetura em Times Ágeis na Prática - Paulo Merson - https://uclab.xyz/labxp-2020-arquitetura-em-times-ageis
- Modern Agile - Alexandre Freire - https://uclab.xyz/labxp-2020-modern-agile
- Team Work - Esther Derby - https://uclab.xyz/labxp-2020-team-work
Projetos
Projetos da vida real com os mais variados temas com o único requisito de possuírem licença livre.
Possibilidades de projetos
Organizados por ordem de apresentação
- Digita Fácil - Lívia
- KUnit - Marcelo
- Monitoria do IME - Nina
- GETREN - Vitória
- Maratona - Pedro
- FAU ABERTA - Beatriz
- SPIRA - Renato
- EviDent - Gabriela
- Reconhecimento de Veículos - Guilherme
- Museu da Pessoa - Danielle
- Dente Virtual - Lisa
- Cozo - João
- Empresas DNA USP - Geciane
- SortingHat - Thatiane
- Portal Vestibulando - Ricardo
Indicar preferência de projeto
Cada aluno deverá indicar 3 projetos, em ordem de preferência, bem como compartilhar conosco algumas informações para que possamos selecionar os projetos e compôr os times.
Selecionados
- SPIRA
- Alexia Scheffer - Matheus Conce - Ricardo Kojo - Thais Lasso - Victor Miranda - Vinicius Pereira - Wander Souza
repositório: https://github.com/spirabr
- Museu da Pessoa
- Andrew Lopes - Antônio Lima - Artur Magalhães - Diego de Morais - Pedro Almeida - Renan Laiz
repositório: https://github.com/Museu-da-Pessoa-XP
- FAU Aberta
- Jean Carlo Pereira - Kaique Komata - Luciana Marques - Luís Felipe Abbud - Patrícia Jordão - Priscila Lima
repositório: https://gitlab.com/LucianaMarques/fau-aberta
- Maratona Runtime Core
- Alan - Cainã - Gabriel - Pedro - Jiang
repositório: https://github.com/maratona-run-time/Maratona-Runtime
- Dente Virtual
- Ana Beatriz Machado Cuelbas - Eduardo Yukio Rodrigues - Gabriel de Castro Michelassi - Gabriel Miranda de Araújo - Giovana Armani de Lima - Guilherme Balog Gardino - Tiago Marino Silva
repositório: https://github.com/gi-armani/Dente-virtual
- GETREN
- Bruno Romano - João Gabriel Lembo - João Pedro Toledo - Leonardo Pereira - Victor Lima
repositório: https://github.com/availablenick/getren
Dias importantes
Test Day
- Cada equipe escolherá um dia em que estará concentrada apenas em testes.
Refactoring Day
- Cada equipe escolherá um dia em que estará concentrada apenas em refatoração.
Critérios de Avaliação
Serão atribuídas duas notas neste semestre, de acordo com os critérios abaixo:
Nota 1
- três etapas: "Iniciante", "Saudável" e "Maduro" - três aspectos: "Código", "Equipe" e "Projeto"
Etapa Iniciante
- peso: 20%
- Código
- repositório configurado
- ambiente de desenvolvimento configurado
- Equipe
- atribuições de papéis
- standup e mobs iniciais rolando
- ambiente de trabalho informativo criado
- definida política de horas extras
- Projeto
- meio de comunicação com cliente definido
Etapa Saudável
- peso: 30%
- Código
- testes
- commits frequentes
- início de integração contínua (CI)
- Equipe
- bom rodízio de pares
- consistência em mobs
- Projeto
- boa comunicação com o cliente
- ter feito a primeira entrega
Etapa Maduro
- peso: 50%
- Código
- tracking
- integração contínua para valer
- cobertura de testes
- artefatos para continuidade do projeto
- Equipe
- TDD
- auto organização ("coach invisível")
- Projeto
- demais entregas
Nota 2
- Individuais:
- Presença (25%)
- Avaliação do Coach, meta-coaches avaliam os coaches (25%)
- Equipe:
- Satisfação do cliente (25%)
- Projeto (funcionalidades implementadas + manutenibilidade - como outra equipe pode continuar o projeto) (25%)
Obs.: Por manutenabilidade entende-se documentação sobre como ter um ambiente de desenvolvimento completo com os testes passando e ponteiros para pontos interessantes no código para novos novos contribuidores e funcionalidades mais simples para estes implementarem e conhecerem o sistema.
Professor e monitor
- Alfredo Goldman (gold@ime.usp.br)
- João Francisco Lino Daniel - (joaofran@ime.usp.br) (monitor)
Links e materiais úteis
- Link para o curso online do Udacity sobre testes: https://www.udacity.com/course/cs258
- Resumo do capítulo 3 do livro Agile Retrospectives, Making Good Teams Great. Liderando Retrospectivas
- Manifesto ágil: http://agilemanifesto.org/iso/ptbr/
- Survey agile: http://www.versionone.com/about-us/press-releases/article/VersionOne-Releases-9th-Annual-State-of-Agile-Survey-Results/
- Métodos Ágeis: http://www.desenvolvimentoagil.com.br/
- DDD (Notas do livro by Leonardo Leite): https://polignu.org/artigo/notas-sobre-ddd