Calendarização
Semana 1 (20/02)
Aula T00
FeriadoAula T01
Parte 1: Introdução
- Introdução a Engenharia de Software
- Logística
- Prémio Novabase/Celfocus
- Slides
- Capítulo 1 de Sommerville
- Capítulo 1 de SE at Google
Parte 2: Gestão de código com Git
Semana 2 (27/02)
Aula T02 (slides)
Parte 1: Scrum
Parte 2: Introdução a testes e integração contínua
- Guia CI GitLab
- Introdução do capítulo 8 do Sommerville
Aula T03 (slides)
Parte 1: Testes de unidade
- Testes de caixa aberta/fechada
- Duplos de teste (capítulo 8.1.1 Sommerville)
- Spock interaction-based testing
- Mocks aren't Stubs
Parte 2: Revisão código
- Capítulo 24.3 Sommerville
- Google: how to do a code review
- Coding standards
- Static analysis
Semana 3 (06/03)
Aula T04 (slides)
Parte 1: Cobertura de testes
- Capítulo 8.1.2 Sommerville
Parte 2: Testes de objecto e componente
- Teste de componentes: capítulo 8.1.3 Sommerville
- Testes primeiro: capítulo 3.2.3 Somerville
- Exemplo desenvolvido na aula: GetStatsTest.groovy
Aula T05 (slides)
Parte 1: Refactorização (slides)
- Refactoring (António Rito Silva's Companion)
- Capítulos 3.2.2, 8.2 e 9.3.3 Somerville
Parte 2: Reutilização de código (slides)
- Capítulos 7.2 e 15
- Licenças de software
- Patentes
Semana 4 (13/03)
Aula T06 (slides)
Parte 1: Desenho de software: coesão e ligação
- Capítulo 7.1 Sommerville
- Design as Structure in the companion
- Slides: What is Software Design?
- Slides: Coupling and Cohesion
Parte 2: Princípios de desenho de software
- Slides: Interfaces and Abstractions
- Slides: Design Process
- Slides: Design Principles
- Estrutura: SOLID principles
- Estrutura: Lei de Demeter
- Desenho como processo (Companion)
Aula T07 (slides)
Parte 1: Engenharia de requisitos (slides)
- Capítulo 4 Sommerville
- Template da Volere
Parte 2: Arquitectura de software
- Capítulo 6 Sommerville
- Slides: Introdução
- Slides: Padrões arquitecturais
- Slides: Padrões aplicacionais
Semana 5 (20/03)
Aula T08 (slides)
Parte 1: Arquitectura de aplicações empresariais
- Capítulos 1 e 9 de PEAA (Patterns of Enterprise Application Architecture): Layering
- Slides: Enterprise Applications Layers
Parte 2: Caso de estudo de arquitectura de software
- Orador convidado (Sonae MC)
Aula T09 (slides)
Parte 1: Introdução a comportamento objeto-relacional (ORM)
- Mapeamento para SQL
- Capítulo 3 de PEAA
- https://docs.jboss.org/hibernate/orm/6.1/userguide/html_single/Hibernate_User_Guide.html
Parte 2: Padrões ORM
- Capítulo 11 de PEAA: Object-Relational Behavioral Patterns
- Slides: Object-Relational Behavioral Patterns
- Catálogo de PEAA (sumário): https://martinfowler.com/eaaCatalog
Semana 6 (27/03)
Aula T10 (slides)
Parte 1: Padrões concorrência
- Capítulo 16 de PEAA: Offline Concurrency Patterns (slides)
- Capítulo 15 de PEAA: Distribution Patterns (slides)
- Catálogo de PEAA (sumário): https://martinfowler.com/eaaCatalog
Parte 2: Padrões apresentação web
- Capítulo 14 de PEAA: Web Presentation Patterns (slides)
- Catálogo de PEAA (sumário): https://martinfowler.com/eaaCatalog
Aula T11 (slides)
Parte 1: Testar todo o sistema
- Capítulos 8.1.4, 8.3, 8.4 (Sommerville)
- Pirâmide de testes
Parte 2: Qualidade em produção
- Continuous delivery/integration (CI/CD)
- https://martinfowler.com/articles/qa-in-production.html
Semana 7 (03/04)
Férias PáscoaSemana 8 (10/04)
Aula T12 (slides)
Parte 1: Construção do sistema
- Capítulo 25.2
- Slides: System Building and Continuous Integration
Parte 2: Padrões de controlo de versões
- Capítulo 25.1
- Slides: Build Patterns
- Slides: Codeline Patterns
- Padrões de gestão de configurações
Aula T13 (slides)
Parte 1: Modelos de processo
- Capítulos 2, 3.1 e 3.2
Parte 2: Trabalho em equipa, tópicos avançados
- Reflexão sobre o projecto, trabalho em equipa
- Tópicos avançados de eng software
Material de apoio
Os slides do livro estão disponíveis em: https://software-engineering-book.com/slides/.António Rito Silva's Software Engineering Companion: https://antonioritosilva.org/software-engineering-companion/