Anexo 1 Especificação do Sistema em SDL
Este anexo contém a especificação
formal do sistema proposto em SDL (Specification and Description Language).
Segundo [TRI 92], o propósito desta linguagem é prover uma
especificação e descrição dos sistemas de telecomunicações
de forma não ambígua.
O SDL possui duas formas de representação
dos sistemas: uma forma textual (SDL/PR) e outra gráfica (SDL/GR).
A forma escolhida para representar este sistema foi a SDL/GR (Graphical
Representation). Ambas formas são equivalentes.
A proposta da SDL é descrever o comportamento real
do sistema independentemente da linguagem utilizada na implementação.
O sistema possui um grande bloco que comunica-se com o
ambiente externo através de cinco canais bidirecionais. A figura
A.1 apresenta a especificação do sistema Proxy.
FIGURA A.1 - Especificação do sistema
Proxy em SDL
A figura A.2 apresenta uma descrição geral
da Proxy Servlet. Em sua inicialização, cria-se uma
conexão com o banco de dados. A seguir, a servlet fica ociosa
à espera de uma requisição. No momento em que chega
uma requisição, a servlet verifica qual a operação
envolvida e chama a função correspondente.
FIGURA A.2 - Descrição
geral da Proxy Servlet
Se a operação selecionada for o login(),
o sistema cria um cookie para usar no controle de sessões.
A seguir, verifica se o programa de checagem randômica está
ativo no computador do aluno. Este programa captura fotos em tempos aleatórios
através de uma câmera digital e envia ao servidor remoto para
posterior conferência. A seguir, verifica-se qual o tipo de autenticação
que está sendo usada: biométrica ou através de senhas.
Se a autenticação for válida, o sistema busca uma
pergunta de forma aleatória no banco de dados e retorna uma página
contendo este desafio. Em seguida, encerra a rotina e volta a esperar uma
nova requisição. A figura A.3 apresenta a descrição
do procedimento Login().
FIGURA A.3 - Descrição
do procedimento Login()
Quando a operação for pergunta randômica(),
o
sistema verifica primeiramente se o cookie da sessão é
novo. Se não for, ele recupera o cookie identificador da
sessão e confere a resposta da pergunta randômica. Se ela
for válida, o sistema seta um flag de autenticação
completa e verifica o tipo de pessoa que está acessando o sistema,
retornando a devida página inicial. A seguir, volta a esperar uma
nova requisição. A figura A.4 apresenta a descrição
do procedimento Pergunta Randômica().
FIGURA A.4 - Descrição
do procedimento Pergunta Randômica()
FIGURA A.5 - Descrição
do procedimento Navegação Dinâmica()
No procedimento de navegação dinâmica(),
o sistema testa se o cookie do controle de sessão é
novo. Se não for, verifica o flag que indica se a autenticação
está completa. Caso estiver, ele abre uma conexão URL com
o servidor WWW destino, busca e modifica os links da página
enviando-a ao usuário. A seguir, fecha a conexão URL e armazena
informações sobre a seqüência de navegação
que está sendo realizada pelo aluno e alguns dados adicionais da
página utilizada. Após, volta a esperar uma nova requisição.
A figura A.5 apresenta a descrição do procedimento Navegação
Dinâmica().
FIGURA A.6 - Descrição
do procedimento Encerrar Sessão()
No procedimento de encerrar sessão(), o sistema
testa se o cookie do controle de sessão é novo. Se
não for, gera um relatório da sessão, apresentando
dados do usuário, curso, tempo decorrido e seqüência
de navegação da sessão corrente. Após, grava
o log de informações da sessão no banco de
dados. Em seguida, fecha a sessão corrente e invalida o cookie
de controle de sessão. Por fim, cria o perfil do aluno nesta sessão
e chama o procedimento de geração de alertas. A figura A.6
apresenta a descrição do procedimento Encerrar Sessão().
O procedimento geração de alertas() verifica
se o perfil do aluno na sessão está de acordo com o perfil
do aluno ao longo de todo o curso. Se não estiver, gera e envia
uma mensagem alertando o professor. A figura A.7 apresenta a descrição
do procedimento Geração de Alertas().
FIGURA A.7 - Descrição
do procedimento Geração de Alertas()
Anexo 2 Modelo de Dados do
Sistema
Este anexo contém o diagrama entidade-relacionamento
assim como a descrição de todas as tabelas utilizadas pelo
sistema.
FIGURA
B.1 - Diagrama de entidade-relacionamento
TABELA B.1 – Tabela PESSOAS
Tabela PESSOAS
|
Nome do Campo
|
Tipo
|
Requerido
|
Chave Primária
|
id_pessoa |
VARCHAR(10)
|
Sim
|
X
|
nome |
VARCHAR(30)
|
Sim
|
|
email |
VARCHAR(50)
|
Sim
|
|
senha |
VARCHAR(32)
|
Sim
|
|
tipo |
VARCHAR(10)
|
Sim
|
|
TABELA B.2 – Tabela PERGUNTAS
Tabela PERGUNTAS
|
Nome do Campo
|
Tipo
|
Requerido
|
Chave Primária
|
cod_pergunta |
INTEGER
|
Sim
|
X
|
descricao |
VARCHAR(80)
|
Sim
|
|
TABELA B.3 – Tabela RESPOSTAS
Tabela RESPOSTAS
|
Nome do Campo
|
Tipo
|
Requerido
|
Chave Primária
|
id_pessoa |
VARCHAR(10)
|
Sim
|
X
|
cod_pergunta |
INTEGER
|
Sim
|
X
|
resposta |
VARCHAR(50)
|
Sim
|
|
TABELA B.4 – Tabela CURSOS
Tabela CURSOS
|
Nome do Campo
|
Tipo
|
Requerido
|
Chave Primária
|
id_curso |
VARCHAR(10)
|
Sim
|
X
|
descricao |
VARCHAR(150)
|
Sim
|
|
url |
VARCHAR(150)
|
Sim
|
|
id_prof |
VARCHAR(10)
|
Sim
|
|
TABELA B.5 – Tabela MATRICULAS
Tabela MATRICULAS
|
Nome do Campo
|
Tipo
|
Requerido
|
Chave Primária
|
id_curso |
VARCHAR(10)
|
Sim
|
X
|
id_aluno |
VARCHAR(10)
|
Sim
|
X
|
TABELA B.6 – Tabela SESSOES
Tabela SESSOES
|
Nome do Campo
|
Tipo
|
Requerido
|
Chave Primária
|
id_sessao |
VARCHAR(50)
|
Sim
|
X
|
id_pessoa |
VARCHAR(10)
|
Sim
|
|
id_curso |
VARCHAR(10)
|
Sim
|
|
dt_inicio |
VARCHAR(10)
|
Sim
|
|
hora_inicio |
INTEGER
|
Sim
|
|
dt_fim |
VARCHAR(10)
|
Sim
|
|
hora_fim |
INTEGER
|
Sim
|
|
ip_cliente |
VARCHAR(15)
|
Sim
|
|
agente_usuario |
VARCHAR(150)
|
Sim
|
|
duracao_sessao |
INTEGER
|
Sim
|
|
discado |
CHAR(1)
|
Sim
|
|
dns_cliente |
VARCHAR(50)
|
Sim
|
|
TABELA B.7 – Tabela PAGINAS
Tabela PAGINAS
|
Nome do Campo
|
Tipo
|
Requerido
|
Chave Primária
|
id_sessao |
VARCHAR(50)
|
Sim
|
|
url |
VARCHAR(150)
|
Sim
|
|
titulo |
VARCHAR(50)
|
Sim
|
|
dt_inicio |
VARCHAR(10)
|
Sim
|
|
hora_inicio |
INTEGER
|
Sim
|
|
tamanho_pagina |
INTEGER
|
Sim
|
|
tempo_leitura |
INTEGER
|
Sim
|
|
taxa_leitura |
FLOAT(10,2)
|
Sim
|
|
TABELA B.8 – Tabela AUTENTICACOES
Tabela AUTENTICADORES
|
Nome do Campo
|
Tipo
|
Requerido
|
Chave Primária
|
id_sessao |
VARCHAR(50)
|
Sim
|
X
|
id_pessoa |
VARCHAR(10)
|
Sim
|
X
|
id_curso |
VARCHAR(10)
|
Sim
|
X
|
TABELA B.9 – Tabela PERFIS
Tabela PERFIS
|
Nome do Campo
|
Tipo
|
Requerido
|
Chave Primária
|
id_pessoa |
VARCHAR(10)
|
Sim
|
X
|
horario_media |
FLOAT(10,2)
|
Sim
|
|
horario_desvio |
FLOAT(10,2)
|
Sim
|
|
duracao_sessao_media |
FLOAT(10,2)
|
Sim
|
|
duracao_sessao_desvio |
FLOAT(10,2)
|
Sim
|
|
taxa_leitura_media |
FLOAT(10,2)
|
Sim
|
|
taxa_leitura_desvio |
FLOAT(10,2)
|
Sim
|
|
numero_sessoes |
INTEGER
|
Sim
|
|
TABELA B.10 – Tabela
CONTADORES
Tabela CONTADORES
|
Nome do Campo
|
Tipo
|
Requerido
|
Chave Primária
|
id_pessoa |
VARCHAR(10)
|
Sim
|
X
|
cont_segunda |
INTEGER
|
Sim
|
|
cont_terca |
INTEGER
|
Sim
|
|
cont_quarta |
INTEGER
|
Sim
|
|
cont_quinta |
INTEGER
|
Sim
|
|
cont_sexta |
INTEGER
|
Sim
|
|
cont_sabado |
INTEGER
|
Sim
|
|
cont_domingo |
INTEGER
|
Sim
|
|
TABELA B.11 – Tabela AGENTES
Tabela AGENTES
|
Nome do Campo
|
Tipo
|
Requerido
|
Chave Primária
|
id_pessoa |
VARCHAR(10)
|
Sim
|
X
|
agente_usuario |
VARCHAR(150)
|
Sim
|
X
|
frequencia |
INTEGER
|
Sim
|
|
TABELA B.12 – Tabela
IPS
Tabela IPS
|
Nome do Campo
|
Tipo
|
Requerido
|
Chave Primária
|
id_pessoa |
VARCHAR(10)
|
Sim
|
X
|
ip_cliente |
VARCHAR(15)
|
Sim
|
X
|
dns_cliente |
VARCHAR(50)
|
Sim
|
|
frequencia |
INTEGER
|
Sim
|
|
discado |
CHAR(1)
|
Sim
|
|
TABELA B.13 – Tabela
ALERTAS
Tabela ALERTAS
|
Nome do Campo
|
Tipo
|
Requerido
|
Chave Primária
|
id_prof |
VARCHAR(15)
|
Sim
|
X
|
enviar_email |
CHAR(1)
|
Sim
|
|
nro_sessoes_inicial |
INTEGER
|
Sim
|
|
horario_conexao |
CHAR(1)
|
Sim
|
|
duracao_sessao |
CHAR(1)
|
Sim
|
|
taxa_leitura |
CHAR(1)
|
Sim
|
|
frequencia_dias |
INTEGER
|
Sim
|
|
frequencia_ferramentas |
INTEGER
|
Sim
|
|
frequencia_agentes |
INTEGER
|
Sim
|
|
frequencia_ips |
INTEGER
|
Sim
|
|
Anexo 3 Diagrama de Classes
do Sistema
Este anexo apresenta o diagrama de classes do sistema,
desenvolvido com a ferramenta Rational Rose, utilizando a notação
UML (Unified Modeling Language). Também são apresentadas
as classes utilizadas no sistema.
FIGURA
C.1 - Diagrama de Classes do sistema
As classes acima
estruturam-se em quatro pacotes: Proxy.Autenticacão, Proxy.Database,
Proxy.Sessão e Proxy.Perfil. A figura C.2 apresenta a estrutura
das classes.
FIGURA
C.2 - Estrutura dos pacotes e classes
O pacote Proxy.Autenticação contém três
classes: C_Autenticacao, C_Navegacao e C_Autent_Session, as quais são
apresentadas respectivamente nas figuras C.3, C.4 e C.5. Estas classes
são responsáveis pelas funções de autenticação
e navegação dinâmica.
FIGURA
C.3 - Classe C_Autenticacao
FIGURA
C.4 - Classe C_Navegacao
FIGURA
C.5 - Classe C_AutentSession
O pacote Proxy.Database contém a classe C_DB e é
apresentada na figuras C.6. Esta classe é responsável pela
conexão e operações no banco de dados.
FIGURA
C.6 - Classe C_DB
O pacote Proxy.Perfil contém a classe C_Perfil e é
apresentada na figuras C.7. Esta classe é responsável pela
geração do perfil do usuário e pelo envio de alertas.
FIGURA
C.7 - Classe C_Perfil
O pacote Proxy.Sessão contém duas classes:
C_Sessao e C_Pagina, as quais são apresentadas respectivamente nas
figuras C.8 e C.9. Estas classes são responsáveis pelas funções
de controle de sessão e pelos logs do sistema.
FIGURA
C.8 - Classe C_Sessao
FIGURA
C.9 - Classe C_Pagina
A classe ProxyServlet é a principal classe do sistema,
responsável pelo recebimento das requisições através
dos métodos doGet() e doPost() e pela realização das
devidas operações. Além disso, a função
init() cria a conexão com o banco de dados. A classe ProxyServlet
é apresentada na figura C.10.
FIGURA
C.10 - Classe ProxyServlet