TCC_Algebra Relacional_Renato_FINAL

Propaganda
UNIVERSIDADE DO VALE DO ITAJAÍ
CENTRO DE CIÊNCIAS TECNOLÓGICAS DA TERRA E DO MAR
CURSO DE CIÊNCIA DA COMPUTAÇÃO
SISTEMA PARA APOIO A APRENDIZAGEM DE ÁLGEBRA
RELACIONAL
Área de Banco de Dados
por
Renato Vidal Kinaipp
Adriana Gomes Alves, M. Eng.
Orientadora
Itajaí (SC), junho de 2009
UNIVERSIDADE DO VALE DO ITAJAÍ
CENTRO DE CIÊNCIAS TECNOLÓGICAS DA TERRA E DO MAR
CURSO DE CIÊNCIA DA COMPUTAÇÃO
SISTEMA PARA APOIO A APRENDIZAGEM DE ÁLGEBRA
RELACIONAL
Área de Banco de Dados
por
Renato Vidal Kinaipp
Relatório apresentado à Banca Examinadora do
Trabalho de Conclusão do Curso de Ciência da
Computação para análise e aprovação.
Orientadora: Adriana Gomes Alves, M. Eng.
Itajaí (SC), junho de 2009
AGRADECIMENTOS
Agradeço em primeiro lugar a Deus que durante toda essa caminhada iluminou o meu caminho e
me deu força de vontade para nunca desistir.
Aos meus pais, Eloy Vidal Kinaipp e Maria Lúcia Kinaipp, por toda a educação que tornaram a
pessoa que sou e por toda confiança. E ao meu irmão, Rubens, por todo apoio e companheirismo.
Ao professor André Luís Alice Raabe pelo auxílio no desenvolvimento do compilador que teve
grande importância no funcionamento do sistema.
A minha orientadora Adriana Gomes Alves, pela orientação durante este ano de trabalho, com
diversas contribuições e cobranças que tornaram possível a realização deste trabalho.
Ao meu amigo Romero Piske, pelo auxílio na utilização do ambiente de desenvolvimento Microsoft
Visual Studio 2008.
A todas as pessoas, professores, avaliadores e amigos que de certa forma apoiaram e contribuíram
para a realização deste projeto.
ii
SUMÁRIO
LISTA DE ABREVIATURAS................................................................... v
LISTA DE FIGURAS................................................................................vi
LISTA DE TABELAS .............................................................................viii
RESUMO....................................................................................................ix
ABSTRACT................................................................................................. x
1 INTRODUÇÃO ...................................................................................... 1
1.1 PROBLEMATIZAÇÃO ..................................................................................... 3
1.1.1 Formulação do Problema ................................................................................. 3
1.1.2 Solução Proposta ............................................................................................... 3
1.2 OBJETIVOS ........................................................................................................ 4
1.2.1 Objetivo Geral ................................................................................................... 4
1.2.2 Objetivos Específicos ........................................................................................ 4
1.3 METODOLOGIA................................................................................................ 4
1.4 ESTRUTURA DO TRABALHO ....................................................................... 5
2 FUNDAMENTAÇÃO TEÓRICA ........................................................ 7
2.1 BANCO DE DADOS ........................................................................................... 7
2.1.1 Modelo Relacional............................................................................................. 7
2.1.2 Linguagens de Consulta ................................................................................... 8
2.2 COMPILADORES ............................................................................................ 17
2.2.1 Processo de Tradução do Compilador .......................................................... 18
2.2.2 Tratador de Erros ........................................................................................... 20
2.3 FERRAMENTAS SIMILARES....................................................................... 20
2.3.1 Interactive Data Flow Query Language ....................................................... 21
2.3.2 Ferramenta para o Ensino de Álgebra Relacional ...................................... 23
2.3.3 Comparativo .................................................................................................... 25
3 PROJETO ............................................................................................. 26
3.1 ANÁLISE DE REQUISITOS........................................................................... 26
3.1.1 Requisitos Funcionais ..................................................................................... 26
3.1.2 Requisitos Não Funcionais ............................................................................. 27
3.1.3 Regras de Negócio ........................................................................................... 28
3.2 DIAGRAMAS DE CASOS DE USO ............................................................... 29
3.2.1 PCT01. Controle de Usuários ........................................................................ 29
3.2.2 PCT02. Controle do Professor ....................................................................... 33
3.2.3 PCT03. Controle do Site................................................................................. 37
3.3 DIAGRAMA DE CLASSE ............................................................................... 38
3.4 MÉTODO DE CORREÇÃO DA ÁLGEBRA RELACIONAL .................... 38
4 IMPLEMENTAÇÃO........................................................................... 40
iii
4.1
4.2
4.3
4.4
MICROSOFT VISUAL STUDIO 2008........................................................... 40
MICROSOFT SQL SERVER 2005 EXPRESS .............................................. 40
GOLD PARSER BUILDER ............................................................................. 41
CORREÇÃO DOS EXERCÍCIOS .................................................................. 43
5 APRESENTAÇÃO DA FERRAMENTA.......................................... 46
5.1
5.2
5.3
5.4
INSERIR MODELO DE BASE DE DADOS ................................................. 46
CADASTRO DE PROFESSOR ....................................................................... 48
ELABORAÇÃO DE EXERCÍCIOS ............................................................... 49
RESOLUÇÃO DE EXERCÍCIOS................................................................... 51
6 TESTES E VALIDAÇÃO ................................................................... 55
7 CONCLUSÕES .................................................................................... 58
7.1 TRABALHOS FUTUROS................................................................................ 59
REFERÊNCIAS BIBLIOGRÁFICAS ................................................... 60
A FONTES GERADOS NA FERRAMENTA GOLD ......................... 63
B CÓDIGO FONTE DA CORREÇÃO DOS EXERCÍCIOS ............. 65
C DOCUMENTO E RESULTADOS DE TESTE ................................ 67
iv
LISTA DE ABREVIATURAS
DDL
DML
HTML
IBM
iDFQL
RF
RN
RNF
SGBD
SQL
TCC
UNIVALI
Data Definition Language
Data Manipulation Language
Hyper Text Markup Language
International Business Machines
Interactive Data Flow Query Language
Requisito Funcional
Regra de Negócio
Requisito Não Funcional
Sistema Gerenciador de Bancos de Dados
Structured Query Language
Trabalho de Conclusão de Curso
Universidade do Vale do Itajaí
v
LISTA DE FIGURAS
Figura 1. Operadores da álgebra relacional..........................................................................................2
Figura 2. Relações utilizadas nos exemplos.......................................................................................10
Figura 3. Exemplo de seleção. ...........................................................................................................10
Figura 4. Exemplo de projeção. .........................................................................................................11
Figura 5. Exemplo de junção..............................................................................................................11
Figura 6. Exemplo de divisão.............................................................................................................12
Figura 7. Exemplo de união. ..............................................................................................................13
Figura 8. Exemplo de interseção. .......................................................................................................14
Figura 9. Exemplo de diferença. ........................................................................................................15
Figura 10. Exemplo de produto cartesiano.........................................................................................15
Figura 11. Um compilador. ................................................................................................................17
Figura 12. Fases de um compilador. ..................................................................................................18
Figura 13. Árvore sintática.................................................................................................................19
Figura 14. Interface da ferramenta iDFQL.........................................................................................21
Figura 15. Exemplo de consulta utilizando a ferramenta iDFQL. .....................................................22
Figura 16. Interface da ferramenta mostrando a aba 1. ......................................................................24
Figura 17. Pct01. Controle de usuários ..............................................................................................29
Figura 18. Pct02. Controle do professor ............................................................................................33
Figura 19. Pct03. Controle do site......................................................................................................37
Figura 20. Diagrama de classe ...........................................................................................................38
Figura 21. Método de correção da álgebra relacional ........................................................................39
Figura 22. Interface da ferramenta GOLD Parser Builder. ................................................................42
Figura 23. Gerando o programa modelo no GOLD. ..........................................................................43
Figura 24. Modelo de processo de execução da ferramenta GOLD. .................................................43
Figura 25. Etapa de compilação. ........................................................................................................44
Figura 26. Seqüência da resposta. ......................................................................................................45
Figura 27. Modelo de base de dados. .................................................................................................46
Figura 28. Enviar um script com os comandos SQL..........................................................................47
Figura 29. Inserindo um novo modelo de base de dados. ..................................................................48
Figura 30. Fornecer privilégios aos usuários. ....................................................................................49
Figura 31. Elaboração de exercícios. .................................................................................................50
Figura 32. Resolução de exercícios....................................................................................................51
Figura 33. Resolução de exercício com a resposta correta. ...............................................................52
Figura 34. Resolução de exercício com a resposta incorreta. ............................................................53
Figura 35. Resolução de exercício com a uma expressão mal formulada..........................................54
Figura 36. Gráfico apresentando a dificuldade dos alunos na utilização do sistema. ........................55
Figura 37. Gráfico apresentando a compreensão da lógica da álgebra relacional com a utilização do
sistema........................................................................................................................................56
Figura 38. Código fonte da gramática. ...............................................................................................63
Figura 39. Fonte do código intermediário. .........................................................................................64
Figura 40. Código fonte da correção dos exercícios – Parte 1. ..........................................................65
Figura 41. Código fonte da correção dos exercícios – Parte 2. ..........................................................66
Figura 42. Documento de teste...........................................................................................................67
Figura 43. Gráfico apresentando se o sistema pode motivar o interesse do aluno pela álgebra. .......68
Figura 44. Gráfico apresentando se o aluno ficou perdido na utilização do sistema. ........................68
Figura 45. Gráfico apresentando se as cores e as imagens foram bem exploradas............................69
vi
Figura 46. Gráfico apresentando como seriam melhores as aulas de álgebra relacional. ..................69
vii
LISTA DE TABELAS
Tabela 1. Álgebra Relacional - Notação e Sintaxe dos operadores. ....................................................9
Tabela 2. SQL – Cláusulas.................................................................................................................17
Tabela 3. Comparativo das Ferramentas Similares. ...........................................................................25
Tabela 4. UC01.01 Cadastro Usuário.................................................................................................30
Tabela 5. UC01.02 Responde Exercícios...........................................................................................31
Tabela 6. UC01.04 Responde Prova ..................................................................................................32
Tabela 7. UC01.05 Se cadastra na turma ...........................................................................................32
Tabela 8. UC02.01 Cria Turmas ........................................................................................................34
Tabela 9. UC02.02 Cria Exercícios....................................................................................................35
Tabela 10. UC02.03 Cria Prova .........................................................................................................36
Tabela 11. UC02.05 Aceita Aluno na Turma.....................................................................................37
viii
RESUMO
KINAIPP, Renato Vidal. Sistema para Apoio à aprendizagem de Álgebra Relacional. Itajaí,
2009. 80 f. Trabalho de Conclusão de Curso (Graduação em Ciência da Computação)–Centro de
Ciências Tecnológicas da Terra e do Mar, Universidade do Vale do Itajaí, Itajaí, 2009.
A Álgebra Relacional é um conteúdo abordado na disciplina de Banco de Dados nos cursos de
computação. Trata-se de uma linguagem formal de consultas procedurais para o modelo relacional,
e seus conceitos são baseados na teoria da matemática e na lógica de predicados. Como o conteúdo
da Álgebra Relacional é conceitual e muito complexo, para que os alunos tenham um bom
entendimento dela, é necessária muita prática através de exercícios de fixação, normalmente
realizada sem o uso de qualquer ferramenta. Os professores encontram, nesta tarefa, dificuldades na
correção e na avaliação dos alunos. Devido a esses problemas, este trabalho propõe uma ferramenta
que visa a auxiliar os alunos na aprendizagem da Álgebra Relacional através da resolução de
exercícios, permitindo a correção automática das expressões e visualização dos resultados. A
ferramenta permite a geração de relatórios com o desempenho dos alunos na resolução dos
exercícios, e, com isso, o professor pode verificar onde cada aluno está errando e pode ajudá-los da
melhor maneira possível, tornando a assimilação da Álgebra Relacional pelos alunos mais fácil e
agradável.
Palavras-chave: Álgebra Relacional. Informática na Educação. Banco de Dados.
ix
ABSTRACT
Relational Algebra is a content addressed to in the Database discipline, in computing courses. This
is a formal language of procedural consultations for the relational model, and its concepts are
based on the theory of mathematics and the logic of predicates. As the contents of Relational
Algebra are very conceptual and complex, for students to have a good understanding of it, they
need much practice through fixing exercises, usually without using any tool. In this task, difficulties
in correcting and assessing the students are found. Due to these problems, this study suggests a tool
which aims at helping students learn Relational Algebra by solving exercises, allowing the
automatic correction of expressions and the visualization of results. The tool will allow the
generation of reports with the student’s performance in solving the exercises, thus the teacher will
be able to check where each student is missing and may help them in the best possible way, making
the assimilation of Relational Algebra easier and more enjoyable.
Keywords: Relational Algebra. Computing in Education. Database.
x
1 INTRODUÇÃO
A disciplina de banco de dados tem por objetivo introduzir aos alunos conceitos que
permitam usar, projetar e implementar sistemas de banco de dados. Um banco de dados possui um
conjunto de operações que permitem manipular os dados do banco, podendo ser de incluir novos
registros, alterar dados, buscar por dados registrados, excluir, entre várias outras.
Para fazer a manipulação no banco de dados, os sistemas de banco de dados comerciais
oferecem uma linguagem padrão de consulta que se chama SQL (Structured Query Language –
Linguagem de consulta Estruturada). Ela foi concebida e desenvolvida pela IBM. A SQL
proporciona uma interface de alto nível, com uma sintaxe mais amigável (ELMASRI; NAVATHE,
2005).
A SQL é baseada na linguagem formal Álgebra Relacional, a qual é o conjunto básico de
operações para o modelo relacional de um sistema de banco de dados. Ela é muito importante por
diversas razões (ELMASRI; NAVATHE, 2005):
•
Provê um fundamento formal para operações do modelo relacional, que são os SGBDs
(Sistemas Gerenciadores de Banco de Dados Relacionais);
•
É usada como base para implementar as consultas nos sistemas gerenciadores de banco
de dados relacionais; e
•
Seus conceitos são incorporados na linguagem de consulta padrão SQL.
As operações da álgebra relacional atuam nas tabelas, também chamadas de relações, para
chegar ao resultado desejado. Ela trabalha de uma forma onde pega uma ou mais relações como
entrada de dados e gera uma nova relação como resultado, após a aplicação das operações
(SILBERCHATZ, 2006).
A Figura 1 mostra de uma forma simples de como as operações da álgebra relacional
funcionam.
Figura 1. Operadores da álgebra relacional
Fonte: Adaptado de Faria (2005).
No início da disciplina de Banco de Dados I na Univali (Universidade do Vale do Itajaí), os
alunos estudam os conceitos da álgebra relacional, no entanto, por ser uma linguagem muito
complexa, há a necessidade de muita prática para a fixação da mesma. Mesmo com todos os
exercícios fornecidos pelos professores, os alunos têm certa dificuldade no aprendizado e não
conseguem assimilá-la de maneira satisfatória, como informado pelos professores. Estes, por sua
vez, ficam sobrecarregados com a correção dos exercícios.
Pensando nestes problemas surgiu a idéia de fazer este trabalho, o qual se propõe a
desenvolver um sistema que visa auxiliar os alunos na aprendizagem da álgebra relacional, e
também auxiliar os professores na correção dos exercícios, ou seja, o sistema deve corrigir
automaticamente os exercícios feitos pelos alunos.
Neste sistema os professores criarão uma lista de exercícios, para que os alunos possam fixar
os conceitos da álgebra relacional. No momento em que os alunos estiverem respondendo as
questões, o sistema deverá corrigir automaticamente, auxiliando os alunos e mostrando onde estão
seus erros. Após os alunos terem concluído, o sistema deve ser capaz de gerar um relatório onde
registrará os acertos e erros dos alunos, onde foram os erros, entre outros dados, no qual auxiliará o
professor a acompanhar o aprendizado do aluno.
2
O propósito deste trabalho é implementar um sistema on-line, onde só os alunos e
professores cadastrados poderão ter acesso, utilizando uma linguagem de programação para internet
para os arquivos de código e a linguagem HTML (Hyper Text Markup Language) para os arquivos
de modelo, juntamente com algum software de Banco de Dados, tendo como principais
funcionalidades:
•
Cadastro de exercícios pelo professor;
•
Correção dos exercícios resolvidos pelos alunos; e
•
Geração de relatórios para o professor.
No módulo do professor, ele pode cadastrar exercícios, verificar quais alunos responderam
os exercícios e verificar os relatórios de cada aluno, onde serão informados quais exercícios o aluno
acertou e errou, quantidade de erros e acertos, tempo de resolução dos exercícios, entre outras
informações. O professor também terá acesso a relatórios gerais, ou seja, relatórios que informarão
o aproveitamento da turma toda em relação à matéria passada pelo professor. Já no módulo do
aluno, ele só terá acesso aos exercícios a serem resolvidos.
1.1 PROBLEMATIZAÇÃO
1.1.1 Formulação do Problema
Por se tratar de uma matéria com um embasamento teórico muito grande, e por ser muito
complexa, há a necessidade de muita prática para a fixação da Álgebra Relacional. O ensino desta
matéria é feito através de muitos exercícios fornecidos pelos professores, porém, os alunos
resolvem estes exercícios em sala de aula, e atualmente, sem nenhum software para auxiliá-los.
Com isso, os alunos têm certa dificuldade no aprendizado e não conseguem assimilá-la de maneira
satisfatória. Os professores, por sua vez, ficam sobrecarregados na correção dos exercícios.
1.1.2 Solução Proposta
Analisando os problemas descritos acima, surgiu a idéia de desenvolver um sistema baseado
nos conceitos da álgebra relacional, que visa auxiliar os alunos na aprendizagem, resultando num
embasamento sólido da álgebra relacional. Também auxiliará os professores na correção dos
exercícios, isto é, o sistema deve corrigir automaticamente os exercícios feitos pelos alunos, tendo
como resultado aulas com uma elaboração melhor.
3
1.2 OBJETIVOS
1.2.1 Objetivo Geral
O objetivo geral deste trabalho é desenvolver um sistema on-line que visa auxiliar a
aprendizagem de álgebra relacional para alunos da disciplina de banco de dados.
1.2.2 Objetivos Específicos
Foram considerados objetivos específicos para este trabalho:
•
Estudar e compreender os conceitos relacionados à Álgebra Relacional;
•
Pesquisar e analisar soluções similares;
•
Pesquisar os conceitos e as tecnologias necessárias à implementação do sistema;
•
Determinar os requisitos exigidos pelo sistema;
•
Realizar a análise e projeto do sistema;
•
Implementar o sistema;
•
Testar e validar a implementação do sistema; e
•
Documentar o sistema desenvolvido, e os seus resultados.
1.3 METODOLOGIA
A metodologia utilizada para a realização do presente projeto foi dividida em etapas para
melhor compreensão, que estão listadas abaixo:
•
Fundamentação Teórica: Constitui em pesquisar e estudar os conceitos necessários.
o Fornecer uma introdução de banco de dados, juntamente com alguns conceitos
importantes como modelo de dados e linguagens de consultas;
o Fornecer uma visão geral sobre a álgebra relacional e mostrar como formular
algumas expressões;
o Fornecer uma introdução de compiladores; e
o Apresentar um comparativo entre as soluções similares e a ferramenta proposta.
4
•
Projeto: Definição dos requisitos e funcionalidades do sistema proposto.
o Definição dos requisitos funcionais, requisitos não funcionais e regras de negócio
que contemplam o funcionamento do sistema;
o Definição dos casos de uso: controle de usuários, controle do professor e controle do
site;
o Definição do diagrama de classe; e
o Definição do método de correção dos exercícios de álgebra relacional.
•
Desenvolvimento: Desenvolvimento do sistema, que posteriormente passará por testes e
validação.
o
Implementação dos módulos propostos, de acordo com a definição dos requisitos.
o Desenvolvimento da estrutura do banco de dados necessário para suprir a
necessidade do sistema.
•
Testes e Validação: Realização de testes sobre a solução proposta, verificando suas
funcionalidades e corrigindo-as se necessário.
o Realização de testes com alunos do curso de Ciência da Computação da Univali, que
estejam cursando a disciplina de Banco de Dados. Será avaliado o módulo de
correção dos exercícios.
•
Documentação: Ao longo do projeto são registrados todos os processos executados
desde o levantamento do problema, a fundamentação teórica, os requisitos necessários
ao sistema, o desenvolvimento, os testes, os resultados finais e conclusões.
1.4 ESTRUTURA DO TRABALHO
No primeiro capítulo é apresentada uma introdução sobre o projeto, fazendo uma descrição
geral do trabalho, identificando o problema e a sua solução, os objetivos gerais e específicos a se
alcançar, e a metodologia utilizada para disposição do trabalho.
No segundo capítulo (Fundamentação Teórica) são abordados alguns conceitos sobre banco
de dados, sobre o modelo relacional, sobre as linguagens de consulta, dentre ela a SQL, o cálculo
relacional, e a álgebra relacional. Fornece alguns conceitos sobre compiladores e para finalizar a
5
fundamentação teórica, é abordada duas soluções similares, e traçado um comparativo entre elas e a
ferramenta proposta.
O terceiro capítulo (Projeto) compreende na apresentação do sistema proposto, sua
modelagem e especificações.
No quarto (Implementação) e quinto (Apresentação da Ferramenta) capítulos são
apresentados as ferramentas utilizadas no processo de desenvolvimento dos módulos, descrevendo
as funcionalidades implementadas.
O sexto capítulo apresenta os resultados dos testes aplicados com os alunos da disciplina de
Banco de Dados do curso de Ciência da computação.
No sétimo capítulo são apresentadas as conclusões, as dificuldades encontradas e as
sugestões para trabalhos futuros.
6
2 FUNDAMENTAÇÃO TEÓRICA
A fundamentação deste trabalho aborda os seguintes temas: (i) introdução à banco de dados,
apresentando as linguagens de consulta, principalmente a álgebra relacional; (ii) conceitos de
compiladores; e (iii) apresentação de ferramentas similares de correção automática de álgebra
relacional.
2.1 BANCO DE DADOS
Banco de Dados é um sistema computadorizado que tem a finalidade de armazenar
informações e permitir que as mesmas sejam buscadas e alteradas quando solicitado pelo usuário.
Um sistema de banco de dados envolve os dados (que ficam armazenados no banco de dados), o
hardware (volumes de armazenamento secundário, processadores), o software e os usuários
(programadores, administradores e usuários finais) (DATE, 2003).
Os usuários que utilizam um sistema de banco de dados podem realizar diversas operações
com os registros gravados no banco, como exemplo, acrescentar novos registros, inserir, excluir ou
alterar dados de registros existentes, dentre outras operações. Para os usuários realizarem tais
operações, utiliza-se a camada de software, chamada de SGBD, que trata todas as requisições de
acesso ao banco de dados. O SGBD, portanto, isola os usuários dos detalhes de nível de hardware,
oferecendo uma visão mais elevada, admitindo expressões de alto nível, como o SQL (DATE,
2003).
Cada tipo de SGBD tem seu modelo de dados. O modelo de dados é um conjunto de
conceitos que determina como os dados serão organizados e representados no BD (banco de dados).
O modelo de dados mais popular é o modelo relacional, que é baseado na lógica e na matemática, e
por conseqüência, ideal para o ensino de princípios de banco de dados (DATE, 2003).
2.1.1 Modelo Relacional
O modelo relacional é a base da tecnologia moderna de banco de dados, e é essa base que
faz essa área de banco de dados uma ciência (DATE, 2003). O seu conceito foi introduzido por Ted
Codd, da IBM Research, em 1970, e pela sua simplicidade e base matemática atraiu muita atenção
(ELMASRI; NAVATHE, 2005).
O modelo relacional é um modelo onde os dados são representados como linhas em tabelas.
Nesse modelo, os operadores que ficam a disposição dos usuários geram “novas” tabelas a partir
das tabelas “antigas” (DATE, 2003). Ele é baseado teoricamente na teoria dos conjuntos e na lógica
de predicados de primeira ordem, e se dedica principalmente ao exame da estrutura de dados, a
integridade de dados e a manipulação de dados (ELMASRI; NAVATHE, 2005). A estrutura de
dados apresenta todo o conceito do modelo (determinando o domínio, os atributos, as tuplas, as
relações e as chaves). A integridade faz as restrições básicas para os dados e os relacionamentos,
mantendo a consistência do modelo. Também faz a garantia de acesso a todos os dados sem
ambigüidade, e a garantia de relacionamentos válidos (PIREZ, 2006).
A manipulação de dados é a parte do modelo relacional que, além de manipular os dados,
inclui os conceitos de modelos de dados que definem as restrições do banco de dados (ELMASRI;
NAVATHE, 2005). A manipulação é feita através das linguagens de consultas formais e também
pelo SQL.
2.1.2 Linguagens de Consulta
Linguagem de consulta é a linguagem que o usuário utiliza para fazer requisições no banco
de dados. Elas podem ser procedurais ou não procedurais. Na linguagem procedural o usuário deve
“ensinar” ao sistema como realizar uma seqüência de operações no banco de dados para que
obtenha o resultado desejado. Enquanto que na linguagem não procedural, o usuário apenas escreve
as informações que deseja obter, sem precisar fornecer nenhum procedimento específico
(SILBERCHATZ, 2006).
2.1.2.1
Álgebra Relacional
A álgebra relacional é uma linguagem formal de consultas procedural e faz parte da
manipulação no modelo relacional. Ela basicamente consiste em um conjunto de operações, que
geram uma nova relação a partir de uma ou mais relações já existentes no banco de dados. Assim,
as operações da álgebra relacional nada mais são do que produção de novas relações que podem ser
manipuladas pelas mesmas operações da álgebra (SILBERCHATZ, 2006). Uma seqüência dessas
operações forma uma expressão de álgebra relacional.
A álgebra relacional é muito importante por diversas razões (ELMASRI; NAVATHE,
2005): (i) provê um fundamento formal para operações do modelo relacional; (ii) é usada como
8
base para implementar as consultas nos sistemas gerenciadores de banco de dados relacionais; e (iii)
seus conceitos são incorporados na linguagem de consulta padrão SQL.
O objetivo fundamental da álgebra é permitir a escrita de expressões relacionais. Essas
expressões servem a uma variedade de propósitos, dentre eles (DATE, 2003):
•
Busca de dados - com base nas operações de busca, definir os dados a serem
pesquisados; e
•
Atualização de dados - fazer a inserção, alteração ou eliminação dos dados com alguma
operação de atualização;
A álgebra relacional define algumas operações, que servem para fazer as consultas e as
alterações no banco de dados. As principais operações da álgebra relacional podem ser divididas em
dois grupos (ELMASRI; NAVATHE, 2005):
1. O grupo das operações da teoria de conjunto matemática: união (union), interseção
(intersection), diferença de conjunto (set difference) e produto cartesiano (cross product).
2. E o grupo das operações desenvolvidas especificamente para os bancos de dados
relacionais: seleção ou restrição (select), projeção (project), junção (join) e divisão (division).
A Tabela 1 apresenta a funcionalidade de cada operação, com suas respectivas notações e
sintaxe:
Tabela 1. Álgebra Relacional - Notação e Sintaxe dos operadores.
Operação
Seleção (Select)
Projeção (Project)
Junção natural (Join)
Divisão (Division)
União (Union)
Interseção (Intersection)
Diferença (Set difference)
Produto Cartesiano (Cross
product)
Notação
Sintaxe
σ
π
×
÷
∪
∩
−
σ <condição de seleção> (Relação)
×
(Relação A × Relação B)
π <lista de atributos> (Relação)
(Relação A × Relação B)
(Relação A ÷ Relação B)
(Relação A ∪ Relação B)
(Relação A ∩ Relação B)
(Relação A − Relação B)
9
Exemplos das Operações da Álgebra Relacional
A Figura 2 contém duas relações. Serão utilizadas estas relações para os exemplos de cada
operação.
Figura 2. Relações utilizadas nos exemplos.
Seleção (Select): Retorna um subconjunto de tuplas que satisfaçam uma condição de seleção
pré-definida. Seguido da notação σ, que denota a seleção, vem o predicado, que descreve a
condição da consulta. Após, entre parênteses, vem a relação de onde será feita a consulta.
Exemplo: σ Sexo = “F” (ALUNOS)
A seleção acima busca na relação ALUNOS todas as tuplas onde o atributo Sexo for igual a
“F”. Esta consulta nos apresentará como resultado as informações contidas na Figura 3.
Figura 3. Exemplo de seleção.
Projeção (Project): Retorna determinadas colunas de uma relação. Só pode ser executada
em apenas uma relação. Após a notação π, que denota a projeção, lista-se os atributos que se deseja
buscar, seguido da relação entre parênteses.
10
Exemplo: π Nome, Cidade, Id_Professor (ALUNOS)
A expressão acima projetará numa nova relação os atributos Nome, Cidade e Id_Professor
da relação ALUNOS. A Figura 4 apresenta o resultado desta operação.
Figura 4. Exemplo de projeção.
Junção Natural (Join): Retorna uma combinação de tuplas de duas relações, partindo dos
atributos em comum nas relações. É usado o operador × entre duas relações para denotar esta
operação.
Exemplo: (ALUNOS × PROFESSORES)
A operação acima retorna uma combinação de todos os atributos das relações ALUNOS e
PROFESSORES, onde o Id_Professor das duas relações sejam idênticos. Esta consulta apresentará
como resultado as informações contidas na Figura 5.
Figura 5. Exemplo de junção.
Além da junção natural há outros tipos de junção:
•
Junção Theta: Combina os registros de duas relações conforme as condições do
predicado. Sintaxe: (RelaçãoA × <condição de seleção> Relação B)
11
•
Equijunção: É uma junção semelhante à junção Theta, onde o predicado é sempre uma
igualdade.
•
Junção Externa: É utilizada para manter todas as tuplas das relações em uma junção,
mesmo ela não tendo tuplas correspondentes na outra relação.
Divisão (Division): Retorna uma relação contendo elementos da primeira relação que se
relacionam com todos os elementos da segunda relação. Os atributos resultantes são os atributos da
relação A que não existem na relação B. Os registros existentes na relação final são os registros da
relação A combinados com os registros da relação B. É identificada pelo operado ÷ entre duas
relações. Para utilizar esta operação é necessário que as relações sejam logicamente equivalentes.
Exemplo: π Sexo, Id_Professor (ALUNOS) ÷ π Id_Professor (PROFESSORES)
Não se pode utilizar a operação de Divisão nas relações ALUNOS e PROFESSORES, pois
elas são logicamente diferentes. Então, antes da Divisão, será feito uma Projeção, para fazer duas
relações logicamente equivalentes. Logo após será feita a União dessas duas relações projetadas.
A consulta acima apresentará como resultado as informações da Figura 6.
Figura 6. Exemplo de divisão.
União (Union): Cria uma nova relação, a partir de duas ou mais relações, contendo todas as
tuplas dessas relações. É identificada pelo símbolo ∪ entre duas relações. Para utilizar esta operação
é necessário que as relações sejam logicamente equivalentes.
12
Exemplo: (π Nome, Sexo, Cidade (ALUNOS)) ∪ (π Nome_P, Sexo_P, Cidade_P
(PROFESSORES))
Não se pode utilizar a operação de União para unir a relação ALUNOS e PROFESSORES,
pois as relações são logicamente diferentes. Então, antes da União, será feito uma Projeção, para
fazer duas relações logicamente equivalentes. Logo após será feita a União dessas duas relações
projetadas. A expressão acima apresentará como resultado as informações da Figura 7.
Figura 7. Exemplo de união.
Interseção (Intersection): Retorna todas as tuplas que pertencem a ambas as relações. É
identificada pelo símbolo ∩ entre duas relações. Para utilizar esta operação é necessário que as
relações sejam logicamente equivalentes.
Exemplo: (π Id_Professor (σ Sexo = “M” (ALUNOS))) ∩ (π Id_Professor (σ Sexo_P = “F”
(PROFESSORES)))
13
Não se pode utilizar a operação Interseção diretamente nas relações ALUNOS e
PROFESSORES, pois elas são logicamente diferentes. Então, antes da Interseção, será feito uma
Projeção e uma Seleção, para fazer duas relações logicamente equivalentes. Logo após será feita a
Interseção entre essas duas relações novas. A expressão acima apresentará como resultado as
informações contidas na Figura 8.
Figura 8. Exemplo de interseção.
Diferença (Difference): Retorna todas as tuplas que estão na primeira relação, mas não
estão na segunda relação. É identificada pelo símbolo − entre duas relações Assim como a União e a
Interseção. É necessário que as relações sejam logicamente equivalentes para que se possa fazer seu
uso.
Exemplo: (πId_Professor, Sexo (ALUNOS)) − (π Id_Professor, Sexo_P (PROFESSORES))
Não se pode utilizar a operação de Diferença diretamente nas relações ALUNOS e
PROFESSORES, pois elas são logicamente diferentes. Então, antes da Diferença, será feito uma
Projeção, para fazer duas relações logicamente equivalentes. Logo após será feita a Diferença entre
essas duas relações projetadas.
A Figura 9 apresenta o resultado da consulta acima.
14
Figura 9. Exemplo de diferença.
Produto Cartesiano (Cross Product): Retorna a combinação de todas as tuplas das relações
em questão. É usado o operador × entre duas relações para denotar esta operação.
Exemplo: (ALUNOS × PROFESSORES)
A consulta acima retorna uma combinação de todas as tuplas da relação ALUNOS com a
relação PROFESSORES. A Figura 10 mostra o resultado desta consulta.
Figura 10. Exemplo de produto cartesiano.
15
2.1.2.2
Cálculo Relacional
O cálculo relacional é uma linguagem de consulta baseada na lógica matemática. Essa
linguagem é não-procedural, ou seja, a partir de uma expressão do cálculo relacional, pode-se
descrever uma consulta sem precisar especificar os procedimentos para obtenção das informações.
Existem dois tipos de cálculo relacional: Cálculo Relacional de Tuplas e Cálculo Relacional de
Domínio (DATE, 2003).
As diferenças entre o cálculo relacional e a álgebra relacional são apenas superficiais, pois
eles são logicamente equivalentes, isto é, cada expressão do cálculo relacional há uma expressão
equivalente em álgebra relacional, e vice-versa.
2.1.2.3
Structured Query Language
A Structured Query Language (SQL – Linguagem de consulta estruturada) foi desenvolvida
na IBM Research no início da década de 1970. É uma linguagem comercial que utiliza uma
combinação de construções da álgebra e do cálculo relacional, e fornece uma linguagem declarativa
de alto nível, facilitando as consultas aos usuários (SILBERCHATZ, 2006).
Tornou-se uma linguagem padrão, pela fácil migração de aplicações de banco de dados, e
pela sua independência de hardware e software. Com isso, passou a ser a linguagem mais
apropriada e utilizada em SGBDs relacionais comerciais.
A SQL é especificada por duas linguagens (SILBERCHATZ, 2006):
1. Linguagem de definições de dados (DDL – Data Definition Language): permite ao
usuário definir novas relações, como também excluí-las e modificá-las.
2. Linguagem de manipulação de dados (DML – Data Manipulation Language): permite ao
usuário selecionar, inserir, excluir e modificar dados no banco de dados. A DML é
baseada na álgebra e no cálculo relacional.
A estrutura de uma consulta SQL basicamente se dá por três cláusulas: select, from e where.
Segue um exemplo de expressão em SQL utilizando essas cláusulas:
SELECT Nome FROM TabAluno WHERE Nome=Maria
16
A Tabela 2 mostra o objetivo de cada uma das cláusulas da estrutura do comando Select na
linguagem SQL:
Tabela 2. SQL – Cláusulas
Cláusula
SELECT
FROM
WHERE
Utilidade
Lista os atributos desejados em uma consulta.
Lista as relações que serão usadas para buscar os
atributos.
É um predicado que envolve os atributos das relações.
Sintaxe
SELECT Atributo
FROM Tabela
WHERE Condição
2.2 COMPILADORES
Compiladores são programas de computadores que fazem a tradução de uma linguagem para
outra. Um compilador recebe como entrada um programa escrito na linguagem-fonte, geralmente
uma linguagem de alto nível, como C, C++, C# ou Java, e produz um programa equivalente na
linguagem-alvo (LOUDEN, 2004); ver Figura 11. Uma das principais características de um
compilador é relatar quaisquer erros no programa fonte detectados durante o processo de tradução
(AHO, 2008).
Compiladores são usados em quase todas as áreas da computação, portanto, é de grande
importância qualquer pessoa envolvida profissionalmente com computadores conhecer a
organização e as operações básicas de um compilador (LOUDEN, 2004).
Figura 11. Um compilador.
Fonte: Adaptado de AHO (2008).
17
2.2.1 Processo de Tradução do Compilador
Um compilador é constituído internamente por fases para fazer a execução das distintas
operações lógicas necessárias. Cada fase pode ser entendida como peças separadas dentro do
compilador, que podem ser escritas como operações codificadas separadamente, porém, na prática
elas são freqüentemente agrupadas (LOUDEN, 2004).
A Figura 12 mostra as fases da compilação.
Figura 12. Fases de um compilador.
Fonte: MARTINOTTO (200-?).
2.2.1.1
Análise Léxica
Nesta fase o programa fonte é lido. Durante o processo de análise léxica, as palavras ou
lexemas são guardados na tabela de símbolos e classificados de acordo com a linguagem, em
palavras reservadas, comandos, variáveis e tipos básicos (LOUDEN, 2004).
Tabelas de símbolos é uma estrutura de dados que guarda informações de identificadores:
funções, variáveis, constantes e tipos de dados (LOUDEN, 2004).
18
2.2.1.2
Análise Sintática
A análise sintática determina os elementos estruturais do programa e seus relacionamentos.
No final da análise, temos o programa fonte representado como uma árvore sintática (LOUDEN,
2004). A Figura 13 mostra um exemplo de árvore sintática.
Figura 13. Árvore sintática.
Fonte: MARTINOTTO (200-?).
2.2.1.3
Análise Semântica
O analisador semântico utiliza a árvore sintática e as informações da tabela de símbolos para
verificar a consistência semântica do programa fonte com a definição da linguagem. O analisador
também reúne informações sobre os tipos e as salva na árvore sintática ou na tabela de símbolos,
para utilizar durante a geração do código intermediário. Uma grande importância da análise
semântica é a verificação de tipo, em que o compilador verifica se cada operador possui operandos
compatíveis (AHO, 2008).
2.2.1.4
Geração de Código Intermediário
O gerador de código intermediário é acionado quando o programa fonte for analisado
lexicamente, sintaticamente e semanticamente, e estiver correto no ponto de vista das análises. Esse
19
código intermediário deve possuir duas propriedades importantes: (i) ser facilmente produzido; e
(ii) ser facilmente traduzido para a máquina alvo (AHO, 2008).
2.2.1.5
Otimização de Código
A fase de otimização de código independe das arquiteturas das máquinas, e tem por objetivo
fazer algumas modificações no código intermediário para produzir um código melhor, isto é, um
código mais rápido, menor ou até mesmo um código que consuma menos energia (AHO, 2008).
2.2.1.6
Geração de Código
A tarefa principal do gerador de código é transformar uma especificação intermediária do
programa fonte para uma especificação do programa alvo. Se o programa alvo for código de
máquina de alguma arquitetura, devem-se selecionar os registradores ou localizações de memória
para cada uma das variáveis usadas pelo programa. Depois, os códigos intermediários são
traduzidos em seqüências de instruções de máquina que realizam a mesma tarefa (AHO, 2008).
2.2.2 Tratador de Erros
Uma das principais funções do compilador é fazer o tratamento dos erros. Erros que podem
ser detectados durante quase todas as fases de compilação. Os erros encontrados por um compilador
devem ser reportados, e é importante que o compilador possa gerar mensagens inteligíveis e
concluir a compilação após cada erro (LOUDEN, 2004).
Cada fase da compilação requer um tratamento de erro diferente, portanto, é necessário ter
um sistema para fazer o tratamento dos erros, onde este sistema deverá possuir diversas operações,
sendo que cada operação será apropriada para uma fase diferente da compilação e para uma
situação específica (LOUDEN, 2004).
2.3 FERRAMENTAS SIMILARES
Na disciplina de banco de dados do curso de Ciência da Computação da Univali, bem como
de outras universidades, um dos conteúdos estudados é o banco de dados relacionais, seu projeto e
manipulação de dados. Para que o acadêmico tenha um bom embasamento da linguagem para
definição e manipulação de bancos de dados relacionais, estuda-se a teoria por trás da linguagem
comercial SQL, a saber, Álgebra Relacional. No entanto, verifica-se grande dificuldade de
20
compreensão desta matéria, por tratar-se de algo muito teórico. Acredita-se que ferramentas que
ilustrem os conceitos abordados na disciplina possam tornar o aprendizado mais fácil e agradável.
Este capítulo tem por objetivo apresentar algumas ferramentas existentes que abordam
álgebra relacional, traçando um comparativo entre elas, dando ênfase à ferramenta de ensino
proposta neste trabalho.
2.3.1 Interactive Data Flow Query Language
A ferramenta Interactive Data Flow Query Language (iDFQL), desenvolvida por Ana Paula
Appel e Caetano Traina Jr., é uma ferramenta de consulta para SGBDs baseada na álgebra
relacional (APPEL; JUNIOR, 2004). Esta ferramenta tem uma aparência visual, e é basicamente
formada por uma coleção de operadores representados por símbolos e as consultas são
representadas por diagramas de fluxo.
A Figura 14 mostra a interface da ferramenta iDFQL.
Figura 14. Interface da ferramenta iDFQL.
Fonte: Appel e Traina (2004).
21
•
A área I é um painel contendo uma coleção de operadores, os quais são operadores da
álgebra relacional e operadores da própria ferramenta;
•
A área II é utilizada pelo usuário para elaborar as consultas, através de diagramas de
fluxo. Nesta área também há um operador, este chamado de saída, que por sua vez,
mostra o resultado final da consulta; e
•
A área III informa as mensagens de erro e também mostra a consulta transformada para
SQL.
O processo de construção de consultas na ferramenta iDFQL é bem simplificado.
Primeiramente o usuário precisa fazer a conexão com alguma base de dados utilizando a própria
ferramenta. Logo após, escolhem os operadores (área I) e os colocam no painel de construção (área
II). Para a consulta ser realizada com sucesso, é necessário que todos os operadores estejam
interligados corretamente. Caso não esteja, será apresentado um erro de consulta.
A Figura 15 mostra um exemplo de consulta utilizando a ferramenta iDFQL.
Figura 15. Exemplo de consulta utilizando a ferramenta iDFQL.
Fonte: Appel e Junior (2004).
22
Não se obteve sucesso nos testes realizados, pois a ferramenta apresenta mensagens de erro
que impossibilitam a sua solução e a visualização do resultado da consulta. Também não foi
encontrado nenhum material apresentado qual solução tomar quando encontrar determinado erro.
2.3.2 Ferramenta para o Ensino de Álgebra Relacional
Esta ferramenta foi desenvolvida por Tatiane Schwanck Schardosim durante a disciplina de
Trabalho de Conclusão de Curso em Ciência da Computação da Universidade Luterana do Brasil. É
uma ferramenta visual e tem por objetivo auxiliar no ensino da álgebra relacional (SCHARDOSIM,
2006).
Para o funcionamento da ferramenta, alguns requisitos exigidos, quais são: (i) Banco de
dados Oracle 9i ou 10g; (ii) Biblioteca estática d2kwutil.ppl e seus componentes; (iii) Ferramentas
da Oracle Forms Runtime 6.0 e Forms Builder; e (iv) editar o arquivo tsnames.ora, para que os
alunos cadastrados possam acessar o banco. Não foi possível testar esta ferramenta porque ela não
foi encontrada disponível na internet. A explicação a seguir é totalmente baseada no texto da autora.
Esta ferramenta utiliza os operadores da álgebra relacional para formular as expressões.
Após o término da formulação da expressão, esta é validada sintaticamente, e também em nível de
banco, onde os objetos envolvidos na consulta precisam estar disponíveis no banco onde foi feita a
conexão. Na validação são mostradas mensagens de aviso ao aluno. Após as validações, o aluno
pode visualizar os dados que retornam da sua busca, sua consulta em SQL e também relações de
objetos que foram utilizadas (SCHARDOSIM, 2006).
A interface desta ferramenta é dividida em quatro abas. A Figura 16 mostra a interface da
Aba 1.
23
Figura 16. Interface da ferramenta mostrando a aba 1.
Fonte: Adaptado de Schardosim (2006).
É na aba 1 que se inicia todo o processo de consulta. Há um bloco descrito como Álgebra
Relacional onde o aluno escreve sua expressão em álgebra relacional. Um campo logo abaixo a este
informa as dicas e também os erros quando a expressão é compilada. O bloco chamado operadores
contém os operadores da álgebra relacional utilizados nesta ferramenta. Estes operadores auxiliam o
aluno na formulação da expressão (SCHARDOSIM, 2006).
O botão visualizar serve para que o aluno visualize sua consulta mais clara. Quando
pressionado, abre uma nova janela com a consulta. O botão compilar serve para compilar e validar a
expressão da álgebra relacional. Há também um bloco que contém uma árvore, onde auxilia o aluno
a encontrar as tabelas existentes no banco (SCHARDOSIM, 2006).
A aba 2 apresenta a consulta convertida para SQL. A aba 3 apresenta os resultados obtidos
pela consulta, e a aba 4 apresenta todas as relações que foram envolvidas na consulta
(SCHARDOSIM, 2006).
24
2.3.3 Comparativo
Com base nos estudos das ferramentas apresentadas, é apresentado na Tabela 3 um
comparativo entre elas e a ferramenta proposta, apresentando as vantagens e desvantagens de cada
uma.
Tabela 3. Comparativo das Ferramentas Similares.
Características
Plataforma WEB
Baseada em exercícios
Transparência para o usuário
da base de dados para executar
a ferramenta?
Correção automática da
questão
Informa em que parte errou?
Oferece relatórios sobre o
desempenho na resolução?
iDFQL
Não
Não
Ferramenta para o Ensino
Ferramenta Proposta
de Álgebra Relacional
Não
Sim
Não
Sim
Não
Não
Sim
Sim
Sim
Sim
Não
Sim
Sim
Não
Não
Sim
Com relação a correção automática, verificou-se que a abordagem das ferramentas estudadas
é diferente da proposta deste trabalho, pois as mesmas fazem a correção das expressões inseridas
pelo usuário, verificando a sintaxe e a semântica. Porém a ferramenta proposta é baseada em
exercícios, onde o aluno irá responder as questões elaboradas pelos professores, esperando-se então
que consiga resolver problemas através da mesma.
Outra característica importante da ferramenta proposta é que ela será on-line, sendo assim,
não precisará ter instalada a ferramenta nos computadores dos usuários e nem os bancos de dados
para o funcionamento delas, como é preciso nas ferramentas apresentadas.
E por ser um sistema on-line de resolução de exercícios, a ferramenta proposta armazenará
informações das questões resolvidas pelos alunos e irá gerar relatórios importantes para a
verificação do rendimento dos mesmos.
25
3 PROJETO
Neste capítulo é apresentado o projeto do sistema para apoio a aprendizagem de álgebra
relacional contendo seus requisitos funcionais e não-funcionais, regras de negócio, casos de uso,
diagramas de classe e o método de correção da álgebra relacional.
3.1 ANÁLISE DE REQUISITOS
Neste capítulo são apresentadas todas as funcionalidades para a implementação de uma
ferramenta web que apóie a aprendizagem de álgebra relacional, incluindo cadastro de professores,
alunos, turmas, avaliações. No entanto, verificou-se que o escopo do trabalho ficou muito amplo e
acredita-se não ser viável sua completa implementação dentro do prazo do TCC.
Como o foco deste projeto é a álgebra relacional em si, foi priorizado nesta versão do
sistema, no mínimo, a implementação dos requisitos para criação e resolução de exercícios, ficando
os demais, caso não haja tempo, sugeridos para futuros trabalhos. Desta forma, não fará parte do
escopo desta versão do trabalho a implementação dos requisitos referentes à elaboração e resolução
de avaliações, a saber:
•
Requisitos funcionais: RF09, RF10.
•
Regras de negócio: RN02, RN03, RN05, RN08, RN09.
•
Casos de uso: UC01.04, UC02.03.
Com relação à álgebra relacional, como são muitas as operações constantes na linguagem,
definiu-se o escopo do projeto para atender no mínimo as seguintes operações: seleção, projeção,
junção, junção natural, união, intersecção.
As seções a seguir apresentam a descrição detalhada do projeto.
3.1.1 Requisitos Funcionais
•
RF01. O sistema deve permitir o cadastro, alteração e exclusão de professores.
•
RF02. O sistema deve permitir que o professor crie turmas.
•
RF03. O sistema deve permitir o cadastro, alteração e exclusão de alunos.
•
RF04. O sistema deve permitir que os alunos participem das turmas.
•
RF05. O sistema deve permitir que o professor aceite alunos nas turmas.
•
RF06. O sistema deve permitir que o professor crie exercícios de álgebra relacional.
•
RF07. O sistema deve permitir que os alunos pratiquem exercícios de álgebra relacional.
•
RF08. O sistema deve corrigir automaticamente os exercícios respondidos pelos alunos.
•
RF09. O sistema deve permitir que o professor crie avaliações.
•
RF10. O sistema deve permitir que o aluno responda as avaliações.
•
RF11. O sistema deve permitir que o professor visualize o desempenho de cada aluno.
•
RF12. O sistema deve permitir que o professor visualize o desempenho de cada turma.
•
RF13. O sistema deve permitir que o administrador insira o modelo ER das bases de
dados.
•
RF14. O sistema deve conter três níveis de complexidade de exercícios.
3.1.2 Requisitos Não Funcionais
•
RNF01. O banco de dados para armazenar os dados deverá ser o SQL Server.
•
RNF02. O sistema deve ser implementado usando a linguagem de programação
ASP.NET.
•
RNF03. O sistema deverá ser orientado à WEB.
•
RNF04. Para efetuar a correção automática dos exercícios o sistema deve utilizar uma
técnica de conversão da álgebra relacional para SQL.
•
RNF05. Perfis de acesso: (i) Administrador do Site: todas as operações; (ii) Professor:
operações relacionadas à criação de exercícios, avaliações e de turmas; (iii) Aluno
27
Cadastrado: operações relacionadas aos exercícios e avaliações; (iv) Visitante: operações
de exercícios de prática.
3.1.3 Regras de Negócio
•
RN01. Os alunos não podem ter acesso a respostas de outros alunos.
•
RN02. Somente alunos cadastrados e participando de alguma turma podem responder
avaliações.
•
RN03. Nos exercícios de avaliação, o professor define quantas tentativas os alunos têm
para responder cada questão.
•
RN04. O FeedBack dos exercícios de prática deve ser direcionado para o aluno e para
seu professor.
•
RN05. O FeedBack dos exercícios de avaliação deve ser direcionado para o professor.
•
RN06. O FeedBack dos exercícios deve apresentar o desempenho do aluno, detalhando
onde houveram os erros e os acertos.
•
RN07. Os alunos podem acessar questões elaboradas por quaisquer professores.
•
RN08. O professor deve configurar a avaliação definindo o número de questões e o peso
de cada uma.
•
RN09. As questões de uma avaliação serão apresentadas aos alunos de forma aleatória.
•
RN10. O professor poderá classificar as questões conforme seu nível de dificuldade (a
definir).
•
RN11. As operações mínimas que deverão ser implementadas em álgebra são: seleção,
projeção, junção, junção natural, união, intersecção.
28
3.2 DIAGRAMAS DE CASOS DE USO
3.2.1 PCT01. Controle de Usuários
Este Pacote contém os Casos de Uso que podem ser realizados pelo Visitante, Aluno e
Usuário (Aluno e Professor). A Figura 17 apresenta os Casos de Uso do Pacote PCT01.
Figura 17. Pct01. Controle de usuários
3.2.1.1
UC01.01 Cadastro Usuário
Permite ao visitante cadastrar suas informações pessoais. Se o visitante for um usuário
cadastrado e estiver logado no sistema, permitirá que ele altere ou exclua seu cadastro. Também é
permitido ao usuário consultar seus dados cadastrais.
A Tabela 4 apresenta todos os cenários do Caso de Uso UC01.01.
29
Tabela 4. UC01.01 Cadastro Usuário
Cenário
Comentários
1. O usuário deverá acessar a opção "Faça seu Cadastro" na página
principal do sistema.
2. O sistema solicita os dados para uma nova conta.
3. O usuário deverá preencher os campos necessários e clicar no botão
Cadastro Usuário
Criar Usuário.
{Principal}
4. O sistema valida e grava os dados.
5. O usuário clica em avançar.
6. O sistema solicita os dados gerais.
7. O usuário deverá preencher os campos necessários e clicar em salvar.
8. O sistema valida e grava os dados.
O usuário deve estar logado no sistema.
1. O usuário deverá acessar a opção “Editar Informações Gerais”.
Edita Cadastro
1.1. O sistema apresenta a tela para edição do cadastro, com todos os
{Alternativo}
campos já preenchidos.
1.2. O usuário edita as informações e confirma.
1.3. Retorna ao passo 1.
O usuário deve estar logado no sistema.
1. O usuário deverá acessar a opção “Excluir Cadastro”.
1.1. O sistema apresenta a tela com o cadastro e um botão para confirmar
Exclui Cadastro
exclusão.
{Alternativo}.
1.2. O usuário clica em confirmar exclusão.
1.3. O sistema apaga o cadastro.
1.4. Retorna à pagina inicial do sistema.
No passo 4, caso os campos obrigatórios(login, senha, confirmar senha,
Inconsistência na
e-mail, pergunta secreta, resposta) não tenham sido preenchidos ou
validação dos dados
algum campo único seja igual a outro já cadastrado, apresenta mensagem
{Exceção}.
"Verifique os seguintes erros: <<listar erros>>".
No passo 1.2 do cenário Exclui Cadastro, caso o usuário esteja vinculado
Vinculado a Turmas
a alguma turma, o sistema apresenta a mensagem "Seu cadastro não pode
{Exceção}
ser excluído, você esta vinculado a TURMA X".
3.2.1.2
UC01.02 Responde Exercícios
Permite aos usuários responderem os exercícios. A Tabela 5 apresenta todos os cenários do
Caso de Uso UC01.02.
30
Tabela 5. UC01.02 Responde Exercícios
Cenário
Comentários
1. O usuário clica no link "Responder".
2. O sistema aleatoriamente apresenta uma página contendo o
Exercício a ser resolvido bem como seu modelo ER da base de banco
de dados, e também um espaço para a resposta.
Responde Exercícios
3. O usuário responde o Exercício e clica no botão "Corrigir
{Principal}
Exercício".
4. O sistema valida a resposta.
5. O sistema apresenta a mensagem "Resposta Correta...".
6. O sistema salva as informações.
No passo 3, o usuário pode optar por responder outra pergunta:
Outra Pergunta
3.1. O usuário clica no botão "Outro Exercício".
{Alternativo}
3.2. O sistema volta ao passo 2 com um novo exercício.
No passo 4, a resposta pode estar errada:
Resposta Errada
4.1. O sistema apresenta a mensagem "Resposta Errada", mostrando
{Exceção}
onde ocorreu o erro.
4.2. O sistema salva as informações.
No passo 6, se o usuário não estiver logado, ou não for cadastrado:
Usuário não
6.1. O sistema não grava nenhuma informação sobre as resoluções dos
cadastrado {Exceção}
exercícios.
Usuário não
No passo 4.2, do cenário de Resposta Errada, se o usuário não estiver
cadastrado - Resposta logado, ou não for cadastrado:
errada {Exceção}
4.2.1. O sistema não salva nenhuma informação.
3.2.1.3
UC01.03 Efetua Login
Permite que um usuário cadastrado possa ter acesso ao sistema, através do fornecimento de
uma conta e senha.
3.2.1.4
UC01.04 Responde Prova
Permite aos alunos responderem as provas. Para o aluno poder responder uma prova, ele deve
estar vinculado a alguma turma. A prova estará configurada de acordo com os critérios do
professor. Poderão ser definidos o número de exercícios, o peso de cada exercício e o número de
tentativas para a resolução de cada exercício.
A Tabela 6 apresenta todos os cenários do Caso de Uso UC01.04.
31
Tabela 6. UC01.04 Responde Prova
Cenário
Responde Prova
{Principal}
3.2.1.5
Comentários
1. O aluno clica em "Responder Prova".
2. O sistema mostra uma página contendo todas as definições da prova,
como a quantidade de questões, o peso de cada questão e as questões
geradas aleatoriamente.
3. O aluno clica em cima de uma questão para respondê-la.
4. O sistema apresenta uma tela para responder a questão da prova
semelhante a resolução de exercícios.
5. O usuário responde a questão conforme o ''UC01.02", porém com uma
quantidade limitada de tentativas, determinado pelo professor.
6. O usuário clica em "Corrigir"
7. O sistema salva todas as informações de erros e tentativas do usuário.
8. Ao término da resolução de todas as questões, o usuário clica no botão
"Prova Finalizada".
9. O sistema salva todas as informações e mostra a mensagem "Prova
realizada".
10. Retorna a página inicial.
UC01.05 Se cadastra na turma
Permite ao aluno se cadastrar nas turmas existentes. O aluno procura pela turma de seu
professor e solicita ao professor sua vinculação na turma. Após a solicitação, aguarda a aprovação
da vinculação. A Tabela 7 apresenta todos os cenários do caso de Uso UC01.05.
Tabela 7. UC01.05 Se cadastra na turma
Cenário
Solicitação de
cadastro em turma
{Principal}
Comentários
1. O aluno clica no botão "Turmas".
2. O Sistema apresenta uma lista de todas as turmas existentes e alguns
campos para fazer uma busca personalizada por nome de professor.
3. O aluno coloca o nome do professor e clica em busca.
4. O sistema apresenta todas as turmas do professor buscado com um
botão ao lado escrito "Enviar Solicitação".
5. O aluno clica no botão "Enviar Solicitação" ao lado da turma desejada.
6. O sistema apresenta uma mensagem "Solicitação enviada ao
professor".
7. Retorna ao passo 2.
32
3.2.2 PCT02. Controle do Professor
Este pacote fornece os Casos de Uso que podem ser realizados pelo Professor. A Figura 18
apresenta os Casos de Uso do Pacote PCT02.
Figura 18. Pct02. Controle do professor
3.2.2.1
UC02.01 Cria Turmas
Permitir ao Professor criar, editar ou excluir Turmas. A Tabela 8 apresenta todos os cenários
do Caso de Uso UC02.01.
33
Tabela 8. UC02.01 Cria Turmas
Cenário
Comentários
1. O Professor clica no link "Criar Nova Turma".
2. O sistema apresenta uma página com todas as suas turmas e campos
para inserção de dados para a criação de uma nova turma.
Criar Turma
3. O Professor insere os dados e clica no botão "Criar".
{Principal}
4. O sistema valida os dados e cria a Turma.
5. O sistema apresenta a seguinte mensagem: "Sua Turma foi criada
com sucesso".
6. Retorna ao passo 2.
No passo 3, se o Professor clicar em uma turma existente, ele poderá
editar esta Turma.
3.1. O Sistema apresenta a tela para edição da turma, com todos os
Edita Turma
campos já preenchidos e um botão "editar".
{Alternativo}
3.2. O Professor edita as informações e confirma.
3.3. O Sistema apresenta a mensagem "Turma editada com sucesso".
3.4. Retorna ao passo 2.
No passo 3, se o Professor clicar em cima de uma turma existente, ele
poderá excluir esta Turma.
3.1. O Sistema apresenta a tela para edição da turma, com todos os
campos já preenchidos.
Exclui Turma
3.2. O Professor clica no botão "Excluir Turma".
{Alternativo}
3.3. O Sistema pede a confirmação da exclusão.
3.4. O Professor confirma a exclusão.
3.3. O Sistema apresenta a mensagem "Turma excluída com sucesso!".
3.6. Retorna ao passo 2.
Inconsistência na
1. No Cadastro ou Edição de Turma, caso os campos obrigatórios não
validação dos dados
tenham sido preenchidos, o sistema apresenta a mensagem "Verifique
{Exceção}
os seguintes erros: <<listar erros>>".
1. Na exclusão da Turma, caso a Turma esteja vinculada com alguma
Inconsistência na
validação dos dados 2 prova a ser realizada, o sistema apresenta a mensagem "Não foi
{Exceção}
possível excluir a turma, existe provas a serem realizadas”.
3.2.2.2
UC02.02 Cria Exercícios
Permite ao Professor criar, alterar ou excluir exercícios. Também é permitido consultar os
exercícios criados por ele. A Tabela 9 apresenta todos os cenários do Caso de Uso UC02.02.
34
Tabela 9. UC02.02 Cria Exercícios
Cenário
Comentários
1. O Professor clica em "Elaborar Exercício".
2. O Sistema apresenta uma tela com os campos para a criação do
Criar Exercícios
exercício.
{Principal}
3. O Professor insere os dados do exercício e clica em "Inserir".
4. O Sistema valida os dados e cria o exercício.
5. O Sistema exibe a mensagem "Exercício criado com sucesso".
No passo 1, se o Professor clicar em “Editar Exercício”, ele pode editálo.
1.1. O sistema apresenta uma tela com todos os exercícios criados por
ele.
Edita Exercícios
1.2. O professor clica no exercício que deseja editar.
{Alternativo}
1.3. O sistema apresenta a tela para edição do exercício, com todos os
campos já preenchidos e um botão "salvar".
1.4. O Professor edita as informações e salva.
1.5. O sistema apresenta a mensagem "Exercício editado com sucesso".
No passo 1, se o Professor clicar em “Excluir Exercício”, ele pode
excluí-lo
1.1. O sistema apresenta uma tela com todos os exercícios criados por ele
e um link excluir ao lado de cada um.
Exclui exercícios
1.2. O professor clica no link excluir correspondente ao exercício que ele
{Alternativo}
deseja excluir.
1.3. O sistema pede a confirmação de exclusão.
1.4. O Professor confirma a exclusão.
1.5. O sistema exclui o exercício.
1.6. Retorna ao passo 1.1.
1. No Cadastro ou Edição de exercício, caso os campos obrigatórios não
Inconsistência na
tenham sido preenchidos ou algum campo único seja igual a outro já
validação dos dados
cadastrado, apresenta mensagem "Verifique os seguintes erros: <<listar
{Exceção}
erros>>".
3.2.2.3
UC02.03 Cria Prova
Permite ao Professor criar, alterar ou excluir Provas. A Tabela 10 apresenta todos os cenários
do Caso de Uso UC02.03.
35
Tabela 10. UC02.03 Cria Prova
Cenário
Comentários
1. O Professor clica em "Criar Prova".
2. O Sistema apresenta a listagem de provas do Professor e um botão
para criar uma nova prova.
3. O Professor clica no botão "Nova Prova".
Cria Prova
4. O Sistema apresenta uma tela com os campos para a criação da prova.
{Principal}
5. O Professor insere os dados da prova e clica em "Criar".
6. O Sistema valida os dados e cria a prova.
7. O Sistema exibe a mensagem "Prova criada com sucesso".
8. Retorna ao passo 2.
No passo 3, se o Professor clicar em cima de uma prova, ele pode editála.
3.1. O sistema apresenta a tela para edição da prova, com todos os
Edita Prova
campos já preenchidos e um botão "editar".
{Alternativo}
3.2. O Professor edita as informações e confirma.
3.3. O sistema edita a prova.
3.4. O sistema apresenta a mensagem "Prova editada com sucesso".
3.5. Retorna ao passo 2.
No passo 3, se o Professor clicar em cima de uma prova, ele pode excluíla.
3.1. O sistema apresenta a tela para edição da prova, com todos os
campos já preenchidos e um botão "excluir".
Exclui Prova
3.2. O Professor clica no botão excluir.
{Alternativo}
3.3. O sistema pede a confirmação de exclusão.
3.4. O Professor confirma a exclusão.
3.5. O sistema exclui a prova.
3.6. Retorna ao passo 2.
Erro na edição ou
No passo 3.5 do cenário "Exclui Prova" ou no passo 3.3 do cenário
"Edita Prova", se a prova já ter iniciado, o sistema apresenta a mensagem
exclusão de Prova
{Exceção}
"Impossível esta operação! Prova já iniciada".
1. No Cadastro ou Edição de prova, caso os campos obrigatórios não
Inconsistência na
tenham sido preenchidos ou algum campo único seja igual a outro já
validação dos dados
cadastrado, apresenta mensagem "Verifique os seguintes erros: <<listar
{Exceção}
erros>>".
3.2.2.4
UC02.04 Avalia Aluno
Permite ao professor verificar o desempenho do aluno na resolução dos exercícios, na
resolução das provas, os erros nas resoluções, as notas das provas, entre outras coisas.
3.2.2.5
UC02.05 Aceita Aluno na Turma
Permite ao professor aceitar ou recusar solicitações de alunos para entrarem nas turmas.
Abaixo segue uma tabela mostrando todos os cenários do UC02.05.
36
Tabela 11. UC02.05 Aceita Aluno na Turma
Cenário
Aceita aluno
{Principal}
Não aceita aluno
{Alternativo}
Comentários
1. O professor clica no botão "Turmas".
2. O sistema apresenta uma página com uma lista das turmas do
professor.
3. O professor clica em cima da Turma desejada.
4. O sistema apresenta as informações sobre a Turma, inclusive um botão
escrito "verificar solicitações".
5. O professor clica no botão verificar solicitações.
6. O sistema apresenta um lista contendo todos os alunos que enviaram
solicitações, e dois botões do lado de cada aluno escrito em um "Aceitar"
e no outro "Não Aceitar".
7. O professor clica no botão "Aceitar" ao lado de determinado aluno
para aceitá-lo na turma.
8. O sistema inclui este aluno na turma, retira a solicitação da lista de
solicitações e apresenta a mensagem "Aluno inscrito na Turma".
9. O sistema continua na mesma tela de Aceitação de solicitações.
No passo 7 se o aluno clicar em "Não Aceitar" ao lado de determinado
aluno para aceitá-lo na turma.
7.1. O sistema não inclui este aluno na turma, retira a solicitação da lista
de solicitações e apresenta a mensagem "Aluno não inscrito na Turma".
9. O sistema continua na mesma tela de Aceitação de solicitações.
3.2.3 PCT03. Controle do Site
Este pacote fornece os Casos de Uso que podem ser realizados pelo Administrador do Site.
A Figura 19 apresenta os Casos de Uso do Pacote PCT03.
Figura 19. Pct03. Controle do site
3.2.3.1
UC03.01 Cria Modelo
Permite ao Administrador do Site inserir, editar ou excluir o Modelo ER da base de dados.
37
3.3 DIAGRAMA DE CLASSE
O Diagrama de Classe é a representação da estrutura e relações das classes. Nele é definida
toda a classificação dos objetos que o sistema proposto necessita possuir. A Figura 20 apresenta o
Diagrama de Classe do sistema proposto.
Figura 20. Diagrama de classe
3.4 MÉTODO DE CORREÇÃO DA ÁLGEBRA RELACIONAL
Para fazer a correção dos exercícios, o sistema utiliza um método de transformação da
expressão em álgebra relacional para o SQL. Ao se obter o comando em SQL, este é submetido ao
banco. Como o professor, ao criar um exercício, coloca a resposta em SQL, então, será submetido
ao banco o comando gerado pela transformação da expressão de álgebra e a resposta do professor.
Com o resultado obtido dos dois comandos, é feita uma comparação para verificar se o resultado foi
o esperado.
A Figura 21 apresenta um modelo do método de correção da álgebra relacional.
38
Figura 21. Método de correção da álgebra relacional
39
4 IMPLEMENTAÇÃO
Neste capítulo são apresentadas todas as ferramentas e técnicas utilizadas no
desenvolvimento do sistema.
4.1 MICROSOFT VISUAL STUDIO 2008
O sistema foi desenvolvido utilizando-se o ambiente de programação Visual Studio 2008 da
Microsoft, que segundo a Microsoft Corporation (2009), é um conjunto de ferramentas de
desenvolvimento projetadas para auxiliar os desenvolvedores de software a criarem soluções
inovadoras. A função do Visual Studio 2008 é aprimorar o processo de desenvolvimento para tornar
mais simples e satisfatório o trabalho de criação das soluções.
Segundo a Microsoft Corporation (2009), o Visual Studio aprimora o processo de
desenvolvimento de quatro maneiras:
•
De maneira produtiva, pois suas ferramentas inovadoras ajudam os desenvolvedores a se
concentrarem na resolução dos problemas, sem perder tempo com pequenos detalhes;
•
De maneira integrada, pois o ambiente Visual Studio 2008 conta com ferramentas,
servidores e serviços que funcionam bem entre si e outras ferramentas da Microsoft;
•
De maneira abrangente, oferecendo ferramentas para todas as fases de desenvolvimento
do software, além disso, oferece suporte ao desenvolvimento de software para PCs,
servidores, web e dispositivos móveis. Também oferece suporte a variadas linguagens de
programação, entre elas o C#, Visual Basic, C++, ASP.NET, entre outras; e
•
De maneira confiável, pois foi projetado e testado para apresentar características
consistentes de confiabilidade, segurança, interoperabilidade e compatibilidade.
Pelos motivos apresentados acima, foi adotado o ambiente de programação Visual Studio
2008 para o desenvolvimento do sistema.
4.2 MICROSOFT SQL SERVER 2005 EXPRESS
O Microsoft SQL Server 2005 Express é um SGBD criado pela Microsoft. Segundo a
Microsoft Corporation (2009), é um produto de gerenciamento de dados confiável e poderoso que
fornece recursos robustos, proteção de dados e desempenho para clientes de aplicativos
incorporados, aplicativos Web simples e armazenamento de dados locais. O SQL Server 2005
Express é uma versão gratuita e pode ser distribuído com outros aplicativos.
O sistema para apoio à aprendizagem de álgebra relacional à princípio utilizaria o Banco de
Dados MySQl, porém optou-se por adotar o SQL Server 2005 Express como banco de dados para o
gerenciamento das informações, por se tratar de uma versão gratuita, fácil de usar, leve,
incorporável e por sua total integração com o ambiente de desenvolvimento Visual Studio 2008.
Uma restrição na implementação da expressão de junção natural foi encontrada ao se adotar
o SGBD SQL Server, o qual não suporta este tipo de comando. Por tanto, a expressão junção
natural não foi implementada.
4.3 GOLD PARSER BUILDER
GOLD Parser Builder é uma ferramenta gratuita desenvolvida pela Devin Cook, utilizada
para a criação de compiladores (DEVIN COOK, 2009).
A ferramenta GOLD possui um Construtor (Builder) que é o seu principal componente. Este
componente tem por objetivo ler a gramática descrita na meta-linguagem do GOLD, fazer as
respectivas análises, e gerar um arquivo de tabela com a gramática compilada (arquivo .cgt). Este
arquivo gerado é independente de plataforma e linguagem, com isso, diferentes “Engine” já
existente em diversas linguagens são capazes de carregar este arquivo e ler suas informações.
“Engine” são DLL existentes desenvolvidas em linguagens variadas, capazes de ler o
arquivo .cgt e executar as ações necessárias sobre elas.
A figura 22 mostra a interface da ferramenta GOLD Parser Builder.
41
Figura 22. Interface da ferramenta GOLD Parser Builder.
Fonte: Devin Cook (2009).
Além do arquivo .cgt, a ferramenta GOLD também gera um código intermediário na
linguagem desejada. Este código intermediário contém o código fonte base, no qual após passar por
uma fase de otimização do código, ele é utilizado para utilizar a “Engine” escolhida.
A Figura 23 mostra como gerar o código intermediário no GOLD. No momento de criação
do código intermediário, escolhe-se a linguagem desejada.
42
Figura 23. Gerando o programa modelo no GOLD.
Fonte: Devin Cook (2009).
Abaixo, a Figura 24 mostra um modelo do processo de execução da ferramenta GOLD
Parser Builder.
Figura 24. Modelo de processo de execução da ferramenta GOLD.
A ferramenta GOLD Parser Builder foi a escolhida para utilizar no sistema devido a ser uma
ferramenta gratuita e por gerar o código na linguagem C#, a linguagem utilizada no
desenvolvimento do sistema.
4.4 CORREÇÃO DOS EXERCÍCIOS
Conforme a Figura 21, do capítulo 3.4, pode-se verificar que são necessárias algumas etapas
para se fazer a correção dos exercícios. Neste capítulo é explicado detalhadamente como é feita a
correção.
43
Primeiramente, com a ajuda da ferramenta GOLD Parser Builder, foi desenvolvido um
compilador para fazer a tradução da álgebra relacional para o SQL. Na ferramenta GOLD, foi
elaborada uma gramática (Apêndice A), a qual está relacionada aos tipos de operações da álgebra
relacional. Ainda com a ajuda da ferramenta GOLD, foi criado um arquivo com uma tabela da
gramática compilada e elaborado o código intermediário (Apêndice A). Com este código
intermediário, após fazer uma otimização, conseguiu-se fazer a tradução de operações de álgebra
relacional para o SQL. Com isso, o processo de tradução da álgebra para o SQL estava pronto.
Figura 25. Etapa de compilação.
Após esta primeira etapa, partiu-se para submeter ao Banco de Dados o comando SQL que
foi gerado pela tradução do compilador e o SQL informado pelo professor na hora de elaborar um
exercício. Com esses dois resultados, pode-se fazer a comparação dos resultados.
Na comparação dos resultados, primeiro é analisado o número tuplas e o número de colunas.
Se em alguma dessas duas análises for diferente, já se sabe que o resultado está incorreto. Porém, se
passar por estas duas análises, é capturado o conteúdo das tuplas para uma nova analise.
Esta nova análise é dada da seguinte maneira, o sistema verifica quais foram os dados que
foram recuperados, e a cada tupla encontrada, o sistema transforma em uma string. Este processo é
executado em cima do SQL que foi gerado pela tradução do sistema e do SQL informado pelo
professor. Feito isto, ele faz a comparação dos strings. O código pode ser visualizado no Apêndice
B.
44
Com este método de correção, foi delimitado ao aluno escrever uma expressão de álgebra
relacional que esteja completamente na seqüência em que descrito no enunciado de uma pergunta,
por exemplo:
Em uma pergunta, o enunciado é o seguinte: Selecione o nome dos clientes e suas
respectivas cidades. Se o aluno trouxer os dados nesta seqüência (nome, cidade), a resposta estará
correta, porém, se ele inverter a seqüência (cidade, nome), a resposta estará incorreta (ver Figura
26).
Figura 26. Seqüência da resposta.
45
5 APRESENTAÇÃO DA FERRAMENTA
Neste capítulo são descritas todas as funcionalidades desenvolvidas no sistema.
5.1 INSERIR MODELO DE BASE DE DADOS
O modelo de base de dados basicamente é uma imagem que corresponde à base de dados
criada no SQL Server. Somente um administrador do sistema poderá inserir um novo modelo no
sistema, por medidas de segurança. Este modelo será útil tanto para o professor na hora de criar um
exercício, quanto para o aluno na hora de respondê-los. Cada modelo de dados corresponde a uma
base de dados criada no SQL Server. Abaixo, a Figura 27 mostra um exemplo de um modelo de
base de dados.
Figura 27. Modelo de base de dados.
Para inserir um novo modelo deve seguir três passos: (i) primeiramente o administrador
recebe um script de comando SQL enviado por algum usuário com privilégio de professor (ver
Figura 28), e com este script o administrador cria a base de dados no SGBD SQL Server e cria uma
imagem com o modelo dessa base de dados; (ii) o administrador faz o upload da imagem do
46
modelo, para que a imagem fique armazenada no sistema; e (iii) o administrador insere o nome da
base de dados do SQL Server correspondente ao modelo e o nome da imagem do modelo.
Figura 28. Enviar um script com os comandos SQL.
A Figura 29 apresenta o método de inserção de um novo modelo da base de dados.
47
Figura 29. Inserindo um novo modelo de base de dados.
5.2 CADASTRO DE PROFESSOR
Somente um administrador poderá oferecer privilégios de professor a um usuário do sistema,
garantindo com isso algumas medidas de segurança. O administrador possui dois métodos para
fornecer um privilégio de professor. São elas descritas abaixo:
•
Criando um novo usuário com privilégio de professor: Desta maneira o administrador
vai criar um novo cadastro de usuário já oferecendo um perfil de professor; e
•
Editar o perfil de um usuário já cadastrado: Desta maneira, o cadastro já existe, e o
administrador apenas irá oferecer o perfil de professor ao usuário.
Abaixo, a Figura 30 apresenta os dois métodos para fornecer um privilégio de professor.
48
Figura 30. Fornecer privilégios aos usuários.
O administrador também poderá retirar os privilégios de um usuário neste mesmo local, ou
até mesmo oferecer um privilégio de administrador a um usuário.
5.3 ELABORAÇÃO DE EXERCÍCIOS
A Elaboração de Exercícios serve para que usuários com perfis de professores ou
administradores possam criar um novo exercício no sistema. É necessário preencher algumas
informações para criar o exercício. Primeiramente, o usuário irá fornecer o modelo ao qual ele quer
criar o exercício. Com o modelo escolhido, o usuário preencherá algumas informações como o
enunciado do exercício, sua resposta em álgebra relacional e a resposta em SQL.
A Figura 31 representa a tela de elaboração dos exercícios.
49
Figura 31. Elaboração de exercícios.
50
5.4 RESOLUÇÃO DE EXERCÍCIOS
A resolução dos exercícios será o local onde os usuários irão testar seus conhecimentos.
Aleatoriamente, o sistema irá buscar um exercício no banco de dados, e mostrará para o usuário a
descrição da pergunta e o modelo da base de dados correspondente (Figura 32).
Figura 32. Resolução de exercícios.
51
No entanto, no momento de escrever a resposta, tem-se uma pequena restrição, a resposta
deve ser escrita toda em letras minúsculas Após responder o exercício, o sistema irá informar se a
resposta foi correta, incorreta ou se teve algum erro sua elaboração. Também mostrará os dados da
consulta que foram recuperados da base de dados e as últimas tentativas de respostas. A Figura 33
apresenta a resolução de uma pergunta informando uma resposta correta.
Figura 33. Resolução de exercício com a resposta correta.
A Figura 34 também apresenta a resolução de uma pergunta, porém informando uma
expressão incorreta.
52
Figura 34. Resolução de exercício com a resposta incorreta.
Já na Figura 35, tem-se a resolução de uma pergunta informando uma expressão mal
formulada. Nesse momento, o sistema apresenta uma mensagem de qual foi o erro.
53
Figura 35. Resolução de exercício com a uma expressão mal formulada.
54
6 TESTES E VALIDAÇÃO
Neste capítulo são apresentados os resultados dos testes aplicados para validação da
ferramenta e tem como objetivo avaliar seu funcionamento.
Inicialmente foram realizados alguns testes em paralelo a ferramenta, à medida que algumas
funcionalidades já ficavam prontas. Após a conclusão das atividades de programação, foi elaborado
um formulário com questões relacionadas à usabilidade (Apêndice C) para a realização de um teste.
Os testes realizados foram aplicados juntamente com 18 alunos da disciplina de Banco de
Dados I do curso de Ciência da Computação na Univali com o apoio da professora Adriana Gomes
Alves. A escolha deste grupo de testes justifica-se pelo contato dos alunos com a álgebra relacional,
que é um assunto abordado durante a matéria de Banco de Dados I, o que permitiu avaliar a
ferramenta de forma satisfatória.
Os resultados coletados foram tabulados em uma planilha para possibilitar a análise das
informações através de gráficos. O gráfico da Figura 36 apresenta os resultados das dificuldades
encontradas pelos alunos na utilização do sistema.
Figura 36. Gráfico apresentando a dificuldade dos alunos na utilização do sistema.
55
O gráfico da Figura 37 apresenta os resultados obtidos em relação à questão que perguntava
se foi possível compreender melhor a lógica da álgebra relacional ao se fazer o uso do sistema.
Figura 37. Gráfico apresentando a compreensão da lógica da álgebra relacional com a utilização do
sistema.
Avaliando os resultados obtidos e com os comentários escritos pelos alunos, pode-se
observar que o maior problema dos alunos é em relação à lógica da álgebra relacional. Com o uso
deste sistema, onde os alunos puderam ver o que acontecia na utilização de cada expressão, podiam
verificar os dados que retornavam de suas consultas e podiam ver onde estavam os erros que
cometiam, os alunos tiveram uma melhor compreensão da lógica da álgebra, onde estavam suas
maiores dificuldades.
Abaixo são apresentados alguns comentários feitos pelos alunos no momento da realização
dos testes:
“Com o dinamismo fica mais fácil perceber os erros. O sistema corrige e mostra onde
erramos, caso o exercício esteja, porém incompleto, o sistema mostra o select gerado. Tudo isso
ajuda muito no aprendizado.”
“Gostei da forma como a ferramenta exibe as respostas dos exercícios, isso ajuda a entender
a matéria quando se tem a visualização da tabela com a resposta.”
56
“O sistema mostrou-se útil no quesito de ajudar a compreender melhor a álgebra relacional,
ficando mais fácil o aprendizado que somente é no papel.”
“Muito bom, seria melhor se os professores utilizassem o programa para um melhor
entendimento da álgebra.”
“Achei muito mais prático e funcional o entendimento da álgebra relacional.”
“Esta ficando muito bom, eu entendi perfeitamente o programa, só não entendo a álgebra
relacional.”
“Muito motivante para a matéria, pois assim é possível ver realmente o que acontece com a
álgebra relacional.”
No Apêndice C tem-se o questionário que foi elaborado e todos os resultados das questões.
57
7 CONCLUSÕES
A Álgebra Relacional é uma linguagem de consulta para banco de dados que necessita uma
boa prática para seu bom entendimento. Porém, na Univali, esta prática é efetuada atualmente por
muitos exercícios manualmente, sem o auxílio de nenhuma ferramenta. Uma ferramenta que auxilie
os alunos na hora da resolução dos exercícios e os professores na correção dos mesmos é
indispensável.
Existem atualmente algumas ferramentas que fazem o processo de correção da expressão da
álgebra relacional, mas nenhuma com o intuito de resolver exercícios elaborados por professores.
Foram estudadas algumas ferramentas, porém, o objetivo delas é buscar o resultado no banco
através das expressões de álgebra.
Este trabalho teve como objetivo desenvolver um sistema que auxilie os alunos na
aprendizagem, e auxilie os professores na hora da correção dos exercícios.
Para a primeira fase deste trabalho (TCC I), foi realizada uma introdução se baseando nos
princípios que se trataria o projeto. Na fundamentação teórica (Capítulo 2), foram abordados os
conceitos relacionados a banco de dados, focando na linguagem de consulta álgebra relacional,
alguns conceitos de compiladores, que foram necessários para o desenvolvimento do sistema, e
ainda foi realizado um estudo de algumas ferramentas similares.
Na parte de projeto (Capítulo 3), foram levantados e documentados os requisitos e regras de
negócio para o desenvolvimento do sistema. Foi definido os casos de uso necessários à
implementação do sistema e o diagrama de classes. Na etapa de implementação (Capítulo 4), foi
explicado os motivos das adoções das ferramentas utilizadas para a implementação do sistema.
Neste mesmo capítulo foi explicado como foi realizado o processo de correção dos exercícios.
No Capítulo 5 foi realizada a apresentação do sistema, mostrando as principais
características implementadas. Após a finalização da implementação, foi realizado um teste com
alguns alunos da matéria de Banco de Dados I da Univali para certificar-se que a ferramenta
encontrava-se em funcionamento. Durante o teste, foi solicitado para os alunos um feedback a
respeito da ferramenta.
58
Verificando a situação em que o trabalho se encontra, concluiu-se que praticamente todos os
objetivos propostos foram contemplados dentro das especificações estabelecidas na fase conceitual,
onde não foi implementada apenas os feedbacks que a ferramenta se propôs a oferecer nesta versão
do sistema, pelo motivo do escopo do sistema ter ficado grande e com isso focou-se principalmente
na correção dos exercícios.
Com a realização dos testes, pode-se observar que o sistema pode ser muito útil para a
aprendizagem da álgebra relacional, pois a interação proporcionada pela ferramenta torna o
entendimento muito mais fácil.
7.1 TRABALHOS FUTUROS
Após finalizar os módulos propostos nesta versão do sistema, ficam descritas neste Capítulo
algumas propostas para serem realizadas em trabalhos futuros.
Para aprimorar a ferramenta, sugere-se fazer a implementação dos módulos de criação de
turmas, e o módulo de criação de avaliações que facilitariam muito a aplicação de provas para os
alunos.
Seria interessante aprimorar o sistema implementando alguns relatórios fornecendo
feedbacks para os professores poderem avaliar o desempenho dos alunos. Outra recomendação seria
implementar mais operações da álgebra relacional, podendo assim, atender a todos os tipos de
expressões de álgebra relacional.
Outra sugestão para a melhora do sistema seria uma modelagem na interface, fornecendo
mensagens mais fáceis de entenderem.
59
REFERÊNCIAS BIBLIOGRÁFICAS
AHO, Alfred V.; LAM, Monica S.; SETHI, Ravi; ULLMAN, Jeffrey D. Compiladores:
princípios, técnicas e ferramentas; [tradução Daniel Vieira]. São Paulo: Pearson Addison-Wesley,
2008.
APPEL, Ana Paula; TRAINA JUNIOR, Caetano. IDFQL – Interactive Data Flow Query
Language. Version 2.0. Disponível em: < http://gbdi.icmc.usp.br/~anaappel/idfql.php >. Acesso
em: 19 ago. 2008.
APPEL, Ana Paula; TRAINA JUNIOR, Caetano. IDFQL. São Carlos: Universidade de São Paulo,
2004. Disponível em: <http://gbdi.icmc.usp.br/publicacoes/arquivos/appel_sbbd2004.pdf>. Acesso
em: 19 ago. 2008.
DATE, C.J. Introdução a Sistemas de Bancos de Dados. Rio de Janeiro: Elsevier, 2003.
DEVIN COOK. Gold Parser Builder Documentation. 2009. Disponível em:
<http://www.devincook.com/goldparser/doc/index.htm>. Acesso em: 12 mar. 2009.
DEVIN COOK. Gold Parser Builder. 2009. Version 3.4.4. Disponível em:
<http://www.devincook.com/goldparser/builder/index.htm>. Acesso em: 12 mar. 2009.
ELMASRI, Ramez; NAVATHE, Shamkant B. Sistemas de Banco de Dados. São Paulo: Pearson
Addison Wesley, 2005.
FARIA, Alexandre. Laboratório de EOTD – Estruturas, Organização e Tratamento de Dados.
2005. Disponível em: < http://eotd.paginas.sapo.pt/unid5.htm>. Acesso em: 09 set. 2008.
LOUDEN, Kenneth C. Compiladores: Princípios e Técnicas; [tradução Flávio Soares Corrêa da
Silva]. São Paulo: Pioneira Thomson Learning, 2004.
MARTINOTTO, André Luis. Uso de Prolog no Desenvolvimento de Compiladores. [200-?].
Disponível em: <http://www.inf.ufrgs.br/procpar/disc/cmp135/trabs/martinotto/trabII>. Acesso em:
10 jun. 2009.
MICROSOF CORPORATION (EUA). MSDN – Visual Studio 2008 Development System.
Disponível em: <http://msdn.microsoft.com/pt-br/vstudio/products/bb931214.aspx>. Acesso em: 03
mai. 2009.
MICROSOFT CORPORATION (EUA). Visual Studio 2008 Express. Disponível em:
<http://www.microsoft.com/express/download>. Acesso em: 07 out. 2008.
PIREZ, Paulo. Departamento de Informática e Matemática Aplicada. 2006.Disponível em:
<http://www.dimap.ufrn.br/~paulo.pires/cursos/bd/relacional.pdf>. Acesso em: 18 set. 2008.
SCHARDOSIM, Tatiane Schwanck. Ferramenta para Ensino de Álgebra. Trabalho de
Conclusão de Curso (Graduação) - Universidade Luterana do Brasil, Gravataí, 2006.
SILBERSCHATZ, Abraham; KORTH, Henry F; SUDARSHAN, S. Sistema de Banco de Dados.
Rio de Janeiro: Elsevier, 2006.
SOUZA, André Luiz. SQLONLINE. Disponível em: <http://www.sqlonline.org>. Acesso em: 15
ago. 2008.
61
APÊNDICES
62
A FONTES GERADOS NA FERRAMENTA GOLD
Neste apêndice são apresentados os códigos fontes da gramática elaborada na ferramenta
GOLD e o código intermediário que a mesma criou, porém já otimizado. A Figura 38 apresenta o
código fonte da gramática.
Figura 38. Código fonte da gramática.
Pelo motivo de o código intermediário gerado pelo GOLD ser muito extenso, a Figura 39
apresenta apenas uma pequena parte do fonte, já otimizado, onde se faz a tradução de uma
expressão de seleção da álgebra relacional para o SQL.
Figura 39. Fonte do código intermediário.
64
B CÓDIGO FONTE DA CORREÇÃO DOS EXERCÍCIOS
Neste apêndice é apresentado o código fonte da parte de correção dos exercícios (Figuras 40
e 41).
Figura 40. Código fonte da correção dos exercícios – Parte 1.
65
Figura 41. Código fonte da correção dos exercícios – Parte 2.
66
C DOCUMENTO E RESULTADOS DE TESTE
Neste apêndice é apresentado o documento elaborado para a realização dos testes e os
resultados representados graficamente. A Figura 42 apresenta o documento elaborado para a
realização do teste.
Figura 42. Documento de teste.
67
As Figuras abaixo apresentam os gráficos com os resultados do teste.
Figura 43. Gráfico apresentando se o sistema pode motivar o interesse do aluno pela álgebra.
Figura 44. Gráfico apresentando se o aluno ficou perdido na utilização do sistema.
68
Figura 45. Gráfico apresentando se as cores e as imagens foram bem exploradas.
Figura 46. Gráfico apresentando como seriam melhores as aulas de álgebra relacional.
69
Download