Planeamento

Aulas do tipo Teórico

Apresentação

Apresentação da disciplina

  • Conteúdos
  • Bibliografia
  • Avaliação

Sistemas de Controlo de Versões

  • Sistemas de Controlo de Versões
  • Centralizado vs Distribuído
  • Gestão de Concorrência Optimista vs Pessimista
  • Branching
  • O caso do Git

Aula Convidada: Desenvolvimento de Software em Equipa com Git

Título: Desenvolvimento de Software em Equipa com Git
Apresentadora: Leonor Loureiro, Github
Data: 24 de Fevereiro, 9h30
Local: C3.2.16


Bio

Leonor Loureiro tem um Mestrado em Engenharia Informática e de Computadores pelo Instituto Superior Técnico, e conta com cerca de 5 anos de experiência enquanto Software Engineer. Ao longo da sua carreira, contribuiu para vários projetos, de pequena e grande escala, enquanto Full Stack e Backend Developer, colaborando com equipas diversas e internacionais. Atualmente, faz parte da equipa Git Systems na GitHub, onde é responsável pelo desenvolvimento e manutenção dos serviços que armazenam e servem Git repositórios.


Sumário: 

No mundo do desenvolvimento de software, acompanhar mudanças, colaborar em equipa, e gerir projectos complexos pode ser um desafio. É aí que entra o Git. Git é um sistema de controlo de versões distribuído que fornece aos programadores ferramentas poderosas para gerir o source code, trabalhar colaborativamente e assegurar a qualidade do código desenvolvido. Nesta apresentação, iremos discutir a história dos sistemas de controlo de versões e as principais características do Git que nos permitem otimizar os fluxos de trabalho de colaboração em equipa. Vamos também explorar boas práticas de Git e algumas das ferramentas ao nosso dispor para colaborar em projetos complexos, incluindo técnicas para melhorar a performance de monorepos e GitLFS, e como nós a aplicamos na GitHub. No final desta apresentação, terão uma melhor compreensão de como Git pode ajudar programadores e equipas a trabalhar com mais eficácia e eficiência, por mais complexo que seja o projeto.


Enterprise Applications

Enterprise Applications, exemplos, tipos e características

Arquitecturas baseadas em componentes
Arquitecturas em Camadas, vantagens e desvantagens

Padrões da Camada de Negócio

  1. Domain Model
  2. Transaction Script
  3. Table Module
  4. Service Layer

Padrões da Camada de Dados I

  1. Row Data Gateway (incluindo métodos estáticos vs classes Finder)
  2. Table Data Gateway

Padrões da Camada de Dados II

  • Active Record
  • Data Mapper
  • Object-Relational Impedance Mismatch.
  • Object-Relational Mapping (ORMs)

Padrões da Camada de Dados III

  • Java Persistence API (JPA)
  • Anotações em Java
  • Mapeamento de Entidades
  • Padrão Identity Field
  • Mapeamento de atributos simples, compostos e enumerados

Padrões da Camada de Dados IV

  • Mapeamento de relações
  • @OneToOne, @OneToMany, @ManyToOne, @ManyToMany
  • Relações uni e bidirecionais

Padrões da Camada de Dados V

  • Herança em ORM
  • Single Table
  • Table per Class (Join Table)
  • Table per Concrete Class

Padrões da Camada de Dados VI

  1. Operações que manipulam entidades.
  2. Padrão Unit of Work
  3. Entity Manager
  4. persist/merge/remove

Padrões da Camada de Dados VII

  • Transações de Base de Dados
  • Transações de Negócio
  • Níveis de Isolamento
  • Anomalias
  • Granularidade de locks
  • Tipos de locks (optimistas vs pessimistas)
  • Locks optimistas com versioning

Migrações

  • Migrações do Esquema
  • Como funcionam
  • Problemas que resolvem
  • Integração com o ORM
  • Migrações reversíveis

Padrão MVC

  • Padrão MVC clássico
  • Versões de MVC para a web
  • Como funciona o padrão MVC
  • Padrão MVVM e MVP

Aulas do tipo Teórico-Prático

Primeira semana

Não há aulas TP na primeira semana.

TP1. Git

  • Resolução da Ficha 1

TP2. Enterprise Applications + Setup

  1. Folha de Exercícios 1
  2. Instalação da Aplicação Demo

TP3. Transaction Script + Row Data Gateway

Exercício 2 da Folha 2.

Exercício 1 da Folha 3.

TP4. Table Module + Table Data Gateway

Exercício 3 da Folha 2.

Exercício 2 da Folha 3.

TP5. Active Record, Data Mapper e JPA

Exercícios da Folha 4 (2, 3 e 4)

Tutorial de Spring e JPA

TP6. Definição de Entidades em JPA

Ficha 5. Exercícios 1-8.

Esclarecimento de Dúvidas de Projecto

Esclarecimento de Dúvidas de Projecto

TP7. Estado e Concorrência em JPA

  • Slides TP7 - JPA2
  • Slides TP8 - JPA3

TP8 - Arquitecturas Web e Server-side Rendering

Slides de Padrão MVC na Web.

* Arquitetura Web
* Protocolo HTTP
* Servlets
* Java Beans
* MVC em Server-Side Rendering
* MVC no Spring

TP11 - APIs REST

  • Desenho de APIs RESTful
  • Métodos: GET, POST, PUT, DELETE, PATCH
  • Implementação de APIs REST em SpringBoot
  • Exercícios da Folha 7

TP12 - JavaFX

  • Exercícios Folha 8
  • Scene Graph
  • Vistas estáticas (FXML)
  • Vistas dinâmicas
  • Controllers
  • Properties
  • Bindings