Oferta Formativa - Sinopse

Construção de Sistemas de Software

Código: 26750
Ano Letivo: 2015/16
Departamento: Informática
ECTS: 6
Carga horária: T: 2:00 h; TP: 1:30 h; OT: 2:00 h;
Área Científica: Informática; 

Objetivos da Unidade Curricular

Pretende-se que o aluno adquira competências no desenho e implementação de sistemas em grande escala através da aplicação de padrões, que traduzem as boas práticas de arquitetura e desenho destes sistemas, e que lhes forneçam competências no desenvolvimento e testes de sistemas concorrentes, distribuídos, construídos a partir de componentes locais ou distribuídas pela Web, e que utilizem servidores aplicacionais e de base de dados. O foco da disciplina vai integralmente para as construção de software do ponto de vista da Engenharia de Software centrando-se no desenvolvimento alto-nível de aplicações onde, claro, se instanciam os conhecimentos aprendidos nas disciplinas que focam nos detalhes de funcionamento e implementação a baixo-nível.


Pré-requisitos

  • Sistemas de Informação e Bases de Dados (26726)
  • Desenvolvimento Centrado em Objetos (26727)
  • Sistemas Distribuídos (26730)

Conteúdos

Arquitetura e Desenho de sistemas em grande escala; persistência de objetos em sistemas relacionais; apresentação via Web; concorrência e distribuição; componentes de software; padrões de refatorização; testes.

 

Descrição detalhada dos conteúdos programáticos

Componente Teórica

1 - Arquitetura e Desenho de Sistemas em Grande Escala: (a) Divisão em camadas; as três camadas principais: apresentação, domínio e serviços técnicos; camadas adicionais (controlador aplicacional, interação com a camada de serviços transversais à camada de negócio, serviços técnicos/infraestrutura de baixo nível); (b) Organização da lógica do domínio (padrões: transaction script, table module e domain model); (c) Mapeamento nível lógico – nível físico (deployment of componentes): (i) Servidores, grupos de servidores (clusters), replicação; etc.

2 - Persistência do Modelo de Objetos: (a) Padrões de desenho que abstraiam a forma como os objetos são persistidos (relational-oriented mapping, document-oriented mapping, etc.) criando uma base de dados O-O virtual: (i) Padrões arquiteturais (data mapper); (ii) Padrões comportamentais (exemplo: lazy loading); (iii) Padrões estruturais (exemplo: mapeamento de dependências (1 - *,  * - 1,  etc.); (iii) Metadados.

3 - Mediação UI – Domínio: (a) Gestão separada dos pedidos da camada de apresentação; (b) Interação com a camada do domínio através de sessões (com estado); (c) gestão de workflows.

4 - Padrões para Concorrência e Distribuição: (a) Recursos transacionais; ações típicas sobre estes recursos; (b) Técnicas para controle de concorrência (e.g., optimista, pessimista); (c) Concorrência online e offline; (d) Mecanismos de concorrência disponíveis no Java 7: fork/join, task,  algoritmos de job stealing; (e) Exemplo de padrões – unit of work; remote observer; data transfer object; padrões oferecidos pelo EJB versão 3.

5 - Componentes de Software: (a) Construção de sistemas a partir de módulos; (b) Modelo JEE.

6 - Padrões de refatorização: (a) Alguns padrões de refatorização mais comummente aplicados, apoiados pelo uso de um IDE que os implemente.

7 - Testes de software: (a) Conceitos e uso de ferramentas para fazer testes unitários e de módulos.

 

Componente Teórica-Prática

Estuda e aplica as APIs específicas do JEE, em particular, JDBC, JPA, JTA, Servler, JSP, EJB e JMS à contrução de uma aplicação exemplo.

 

Bibliografia

Recomendada

- Martin Fowler. Patterns of Entreprise Applications Architecture. Addison-Wesley. 2003.

- Inderjeet Singh, Beth Stearns, Mark Johnson, and the Enterprise Team. Designing Enterprise Applications. Addison-Wesley. 2002.

- Frank Buschmann, Kevlin Henney, Douglas C. Schmidt. Patterns-Oriented Software Archictecture. John Wiley & Sons, Ltd. 2007.

- Martin Fowler. Refactoring. Addison-Wesley. 1999.

 

Outros elementos de estudo

- Oracle, Java EE tutorial, 2014.

- Vincent Massol with Ted Husted, JUnit in Action, Manning Publications, Co., Secound edition, 2003.

 

Métodos de Ensino

Os conteúdos programáticos são apresentados nas aulas teóricas apelando à capacidade crítica e à discussão dos alunos e são postos em prática em aulas de sala de aula (papel e lápis) onde são propostos e resolvidos exercícios. A consolidação da matéria é conseguida através de dois projetos que exercitam o grosso da matéria leccionada num contexto que envolve trabalho em equipa para desenvolver uma aplicação em maior escala do que os exemplos abordados nas aulas teóricas e teórico-práticas.

 

Métodos de Avaliação

Exame, projeto e avaliação continua.

 

Língua de ensino

Português