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