Escolas Superiores Portais
ESEESAESTGESSESCEESDL MULTIMÉDIAINTERNACIONAL
Escola Superior de Educação
Escola Superior Agrária
Escola Superior de Tecnologia e Gestão
Escola Superior de Saúde
Escola Superior de Ciências Empresariais
Escola Superior de Desporto e Lazer
SASOTICEMPREGO
 
   
 

Programa Unidade Curricular

Curso
Unidade Curricular
Ano
Periodo
ECTS
Ano Letivo
Engenharia da Computação Gráfica e Multimédia
Programação Web
3
S1
5
201920

 
T
TP
TC
P
PL
L
S
E
EC
O
OT
Horas de Contacto
0
32
0
0
32
0
0
0
0
0
0

Equipa Docente
Nome
Carga Letiva na UC
Responsável
António José Alves Antunes Viana
40
Docente
Abel Jorge Ferreira Barbosa Soares
24

Resumo
A Unidade curricular pretende dotar os alunos da capacidade de desenvolvimento de aplicações web com recurso ao padrão MVC (Model - View - Controller), de desenvolvimento web recorrendo ao paradigma da Programação Orientada a Objetos, de desenvolvimento de web services e web APIs, considerando o consumo e integração de informação externa, de desenvolvimento na Cloud e, neste contexto, perceber o conceito de PaaS (Plataform as a Service). É parte integrante da Unidade Curricular, transversalmente a todas as matérias lecionadas, as questões de segurança e privacidade em aplicações web. As matérias lecionadas terão sempre em consideração tópicos emergentes.

Objetivos da Aprendizagem
1- Configurar servidores web.
2- Identificar e utilizar estratégias de integração de sistemas.
3- Considerar e implementar segurança e privacidade de dados no desenvolvimento de aplicações web.
4- Desenvolver, aquando da execução de trabalhos práticos, a capacidade de planeamento, organização, apresentação e gestão da informação na criação de um site.
5- Usar de forma adequada e eficiente conceitos de POO (Programação Orientada a Objetos) no desenvolvimento de aplicações web.
6- Usar arquiteturas aplicacionais que dividam as responsabilidades das mesmas em camadas diferentes com o objetivo de melhorar a organização do código, possibilitando que as mesmas seja facilmente escaláveis e reutilizáveis.
7- Conhecer e utilizar vários drivers de ligação a base de dados.
8- Utilizar tecnologias emergentes.

Conteudos Programáticos
Horas
1- Tópicos de Programação Orientada a Objetos
1.1 Carregamento automático de classes (autoload).
1.2 Métodos estáticos.
1.3 Scope Resolution Operator.
1.4 Invocação de métodos de uma classe de forma dinâmica.
1.5 Utilização de namespaces.
1.6 Importação através do operador use.
1.7 Argument Unpacking através do operador splat.
1.8 Driver MySQLi.
1.9 Processo de abstração da camada de ligação a uma base de dados.
1.10 Herança. Processo de generalização e especialização.
8
2- Padrão de desenvolvimento MVC
2.1 Estruturação de um projeto MVC.
2.2 Definição de Model, View e Controller.
2.3 Interligação entre as diferentes camadas aplicacionais.
2.4 Configurações do servidor web (.htaccess). Definição de regras globais e individuais.
2.5 Routing.
2.6 Variáveis globais automáticas (super globals).
2.7 Manipulação/Invocação de controladores, métodos e parâmetros a partir do URL.
12
3- Sessões
3.1 Conceitos teóricos.
3.2 Acesso a conteúdos de acesso restrito e que requerem autenticação prévia.
3.3 Tópicos de segurança relacionados com sessões.
4
4- Ficheiros
4.1 Upload
4.2 Validações
4.3 Problemas de segurança relacionados com o upload de ficheiros.
4
5- REST (REpresentational State Transfer)
5.1 Princípios da arquitetura de desenvolvimento.
5.2 RESTful.
5.3 Cross-Origin Resource Sharing (CORS).
5.4 HTTP response status codes.
5.5 Headers HTTP.
5.6 Estruturação de uma REST API.
5.7 Desenvolvimento de REST APIs.
5.8 Implementação de métodos HTTP: GET, POST, PUT e DELETE.
5.9 Automatização de testes a APIs.
5.10 Mecanismo de segurança Same-origin policy.
5.11 XMLHttpRequest e Fetch API: metodologia e restrições.
12
6- Node.js REST APIs
6.1 Ambiente de desenvolvimento e ferramentas.
6.2 Introdução Koa.js
6.3 Async/Await.
6.4 Middlewares.
6.5 Application Object.
6.6 Context Object.
6.7 Req and Res.
6.8 REST APIs com Koa.js.
6.9 Controllers.
6.10 Body parsers.
6.11 Roteamento.
6.12 Integração com bases de dados.
6.13 Autenticação.
6.14 Deploy em Heroku.
12
7- React
7.1 Ambiente de desenvolvimento e ferramentas.
7.2 Renderizar componentes React.
7.3 Componentes UI com JSX.
7.4 Estilizar componentes.
7.5 Estados e ciclo de vida de componentes.
7.6 Comunicação de dados e exibição de estado.
7.7 Props e verificação de tipos com PropTypes
7.8 Gestão de eventos.
7.9 Roteamento.
7.10 Gestão de formulários.
7.11 Setup para produção.
7.12 Deploy de aplicações em Heroku.
12

Metodologias de Ensino
Os principais conceitos, tecnologias e metodologias serão apresentados nas aulas teórico-práticas, nas quais se fará também a apresentação de exemplos ilustrativos. Salvo a devida interação, discussão e ao apelo ao espírito crítico do aluno, o formato será essencialmente expositivo. Todos os conceitos introduzidos são alvo de exposição dos fundamentos teóricos, implementação nas tecnologias, sistemas, linguagens e plataformas selecionadas para a Unidade Curriculra. Esta seleção tem por base, principalmente, os seguintes critérios: standardização, disseminação no mercado e, sempre que possível, serem software livre.

A apresentação dos temas /tecnologias será muita vezes numa perspetiva top-down, i.e., apresentando soluções que integrem o conjunto das conceitos e tecnologias e em fases posteriores ir aprofundando a apresentação dos mesmos através de exemplos mais elaborados e com maior detalhe na exposição de conceitos.

As aulas práticas servirão o propósito de permitir a elaboração de exercícios e de acompanhamento de trabalhos desenvolvidos pelos alunos. Nestas aulas são requeridos elevados níveis de trabalho individual e estudo autónomo por parte dos alunos, com vista à aquisição e aprofundadamento do seu conhecimento e experiência sobre aspetos relevantes para o desenvolvimento dos seus trabalhos.

Avaliação
Assiduidade:
A assiduidade é obrigatória. Para obter aprovação à UC, o aluno tem que frequentar (ou ter frequentado) no mínimo 80% das aulas lecionadas.

No Período Letivo:
CT = 1,0 AE CP = 0,45 TP1 + 0,45 TP2 + 0,10 AIC
CF = 0,5 CT + 0,5 CP, desde que CT >= 8,0 e CP >= 8,0 e CF >= 9,5
- CT: Componente teórico-prática;
- CP: Componente prática;
- CF: Classificação final;
- TP: Trabalho prático;
- AIC: Assiduidade, interesse e competências demonstrados nas aulas.

Nas épocas de exame:
CT = 1,0 EX
CP = 1,0 TP
CF = 0,5 CT + 0,5 CP, desde que CT >= 8,0 e CP >= 8,0 e CF >= 9,5
- EX: Exame
Só pode aceder à época normal os alunos que não tenham comparecido a nenhum momento de avaliação no período letivo.

Bibliografia Principal
. Apontamentos fornecidos pelo docente
. W3C Reccommendations (http://www.w3.org)
. MDN Web Docs, Mozilla Developers Network, https://developer.mozilla.org/en-US/, 2019
. Murach's PHP and MySQL (Murach: Training & Reference), Joel Murach & Ray Harris, Mike Murach & Associates, 2010
. REST API Design Rulebook,Designing Consistent RESTful Web Service Interfaces, Mark Masse, O'Reilly Media, October 2011
. Server Side development with Node.js and Koa.js Quick Start Guide: Build robust and scalable web applications with modern JavaScript techniques, Olayinka Omole, Packt, 2018
. Learning React: Functional Web Development with React and Redux, Alex Banks and Eve Porcello, O'Reilly Media, 2017

Bibliografia Complementar
. JavaScript Bible, 7th Ed., Danny Goodman & Michael Morrison & Paul Novitski & Tia Gustaff Rayl, Wiley, 2010
. PHP and MySQL Web Development, 4th Ed., Luke Welling and Laura Thomson, Sams Publishing, 2008
 
 
 

Em destaque

EM AGENDA

D S T Q Q S S
 
 
 
 
 
 
1
 
2
 
3
 
4
 
5
 
6
 
7
 
8
 
9
 
10
 
11
 
12
 
13
 
14
 
15
 
16
 
17
 
18
 
19
 
20
 
21
 
22
 
23
 
24
 
25
 
26
 
27
 
28
 
29
 
Format: 2020-02-28
Format: 2020-02-28