Para o desenvolvimento do módulo de apoio a aprendizagem foi necessária a utilização de uma ferramenta de desenvolvimento, uma linguagem de programação com um framework e dois plugins, uma linguagem de estilo e a linguagem de marcação para armazenamento, os quais são descritos a seguir.
3.2.1 NetBeans
A ferramenta de desenvolvimento utilizada neste trabalho foi o NetBeans, a escolha foi feita a partir de uma busca de uma ferramenta que desse suporte às tecnologias utilizadas no projeto, verificou-se então que o NetBeans alerta sobre falhas no código, realiza identação automática, completava automaticamente o código e é opensource. A Figura 16 mostra como foi o desenvolvimento do módulo de apoio à aprendizagem na ferramenta.
Figura 16. Desenvolvimento com a ferramenta NetBeans.
3.2.2 Javascript
Para realizar o desenvolvimento do módulo foi necessário utilizar uma linguagem de programação que fosse executada no lado do cliente (Figura 17) e que não interferisse no código da aplicação que utiliza o tutorial.
Figura 17. Visão geral das tecnologias web.
Fonte: Scorchsoft (2012)
A linguagem Javascript possui um número reduzido de tipos básicos, é interpretada pelo navegador, a tipificação é dinâmica, suporta os conceitos básicos de programação:
decisão, laço de repetição, funções, recursividade e exceções, também possui recursos avançados como listas dinâmicas contendo valores de tipos diferentes e manipulação do DOM (Document Object Model) (SILVA, 2010).
Apesar de o Javascript possuir todos os recursos necessários para desenvolver esse projeto, foi verificado que era possível otimizar o desenvolvimento através de um framework, com o jQuery seria possível manipular os elementos HTML, atribuir estilos no módulo de apoio a aprendizagem e ler o arquivo de dados com mais facilidade sem ter perda significativa de desempenho.
Com a utilização do jQuery foi possível incluir dois plugins, o jquery.cookie.js para criar, editar, recuperar e apagar os COOKIES utilizando apenas uma linha de código e o jqfloat.js para criar um efeito de flutuação na flecha do módulo de apoio a aprendizagem. Para gerar a janela do módulo foi necessário atribuir propriedades gráficas por jQuery através da linguagem CSS (Cascading Style Sheets).
Utilizando esses recursos é possível ter grande integração entre as bibliotecas e os COOKIES, pois todas as tecnologias conseguem se comunicar sem que haja interferência da tecnologia utilizada pelo software que está incorporando o módulo educacional.
3.2.3 XML
Tendo os recursos de desenvolvimento definidos foi necessário utilizar um modo de armazenamento que fosse independente de servidor e que fosse lido pelo jQuery, dentre as opções viáveis esteve o XML.
Segundo Deitel (2003), o XML é um recurso acessível aos desenvolvedores por ser simples de implementar, as linguagens de programação já possuem scripts para sua manipulação e as aplicações podem ser diversas. Uma das aplicações do XML é o armazenamento de dados, a principal vantagem é que ele pode ser lido por qualquer linguagem de programação e não depende de instalação para seu funcionamento.
Para validar os campos do arquivo de dados foi utilizado um XML Schema, conforme Quadro 10, neste formato é possível verificar o tipo aceito de cada atributo, se os elementos são obrigatórios ou então se é permitido uma sequência de dados ou apenas um elemento.
Quadro 8. XML Schema do arquivo de dados
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.w3schools.com"
xmlns="http://www.w3schools.com"
elementFormDefault="qualified">
<xs:element name="Tutoriais">
<xs:complexType>
<xs:sequence>
<xs:element name="Tutorial">
<xs:attribute name="TutorialId" type="xs:integer" use="required" />
<xs:attribute name="Nome" type="xs:string" use="required" />
<xs:element name="Licoes">
<xs:complexType>
<xs:sequence>
<xs:element name="Licao">
<xs:attribute name="LicaoId" type="xs:integer" use="required" />
<xs:attribute name="Titulo" type="xs:string" use="required" />
<xs:attribute name="Endereco" type="xs:string" use="required" />
<xs:attribute name="TextoExplicativo" type="xs:string" />
<xs:attribute name="Imagem" type="xs:string" />
<xs:attribute name="Avaliacao" type="xs:string" />
<xs:element name="Respostas">
<xs:complexType>
<xs:sequence>
<xs:element name="Resposta">
<xs:attribute name="Valor" type="xs:integer" use="required" />
<xs:attribute name="Legenda" type="xs:string" use="required" />
<xs:attribute name="Correta" type="xs:boolean" use="required" />
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:attribute name="TextoInstrucional" type="xs:string" use="required" />
<xs:element name="Elementos">
<xs:complexType>
<xs:sequence>
<xs:element name="Elemento">
<xs:attribute name="ElementoId" type="xs:integer" use="required" />
<xs:attribute name="Identificador" type="xs:string" use="required" />
<xs:attribute name="Valor" type="xs:string" />
<xs:element name="Acao" use="required">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value-"click"/>
<xs:enumeration value="change"/>
<xs:enumeration value="keyup"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
O Quadro 11 exemplifica o que foi descrito no XML Schema exibindo apenas a lição 1, essa lição faz parte do tutorial aplicado no teste com os alunos da disciplina de Engenharia de Software.
Quadro 9. Lição 1 do arquivo de dados aplicado no teste com o Sizify
<Licao>
<LicaoId>1</LicaoId>
<Titulo>O método</Titulo>
<Endereco>/</Endereco>
<TextoExplicativo>
Análise de Pontos de Função é o método padrão para medir o software do ponto de vista do usuário pela quantificação da funcionalidade fornecida.
A aplicação da técnica pode beneficiar para estimativa de custos e recursos de um projeto ou até mesmo para verificação do tamanho e benefícios de uma melhoria num software.
@enter@
A contagem pode ser realizada antes da codificação do software e não depende da linguagem da programação, ou seja, é possível ter os Pontos de Função (PF) de uma aplicação apenas com os Requisitos Funcionais do
Usuário.
</TextoExplicativo>
<Avaliacao>Um dos objetivos da Análise de Pontos de Função é:</Avaliacao>
<Respostas>
<Resposta>
<Valor>1</Valor>
<Legenda>Calcular quantas tabelas um sistema terá</Legenda>
<Correta>false</Correta>
</Resposta>
<Resposta>
<Valor>2</Valor>
<Legenda>Medir a funcionalidade que o usuário solicita e recebe</Legenda>
<Correta>true</Correta>
</Resposta>
<Resposta>
<Valor>3</Valor>
<Legenda>Ajudar no processo de depuração de um software</Legenda>
<Correta>false</Correta>
</Resposta>
</Respostas>
<TextoInstrucional>
Após responder a pergunta da lição o módulo educacional te indicará o que deve ser feito. Nesse tutorial nós vamos realizar uma Análise de Pontos de Função de um Sistema de Pedidos.
@enter@
Clique em "Nova Análise" para prosseguir.
</TextoInstrucional>
<Elementos>
<Elemento>
<ElementoId>0</ElementoId>
<Identificador>#bt-newana</Identificador>
<Valor></Valor>
<Acao>click</Acao>
</Elemento>
</Elementos>
</Licao>