Académique Documents
Professionnel Documents
Culture Documents
Engenharia de Software
Janeiro de 2008
Índice
Introdução......................................................................................................................... 3
1. Importância da Fase de Desenho .................................................................................. 5
2. Alterações Importantes à Fase de Análise.................................................................... 5
4.4. Alunos.................................................................................................................. 41
Conclusão ....................................................................................................................... 50
Bibliografia..................................................................................................................... 51
2
Introdução
Assim, podemos ainda enquadrar esta segunda parte, fase de desenho, na matéria
leccionada na disciplina de Engenharia de Software, como sendo um complemento
integrado da fase de análise de requisitos.
3
Com a finalidade de apresentar uma resolução, para o sistema em causa, procedemos à
utilização duma metodologia adequada, a qual passa, como se pode comprovar a
seguidamente, pela análise aprofundada de algumas fases.
Inicialmente, e como já foi referido, foi criado um primeiro relatório com a fase de
análise, posteriormente houve a necessidade de representar essa fase, com este relatório,
explicitando os cenários identificados nessa fase.
Neste sentido, este documento está incorporado os diagramas de casos de uso, com
algumas alterações introduzidas, nomeadamente a incrementação dum novo caso de uso
designado por “registo”. Estas alterações estão devidamente fundamentadas e
representadas, com o template do respectivo caso de uso, modelo com a principal
função de descrição pormenorizada de todo o processo e aspectos que envolvam os
requisitos funcionais, em questão.
4
1. Importância da Fase de Desenho
A análise de requisitos é uma das fases mais importantes, para muitos autores, é de
facto, a mais importante, para a elaboração e concepção duma aplicação, que satisfaça
os requisitos dos stakeholders e que seja de fácil manutenção. No entanto, a arquitectura
de desenho dum sistema que, é o objectivo principal deste trabalho, é a primeira fase do
desenho da aplicação. O resultado deste processo de planeamento é uma descrição da
arquitectura do software.
5
próprio projecto como foi demonstrado, na fase de análise, aquando dos diagramas de
casos de uso.
Assim, com o objectivo de tirar o máximo proveito da ferramenta, foi gerado, nesta
segunda parte do trabalho, o respectivo documento contendo os diagramas de classes,
bem como os diagramas de sequência. Ficando, por esta razão, este relatório
condicionado ao próprio documento, integrando-lhe apenas pequenas notas
introdutórias de cada capítulo.
6
ud Serv iços Académicos
Gerir contas de
utilizadores
Eliminar cursos
Alterar cursos
«extend»
Criar cursos
«extend» «include»
«extend»
Gerir cursos
Gerir disciplinas
«include»
«extend»
Serv iços Académicos «include»
Criar disciplinas «extend»
«extend» «extend» Autenticação de
utilizador
Alterar disciplinas
Atribuir Eliminar
disciplinas a curso disciplinas
«include»
Backups e «include»
manutenção
Env io de
notificação
Validar inscrições «include»
de recurso
«include»
Registar
«extend»
Gerir pedidos de
rev alidação de
prov as
«extend»
Receber/Validar
pedido
7
2.1.2. Coordenadores
Neste caso, à semelhança dos utilizadores docentes e alunos, optámos por compactar os
dois casos de uso (“Por disciplina” e “Por época”) num só, formando assim, apenas, o
caso de uso “Por disciplina/Por semestre”, onde dá a opção aos utilizadores de
seleccionar ou a disciplina ou o semestre referentes à sua pesquisa.
ud Coordenador
Gerir av aliações
Visualizar
inscrições dos
alunos
Visualizar e
analizar notas «include»
«extend» «include»
Por disciplina/Por
Coordenador semestre
«include»
Autenticação de
utilizador
Lançar notas «include»
«include»
Atribuir
disciplinas a Env io de
docentes «include» notificação
«include»
Idêntificar
responsáv el pelo «include»
lançamento de
Registo
notas
Atribuir
disciplinas a
«include»
semestres
«extend»
«extend»
«extend»
Gerir disciplinas
por
semestre/curso
8
2.1.3. Docentes
ud Docente
Visualizar e analizar
mapas de
Marcar av aliações
av aliações
«extend» «extend»
«extend»
Visualizar
«include»
inscrições dos
alunos Remov er
av aliações
«include»
«include»
Visualizar e
analizar notas
«include» «include»
«include»
«extend» Env io de
Autenticação de notificação
utilizador
Por disciplina/Por
Docente
semestre
«include»
«include»
Lançar notas
Registo
2.1.4. Alunos
Neste caso, também foi previsto a compactação dos dois casos de uso (“Por disciplina”
e “Por época”) num só, formando assim, apenas, o caso de uso “Por disciplina/Por
semestre”, onde dá a opção aos utilizadores de seleccionar ou a disciplina ou o semestre
referentes à sua pesquisa.
9
ud Aluno
«extend» «extend»
Visualizar mapas de
Inscrev er em av aliações
Gerir inscrição em «extend»
av aliações «extend» av aliações
Inscrev er em Remov er
disciplinas inscrição em
disciplinas
«include»
«extend» «extend»
Gerir inscrição em
disciplinas
Aluno «include»
Autenticação de
utilizador
«include»
Visualizar notas
«extend»
Registar
Env io de
Solicita rev isão
notificação
de av aliação «include»
10
Descrição: Permite aos utilizadores, designados por serviços académicos, receber os
pedidos de revalidação de prova, por parte do aluno, bem como validar o respectivo
pedido.
Situações em caso de falha: Poderá haver uma falha na comunicação entre o utilizador
e o servidor, falha do ISP ou da intranet da ESTIG, neste caso deverá tentar mais tarde,
mas se for um problema de servidor, deverá haver um servidor de reserva, para prevenir
eventuais quebras de comunicação.
Deverá haver backups de toda a informação, para que, em caso de falha, seja possível a
recuperação dos dados referentes ao pedido
Constraints
(pre-cond.) - Ser Serviços Académico - Estar registado, no sistema, como sendo um
elemento dos serviços académicos e esse registo deverá estar válido.
(pre-cond.) - Segundo a Lei – A recepção dos pedidos de revalidação deverá seguir os
tramitos legais.
(pre-cond.) - Dados do aluno - O aluno deverá estar registado no sistema e efectuado a
respectiva prova.
(pos-cond.) - Permitir validação - Permitir seleccionar a opção validar pedido de
revalidação de prova.
(pos-cond.) - Aviso de operação concluído – O sistema deverá emitir um aviso, ao
utilizador, que a operação foi realizada com sucesso.
(pos-cond.) – Backups - Efectuar os backups necessários.
Scenarios
Seleccionar receber pedido - O utilizador selecciona a opção receber pedido.
Visualiza listagem de pedidos - O sistema mostra uma listagem dos pedidos de
revalidação de provas.
Selecciona um pedido - Selecciona um pedido aleatório.
Visualizar pedido - Visualiza o pedido efectuado pelo aluno.
Confirmar dados - Confirmar dados do aluno, se realizou a prova e os dados do pedido.
Confirma se não está registado - Confirma se o pedido já foi registado ou não, através
da análise dos dados do pedido.
Regista pedido - Regista a entrada de pedido, caso não esteja registado.
Constitui processo - Constitui o respectivo processo administrativo, para a revalidação
de prova.
Analisar pedido - Analisa os dados do pedido.
Verificar legislação - Verifica a legislação, disponível, que vigora à data de recepção e
análise do pedido.
Deferimento de pedido - Se o pedido estiver segundo a legislação, então o utilizador
valida e defere o pedido e remete resposta, de deferimento, ao aluno e convoca o júri para
a revalidação. Aguarda revalidação
Indeferimento de pedido - Se o pedido não estiver segundo a legislação, então o
utilizador indefere o pedido e remete resposta, de indeferimento, ao aluno e cessa
11
Scenarios
processo.
Pós revalidação - Após a revalidação da prova, obtém o relatório, que arquiva ao
processo, e regista parecer de relatório.
Envia parecer - Envia parecer de revalidação ao aluno.
Arquiva processo - Arquiva o processo de revalidação de prova.
Situações em caso de falha: Poderá haver uma falha na comunicação entre o utilizador
e o servidor, falha do ISP ou da intranet da ESTIG, neste caso deverá tentar mais tarde,
mas se for um problema de servidor, deverá haver um servidor de reserva, para prevenir
eventuais quebras de comunicação.
Caso a nota, do aluno, não exista na pauta, deverá informar o docente
Constraints
(pre-cond.) - Estar registado no sistema - Estar registado, no sistema, como sendo um
coordenador, docente ou aluno, e esse registo deverá estar válido.
Scenarios
Seleccionar visualizar notas por disciplina - O utilizador selecciona a opção visualizar
notas por disciplina.
Selecciona a disciplina ou o semestre - Selecciona a disciplina ou o semestre em causa.
Disponibilização de informação - É fornecida toda a informação relativa às notas das
avaliações, por disciplina, que os alunos realizaram.
Visualizar pedido - É fornecida toda a informação relativa às notas das avaliações, por
disciplina, que os alunos realizaram.
Volta ao menu anterior - Torna ao menu anterior
12
Situações em caso de falha: Poderá haver uma falha na comunicação entre o utilizador
e o servidor, falha do ISP ou da intranet da ESTIG, neste caso deverá tentar mais tarde,
mas se for um problema de servidor, deverá haver um servidor de reserva, para prevenir
eventuais quebras de comunicação.
Constraints
(pre-cond.) - Ser Serviços Académicos Visto só os serviços académicos terem acesso à
gestão de contas de utilizadores, então o utilizador deverá estar registado, bem como
válido, com estas funções, será como um administrador de sistema.
(pre-cond.) - Aluno registado - O aluno deverá estar registados no sistema.
(pre-cond.) - Pagamento da prova - O aluno deverá ter pago a prova antes da
deliberação da execução da mesma.
(pre-cond.) Prazo de execução - O Aluno deverá solicitar a execução da prova, nos
prazos previstos no regulamento.
Scenarios
Abrir aplicação - Acede à aplicação.
Valida dados de acesso - Introduz login e password.
Selecciona o aluno - O sistema uma listagem com os alunos que pretendem inscrever em
provas de recurso
Verifica pagamentos - Permite visualizar o pagamento feito pelo aluno (se pagou ou
não), pois não poderá deferir o pedido se os valores não forem pagos.
Verifica os prazos - Deverá verificar os prazos de entrega do pedido e comparar com os
prazos de realização de prova, previstos no regulamento da ESTIG.
Valida pagamento - Selecciona a opção validar pagamento, a fim de verificar se o aluno
efectuou o pagamento da prova.
Confirma dados - Deverá permitir ao utilizador confirmar dos dados anteriormente
analisados.
Confirmação de operação - Após a conclusão da gestão de disciplinas, a aplicação
deverá emitir um aviso de operação completa com sucesso.
Sair ou continuar - Saí da aplicação, caso não tenha mais assunto a efectuar, ou
selecciona outra opção disponível.
13
Registar (Todos os utilizadores)
Type: UseCase
Situações em caso de falha: Poderá haver uma falha na comunicação entre o utilizador
e o servidor, falha do ISP ou da intranet da ESTIG, neste caso deverá tentar mais tarde,
mas se for um problema de servidor, deverá haver um servidor de reserva, para prevenir
eventuais quebras de comunicação.
Os utilizadores deverão aguardar pela confirmação de registo, enviada por e-mail, por
parte dos Serviços Académicos.
Constraints
(pre-cond.) Estar Inscrito na Instituição - Os utilizadores deverão pertencer à
Instituição, estando inscritos, quer através de contratos, no caso dos funcionários, quer
através da matrícula, no caso dos alunos.
(pos-cond.) - Validação de registo – Permite ao utilizador confirmar o seu registo,
consolidando esse registo com a confirmação por e-mail.
Scenarios
Seleccão de opção de registar - O utilizador selecciona a opção de registar, para ter
acesso ao sistema.
Preenchimento de formulário - O aluno deverá preencher o formulário que deverá estar
disponível no sistema, nomeadamente o login e a password.
Confirma dados - Deverá permitir, ao utilizador, confirmar dos dados do formulário, a
enviar aos serviços académicos.
Notificar os Serviços Académicos - O sistema notifica os serviços académicos, após o
registo.
Recebe e-mail - Deverá receber um e-mail de confirmação de registo, confirmando
assim a permissão de acesso ao sistema.
3. Diagramas de Classes
14
O diagrama de classes está dividido em duas partes, sendo a primeira parte referente às
acções dos utilizadores dos Serviços Académicos e às condições dos Coordenadores, o
segundo está contemplada com as acções dos Docentes, incluindo as do Coordenador no
papel de Docente, e as acções dos Alunos. Facto que justifica a existência de dois
diagramas de classes, neste documento e nos seus anexos. Não sendo possível, por isso,
evitar a duplicação de algumas das classes, no entanto, tentámos juntar todos métodos e
atributos num só representado no primeiro diagrama.
15
cd Diagrama de classes
Dados do utilizador
- email: String
- login: char
- morada: String
- nome_util: String
- password: char
0..* 0..*
+ setPervilégios(char) : void
1..* 1..*
Autenticação
registo AtribuiPrevilégio
EliminarUtilizador enviarNotificação
Aluno
- id_curso: int
- numero_aluno: int
adicionarUtilizador
+ confirmaDados(boolean, boolean) : boolean
+ eliminarAluno(boolean) : void
+ getId_Utilizador() : int 1
+ registar(char, String) : void
+ setAluno() : void
Backup
1 1..* 1
Serv iços_Académicos
1
- id_serviçosAcad: int
1
+ confirmaDados(char, char) : boolean «interface»
+ efectuaBackup() : void Legislacao
+ checkLegislacao() : char
alterarUtilizador
PedidoRevalidação
PedidosRev alidação
+ arquivaPedido() : boolean
1..* + deferirPedido() : boolean
+ listarPedidos() : char
+ registarPedido(int, int) : void
0..*
AdicionarCurso
eliminarCurso RelacionarDisciplinaSemestre
editCurso
Av aliações
+ getIdAvaliacao() : int 1
1..*
1
Curso Semestre
Disciplina
- anoCurso: char AtribuirDisciplinaCurso - anoal: int
- areaCurso: char - idCurso: int - idSemestre: int
1..* 1..*
- idCurso: int - idDisciplina: int - primeiro: int
- nomeCurso: String - nomeDisciplina: String - segundo: int
+ addCurso(String, char, char, int) : boolean 1..* 1..* + addDisciplina(char) : void + relacionarDisciplinasSemestre(int) : void
+ delCurso(int) : void + associarDiscipCurso(int, int) : void 1
+ getIdCurso() : int + delDisciplina(int) : boolean
+ setCurso(int) : void + getAtributos() : char
+ getIdDiscplina() : int 0..*
+ getNomeDisciplina() : String
ValidarInscricaoRecurso + setDisciplina(int) : void
Pagamento Prazo
+ verificaPagamento(int) : void
16
cd Diagrama de classes
Coordenador de Curso
Docente
Este Diagrama de - ID_CoordenaçãoCurso: int
Classes serve de - ID_Curso: int - ID_Curso: int
complemento ao - ID_Disciplina: int - ID_Disciplinas: int
outro diagrama. Inscrever em Avaliação - NomeDocente: String - NomeCoordenadorCurso: String
Av aliação
- NomeCurso: String
- Data: String + ConfirmaDados(void, void) : boolean
- ID_Avaliação: int
- Sala: int
Aluno
+ AlterarAvaliacao(int) : void
- id_curso: int
+ getData() : Strng
- numero_aluno: int
+ getID_Avaliacao() : int
+ getSala() : int
Alterar Inscrição em Avaliação + InscreverAvaliacao() : void
+ MarcarAvaliacao() : void
+ RemoverAvaliacao() : void
+ RevisãoAvaliacao(int) : void
1
+ VerMapaAvaliacao() : void
Envio de Notificações
1..* RemoverAvaliações
Alterar Avaliações
Marcar Avaliações
1
Disciplina
- ID_Disciplina: int
- Nome da disciplina: int
1
+ getID_Disciplina() : int Notificacoes
+ getNomeDisciplina() : String
Visualizar Mapa de Avaliações Nota
+ InscreverEmDisciplina(int) : void + PreencheFormulario() : void
+ RemoveInscricaoDisciplina(int) - ID_Nota: int
- ValorNota: int
+ getID_Nota() : int
+ getValorNota() : int
+ LancarNota(int, int) : void Lançar Notas
Inscrever em Disciplina
Autenticação
VisualizarNotas Semestre
- DescricaoSemestre: String
- ID_Semestre: int
+ getID_Semestre() : int
+ NumeroSemestre() : int
4. Diagramas de Sequências
17
sd Adicionar contas
setRegisto(contacto,email,Morada,nome_utilizador)
criarUtilizador(login,password,morada,idUtilizador,email,nome)
alt registar(numeroAluno,curso)
[ifAluno]
boolean= confirmaDados()
[ifCoordenador] registar(idCoordenador)
boolean= confirmaDados()
[ifDocente] registar(area,idDocente)
boolean= confirmaDados()
boolean= confirmaDados()
sd Alterar contas
setUtilizador()
int= getId_Utilizador()
alt setAluno()
[ifCoordenador] setCoordenador()
boolean= confirmaDados()
[ifDocente] setDocente()
boolean= confirmaDados()
setUtilizador()
boolean= confirmaDados()
18
sd Alterar cursos
«interface» Diagrama de
Diagrama de classes::Curso
Serviços Académicos classes::Legislacao
editCurso
setCurso(idCurso)
char=
checkLegislacao()
setCurso(idCurso)
boolean= confirmaDados()
sd Alterar disciplinas
Diagrama de
classes::Disciplina
Serviços Académicos
AlterarDisciplina
setDisciplina(idDisciplina)
boolean= confirmaDados()
19
sd Atribuir disciplinas a curso
Diagrama de Diagrama de
classes::Curso classes::Disciplina
Serviços Académicos
AtribuirDisciplinaCurso
atribuirDisciplinaCurso(atributos)
getIdCurso()
[ifCursoExiste]
alt
associarDiscipCurso(idDisciplina,idCurso)
[ifDiscExiste]
confirmaDados()
[ifDiscNotExiste]
ref Criar disciplinas
[ifCursoNotExiste]
ref Criar cursos
20
sd Atribuir/Alterar priv ilégios
Diagrama de Diagrama de
classes::Dados do classes::Previlégios
utilizador
Serviços Académicos
AtribuiPrev ilégio
atribuirPrivilégios()
int= getId_Utilizador()
[Se não]
ref
Adicionar contas
21
Diagrama: Autenticação de Utilizador
sd Autenticação de utilizador
Diagrama de
classes::Serviços_Académicos
Serviços Académicos
Autenticação
confirmaDados(password,login)
alt Registado
[Ok] alt Permite Acesso()
[ifDataCorrect]
Tem Acesso
[ifDataNotCorrect]
SolicitaConfirmacaoDados
Permite Acesso()
Tem Acesso
[ifDataStillIncorrect]
recuperarPassword()
[NotOk]
Solicita Registo
ref Registar
22
Diagrama: Backups e Manutenção
sd Backups e manutenção
Diagrama de
classes::Serviços_Académicos
Serviços Académicos
Backup
ref
Autenticação de utilizador
genBackup()
efectuaBackup()
boolean= confirmaDados()
sd Criar cursos
«interface» Diagrama de
Diagrama de classes::Curso
Serviços Académicos classes::Legislacao
AdicionarCurso
addCurso(areacurso,anoCurso,nomeCurso,idCurso)
char= checkLegislacao()
addCurso(nomeCurso,anoCurso,areaCurso,idCurso)
true= confirmacaoDados()
23
Diagrama: Criar Disciplinas
sd Criar disciplinas
Diagrama de Diagrama de
classes::Curso classes::Disciplina
Serviços Académicos
CriarDisciplinas
criarDisciplina(parametros)
getIdCurso()
alt addDisciplina(atributos)
[ifCursoExiste]
ref Atribuir disciplinas a curso
boolean= confirmarDados()
[ifCursoNotExiste]
ref Criar cursos
sd Eliminar cursos
«interface» Diagrama de
Diagrama de classes::Curso
Serviços Académicos classes::Legislacao
eliminarCurso
delCurso(idCurso)
checkLegislacao()
delCurso(idCurso)
boolean= confirmaDados()
24
Diagrama: Eliminar Disciplinas
sd Eliminar disciplinas
Diagrama de
classes::Disciplina
Serviços Académicos
eliminarDiciplina
delDisciplina(idDisciplina)
delDisciplina(idDisciplina)
true= confirmarDados()
sd Env io de notificação
Diagrama de
classes::Notificacoes
Serviços Académicos
env iarNotificação
envioNotificacao()
preencheFurmulario()
boolean= confirmaDados()
25
Diagrama: Receber/Validar Pedido
sd Receber/Validar pedido
char= getPedidos()
char= listarPedidos()
int= getIdAvaliacao()
alt
registarPedido(idAluno,idAvaliacao)
[if not regist]
boolean= confirmaDados()
[ifNotDeferido]
false= deferirPedido()
true= notifica(email,idUtilizador)
true= arquivaPedido()
sd remov erUtilizadores
delRegisto(idUtilizador)
int= getId_Utilizador()
alt delUtilizador(BI)
[ifAluno]
boolean= confirmaDados()
delUtilizador(BI)
[ifCoordenador]
boolean= confirmaDados()
[ifDocente] delUtilizador(BI)
boolean= confirmaDados()
delRegisto(idUtilizador)
26
Diagrama: Validar Inscrições de Recurso
ValidaInscricaoRecurso()
int= getId_Utilizador()
boolean= verificaPagamento(idPagamento)
getIdPrazo()
alt Prazo
confirmaDados()
[Ok]
ValidaInscricaoRecurso()
[NotOk]
Fora de Prazo
[NotOk]
EfectuarPagamento
27
4.2. Coordenadores
sd Alterar av aliações
:Disciplina :Avaliação
Coordenador
:Alterar
Avaliações
ref
Autenticação de utilizador
AlterarAvaliacao(ID_Avaliacao,ID_Disciplina)
int= getID_Disciplina()
AlterarAvaliacao(ID_Avaliacao)
boolean= ConfirmarDados()
ref
Env io de notificação
Diagrama de Diagrama de
classes::Disciplina classes::Docente
Coordenador
AtribuirDiscDocente
ref
Autenticação de utilizador
atribuirDisciplinaDocente(idDisciplina,idDocente)
int= getIdDiscplina()
String= listaDisciplina()
int= getIDocente()
String= listaDocentes()
alt
String= acossiatDocentDisciplina(idDisciplina)
[ifDocentAndDisciplinaCreat]
[ifNotDocentAndDisciplinaCreat]
28
Diagrama: Atribuir Disciplinas a Semestres
Diagrama de Diagrama de
classes::Disciplina classes::Semestre
Coordenador
RelacionarDisciplinaSemestre
RelacionarDisciplinaSemestre(idSemestre,idDisciplina)
int= getIdDiscplina()
relacionarDisciplinasSemestre(idDisciplina)
boolean= confirmarDados()
29
sd Autenticação de utilizador
Diagrama de
classes::Coordenador
Coordenador
Autenticação
realiza autenticação(login, password)
confirmaDados(password,login)
alt Registado
[Ok]
alt Permite Acesso()
[ifDataCorrect]
TemAcesso
[ifDataNotCorrect]
SolicitaDados
Permite Acesso()
TemAcesso
[ifStillIncorrect] recuperarPassword()
[NotOk]
ref Registo
SolicitaRegisto
sd Env io de notificação
Diagrama de
classes::Notificacoes
Coordenador
env iarNotificação
envioNotificacao()
preencheFurmulario()
boolean= confirmaDados()
30
Diagrama: Identificar Responsável pelo Lançamento de notas
Diagrama de Diagrama de
classes::Disciplina classes::Docente
Coordenador
IDResponsNotas
identificarResponsavelNotas(idDocente)
int= getIdDiscplina()
int= getIDocente()
boolean= responsavelLancamentoNotas()
boolean= confirmarDados()
sd Lançar notas
Coordenador
:Lançar Notas
ref Autenticação de utilizador
int= LancarNotas(ValorNota,ID_Avaliacao,ID_Disciplina)
int= getID_Disciplina()
int= getID_Avaliacao()
alt Av aliacaoRealizada
[Ok] LancarNota(ValorNota,ID_Nota)
boolean= ConfirmarDados()
[NotOk]
NaoPermiteLacarNota
31
Diagrama: Marcar Avaliações
sd Marcar av aliações
:Disciplina :Avaliação
Coordenador
:Marcar
Av aliações
MarcarAvaliacao(ID_Disciplina,ID_Avalliacao)
int= getID_Disciplina()
MarcarAvaliacao()
boolean= ConfirmarDados()
ref
Envio de notificação
sd VisualizarNotas
Coordenador
VisualizarNotas
ListarNotasDisciplina(ID_Disciplina)
alt seleccao
[Por Disciplina] ref Por disciplina
[Por semestre]
32
sd Por semestre
ListarNotasSemestre(idSemestre)
int= getID_Semestre()
int= getID_Avaliacao()
ListarNotasSemestre(idSemestre)
[NotOk]
NotInscrito
sd Por disciplina
ListarNotasDisciplina(ID_Disciplina)
int= getID_Disciplina()
alt inscritoDisciplina
int= getID_Avaliacao()
[Ok]
ListarNotasDisciplina(ID_Disciplina)
[NotOk]
NotInscrito
[NotOk]
NotInscrito
33
Diagrama: Registo
sd Registo
Diagrama de Diagrama de
classes::Coordenador classes::Serviços_Académicos
Coordenador
registo
Permitir registo(idMatricula,contacto,email,Morada,Bi,id_aluno,nome)
registar(area,idDocente)
[NotOk]
false= permitirAcesso(password,login)
sd Remov er av aliações
:Disciplina :Avaliação
Coordenador
:Remov erAv aliações
RemoverAvaliacao(ID_Avaliacao,ID_Disciplina)
int= getID_Disciplina()
RemoverAvaliacao()
boolean= ConfirmarDados(ID_Avaliacao)
34
Diagrama: Visualizar e Analisar Mapas de Avaliações
:Disciplina :Avaliação
Coordenador
:Visualizar Mapa
de Av aliações
VisualizarMapaAvaliacoes(ID_Disciplina,ID_Avaliacao)
int= getID_Disciplina()
int= getID_Avaliacao()
String= ListarMapaAvaliacoes(ID_Avaliacao,Sala,Data)
:Disciplina :Avaliação
Coordenador
:Visualizar
Inscrições dos
ref Alunos
Autenticação de utilizador
VisualizarInscricoesAlunos(ID_Avaliacao,ID_Disciplina)
int= getID_Disciplina()
int= getID_Avaliacao()
String= ListarMapaInscricoesAlunos(ID_Avaliacao,ID_Disciplina,NumeroAluno,NomeAluno)
4.3. Docentes
35
sd Alterar av aliações
:Disciplina :Avaliação
Docente
:Alterar
Av aliações
ref
Autenticação de utilizador
AlterarAvaliacao(ID_Avaliacao,ID_Disciplina)
int= getID_Disciplina()
AlterarAvaliacao(ID_Avaliacao)
boolean= ConfirmarDados()
sd Autenticação de utilizador
Diagrama de
classes::Docente
Docente
Autenticação
realiza autenticação(login, password)
confirmaDados(password,login)
alt Registado
[Ok]
alt
Permite Acesso()
[ifDataCorrect]
TemAcesso
[ifDataNotCorrect]
SolicitaDados
[ifDataStillIncorrect] recuperarPassword()
[NotOk]
SolictaRegisto
ref Registo
36
Diagrama: Envio de Notificação
sd Env io de notificação
:Notificacoes
Docente
:Env io de
Notificações
EnvioNotificacao()
PreencheFormulario()
boolean= ConfirmarDados()
sd Lançar notas
Docente
:Lançar Notas
ref
Autenticação de utilizador
int= LancarNotas(ValorNota,ID_Avaliacao,ID_Disciplina)
int= getID_Disciplina()
int= getID_Avaliacao()
boolean= ConfirmarDados()
[NotOk]
Não Permite Lançar Nota
37
Diagrama: Marcar Avaliações
sd Marcar av aliações
:Disciplina :Avaliação
Docente
:Marcar
Av aliações
ref Autenticação de utilizador
MarcarAvaliacao(ID_Disciplina,ID_Avalliacao)
int= getID_Disciplina()
MarcarAvaliacao()
boolean= ConfirmarDados()
sd Visualizar notas
Docente
VisualizarNotas
ref Autenticação de utilizador
ListarNotasDisciplina(ID_Disciplina)
alt seleccao
[PorDisciplina] ref Por Disciplina
[PorSemestre]
ref Por Semestres
38
sd Por Semestres
ListarNotasSemestre(idSemestre)
int= getID_Semestre()
int= getID_Avaliacao()
ListarNotasSemestre(idSemestre)
[NotOk]
NotInscrito
sd Por Disciplina
ListarNotasDisciplina(ID_Disciplina)
int= getID_Disciplina()
alt inscritoDisciplina
int= getID_Avaliacao()
[Ok]
int= getID_Nota()
ListarNotasDisciplina(ID_Disciplina)
NotInscrito
[NotOk]
NotInscrito
39
Diagrama: Registo
sd Registo
Diagrama de Diagrama de
classes::Docente classes::Serviços_Académicos
Docente
registo
Permitir registo(idMatricula,contacto,email,Morada,Bi,id_aluno,nome)
registar(area,idDocente)
alt Inscrito
[Ok] boolean= confirmaDados(password,login)
true= permitirAcesso(password,login)
[NotOk]
false= permitirAcesso(password,login)
sd Remov er av aliações
:Disciplina :Avaliação
Docente
:Remov erAv aliações
RemoverAvaliacao(ID_Avaliacao,ID_Disciplina)
int= getID_Disciplina()
RemoverAvaliacao()
boolean= ConfirmarDados(ID_Avaliacao)
40
Diagrama: Visualizar e Analisar Mapas de Avaliações
:Disciplina :Avaliação
Docente
:Visualizar Mapa
de Av aliações
VisualizarMapaAvaliacoes(ID_Disciplina,ID_Avaliacao)
int= getID_Disciplina()
int= getID_Avaliacao()
String= ListarMapaAvaliacoes(ID_Avaliacao,Sala,Data)
:Disciplina :Avaliação
Docente
:Visualizar
Inscrições dos
ref Alunos
Autenticação de utilizador
VisualizarInscricoesAlunos(ID_Avaliacao,ID_Disciplina)
int= getID_Disciplina()
int= getID_Avaliacao()
String= ListarMapaInscricoesAlunos(ID_Avaliacao,ID_Disciplina,NumeroAluno,NomeAluno)
4.4. Alunos
41
sd Alterar inscrição em av aliações
:Disciplina :Avaliação
Aluno
:Alterar Inscrição
em Av aliação
ref
Autenticação de utilizador
AlterarInscricaoAvaliacao(ID_Disciplina,ID_Avaliacao)
int= getID_Disciplina()
alt
[InscritoDisciplina] alt
AlterarAvaliacao(ID_Avaliacao)
[inscritAvaliacao]
boolean= ConfirmaDados(ID_Avaliacao)
[notInscrito]
ref Inscrev er em av aliações
[NotInscritoDisciplina]
ref Inscrev er em disciplinas
42
sd Autenticação de utilizador
:Aluno
Aluno
Autenticação
alt registo
[Se registado] alt login Permite Acesso()
[Se dados correctos]
Tem Acesso
Permite Acesso()
Tem acesso
ref
Registar
sd Env io de notificação
:Notificacoes
Aluno
:Env io de
Notificações
EnvioNotificacao()
PreencheFormulario()
boolean= ConfirmarDados()
43
Diagrama: Inscrever em Avaliações
sd Inscrev er em av aliações
Diagrama de Diagrama de
classes::Disciplina classes::Avaliação
Aluno
Inscrever em
Av aliação
ref
Autenticação de utilizador
InscreverAvaliacao(ID_Avaliacao,ID_Disciplina)
int= getID_Disciplina()
alt MatricDisciplina
[OK]
InscreverAvaliacao()
boolean= ConfirmaDados()
[NOT OK]
ref
Inscrev er em disciplinas
44
Diagrama: Inscrever em Disciplinas
sd Inscrev er em disciplinas
:Disciplina
Aluno
:Inscrever em
Disciplina
ref
Autenticação de utilizador
InscreverDisciplina(ID_Disciplina)
String= ListarDisciplinas(NomeDisciplina)
int= getID_Disciplina()
InscreverEmDisciplina(ID_Disciplina)
boolean= ConfirmarDados()
45
sd Visualizar notas
Aluno
VisualizarNotas
ref
Autenticação de utilizador
ListarNotasDisciplina(ID_Disciplina)
alt seleccao
[Por disciplina]
[Por semestre]
ref
Por semestre
sd Por semestre
ListarNotasSemestre(idSemestre)
int= getID_Semestre()
int= getID_Avaliacao()
alt inscritoDisciplina
[Ok] int= getID_Nota()
ListarNotasSemestre(idSemestre)
[NotOk]
NotInscrito
46
sd Por disciplina
ListarNotasDisciplina(ID_Disciplina)
int= getID_Disciplina()
alt inscritoDisciplina
[Ok] int= getID_Avaliacao()
ListaDisciplinas()
[NotOk]
NaoInscrito
[NotOk]
NaoInscrito
Diagrama: Registar
sd Registar
Diagrama de Diagrama de
classes::Aluno classes::Serviços_Académicos
Aluno
registo
Permitir registo(idMatricula,contacto,email,Morada,Bi,id_aluno,nome)
registar(numeroAluno,curso)
alt Matrícualdo
boolean= confirmaDados(password,login)
[se matríc.]
true= permitirAcesso(password,login)
47
Diagrama: Remover Inscrição em Avaliações
:Disciplina :Avaliação
Aluno
:Remov er
Inscricao em
Av aliação
RemoverInscricaoAvaliacao(ID_Disciplina,ID_Avaliacao)
int= getID_Disciplina()
boolean= ConfirmarDados(ID_Avaliacao)
[NotOk]
NaoInscritoAvaliacao
[NtoOk]
NaoInscritoDisciplina
:Disciplina
Aluno
:Remov er
Inscrição em
Disciplina
ref
Autenticação de utilizador
RemoverInscricaoDisciplina(ID_Disciplina)
int= getID_Disciplina()
[NotOk]
NaoInscrito
48
Diagrama: Solicita Revisão de Avaliação
:Disciplina :Avaliação
Aluno
:Solicitar Rev isão
de Av aliação
SolicitarRevisaoProva(ConfirmarDados,SolicitacaoRevisaoProva,PreencherFormulario)
int= getID_Disciplina()
[NotOk]
NaoInscritoAvaliacao
[NotOk]
NaoInscritoDisciplina
:Disciplina :Avaliação
Aluno
:Visualizar Mapa
de Av aliações
VisualizarMapaAvaliacoes(ID_Disciplina,ID_Avaliacao)
int= getID_Disciplina()
alt InscritoDisciplina
int= getID_Avaliacao()
[Ok]
String= ListarMapaAvaliacoes(ID_Avaliacao,Sala,Data)
[NotOk]
ref Inscrev er em disciplinas
49
Conclusão
Sugerimos então que, em trabalhos futuros, seja proporcionado uma interacção, mais
directa, entre os stakeholders, com o objectivo de minimizar a dificuldade, do estudo, de
obtenção de requisitos, para se obter um sistema com melhor sucesso. Esta dificuldade
já fora sentida na primeira fase, respeitante à fase de análise.
Deixa-mos ainda, como sugestão, para um projecto futuro, uma simplificação da actual
situação, do elevado números de plataformas existentes na ESTIG, em Beja, para uma
só que implemente todas as funcionalidades existentes, evitando assim que, por
exemplo, um aluno, para obter informações sobre os seus dados de matrícula, tenha que
efectuar vários logins. Bastando realizar apenas um, para ter acesso ao leque de dados
que existem actualmente disponíveis, evitando assim a memorização, por parte do
utilizador, de vários códigos de acesso e várias palavras-chave.
50
Bibliografia
51