Desenvolvimento Web e Web Semântica – 2016/1
Nome oficial:
- Graduação: Tópicos Especiais em Engenharia de Software III (INF 09373);
- PPGI: Tópicos Especiais em Informática I, II, III ou IV (PINF 6073/74/75/76/79, PINF 7064).
Ementa: conceitos básicos do desenvolvimento Web; desenvolvimento Web na plataforma Java EE; fundamentos da Web Semântica; projetando, publicando e consumindo dados interligados (linked data), modelando aplicações Web baseadas em frameworks com FrameWeb.
Pré-requisitos: para acompanhar bem o curso, o aluno deve saber Java básico, fundamentos de Bancos de Dados e ter noções de XML. Além disso, deve ter boa leitura em inglês (todo o material do curso será em inglês).
Metodologia: aulas expositivas, aulas práticas tipo “hands on”, exercícios em laboratório.
Dia/horário das aulas: segundas e quartas-feiras, das 15h às 17h.
Local: CT-6, sala 114 (aulas teóricas), CT-9, sala 105 (LabGrad, aulas práticas) – Ufes (Av. Fernando Ferrari, 514 – Goiabeiras – Vitória, ES).
Carga horária semestral: 60 horas.
Mais informações:
- Programa detalhado;
- Sistema de avaliação;
- Bibliografia;
- Cronograma / datas importantes;
- Download de material do curso (slides, exercícios, etc.);
- Trabalho prático;
- Agende um horário para atendimento.
Programa detalhado
- Desenvolvimento Web em Java:
- O que são aplicações Web;
- Histórico e evolução das tecnologias Web;
- Visão geral da plataforma Java EE;
- Ferramentas para desenvolvimento Java EE;
- Aprendendo na prática: o exemplo Java Hostel;
- A tecnologia JSF (JavaServer Faces);
- O padrão CDI (Contexts and Dependency Injection);
- Persistência com JPA (Java Persistence API);
- Mais sobre EJBs (Enterprise Java Beans);
- Tecnologias para publicação de dados interligados – linked data:
- Introdução;
- Princípios de Linked Data;
- A Web de Dados;
- Considerações de projeto;
- Publicando dados;
- Consumindo dados;
- Outras tecnologias da Web Semântica:
- Description Logics com OWL;
- A linguagem de consulta SPARQL;
- O framework Jena: consumindo/publicando LD em Java;
- Modelagem de aplicações Web com FrameWeb:
- O método FrameWeb;
- O método S-FrameWeb.
Sistema de avaliação – Alunos da Graduação
A avaliação será constituída de 2 trabalhos práticos (T1 e T2) valendo 10 cada. Os trabalhos devem ser apresentados ao professor, que conduzirá uma entrevista com os alunos sobre o que foi produzido. A nota parcial será obtida com a seguinte fórmula:
Alunos que obtiverem nota parcial igual ou superior a 7 não farão prova final, tendo sua nota final igual à nota parcial. Demais alunos terão sua nota final calculada pela média aritmética simples entre a nota parcial e a nota da prova final e deverão obter nota final igual ou superior a 5 para serem aprovados.
Observação: o aluno que tiver mais de 25% (vinte e cinco por cento) de faltas, contadas em relação ao número de horas-aulas previstas para a disciplina, será privado do direito de prestar exame final e estará, independentemente de qualquer outra condição, reprovado. (Art. 51 Regimento CT, art. 104 Regimento Geral Ufes). Além disso, a média final da disciplina será arredondada para valores inteiros ou fração de 0,5, de acordo com o art. 63, parágrafos 1º e 2º do Regimento CT).
Sistema de avaliação – Alunos do PPGI
A avaliação será constituída de 3 trabalhos práticos (T1, T2 e T3) valendo 10 cada. Os trabalhos devem ser apresentados ao professor, que conduzirá uma entrevista com os alunos sobre o que foi produzido. A nota final será obtida com a seguinte fórmula:
A nota mínima para aprovação no PPGI é 6 de 10.
Observação: art. 20º do Regimento do PPGI: “Será condição necessária para aprovação e obtenção dos créditos em cada disciplina ou atividade acadêmica, a freqüência mínima de 75% (setenta e cinco por cento) da carga horária prevista para as atividades presenciais.”
Bibliografia
Livros:
- T. Heath, C. Bizer Linked Data: Evolving the Web into a Global Data Space. Morgan & Claypool Publishers, 2011;
- P. Hitzler, M. Krötzsch, S. Rudolph Foundations of Semantic Web Technologies. CRC Press, 2009;
- D. Allemang, J. Hendler Semantic Web for the Working Ontologist. Morgan Kaufmann, 2011;
- L. Yu A Developer’s Guide to the Semantic Web. Springer, 2011;
- E. Jendrock, R. Cervera-Navarro, I. Evans, K. Haase, W. Markito, C. Srivathsa The Java EE 7 Tutorial. Oracle;
- C. Çivici PrimeFaces User’s guide 4.0. PrimeTek.
Sobre o método FrameWeb:
Uma lista completa de publicações e outros materiais disponíveis sobre o método podem ser encontradas no site do Nemo.
Leituras recomendadas:
- The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!), by Joel Spolsky;
- Tutorial: a Java EE Web Profile application with nemo-utils;
- Beginner’s guide to RDF: 6. Querying with SPARQL;
- Tech: A Crash Course in SPARQL;
- SPARQL by Example.
Cronograma / Datas importantes
O período 2016/1 inicia em 01/03/2016 e termina em 05/07/2016. A semana de provas finais 2016/1 vai de 06 a 12/07/2016. A tabela abaixo resume eventos importantes durante o curso. O programa de aulas com o cronograma completo do curso é exibido em seguida.
Data | Descrição |
---|---|
02/03/2016 | Primeira aula do curso. |
16/03/2016 | Prazo para definição dos grupos para trabalho prático. |
04/04/2016 | Não haverá aula – Feriado: N. Sra. da Penha. |
26/04/2016 | Prazo para apresentação do trabalho T1. |
18/05/2016 | Não haverá aula. |
15/06/2016 | Não haverá aula. |
22/06/2016 | Não haverá aula. |
29/06/2016 | Aula 30 (completando 60 horas-aula). |
05/07/2016 | Prazo para apresentação do trabalho T2. |
05/07/2016 | Prazo para apresentação do trabalho T3 (PPGI). |
11/07/2016 | Prova Final. |
Download de material
- Apresentação do curso;
- Vídeo: Dados abertos para um dia a dia melhor;
- Vídeo: Parceria para Governo Aberto – OGP (Open Government Partnership);
- Web Development in Java, Part I: slides / live demo instructions / exemplo JavaHostel;
- Web Development in Java, Part II: slides / exemplo CDITravel;
- Web Development in Java, Part III: slides / exemplo ADS;
- JavaHostel com nemo-utils, parcialmente desenvolvido na aula do dia 22/04/2015;
- JavaHostel com nemo-utils, finalizado na aula do dia 27/04/2015;
- Linked Data;
- FrameWeb;
- Exercício FrameWeb (Language School);
- Modelos UML Astah do exercício FrameWeb (Language School);
- Tutorial de Jena (por Paulo Sérgio Santos Junior para o curso de 2014/1): slides / código-fonte dos exemplos;
- Demonstração do uso de Jena em uma aplicação Java EE: instruções / código-fonte resultante.
Trabalho prático
O trabalho prático da disciplina consiste em um projeto de desenvolvimento de uma aplicação Web com dados interligados (Web Semântica), dividido em 3 partes, sendo que a terceira parte é obrigatória apenas para alunos do PPGI:
- T1: desenvolvimento de uma aplicação Web em Java;
- T2: inclusão de funcionalidades da Web Semântica na aplicação Web desenvolvida no T1;
- T3: documentação da aplicação Web desenvolvida em T1 e T2 utilizando FrameWeb.
O trabalho deve ser desenvolvido em duplas, havendo penalidade de 2 pontos por nota para alunos que fizerem o trabalho sozinho ou em grupos de mais de 2 pessoas. Caso a turma tenha um número ímpar de alunos, será permitido a um aluno fazer o trabalho sozinho ou formar um trio. Pode-se formar duplas mistas entre alunos da graduação e do PPGI, desde que o(a) aluno(a) do PPGI se lembre que o T3 é obrigatório para ele(a) e não para seu/sua colega da graduação.
Os trabalhos práticos devem observar os seguintes requisitos:
- T1:
- Formar a dupla e definir um assunto para o projeto, discutindo-o com o professor para aprovação do escopo (prazo: 16/03/2016, penalidade de 0,5 pontos por dia de atraso);
- Desenvolver a aplicação Web utilizando frameworks ou arquitetura baseada em containers (Java EE), incluindo as seguintes categorias de framework: decorador (ex.: Facelets), controlador (ex.: JSF), injeção de dependências (ex.: CDI) e mapeamento objeto/relacional (ex.: JPA);
- Utilizar gerenciamento de dependências com Maven, de modo a não ser necessário distribuir os arquivos JAR dos frameworks utilizados juntamente com o projeto;
- Agendar um horário com o professor para apresentação do trabalho, incluindo demonstração em funcionamento e explicação do código-fonte (prazo da apresentação: 26/04/2016, penalidade de 0,5 pontos por dia de atraso);
- Compartilhar o código-fonte da aplicação no GitHub dwws-ufes, incluindo documentação de como implantar a aplicação no arquivo README.md. Para que o repositório e respectiva autorização de acesso sejam criados os alunos devem enviar ao professor um e-mail com: (a) nome dos integrantes do grupo; (b) nome do projeto desenvolvido; (c) login de pelo menos um membro do grupo no GitHub (mesmo prazo da apresentação);
- Avaliação: um projeto que cumprir os requisitos acima, porém apresentando apenas funcionalidades simples demonstradas nos exemplos feitos ao longo do curso (ex.: somente funcionalidades CRUD) obterá nota 7 (média). Para obter uma nota superior, o trabalho deve trazer funcionalidades mais interessantes e/ou utilizar tecnologias que não foram explicitamente demonstradas durante o curso.
- T2:
- Utilizar o mesmo projeto desenvolvido no T1, mantendo o uso do Maven e o compartilhamento no GitHub;
- Implementar ao menos uma funcionalidade de consumo de dados interligados e ao menos uma funcionalidade de publicação de dados interligados;
- Agendar um horário com o professor para apresentação do trabalho, incluindo demonstração em funcionamento e explicação do código-fonte (prazo da apresentação: 05/07/2016, penalidade de 2 pontos por dia de atraso);
- Avaliação: um projeto que cumprir os requisitos acima, porém apresentando apenas funcionalidades simples demonstradas nos exemplos feitos ao longo do curso (ex.: publicação e leitura de dados interligados simples) obterá nota 7 (média). Para obter uma nota superior, o trabalho deve trazer funcionalidades mais interessantes e/ou utilizar tecnologias que não foram explicitamente demonstradas durante o curso.
- T3:
- Entregar relatório em PDF contendo os modelos de domínio, aplicação, navegação e persistência propostos pelo FrameWeb, bem como o modelo conceitual (modelo ODM com atributos simplificados) proposto pelo S-FrameWeb, todos relativos ao projeto desenvolvido em T1 e T2.