Licenciatura em Engenharia Informática e Computação
Laboratório de Engenharia de Software
Ano lectivo de 2002/2003

Trabalhos práticos

Na componente prática da disciplina de Laboratório de Engenharia de Software (LES) pretende-se desenvolver um Sistema de Informação para cursos superiores (LEIC) usando as boas práticas de Engenharia de Software.
Este trabalho prático, de índole académica, tem como objectivo dar suporte aos conteúdos que decorrem dos objectivos da disciplina, tal como estão expressos na ficha de disciplina.
Apresentam-se de seguida os requisitos de informação, funcionais e não funcionais do sistema de informação a desenvolver: SiLEIC. Estes requisitos informais decorrem de conversas com os clientes (simulados). Os clientes validarão os Relatórios de Requisitos a produzir e participarão em testes de validação dos produtos desenvolvidos.

1. Introdução

A LEIC tem por missão formar alunos especializados em Engenharia Informática e Computação.

As actividades ligadas à LEIC são asseguradas por um conjunto de docentes que pertencem a áreas científicas e estão agrupados em departamentos e secções. A cada área científica é atribuído um conjunto de disciplinas constituindo um plano de estudos. Os alunos inscrevem-se em disciplinas e as actividades lectivas decorrem em salas.
Em cada ano lectivo é definido um serviço docente e um calendário escolar. Os alunos matriculam-se em ocorrências de disciplinas e inscrevem-se nas turmas.
Os docentes mantêm um plano das aulas e dos sumários com os conteúdos nelas efectivamente ministrados. Na ficha de disciplina são registados os objectivos, conteúdos, pré-requisitos, metodologia e bibliografia para cada ocorrência, num ano lectivo, da disciplina. As componentes de avaliação são registadas, bem como as datas em que terão lugar e os pesos relativos.
Em qualquer altura os alunos podem saber os resultados das avaliações que vão sendo efectuadas através da consulta da Ficha de Aluno. Os docentes são apoiados no cálculo das classificações através de ligação facilitada a folhas de cálculo. São mantidas estatísticas acerca dos resultados atingidos.
A comunicação interna é assegurada através de um sistema de notícias, contendo prazos de validade, e de foros de discussão ligados aos assuntos relevantes para o curso.
Toda a documentação relevante para avaliação dos trabalhos de grupo é mantida de forma centralizada. É suportada a submissão, pelos alunos, dos entregáveis e das anotações dos docentes responsáveis pela sua correcção.
Todas as utilizações do Sistema de Informação carecem de verificação de privilégios, após a autenticação do utilizador, por forma a preservar a informação confidencial. Os vários utilizadores do SiLEIC podem personalizar a sua interface, obter uma agenda para o dia e ver as notícias relevantes.
Os alunos podem aferir os seus conhecimentos através da realização de testes de auto-avaliação, sendo apresentada correcção adequada das respostas.
A utilização do SiLEIC deverá ser possível em navegadores Web, com interfaces com bons índices de usabilidade, robusta e com explicações dependentes do contexto.

2. Utilizadores

O SiLEIC deverá suportar os seguintes utilizadores:
A1/ Gestores: mantêm informação de gestão e configuração do sistema (nomeadamente de utilizadores, áreas cientificas, disciplinas, docentes, alunos, inscrições) e de configuração de foros de discussão, tipos de notícias, etc.
A2/ Docentes: configuram a sua página pessoal, alteram informação pessoal, registam notícias, introduzem planos de avaliações, planos de aulas, sumários e perguntas para os testes de auto-avaliação, participam em foros de discussão, etc.
A3/ Alunos: configuram a sua página pessoal, alteram informação pessoal, consultam informação relativa às disciplinas a que estão inscritos, participam em foros de discussão, etc.
A4/ Público: consulta informação pública.

3. Subsistemas a Desenvolver

No trabalho prático de LES serão implementados dois Sistemas de Informação SiLEIC, um em JAVA e outro em .NET, para suportar o planeamento e acompanhamento da LEIC. O SiLEIC pode dividir-se, verticalmente, em oito sub-sistemas.

Apresentam-se de seguida os requisitos dos sub-sistemas a desenvolver no âmbito do trabalho em grupo. Para cada sub-sistema referem-se os requisitos de informação e as funcionalidades relevantes.

S1/ Configuração de curso

Neste sub-sistema faz-se a gestão da informação relacionada com os recursos necessários para o funcionamento dos cursos.
S1.1/ manter a informação sobre os cursos e seus planos de estudos
- cursos: sigla, descrição, URL
- áreas-científicas: sigla, descrição, ordem
- disciplinas: codigoSiFEUP, sigla, descrição, ano, semestre, horas-T, horas-TP, horas-P, horas-L, turmas-T, turmas-TP, turmas-P, turmas-L, créditos, optativa, activa, ECTS, curso, área-científica
- áreas-conhecimento: código, descrição, horas-core, activo, sub-área-secção
- unidades-conhecimento: código, descrição, horas, core, cc2001, activo, área
- tópicos-conhecimento: código, descrição, horas, core, cc2001, ordem, activo, unidade
- nível-bloom: nome, competência, skills
- pré-requisitos-unidades: unidade-anterior, unidade-posterior, obs
- unidades-disciplinas: disciplina, unidade, obs
- conteúdo-disciplina: disciplina, tópico, nível-bloom, ordem, obs
- mostrar-plano-estudos: contém as disciplinas por ano e semestre para um dado curso
- mostrar-tópicos: agrega informação sobre os conteúdos planeados para as disciplinas
S1.2/ manter a informação sobre os docentes
- departamentos: sigla, nome, URL
- secções: sigla, nome, URL
- sub-áreas-secções: sigla, nome, secção
- categorias: descrição
- docentes: codigoSiFEUP, nome, contacto, email, URL, sala, activo, sub-área-secção, categoria
- registar-docente: invocar registo de utilizador (login, password, grupos)
S1.3/ manter a informação sobre as salas, seus tipos, capacidade
- tipos-sala: descrição
- salas: nome, capacidade, edifício, andar, tipo
S1.4/ manter a informação sobre os alunos e suas matrículas
- alunos: codigoSiFEUP, nome, contacto, email, URL, estado
- tipos-inscrição: descrição
- matrículas-curso: aluno, curso, ano-lectivo, data, tipo-inscrição
- tipos-frequência: descrição
- frequências-curso: aluno, frequência, data-início, data-fim
- registar-aluno: invocar registo de utilizador (login, password, grupos)

S2/ Configuração de ano lectivo

Neste sub-sistema faz-se a gestão da informação relacionada com o ano lectivo corrente.
S2.1/ manter a informação sobre as turmas para cada ocorrência de disciplina
- ocorrências: código, disciplina, ano-lectivo, semestre, regente
- turmas: nome, ocorrência
S2.2/ registar o serviço docente contendo os docentes que serão responsáveis por ministrar as aulas
- tipos-docência: descrição
- serviços: docente, ocorrência, horas, tipo-docência
S2.3/ manter o calendário escolar, nomeadamente início e fim dos vários períodos lectivos e de avaliação
- calendários: ano, início-1s, fim-1s, início-2s, fim-2s, início-1aval, fim-1aval, início-2aval, fim-2aval
- interrupção: início, fim, descrição
- feriados: data, descrição, activo
S2.4/ manter informação sobre os horários ligando ocorrências a docentes e a salas
- itens-horário: ocorrência, docente, sala, início, fim
- mostrar-horário: mostrar horário de turma, de aluno ou de docente
S2.5/ registar a inscrição de alunos em disciplinas e em turmas
- tipo-inscrição: nome
- inscrição-ocorrência: aluno, ocorrência, data, tipo
- inscrição-turma: aluno, turma, data

S3/ Planeamento e acompanhamento das aulas

Neste sub-sistema faz-se a gestão da informação relacionada com o planeamento das aulas e o registos dos sumários.
S3.1/ manter Ficha de Disciplina
- fichas-disciplina: objectivos, programa, bibliografia, recursos, metodologia, avaliação, pré-requisitos, ocorrência, introdutor, data
- itens-avaliação: descrição, peso, data, ficha
- inserir-exames: inserção dos itens de avaliação que são exames
S3.2/ manter o plano das aulas com base no calendário escolar, horários e feriados
- aulas: ordem, data, conteúdo, anotações, efectivo, turma
- gerar-plano: preenche as aulas com base no calendário escolar e interrupções
- copiar-plano: preenche assuntos das aulas com base em ocorrência anterior
- inserir-aula: insere aula (data) no plano, mantendo as outras aulas inalteradas
- eliminar-aula: elimina aula (data), mantendo as outras aulas inalteradas
- inserir-assunto: insere assunto no plano, deslocando os assuntos seguintes
- eliminar-assunto: elimina assunto, deslocando os assuntos seguintes
- alterar-plano: permite cortar e colar conteúdos das aulas de uma ocorrência
S3.3/ importar e exportar planos de aulas
- importar-plano: importa um plano de aulas de ficheiro CSV ou XML
- exportar-plano: exporta um plano de aulas para ficheiro CSV ou XML
S3.4/ registar sumários através da manipulação do plano
- registar-sumário: alterar conteúdos e datas de aulas e passar ao estado efectivo
S3.5/ registar o fim do ano lectivo
- arquivar-sumários: prepara sumários para arquivo

S4/ Avaliação do aluno

Neste sub-sistema faz-se a gestão da informação relacionada com a avaliação do aluno, de frequência e por exames.
S4.1/ manter avaliações
- notas-avaliação: item-avaliação, aluno, valor, data, obs
S4.2/ exportar folhas de avaliação
- exportar-folhas-avaliação: exportar para ficheiro, em formato CSV ou XML, com uma linha, para cada aluno inscrito na ocorrência da disciplina, contendo as componentes e os pesos relativos, por forma a permitir a colocação das respectivas classificações, por exemplo numa folha de cálculo
S4.3/ importar folhas de avaliação em formato CSV
- importar-folhas-avaliação: importar de ficheiro, em formato CSV ou XML, folhas de avaliação validando e inserindo os valores no SiLEIC
S4.4/ emitir, no final do ano lectivo, Livros de Termos
- emitir-livro-termos: guardar em ficheiro, em formato adequado, as classificações finais de ocorrências de disciplinas
S4.5/ produzir estatísticas sobre os resultados obtidos
- produzir-estatísticas: mostrar estatísticas relativas a alunos inscritos, alunos avaliados, alunos aprovados e médias obtidas
S4.6/ produzir a Ficha de Aluno
- produzir-ficha-aluno: mostrar a informação sobre a situação corrente de avaliação do aluno a todas as disciplinas a que está inscrito, nomeadamente resultados da avaliação contínua (mini-testes, relatórios, trabalhos, etc.).

S5/ Comunicação interna

Neste sub-sistema faz-se a gestão da comunicação interna ao curso através de notícias, com prazo de validade e dirigidas a grupos de utilizadores, e de foros de discussão.
S5.1/ manter foros de discussão
- foros: nome, moderador, data
- fios-discussão: descrição, autor, data, foro
- submissão-foro: conteúdo, data, autor, fio-discussão
- arquivar-foro: enviar para ficheiro, em formato XML, as submissões para um foro dentro de um intervalo de tempo
- terminar-foro: arquivar foro e retirá-lo do SiLEIC
S5.2/ manter um sistema de notícias
- prioridades: descrição
- notícias: data, conteúdo, prioridade, validade, autor
- notícias-grupo: notícia, grupo
- arquivar-notícias: enviar para ficheiro, em formato XML, as notícias enviadas dentro de um intervalo de tempo
S5.3/ notificar alvos das notícias prioritárias
- notificar-notícia: enviar email aos grupos-alvo o conteúdos de notícias prioritárias

S6/ Gestão da documentação

Neste sub-sistema faz-se o arquivo e disponibilização de entregáveis relativos aos trabalhos em grupo.
S6.1/ receber e registar, dentro dos prazos definidos, documentos entregáveis
- formatos-documento: nome, mime
- tipos-documento: nome, data-limite
- documentos: nome, submissor, data-submissão, anotação, anotador, data-anotação, tipo, formato, caminho
- autorias: autor, documento
- receber-documento: puxar documento para ficheiro no sistema de ficheiros local ao SiLEIC e registar
S6.2/ disponibilizar documentos para consulta por pessoal autorizado
- consulta-documentos: pesquisa de documentos e mostra das ligações correspondentes ao resultado da pesquisa, por forma a permitir a sua consulta
S6.3/ anotar documentos
- anotar-documentos: registar a apreciação efectuada pelo docente responsável pela correcção do documento

S7/ Gestão de utilizadores

Neste sub-sistema faz-se a gestão dos utilizadores e dos grupos de utilizadores, dos seus privilégios de acesso a casos de utilização, da apresentação dos casos de utilização em portais e da personalização desses portais de acesso.
S7.1/ manter utilizadores e grupos de utilizadores
- tipos-user: descrição (Público, Aluno, Docente, Gestor)
- users: login, password, data, tipo-user
- grupos: nome, data, turma (opcional)
- papéis: descrição
- níveis-privilégio: descrição (ler, submeter)
- membros-grupo: grupo, user, papel, privilégio
- registar-user: regista login, gera uma password e regista informação de pertença a grupos
- alterar-password: permite a alteração de password por um dado utilizador
S7.2/ autenticar utilizadores no acesso ao SiLEIC
- autentica-acesso: valida combinação de nome e senha de utilizador e regista utilizador na sessão
S7.3/ configurar portais de acesso
- portal: nome (um por tipo de utilizador)
- áreas-portal: descrição (apresentação, documentação, recursos, avaliação, ...), ordem-por-omissão, portal
- casos-utilização: nome, descrição, URL, ordem-por-omissão, obs
- acessos: caso-utilização, tipo-user, área-portal
- personalizar-portal: permite escolher e ordenar áreas de um portal e dentro dentro de cada uma delas, escolher, ordenar e adicionar casos de utilização
S7.4/ mostrar a agenda para o dia
- mostrar-agenda: mostra agenda para o dia, para um dado utilizador, incluindo horários e avaliações

S8/ Auto-avaliação

Neste sub-sistema trata-se da auto-avaliação dos conhecimentos dos alunos relativos a disciplinas, através de testes, anónimos, em linha.
S8.1/ registar perguntas e respostas dadas pelos docentes
- matérias: descrição, disciplina
- graus-dificuldade: descrição
- perguntas: descrição, matéria, grau-dificuldade, autor
- tipos-resposta: descrição
- respostas: descrição, pergunta, autor
- introduzir-questões: povoar o SiLEIC com perguntas e respectivas respostas introduzidas pelos docentes
S8.2/ elaborar, acompanhar e corrigir teste realizado pelo aluno
- elaborar-teste: elaborar testes para uma dada matéria a partir das perguntas registadas pelos docentes
- realizar-teste: contar o tempo previsto para a realização do teste e recolher, no final, as respostas do aluno
- corrigir-teste: apresentar, no final, a correcção de um teste mostrando a pontuação obtida e as respostas certas, com ligações para as fontes que as fundamentam e enviar para docente as respostas de texto
S8.3/ fornecer estatísticas globais sobre a utilização da auto-avaliação
- estatísticas-aluno: mostrar uma indicação do desempenho do aluno através da análise dos registos de pontuações obtidas nos testes por ele realizados
- estatísticas-matéria: mostrar uma indicação do desempenho dos alunos que responderam a uma dada matéria num dado ano lectivo

4. Requisitos Tecnológicos

Na disciplina de Laboratório de Engenharia de Software (LES) pretende-se desenvolver um conjunto integrado de aplicações, comunicando entre si através Web Services implementados com recurso a SOAP. Cada uma das aplicações a desenvolver pelos grupos de trabalho é a implementação de um dos sub-sistemas identificados nas suas duas versões em JAVA e .NET. Cada uma destas aplicação disponibilizará dois tipos de interfaces:
I1/ interface Web para o utilizador, que permite a manutenção de toda a informação da responsabilidade da aplicação, através da utilização dos componentes desenvolvidos;
I2/ um interface para outras aplicações, na forma de Web Services sobre SOAP e HTTP, para que os serviços disponibilizados possam ser invocados por outras aplicações, através de SOAP-RPC.
Adicionalmente, cada aplicação poderá recorrer a Web Services disponibilizados por outras aplicações.

Estas aplicações, para além dos requisitos já enunciados, deverão seguir uma arquitectura em 4 camadas:
C1/ camada de interface com o utilizador baseada em HTML, CSS, JavaScript e funcionando num cliente Web;
C2/ camada de controlo implementada com recurso ao servidor HTTP e a páginas JSP (servlets) ou ASP.NET que geram páginas HTML dinâmicas;
C3/ camada de servidor aplicacional que mantém a lógica dos processos em Beans JAVA ou C#;
C4/ camada de persistência onde será guardada a informação; existirá apenas uma base de dados (Oracle) para cada tecnologia: LESJAVA (para as aplicações em JAVA) e LESNET (para as aplicações em .NET). As bases de dados estão acessíveis a partir da ligação a jdbc:oracle:thin:@stanley.fe.up.pt:1521:AULAS.

5. Arquitectura Geral

No final dos trabalhos práticos e após a integração das várias aplicações serão conseguidos dois sistemas de informação, um em cada uma das tecnologias. Cada uma das aplicações terá a arquitectura representada de seguida.
Arquitectura Geral

6. Interfaces Web para casos de utilização

Os grupos de trabalho identificarão casos de utilização para manutenção da informação da sua responsabilidade. Estes serão posteriormente registados no SiLEIC de modo a fazerem parte dos portais de acesso ao SiLEIC. Lista de casos de utilização (a completar após a recepção dos Relatórios de Requisitos):

1.1 configurar cursos
1.2 mostrar plano de estudos
1.3 mostrar tópicos
1.4 manter salas
1.5 manter docentes
1.6 manter alunos
1.7 matrículas
2.1 manter ocorrências
2.2 manter turmas
2.3 registar serviço docente
2.4 manter calendário escolar
2.5 manter horários
2.6 mostrar horário
2.7 inscrição em turmas
3.1 manter ficha de disciplina
3.2 manter exames
3.3 manter plano de aulas
3.4 importar plano
3.5 exportar plano
3.6 registar sumários
3.7 arquivar sumários
4.1 manter avaliações
4.2 exportar folha de avaliações
4.3 importar folha de avaliações
4.4 emitir livro de termos
4.5 produzir estatísticas
4.6 produzir ficha de aluno
5.1 manter foros
5.2 manter notícias
5.3 notificar prioritárias
6.1 receber entregáveis
6.2 consultar entregáveis
6.3 anotar entregáveis
7.1 manter utilizadores e grupos
7.2 registar casos de utilização
7.3 autenticar utilizadores
7.4 produzir portais de acesso
7.5 personalizar páginas individuais
7.6 mostrar agenda
8.1 manter perguntas e respostas
8.2 elaborar e acompanhar testes
8.3 receber notas de perguntas texto
8.4 fornecer estatísticas

7. Interfaces para aplicações com Web Services

Cada grupo de trabalho será responsável por disponibilizar, como Web Service, um dos seguintes serviços:

1 plano_estudos(curso: string): string // devolve XML
2 horario_turma(turma: string): string // devolve XML
3 sumario_turma(turma: string): string // devolve XML
4 ficha_aluno(user: string): string // devolve XML
5 adiciona_noticia(noticia: string): boolean // recebe XML
6 consulta_entregaveis(user: string): string // devolve XML
7 agenda_dia(user: string): string // devolve XML
8 estatistica_materia(materia: string, ano: string): string // devolve XML

8. Segurança

O sub-sistema "Gestão de utilizadores" fornece o caso de utilização responsável pela autenticação de utilizadores; este encarrega-se de registar na sessão a informação correspondente ao utilizador corrente.
Cada caso de utilização tem de começar por averiguar se possui informação de utilizador e, no caso desta não existir, encarrega-se de chamar o caso de utilização de autenticação, passando-lhe como parâmetro o seu próprio URL, para que possa ser chamado de volta.
Todas as verificações de autorização (privilégios) têm de ser efectuadas pelo próprio caso de uso com base na informação de sessão e na informação sobre de grupos de utilizadores existente na base de dados.
A segurança em Serviços Web não será, para já, tratada.

9. Regulamento

Os trabalhos são realizados por grupos de 4 alunos, todos da mesma turma. O trabalho de cada grupo consiste no desenvolvimento de uma das aplicações propostas (um dos sub-sistemas), sobre uma das plataformas -- Java ou .NET. Na mesma turma não podem existir dois grupos a desenvolver a mesma aplicação.
O papel de cliente será assumido por docentes da LEIC (AAS, RMV). Compete aos clientes definir os requisitos de cada aplicação, sob solicitação do respectivo grupo.

10. Anexos

Plano das Aulas
Sumários das Aulas
Ficha de Disciplina
Livro de Termos
Página de Docente
Disciplinas agrupadas por Áreas Científicas
Disciplinas por sub-área da Secção de Inf.
Disciplinas por Secção do DEEC
Plano de Estudos da LEIC
Tópicos do Plano de Estudos da LEIC
Áreas de Conhecimento do CC2001
Unidades de Conhecimento
Unidades de Conhecimento por sub-áreas de secção de Inf.
Unidades de Conhecimento por disciplina
Tópicos de Conhecimento
Tópicos por disciplina