SlideShare uma empresa Scribd logo
1 de 28
Centro Federal de Educação Tecnológica da Paraíba
                        Coordenação de Informática
         Coordenação de Desenvolvimento de Software Para a Internet


                   RELATÓRIO TÉCNICO-CIENTÍFICO


      PROJETO DE PESQUISA: E-TEACHER – DESENVOLVENDO UMA
     FERRAMENTA DE INTERAÇÃO ENTRE PROFESSORES E ALUNOS


                MAURÍCIO LINHARES DE ARAGÃO JUNIOR
                            Matrícula: 10013148
                         Orientando e Bolsista PIBIC


                   JORGE FERNANDO LUÍS FERNANDES
                            Matrícula: 021013186
                            Orientando Voluntário


                         THIAGO PEREIRA VIEIRA
                            Matrícula: 022013240
                            Orientando Voluntário




                  JOÃO PESSOA – PB DEZEMBRO – 2005




1
RELATÓRIO TÉCNICO-CIENTÍFICO


             PROJETO DE PESQUISA: E-TEACHER – DESENVOLVENDO UMA
           FERRAMENTA DE INTERAÇÃO ENTRE PROFESSORES E ALUNOS


                                 MAURÍCIO LINHARES DE ARAGÃO JUNIOR
                                                       Matrícula: 10013148
                                                 Orientando e Bolsista PIBIC


                                      JORGE FERNANDO LUÍS FERNANDES
                                                      Matrícula: 021013186
                                                      Orientando Voluntário


                                                 THIAGO PEREIRA VIEIRA
                                                      Matrícula: 022013240
                                                      Orientando Voluntário




                         PROFESSOR MESTRE FREDERICO GUEDES PEREIRA
                                                         (ORIENTADOR)


                                      JOÃO PESSOA – PB DEZEMBRO – 2005


Sumário
Sumário.......................................................................................................................................2
2
1. Introdução...............................................................................................................................4

    2.1 Como surgiu a internet?....................................................................................................6

       2.1.1 Novas tecnologias da informação e o futuro da Internet...........................................7

    2.2 Educação à distância.........................................................................................................8

    2.3 E-Learning......................................................................................................................10

3. Materiais e métodos..............................................................................................................12

    3.1 Ferramentas utilizadas no desenvolvimento do projeto..................................................12

       3.1.1 Linguagem de programação.....................................................................................12

       3.1.2 Banco de dados........................................................................................................13

       3.1.3 Mapeamento objeto relacional.................................................................................14

       3.1.3 Container de inversão de controle............................................................................16

       3.1.5 Ambiente de desenvolvimento.................................................................................19

    3.2 Metodologia de Desenvolvimento..................................................................................19

4. Resultados.............................................................................................................................21

    4.1 Estado atual do sistema...................................................................................................21

    4.2 Outros resultados.............................................................................................................22

5. Conclusão..............................................................................................................................23

6. Bibliografia...........................................................................................................................25

7. Apêndice - Notas...................................................................................................................27




3
1. Introdução

A Internet surgiu como um meio de comunicação eficiente entre universidades espalhadas em
todo o mundo, onde eles trocavam informações, pesquisas e descobertas de forma mais rápida
do que seria possível através de cartas e os outros meios de comunicação disponíveis na
época. Não é de se estranhar que hoje a internet tenha se transformado no grande repositório
de conhecimento que nós conhecemos hoje.


Nos anos 80 foi desenvolvido o modo de ensino conhecido como “treinamento baseado em
computador”, que consistia em um programa de computador que é executado pelo usuário em
um computador. Essa maneira de ensino foi muito utilizado para treinar os usuários a utilizar
as aplicações contidas em seus computadores, mas devido a sua baixa interatividade e os
autos custos para o desenvolvimento, perdeu força nos dias atuais. Algumas ferramentas ainda
trazem versões simples desse tipo de treinamento, conhecidas como “tutoriais”, para ajudar o
usuário a entender como funciona uma aplicação específica.


Com essa facilidade de comunicação e difusão de informações, o ensino não poderia ser
deixado de lado. Conhecida atualmente como e-Learning, o uso de computadores e
tecnologias de rede para facilitar e complementar a educação tem demonstrado um
crescimento gigantesco e resultados incríveis, especialmente graças a interatividade que os
ambientes de e-Learning demonstram.


Ferramentas de e-Learning também estão sendo utilizadas para dar suporte a ensino a
distância (ou não presencial). Essas ferramentas fornecem meios para que os professores e
alunos, mesmo separados geograficamente, possam se comunicar e trocar informações em
tempo real, tanto através de textos como de vídeo conferências. Nestes ambientes, o aluno que

4
normalmente apenas assistiriai a uma aula pré-gravada ou faria o estudo de um texto sozinho,
pode interagir diretamente tanto com os outros alunos como com o professor para tirar
dúvidas e fazer perguntas.


O Projeto e-Teacher nasceu da necessidade de se montar uma estrutura simples e intuitiva
para a organização dos materiais de aula das várias disciplinas e vários cursos que uma
instituição possa oferecer. Além da organização e disponibilização dos materiais e a
possibilidade de interação entre alunos e professores, a ferramenta também busca ajudar na
administração dos cursos e disciplinas, com cadastros, matrículas, horários e marcação de
avaliações.


Mas o e-Teacher não procura ser uma ferramenta de e-Learning completa, pois já existem
várias outra ferramentas com maior maturidade que podem ser utilizadas em conjunto, como
ferramentas de vídeo-conferência, conversas em tempo real em salas de chats e fóruns
comunitários.


A implementação do projeto também serviu com um campo de testes para novas tecnologias e
para a aplicação de novas técnicas de desenvolvimento, como os conceitos de inversão de
controle e mapeamento objeto relacional, além do uso e homologação de diversos padrões de
projeto. O sistema foi desenvolvido na linguagem de programação Java.




5
2. Fundamentação Teórica



2.1 Como surgiu a internet?


A rede mundial de computadores que conhecemos hoje surgiu da reunião de vários esforços,
as vezes separados, as vezes unidos, e o mais importante deles foi a ARPAnet, um projeto
financiado pela Agencia de Projetos de Pesquisa Avançada dos Estados Unidos (ARPA –
Advanced Research Projects Agency), que foi a primeira rede de computadores por
comutação de pacotes (troca de mensagens) e ancestral da Internet que conhecemos hoje. Seu
projeto foi desenvolvido em 1967 e foi finalmente posto em prática em 1969, na Universidade
da Califórnia (Ucla).


De 1969 até o inicio dos anos 90 a rede mundial de computadores tinha um apelo meramente
acadêmico. Apenas Institutos de pesquisa e universidades tinha acesso a informação que
circulava na rede que viria a ser conhecida como Internet. Mas neste início de década veio a
verdadeira revolução que esta rede mundial vinha preparando, o surgimento da World Wide
Web, uma rede mundial de computadores que reuniria não apenas institutos relacionados a
educação, pesquisa e exercito, mas as empresas e pessoas de todo o mundo. Essa revolução
nasceu, em parte, no Centro Europeu para Física Nuclear (Cern – European Center for
Nuclear Physics), sob a tutela de Tim-Berners Lee, entre 1989 e 1991. Ele e seus
companheiros desenvolveram a linguagem de marcação Hyper-Text Makup Laguage
(HTML), o protocolo de comunicação de computadores Hyper-Text Transfer Protocol
(HTTP), o primeiro servidor de páginas Web e o primeiro Browser.




6
A partir de então a Internet começou a dar seus primeiros passos para fazer a revolução da
informação que ela está causando até hoje. Pois esteja onde você estiver, pode conseguir
informações sobre quase tudo o que desejar, bastando apenas ter um aparelho que se conecte a
internet, não necessariamente um computador, pois vídeo-games, aparelhos celulares,
televisores e ainda outros aparelhos não tão comuns (como geladeiras) também estão se
conectando a rede de mundial de computadores para trocar informações.


E é esta facilidade para se obter as informações que transforma a Internet em uma das mais
importantes criações do ser humano, mas também traz novos e gigantescos problemas por
causa da falta de controle que existe sobre o que é publicado na rede. Os maiores exemplos
disso são as redes Peer-to-Peer (P2P), onde pessoas trocam arquivos de diversos tipos, como
música, vídeos, documentos, de modo gratuito, muitas vezes infringindo as leis de
propriedade intelectual sobre aqueles arquivos ou informações que estão sendo trocadas.



2.1.1 Novas tecnologias da informação e o futuro da Internet


A Internet forçou a criação de novos padrões na disseminação do conhecimento de no modo
como ele deve ser tratado. Os sistemas de computação eram vistos de uma forma quase
mágica, pois apenas seus criadores e pessoas especializadas sabiam utilizar, deram lugar a
interfaces gráficas para o usuário, as chamadas GUI (Graphic User Interface), que tornam a
sua operação cada vez mais intuitiva e fazem com que se exija cada vez menos das pessoas
para que elas operem um computador de forma satisfatória.


Com essa facilidade e a socialização dos computadores (mais em alguns países do quem em
outros), os meios para a distribuição da informação estão tendo que se adequar tanto a
facilidade de uso como a velocidade de acesso.

7
O futuro da Internet já está sendo apontado, ela está se dirigindo para uma convergência entre
todas as outras formas de mídia, para criar um algo novo e que mesmo que não leve os outros
meios a extinção vai diminuir cada vez mais o seu peso sobre a informação e formação de
opinião, porque uma pessoa que tenha acesso a Rede não vai precisar sair dela para ouvir uma
rádio, assistir um programa de televisão, ler o seu jornal preferido, fazer uma pesquisa para
um trabalho acadêmico, conhecer novas pessoas ou se divertir jogando alguma coisa.


Não há nada de ficção científica nisso, a tendência de que o computador se torne o centro de
entretenimento e pesquisa nos lares é real e já está acontecendo nos grandes centros, como
EUA, Europa e Japão, mas até que esta nova mídia chegue a os países mais pobres vai
demorar um pouco, e pode até mesmo nem tornar-se realidade tão cedo, se depender do
controle que as elites desejam manter sobre seus dominados.


A Internet caminha para ser a mais importante fonte de informação da humanidade (se não já
for), mas também é a que mais exclui, por seu alto custo econômico, proibitivo para a maioria
dos lares dos países subdesenvolvidos, como o Brasil.



2.2 Educação à distância


Entende-se como educação a distância a estratégia desenvolvida por sistemas educativos para
oferecer educação a setores ou grupos da população que, por razões diversas, tem dificuldades
de acesso a serviços educativos regulares. Este modo de ensino é caracterizado pela separação
entre alunos e professores no espaço e/ou tempo, pelo controle do aprendizado sendo feito
mais intensamente pelo próprio aluno do que pelo seu professor, que não tem condições de
acompanhá-lo pessoalmente, e pela comunicação entre alunos e professores se dando por
meios impressos ou meios tecnológicos de comunicação e não pessoalmente.

8
A primeira experiência de ensino a distância que se tem notícia aconteceu na Suécia, em
1833, para um curso de contabilidade. A prática então se disseminou por toda Europa e depois
para o resto do mundo. Hoje, os principais divulgadores desta prática são França, Inglaterra e
Espanha.


O Brasil tem contato com a educação a distância a partir de 1904, quando universidades e
escolas internacionais oferecem seus cursos, mas a primeira empreitada verdadeiramente
brasileira só surge em 1934 quando Edgard Roquete-Pinto a Rádio-Escola Municipal no Rio
de Janeiro. A partir desse primeiro passo várias novas ações foram movidas na área de
educação a distância, como a formação do Instituto Universal Brasileiro em 1941, que ainda
hoje é um dos maiores exemplos de ensino a distância no país.


Hoje, várias universidades brasileiras tem centros de estudos em ensino a distância e também
desenvolvem vários projetos se utilizando desse modelo. Um dos exemplos é a Universidade
Federal de Lavras (UFLA), que oferece cursos de especialização (Latu Sensu) à distância a
mais de 18 anos, em diversas áreas do conhecimento.


2.2.1 Ensino assistido por computador


O ensino assistido por computador foi uma das primeiras modalidades de ensino a distância a
utilizar o computador como facilitador na educação. Ele é caracterizado por ser um programa
que o usuário executa localmente em sua máquina, que mostra um passo-a-passo para que o
usuário possa aprender a utilizar ou operar um programa contido em seu computador. Esta
modalidade foi muito utilizada na década de 80, mas hoje não é mais tão comum por causa
dos altos custos envolvidos na criação das aulas.



9
Hoje as pessoas costumam utilizar um modo simplificado dessa modalidade, que consiste em
tirar screnshots (imagens da tela) do computador, adicionar notas e comentários as imagens e
depois montar uma apresentação de imagens seqüenciais (ou apresentação de slides). Existem
softwares especializados na criação deste tipo de mídia, tanto gratuitos como proprietários,
como o Viewlet Builderii.



2.3 E-Learning



O E-Learning é um passo a frente do ensino assistido por computadores, porque ele procura
fazer uso da interatividade que o computador e a Internet podem fornecer, com o uso de
multimídia e interatividade, que não eram utilizados no método anterior. Mas o E-Learning
não é utilizado apenas para educação à distância, ele também pode ser utilizado com uma
fonte de ajuda e desenvolvimento para o ensino presencial tradicional, fornecendo outras
maneiras para que alunos e professores possam interagir de forma a fixar melhor os
conhecimentos.


O aprendizado híbrido, que mistura o ensino tradicional com o uso de tecnologia e
computadores para a educação é simplesmente uma extensão do uso de ferramentas de e-
learning. Nele, as atividades são divididas em síncronas, que são as aulas presenciais,
apresentação de trabalhos e outros momentos nos quais os alunos estão junto dos professores,
e atividades assíncronas, que são o acesso ao sistema de gerenciamento de educação
(Managed Learning Enviromentiii), acesso e produção de blogs, wikis e pesquisas na internet.


Nos últimos tempos, o foco deste tipo de ensino está se direcionando muito mais para as
discussões e fóruns sobre os assuntos do que no simples estudo do conteúdo em si. Este tipo

10
de abordagem, conhecida como construtivismo, que afirma que através de discussões e do
pensar sobre os assuntos os alunos aprendem e conseguem manter muito mais informação do
que simplesmente “decorar” o que foi passado nas aulas.


Uma das mais famosas ferramentas de e-learning da atualidade é o Moodleiv, que é uma das
mais completas plataformas de e-learning e ensino a distância da atualidade. Ele é um
software livre e gratuito distribuído sobre a licença Gnu Public Licence, multiplataforma e
que já está sendo desenvolvido a mais de 7 anos por uma comunidade vibrante de usuários e
entusiastas. Um dos maiores exemplos do sucesso do uso do Moodle é a Open Universityv,
que é uma universidade especializada no ensino a distância da Inglaterra, que reúne
estudantes de todo o mundoe já formou mais de 3 milhões de pessoas em diversas áreas e
níveis de ensino. A Open University também é conhecida por ser a universidade com as
melhores avaliações dos estudantes do Reino Unido e do País de Gales.




11
3. Materiais e métodos

3.1 Ferramentas utilizadas no desenvolvimento do projeto

3.1.1 Linguagem de programação


A linguagem de programação escolhida para o desenvolvimento do projeto foi a linguagem
Java, desenvolvida pela Sun Microsystems. Java começou a ser desenvolvida em dezembro de
1990 pelo Green Project, que tinha como objetivo principal a criação de uma nova linguagem
de programação simples e multiplataforma que pudesse ser embarcada em ambientes que não
fossem computadores. A idéia na criação da linguagem era que ela fosse utilizada como
controladora de eletrodomésticos como geladeiras, fogões e aparelhos de microondas.


Com o passar do tempo e a evolução das pesquisas, o grupo responsável percebeu que ainda
não era o momento propício para esse tipo de desenvolvimento, especialmente pela baixa
capacidade dos computadores da época e pelo auto preço que adicionar microcontroladores a
aparelhos eletrônicos poderiam ter. Em 1994, com o surgimento do navegador na Interntet
Mosaic (que mais tarde se transformaria no navegador Netscape), o time responsável pelo
Green Project resolveu aproveitar o início da internet e criou os primeiros applets, que eram
programas em Java que rodavam dentro dos navegadores de internet, inicialmente apenas no
Netscape.


Com o crescimento da Internet nos anos vindouros, Java tornou-se uma das linguagens de
programação mais populares do planeta, mas no fim da década de 90 o uso de Java em Appets
nos browsers perdeu muito espaço para outras alternativas mais simples, como o Macromedia
Flash, um ambiente de criação de animações para a internet. A saída da Microsft do corpo
gerente da plataforma (o JCPvi) também fez com que a quantidade de pessoas utilizando
12
applets diminuísse, pois o navegador Internet Explorer não tem mais suporte a essas
aplicações Java.


Hoje a linguagem continua sendo uma força no meio acadêmico, no desenvolvimento de
sistemas com página dinâmicas e, segundo pesquisas recentes, no desenvolvimento de
sistemas desktop, que até pouco tempo atrás eram dominados pelo conjunto de ferramentas da
Microsft, o Windows Forms.


Java foi escolhida como a linguagem na qual o projeto seria desenvolvida porque os materiais
de referência são fáceis de ser encontrados, ela é a linguagem de programação utilizada nas
aulas de “Programação Orientada a Objetos” e porque é de fácil uso e entendimento, contando
com um conjunto de ferramentas e frameworks que facilitam e aumentam a produtividade dos
programadores. Outro fator importante é que a plataforma é gratuita e a maior parte de suas
ferramentas também é, fazendo com que os gastos para inicio do desenvolvimento seja
praticamente nenhum, apenas o gasto com aprendizado é necessário.



3.1.2 Banco de dados


O banco de dados utilizado no projeto foi o MySQL (na versão 4.1), que é um banco de dados
relacional gratuito e licenciado pela Gnu Public Licence. O MySQL foi criado originalmente
pelo finlandês Michael Widenius em 1995 e é mantido atualmente pela empresa MySQL AB.
Ele é um banco de dados com suporte a espeficicação SQL 1992 e algumas partes da
especificação SQL 1999.


Ele foi escolhido como banco de dados para o projeto por ser de fácil utilização, disponível
gratuitamente e ser um dos mais rápidos bancos da atualidade. O uso do MySQL em grandes
sistemas já foi comprovado por várias empresas, especialmente o Google, que o utiliza como
13
repositório para as suas pesquisas. O MySQL tem uma implementação madura do padrão de
conexão com bancos de dados em Java (o Java Database Connectivity – JDBC) e tida como
uma das melhores implementações do mercado.



3.1.3 Mapeamento objeto relacional


Um dos maiores problemas de se desenvolver sistemas que acessam bancos de dados
relacionais a partir de linguagens orientadas a objetos, é a diferença de tratamento na
construção e análise de informações entre os dois sistemas. Em um sistema orientado a
objetos, as informações são reunidas em estruturas que reúnem tanto os dados como as
operações que podem ser aplicadas neles, já em um sistema relacional, os dados são separados
das operações que podem acontecer sobre eles, da mesma maneira que ocorre em linguagens
de programação estruturadas, como C, Perl e Pascal.


As ferramentas de mapeamento objeto-relacional funcionam como um tradutor de
informações entre os dois sistemas, elas formam uma passagem para que os dados possam
trafegar entre os dois sistemas sem que seja necessário que um dos lados tenha que se adequar
aos outros.


Um exemplo clássico disso são os relacionamentos entre as entidades de um sistema. Em um
banco relacional, os relacionamentos são modelados através de chaves primárias e
estrangeias, conceitos inexistentes em sistemas puramente orientados a objetos, pois nestes
sistemas os objetos se relacionam através de referências aos objetos (ou ponteiros). A
ferramenta de mapeamento vai trabalhar fazendo com que o banco de dados relacional veja os
relacionamentos de ponteiros do sistema orientado a objetos como o seu próprio sistema de
chaves primárias e estrangeiras e o sistema orientado a objetos vai ver os relacionamentos de

14
chaves primárias e estrangeiras do banco relacional como o seu sistema de ponteiros para
objetos.


Os primeiros estudos na área datam da década de 80, mas apenas no fim dos anos 90 que
houve realmente uma busca por este tipo de ferramentas. As aplicações ficam cada dia mais
complexas, modelos relacionais simples não tem mais condições de resolver o problema e os
bancos de dados puramente orientados a objetos ainda não são uma realidade para a maioria
dos projetos, tanto pela sua curta existência e pouco conhecimento dos seus limites como
pelos custos elevados que a adoção deste tipo de software poderia trazer. Neste quadro
começam a surgir as primeiras ferramentas de mapeamento no mercado, com uma se
destacando mais do que as outras, o TopLink, que mais tarde seria comprado pela Oracle.


O TopLink, uma ferramenta de mapeamento objeto relacional para sistemas em Java (que foi
a primeira linguagem a ter ferramentas de mapeamento objeto relacional), tornou-se o modelo
para as ferramentas seguintes. Hoje existe uma profusão destas ferramentas em várias
linguagens, especialmente em Java que tem duas especificações oficiais que lidam
especialmente com esse tipo de abordagem.


Uma das especificações é a Java Data Objects (JDO), que funciona não apenas como uma
ferramenta de mapeamento objeto relacional, mas como um mecanismo de persistência,
pesquisa e acesso a informações em qualquer formato que os forncedores desejem
desenvolver, como bancos de dados ou arquivos XML, a outra especificação é a Enterprise
Java Beans, que é mais restrita no que tange a persistência, sento essencialmente uma
extensão para ferramentas de mapeamento objeto relacional, mas sendo mais abrangente em
outros casos, com trabalho com objetos distribuídos e serviços de cluster de bancos de dados.




15
A ferramenta de mapeamento escolhida para uso no projeto é o Hibernate, que é atualmente a
mais utilizada ferramenta de mapeamento objeto relacional do mercado e que está recebendo
uma nova versão para a plataforma .NET da Microsoft. O Hibernate foi desenvolvido com
base no TopLink mas hoje é um framework de desenvolvimento maduro que influenciou
fortemente a atualização da especificação EJB do Java, simplificando ainda mais o acesso a
bancos de dados relacionais na linguagem. A versão utilizada foi a 3.1.



3.1.3 Container de inversão de controle


No desenvolvimento do sistema, utilizamos um novo conceito do desenvolvimento orientado
a objetos, a inversão de controle. Este conceito prega uma quebra com a crença anterior de
que os objetos devem ser sempre auto-contidos e conhecer todas as suas dependências. Em
um ambiente onde a inversão de controle é utilizada, os objetos não conhecem nem acessam
as suas dependências diretamente, eles conhecem apenas as interfaces (ou contratos) que os
objetos devem cumprir. Com o uso de contratos, a implementação dos objetos fica livre de
interações externas e pode ser facilmente mudada sem que o código e os objetos clientes
daquelas informações sofram mudanças.


Os dois tipos mais utilizados de inversão de controle são a busca por dependências e a injeção
de dependências. Na busca por dependências, os objetos buscam ativamente por outros
objetos que obedeçam ao contrato em um registro centralizado que normalmente é fornecido
pelo servidor de aplicações aonde o sistema está funcionando. Em uma aplicação Java, esse
registro normalmente é um contexto da Java Naming and Directory Interface (JNDI),
configurado e mantido externamente as aplicações que o utilizam. Os objetos vão até o
registro e buscam por objetos que implementam o contrato específico através de chaves de
busca. Mas a busca por dependências ainda é falha no sentido de que os objetos continuam
tendo que procurar por suas dependências ativamente, ainda é necessário acessar o registro e
16
buscar o objeto manualmente, fato que causa um acoplamento desnecessário entre o cliente e
o registro, fato que é revisto na injeção de dependências.


Em um ambiente com inversão de controle por injeção de dependências, os objetos recebem
as suas dependências através da interação de um container externo a aplicação, que trafega
nos objetos que necessitam de outros objetos para trabalhar e provê estas dependências.
Diferentemente da busca por dependências, os objetos não precisam fazer a cesso direto nem
buscar ativamente por suas dependências em um registro, um serviço especializado nisso (que
é um container de inversão de controle) faz toda a busca e a colocação dos objetos onde eles
são necessários, através de configurações em código ou em arquivos de configuração (como
arquivos XML específicos do container).


O uso da inversão de controle torna-se obrigatório especialmente em sistemas que exigem um
nível muito grande de independência entre seus recursos. Uma das necessidades de
independência mais comuns é a independência de bancos de dados, especialmente para
empresas que desenvolvem software de prateleira, pois elas precisam tentar atingir a maior
quantidade de clientes possíveis, não se prendendo a uma implementação ou banco de dados
específico. O uso da inversão de controle em um sistema pode facilitar essa independência.


O framework de inverão de controle utilizado no desenvolvimento do projeto foi o Spring
Framework, que além de ser o container de inversão mais utilizado do momento, provê vários
outros serviços para as aplicações que o utilizam, como constructos para trabalhar com
programação orientada a aspectos em Java e distribuição transparente de objetos usando as
bibliotecas padrão do Java.


O crescimento e maturidade do Spring também causaram grandes mudanças na maneira de se
desenvolver aplicações para a web em Java, que normalmente dependiam de grandes

17
servidores de aplicação caríssimos da IBM, BEA e Oracle. As aplicações que utilizam o
Spring podem ter as mesmas funcionalidades rodando em máquinas mais leves e utilizando
servidores gratuitos como o Tomcat, fato que também resultou em uma mudança de
mentalidade e foco por parte das empresas que desenvolvem servidores de aplicação
comerciais.


3.1.4 Framework web


A interface web do sistema foi desenvolvida através de páginas JavaServer Pages que
geravam resultados em XHTML. O controle dessas páginas foi desenvolvido utilizando o
módulo Spring MVC do container Spring. Toda a aplicação segue o padrão de projeto Model-
View-Controller, onde o sistema é dividido em camadas que se comunicam entre si. As
páginas JSP, tendo responsabilidade apenas de mostrar resultados, não executavam lógica, já
que elas eram parte da camada View (ou visualização), os objetos do módulo Spring MVC
eram responsáveis pela camada Controller (controladora), que recebe as interações dos
usuários, acessa a camada Model (modelo), que contém as lógicas de negócio relacionadas a
aplicação e repassa os resultados mais uma vez para serem expostos na visualização.


Essa abordagem torna o desenvolvimento ou até mesmo a troca de interfaces gráficas pela
aplicação uma coisa simples, pois uma camada comunica-se apenas com a sua camada
diretamente superior ou inferior. A camada de visualização não pode acessar a camada do
modelo diretamente, apenas por chamadas a camada de controle, do mesmo modo que a
camada do modelo nunca acessa a camada de visualização diretamente, também precisa
passar pela camada controladora para fazer esse tipo de ação.


Arquiteturas em camadas intercomunicantes também ajudam na manutenção da aplicação, ao
ponto que elas formam uma separação semântica tanto visual como em código, evitando que

18
mudanças em uma das camadas afete as outras em um efeito dominó, porque sempre existe
uma “camada de contenção”, já que não é possível se comunicar com partes que estão muito
acima ou muito abaixo de onde o código está rodando.



3.1.5 Ambiente de desenvolvimento


O ambiente de desenvolvimento integrado (IDE) utilizado na codificação do sistema foi o
plugin Java Development Toolkit (JDT) da plataforma Eclipse. O Eclipse é uma plataforma
que segue o padrão de container de plugins OSGI, tento uma gama de plugins que vão desde o
desenvolvimento em linguagens funcionais, como LISP, até geradores de relatórios e gráficos,
como o Business Intelligence and Reporting Tools. Ele foi desenvolvido originalmente pela
IBM e mais tarde foi doado para a recém criada Eclipse Foundation. O seu plugin mais
conhecido, o JDT, é atualmente o ambiente de desenvolvimento Java mais utilizado no
planeta, graças as suas diversas funcionalidades de auto-completação de código, refactoring
embutido e dicas para resolver problemas comuns no desenvolvimento.



3.2 Metodologia de Desenvolvimento


O projeto foi desenvolvido seguindo alguns dos preceitos da metodologia de desenvolvimento
Extreme Programming. A Extreme Programming é uma metodologia que tem foco no
desenvolvimento e geração de resultados para os clientes e esse foi, talvez, o maior problema
que foi encontrado pelo grupo no desenvolvimento do projeto. Como não havia um cliente
presente, já que o software estava sendo desenvolvido com o intuito de ser uma ferramenta
“de prateleira”, não havia a possibilidade de se ter um possível “cliente” disponível para
avaliar os resultados ou os caminhos que o sistema estava tomando.


19
Outras características, entretanto, puderam ser colocadas em prática no projeto, como o
desenvolvimento guiado pelos testes, integração contínua e iterações curtas para a geração de
resultados.
O uso de testes unitários delineou um caminho simples para a criação e testes das
funcionalidades do sistema e a integração foi feita sem maiores problemas graças ao uso da
ferramenta de gerência de projetos Apache Mavenvii .




20
4. Resultados


4.1 Estado atual do sistema


O sistema desenvolvido no projeto encontra-se na sua primeira versão estável, mas devido ao
curso espaço de tempo ainda não demonstra todas as funcionalidades projetadas na sua
concepção. As funcionalidades atualmente implementadas são:


Inserção, edição e exclusão de Cursos, Disciplinas, Turmas, Semestres, Alunos, Professores,
Materais e Links relacionados;
Área especial para professores e alunos;
Blog de notícias e novidades para as disciplinas e professores, com a possível participação de
alunos;
Cadastro de novos alunos e matrículas em disciplinas e turmas específicas;
Controle da segurança dos materiais enviados;


As funcionalidades antes pensadas mas que ainda não foram adicionadas:


Fornecer mecanismo automático para avaliação dos alunos, com base em exercícios feitos
pelo próprio sistema;
Colocação das notas e geração das médias dos alunos;
Fórum especial para retirada de dúvidas dos alunos e discussão dos assuntos relacionados;
Avaliação dos alunos para os materiais disponibilizados nas áreas das disciplinas;




21
4.2 Outros resultados


O sistema também obteve outros resultados que não o desenvolvimento do sistema. Foram
publicados 3 artigos desenvolvidos pelos membros do projeto, dois em um site especializado
em programação e outro e uma revista especializada em programação Java. Os materiais
publicados foram os seguntes:


Introdução ao Hibernate 3 – Disponível no Grupo de Usuários Java (GUJ) em
http://guj.com.br/java.tutorial.artigo.174.1.guj


Hibernate 3 Avançado – Disponível no Grupo de Usuários Java (GUJ) em
http://guj.com.br/java.tutorial.artigo.181.1.guj


Introdução a Inversão de controle com o framework Spring – Publicado na revista MundoJava
número 13, ano III




22
5. Conclusão

O projeto gerou uma ferramenta que já pode ser utilizada como um gerenciador para os
conteúdos de disciplinas e aulas. Ela também já pode ser utilizada como um meio de se
organizar as matriculas dos alunos e controlar o acesso de estranhos a materiais específicos.
Graças a preocupação com a arquitetura simples e de fácil extensão, o sistema pode ser
facilmente aumentado e melhorado com as novas funcionalidades que estão planejadas e até
mesmo outras que ainda não foram pensadas. O uso de uma linguagem de programação muito
conhecida tanto no mercado quanto comercialmente para o seu desenvolvimento torna a
aplicação ainda mais fácil de ser extendida.


Durante o processo de pesquisa e desenvolvimento, alguns problemas surgiram, como a
pequena quantidade de informações sobre o histórico da educação a distância, a falta de
referência em livros e atualizada sobre a linguagem de programação Java e os frameworks
utilizados. Os artigos publicados pelo grupo continuam sendo ainda hoje trabalhos pioneiros
no Brasil sobre Hibernate 3 e Spring, demonstrando o baixo interesse das editora sobre estes
assuntos mais avançados, que também são fonte de aplicações mais robustas e mais fáceis de
serem estendias. O não investimento neste tipo de publicação mais especializada pode
aumentar ainda mais a distância do mercado brasileiro de software e suas principais
concorrências no mundo hoje, como a Índia, que tem um forte apoio dos estados unidos no
seu desenvolvimento tecnológico.


Com o desenvolvimento do projeto também foi possível perceber que nem sempre é válido o
desenvolvimento com vistas em evitar mudanças futuras. Muitas vezes, os planos adicionados
antes da hora ou de uma real necessidade do sistema foram engolidos por problemas reais que
surgiram. O planejamento do desenvolvimento ainda é de suma importância, mas ele

23
mostrou-se mais confiável no curto prazo do que em iterações de desenvolvimento mais
longas. Lidando com prazos e tarefas menores foi possível manter um passo mais firme no
desenvolvimento e no controle de novas funcionalidades, pois muitas das funcionalidades
eram entrelaçadas entre si, causando diversos problemas quando elas não conseguiam se
comunicar e trabalhar corretamente em conjunto.


A comunicação entre o grupo de desenvolvedores também foi um dos pilares do
desenvolvimento do sistema. Com uma lista de discussão e fórum privado exclusivo para a
discussão dos assuntos relacionados ao projeto, o foco do desenvolvimento foi mantido e a
comunicação fluiu de forma natural, mesmo não sendo possível aplicar uma das práticas mais
importantes do método Extreme Programming, a programação em par.


A importância desse projeto também se deu graças a quantidade de novos conhecimentos que
foram gerados entre o grupo que o desenvolveu e o retorno que esse mesmo grupo pode fazer
a comunidade de desenvolvedores através dos três materiais publicados, sendo dois
disponíveis gratuitamente na Internet e o terceiro disponível em uma das edições de uma das
mais respeitadas revistas sobre a plataforma Java do Brasil.


Os objetivos do projeto, que eram desenvolver um sistema funcional e contribuir com novos
conhecimentos para a comunidade foram atingidos, especialmente no que se relaciona a
contribuição, pois o fim da pesquisa é contribuir para a melhora do mundo no qual habitamos.




24
6. Bibliografia

KING, GAVIN; BAUER, CHRISTIAN; Hibernate In Action. Manning, 2004.


HARROP, ROB; MACHACEK, JAN; Pro Spring. Apress, 2005.


DEITEL, H. M.; DEITEL, P. J.; Java, como programar. 4 ed. – Porto Alegre: Bookman,
2003.


KUROSE, JAMES F.; ROSS, KEITH W.; Redes de Computadores e a Internet: Uma nova
abordagem. 1 ed. – São Paulo : Addison Wesley, 2003.


MASSOL, VINCENT; O’BRIEN, TIMOTHY; Maven: A Developer’s Notebook. O’Reilly,
2004.


D’ANJOU, JIM; FAIRBROTHER, SCOTT; KEHN, DAN; KELLERMAN, JOHN;
MAcCARTHY; The Java Developer’s Guide to Eclipse. 2º edição, Addison-Wesley.


TELES, VINÍCIUS MANHÃES; Extreme Programming: Aprenda como encantar seus
usuários desenvolvendo software com agilidade e alta qualidade. Novatec Editora, 2004


FREEMAN, ELIZABETH; FREEMAN, ERIC; SIERRA, KATHY; BATES, BERT; Head
First Design Patterns. O’Reilly, 2004.




25
COLYER, ADRIAN; CLEMENT, ANDY; HARLEY, GEORGE; WEBSTER, MATTHEW;
Eclipse AspectJ: Aspect-Oriented programming whith AspectJ and the Eclipse AspectJ
Development Tools. Addison- Wesley, 2005.


HUSTED, TED; DUMOULIN, CEDRIC; FRANCISCUS, GEORGE; WINTERFELDT,
DAVID; Struts em Ação. Editora Ciência Moderna, 2004.


BASHAN, BRIAN; SIERRA, KATHY; BATES, BERT; Head Fist Servlets & JSP: Passing
the Sun Certified Web Component Developer Exam. O’Reilly, 2004.


Instituto Universal: http://www.institutouniversal.com.br/


UFLA – Universidade Federal de Lavras: http://www.ufla.br/


FAESA Online – Educação a Distância: http://ead.faesa.br/


Wikipedia – Online Learning: http://en.wikipedia.org/wiki/Online_learning


Wikipedia – E-Learning: http://en.wikipedia.org/wiki/E-learning


Wikipedia – Ensino assistido por computador: http://en.wikipedia.org/wiki/Computer-
based_training




26
7. Apêndice - Notas




27
i
     Como no projeto Telecurso da Fundação Roberto Marinho.
ii
      Desenvolvido pela Qarbon e disponível em http://www.qarbon.com/
iii
      Um Managed Learning Enviroment é a junção de um sistema de gerenciamento de informações com um ambiente de

aprendizado virtual. Eles tem como objetivo facilitar a administração da educação e dos cursos para alunos e

professores, sendo muitas vezes utilizados tanto para ensino a distância como para a educação híbrida, que reúne o

ensino presencial ao uso de computadores e multimídia.
iv
      Disponível em http://moodle.org/
v
      Disponível em http://www.open.ac.uk/
vi
      O JCP (Java Community Process) é o orgão gestor da linguagem de da plataforma Java, mantido por várias empresas

que usam e produzem programas em Java, como IBM, Sun, BEA e Oracle. Ele é responsável pela tomada de decisões

sobre tudo o que é feito na linguagem e na plataforma, como por exemplo a criação e implementação de provas-de-

conceito de novas funcionalidades para a plataforma.
vii
       O Apache Maven é um gerenciador de projetos genérico desenvolvido pela Apache Software Foundation. Ele

funciona como uma base para a manutenção do ciclo de vida de sistemas, especialmente sistemas em Java, passando

entre o desenvolvimento, testes de todos os tipos (unitários, homologação, in container e outros), avaliação de qualidade

e métricas até a implantação do sistema em um servidor apropriado.

Mais conteúdo relacionado

Semelhante a E-Teacher: Ferramenta de interação entre professores e alunos

Proinfo introducao a educacao digital - cursista
Proinfo   introducao a educacao digital - cursistaProinfo   introducao a educacao digital - cursista
Proinfo introducao a educacao digital - cursistaEdna Luisa Matos Lopes
 
Proinfo introducaoaeducacaodigital-cursista1-130425175348-phpapp01
Proinfo introducaoaeducacaodigital-cursista1-130425175348-phpapp01Proinfo introducaoaeducacaodigital-cursista1-130425175348-phpapp01
Proinfo introducaoaeducacaodigital-cursista1-130425175348-phpapp01Edna Luisa Matos Lopes
 
Proinfo Introducao a Educacao Digital - 60f
Proinfo  Introducao a Educacao Digital - 60fProinfo  Introducao a Educacao Digital - 60f
Proinfo Introducao a Educacao Digital - 60ftecampinasoeste
 
Proinfo introducao a educacao digital - cursista1
Proinfo   introducao a educacao digital - cursista1Proinfo   introducao a educacao digital - cursista1
Proinfo introducao a educacao digital - cursista1Alecrissantos
 
Apostila tics cursista2013
Apostila tics cursista2013Apostila tics cursista2013
Apostila tics cursista2013marcosuchoa37
 
Tecnologias de Informação e Comunicação na Educação - Prof.Ms.Vicente Willians
Tecnologias de Informação e Comunicação na Educação - Prof.Ms.Vicente WilliansTecnologias de Informação e Comunicação na Educação - Prof.Ms.Vicente Willians
Tecnologias de Informação e Comunicação na Educação - Prof.Ms.Vicente Williansvicente nunes
 
Prof denys sales interactive computer worldcist 17
Prof denys sales  interactive computer worldcist 17Prof denys sales  interactive computer worldcist 17
Prof denys sales interactive computer worldcist 17Gilvandenys Leite Sales
 
lingua_portuguesa_CADERNO_DO_PROFESSOR.pdf
lingua_portuguesa_CADERNO_DO_PROFESSOR.pdflingua_portuguesa_CADERNO_DO_PROFESSOR.pdf
lingua_portuguesa_CADERNO_DO_PROFESSOR.pdfEmanuelMonteiro27
 

Semelhante a E-Teacher: Ferramenta de interação entre professores e alunos (20)

Proinfo introducao a educacao digital - cursista
Proinfo   introducao a educacao digital - cursistaProinfo   introducao a educacao digital - cursista
Proinfo introducao a educacao digital - cursista
 
Proinfo introducaoaeducacaodigital-cursista1-130425175348-phpapp01
Proinfo introducaoaeducacaodigital-cursista1-130425175348-phpapp01Proinfo introducaoaeducacaodigital-cursista1-130425175348-phpapp01
Proinfo introducaoaeducacaodigital-cursista1-130425175348-phpapp01
 
Proinfo Introducao a Educacao Digital - 60f
Proinfo  Introducao a Educacao Digital - 60fProinfo  Introducao a Educacao Digital - 60f
Proinfo Introducao a Educacao Digital - 60f
 
Proinfo introducao a educacao digital - cursista1
Proinfo   introducao a educacao digital - cursista1Proinfo   introducao a educacao digital - cursista1
Proinfo introducao a educacao digital - cursista1
 
Apostila tics cursista2013
Apostila tics cursista2013Apostila tics cursista2013
Apostila tics cursista2013
 
Tecnologias de Informação e Comunicação na Educação - Prof.Ms.Vicente Willians
Tecnologias de Informação e Comunicação na Educação - Prof.Ms.Vicente WilliansTecnologias de Informação e Comunicação na Educação - Prof.Ms.Vicente Willians
Tecnologias de Informação e Comunicação na Educação - Prof.Ms.Vicente Willians
 
modulo_introdutorio_2009
modulo_introdutorio_2009modulo_introdutorio_2009
modulo_introdutorio_2009
 
Módulo Introdutório 2009
Módulo Introdutório 2009Módulo Introdutório 2009
Módulo Introdutório 2009
 
Tcctecnologiavencendodesafiosfran
TcctecnologiavencendodesafiosfranTcctecnologiavencendodesafiosfran
Tcctecnologiavencendodesafiosfran
 
Tcctecnologiavencendodesafiospaula
TcctecnologiavencendodesafiospaulaTcctecnologiavencendodesafiospaula
Tcctecnologiavencendodesafiospaula
 
Tcctecnologiavencendodesafiosfran
TcctecnologiavencendodesafiosfranTcctecnologiavencendodesafiosfran
Tcctecnologiavencendodesafiosfran
 
Tcctecnologiavencendodesafiospaula
TcctecnologiavencendodesafiospaulaTcctecnologiavencendodesafiospaula
Tcctecnologiavencendodesafiospaula
 
Prof denys sales interactive computer worldcist 17
Prof denys sales  interactive computer worldcist 17Prof denys sales  interactive computer worldcist 17
Prof denys sales interactive computer worldcist 17
 
Apresentação nte pwlb
Apresentação nte pwlbApresentação nte pwlb
Apresentação nte pwlb
 
lingua_portuguesa_CADERNO_DO_PROFESSOR.pdf
lingua_portuguesa_CADERNO_DO_PROFESSOR.pdflingua_portuguesa_CADERNO_DO_PROFESSOR.pdf
lingua_portuguesa_CADERNO_DO_PROFESSOR.pdf
 
Nte wlbl
Nte wlblNte wlbl
Nte wlbl
 
Apresentação nte pwlb
Apresentação nte pwlbApresentação nte pwlb
Apresentação nte pwlb
 
Nosso nte
Nosso nteNosso nte
Nosso nte
 
Nosso nte
Nosso nteNosso nte
Nosso nte
 
Nosso nte
Nosso nteNosso nte
Nosso nte
 

Mais de Maurício Linhares

Unindo Ruby e Java através de uma arquitetura orientada a serviços na OfficeDrop
Unindo Ruby e Java através de uma arquitetura orientada a serviços na OfficeDropUnindo Ruby e Java através de uma arquitetura orientada a serviços na OfficeDrop
Unindo Ruby e Java através de uma arquitetura orientada a serviços na OfficeDropMaurício Linhares
 
Mixing Ruby and Java in a Service Oriented Architecture at OfficeDrop
Mixing Ruby and Java in a Service Oriented Architecture at OfficeDropMixing Ruby and Java in a Service Oriented Architecture at OfficeDrop
Mixing Ruby and Java in a Service Oriented Architecture at OfficeDropMaurício Linhares
 
Curso java 08 - mais sobre coleções
Curso java   08 - mais sobre coleçõesCurso java   08 - mais sobre coleções
Curso java 08 - mais sobre coleçõesMaurício Linhares
 
Curso java 06 - mais construtores, interfaces e polimorfismo
Curso java   06 - mais construtores, interfaces e polimorfismoCurso java   06 - mais construtores, interfaces e polimorfismo
Curso java 06 - mais construtores, interfaces e polimorfismoMaurício Linhares
 
Curso java 05 - herança, classes e métodos abstratos
Curso java   05 - herança, classes e métodos abstratosCurso java   05 - herança, classes e métodos abstratos
Curso java 05 - herança, classes e métodos abstratosMaurício Linhares
 
Curso java 04 - ap is e bibliotecas
Curso java   04 - ap is e bibliotecasCurso java   04 - ap is e bibliotecas
Curso java 04 - ap is e bibliotecasMaurício Linhares
 
Curso java 01 - molhando os pés com java
Curso java   01 - molhando os pés com javaCurso java   01 - molhando os pés com java
Curso java 01 - molhando os pés com javaMaurício Linhares
 
Curso java 03 - métodos e parâmetros
Curso java   03 - métodos e parâmetrosCurso java   03 - métodos e parâmetros
Curso java 03 - métodos e parâmetrosMaurício Linhares
 
Outsourcing e trabalho remoto para a nuvem
Outsourcing e trabalho remoto para a nuvemOutsourcing e trabalho remoto para a nuvem
Outsourcing e trabalho remoto para a nuvemMaurício Linhares
 
Aulas de Java Avançado 2- Faculdade iDez 2010
Aulas de Java Avançado 2- Faculdade iDez 2010Aulas de Java Avançado 2- Faculdade iDez 2010
Aulas de Java Avançado 2- Faculdade iDez 2010Maurício Linhares
 

Mais de Maurício Linhares (20)

Mercado de TI
Mercado de TIMercado de TI
Mercado de TI
 
Unindo Ruby e Java através de uma arquitetura orientada a serviços na OfficeDrop
Unindo Ruby e Java através de uma arquitetura orientada a serviços na OfficeDropUnindo Ruby e Java através de uma arquitetura orientada a serviços na OfficeDrop
Unindo Ruby e Java através de uma arquitetura orientada a serviços na OfficeDrop
 
Mixing Ruby and Java in a Service Oriented Architecture at OfficeDrop
Mixing Ruby and Java in a Service Oriented Architecture at OfficeDropMixing Ruby and Java in a Service Oriented Architecture at OfficeDrop
Mixing Ruby and Java in a Service Oriented Architecture at OfficeDrop
 
Aprendendo ruby
Aprendendo rubyAprendendo ruby
Aprendendo ruby
 
Curso java 07 - exceções
Curso java   07 - exceçõesCurso java   07 - exceções
Curso java 07 - exceções
 
Curso java 08 - mais sobre coleções
Curso java   08 - mais sobre coleçõesCurso java   08 - mais sobre coleções
Curso java 08 - mais sobre coleções
 
Curso java 06 - mais construtores, interfaces e polimorfismo
Curso java   06 - mais construtores, interfaces e polimorfismoCurso java   06 - mais construtores, interfaces e polimorfismo
Curso java 06 - mais construtores, interfaces e polimorfismo
 
Curso java 05 - herança, classes e métodos abstratos
Curso java   05 - herança, classes e métodos abstratosCurso java   05 - herança, classes e métodos abstratos
Curso java 05 - herança, classes e métodos abstratos
 
Curso java 04 - ap is e bibliotecas
Curso java   04 - ap is e bibliotecasCurso java   04 - ap is e bibliotecas
Curso java 04 - ap is e bibliotecas
 
Curso java 01 - molhando os pés com java
Curso java   01 - molhando os pés com javaCurso java   01 - molhando os pés com java
Curso java 01 - molhando os pés com java
 
Curso java 02 - variáveis
Curso java   02 - variáveisCurso java   02 - variáveis
Curso java 02 - variáveis
 
Curso java 03 - métodos e parâmetros
Curso java   03 - métodos e parâmetrosCurso java   03 - métodos e parâmetros
Curso java 03 - métodos e parâmetros
 
Extreme programming
Extreme programmingExtreme programming
Extreme programming
 
Feature Driven Development
Feature Driven DevelopmentFeature Driven Development
Feature Driven Development
 
Migrando pra Scala
Migrando pra ScalaMigrando pra Scala
Migrando pra Scala
 
Outsourcing e trabalho remoto para a nuvem
Outsourcing e trabalho remoto para a nuvemOutsourcing e trabalho remoto para a nuvem
Outsourcing e trabalho remoto para a nuvem
 
Mercado hoje
Mercado hojeMercado hoje
Mercado hoje
 
Análise de sistemas oo 1
Análise de sistemas oo   1Análise de sistemas oo   1
Análise de sistemas oo 1
 
Revisão html e java script
Revisão html e java scriptRevisão html e java script
Revisão html e java script
 
Aulas de Java Avançado 2- Faculdade iDez 2010
Aulas de Java Avançado 2- Faculdade iDez 2010Aulas de Java Avançado 2- Faculdade iDez 2010
Aulas de Java Avançado 2- Faculdade iDez 2010
 

E-Teacher: Ferramenta de interação entre professores e alunos

  • 1. Centro Federal de Educação Tecnológica da Paraíba Coordenação de Informática Coordenação de Desenvolvimento de Software Para a Internet RELATÓRIO TÉCNICO-CIENTÍFICO PROJETO DE PESQUISA: E-TEACHER – DESENVOLVENDO UMA FERRAMENTA DE INTERAÇÃO ENTRE PROFESSORES E ALUNOS MAURÍCIO LINHARES DE ARAGÃO JUNIOR Matrícula: 10013148 Orientando e Bolsista PIBIC JORGE FERNANDO LUÍS FERNANDES Matrícula: 021013186 Orientando Voluntário THIAGO PEREIRA VIEIRA Matrícula: 022013240 Orientando Voluntário JOÃO PESSOA – PB DEZEMBRO – 2005 1
  • 2. RELATÓRIO TÉCNICO-CIENTÍFICO PROJETO DE PESQUISA: E-TEACHER – DESENVOLVENDO UMA FERRAMENTA DE INTERAÇÃO ENTRE PROFESSORES E ALUNOS MAURÍCIO LINHARES DE ARAGÃO JUNIOR Matrícula: 10013148 Orientando e Bolsista PIBIC JORGE FERNANDO LUÍS FERNANDES Matrícula: 021013186 Orientando Voluntário THIAGO PEREIRA VIEIRA Matrícula: 022013240 Orientando Voluntário PROFESSOR MESTRE FREDERICO GUEDES PEREIRA (ORIENTADOR) JOÃO PESSOA – PB DEZEMBRO – 2005 Sumário Sumário.......................................................................................................................................2 2
  • 3. 1. Introdução...............................................................................................................................4 2.1 Como surgiu a internet?....................................................................................................6 2.1.1 Novas tecnologias da informação e o futuro da Internet...........................................7 2.2 Educação à distância.........................................................................................................8 2.3 E-Learning......................................................................................................................10 3. Materiais e métodos..............................................................................................................12 3.1 Ferramentas utilizadas no desenvolvimento do projeto..................................................12 3.1.1 Linguagem de programação.....................................................................................12 3.1.2 Banco de dados........................................................................................................13 3.1.3 Mapeamento objeto relacional.................................................................................14 3.1.3 Container de inversão de controle............................................................................16 3.1.5 Ambiente de desenvolvimento.................................................................................19 3.2 Metodologia de Desenvolvimento..................................................................................19 4. Resultados.............................................................................................................................21 4.1 Estado atual do sistema...................................................................................................21 4.2 Outros resultados.............................................................................................................22 5. Conclusão..............................................................................................................................23 6. Bibliografia...........................................................................................................................25 7. Apêndice - Notas...................................................................................................................27 3
  • 4. 1. Introdução A Internet surgiu como um meio de comunicação eficiente entre universidades espalhadas em todo o mundo, onde eles trocavam informações, pesquisas e descobertas de forma mais rápida do que seria possível através de cartas e os outros meios de comunicação disponíveis na época. Não é de se estranhar que hoje a internet tenha se transformado no grande repositório de conhecimento que nós conhecemos hoje. Nos anos 80 foi desenvolvido o modo de ensino conhecido como “treinamento baseado em computador”, que consistia em um programa de computador que é executado pelo usuário em um computador. Essa maneira de ensino foi muito utilizado para treinar os usuários a utilizar as aplicações contidas em seus computadores, mas devido a sua baixa interatividade e os autos custos para o desenvolvimento, perdeu força nos dias atuais. Algumas ferramentas ainda trazem versões simples desse tipo de treinamento, conhecidas como “tutoriais”, para ajudar o usuário a entender como funciona uma aplicação específica. Com essa facilidade de comunicação e difusão de informações, o ensino não poderia ser deixado de lado. Conhecida atualmente como e-Learning, o uso de computadores e tecnologias de rede para facilitar e complementar a educação tem demonstrado um crescimento gigantesco e resultados incríveis, especialmente graças a interatividade que os ambientes de e-Learning demonstram. Ferramentas de e-Learning também estão sendo utilizadas para dar suporte a ensino a distância (ou não presencial). Essas ferramentas fornecem meios para que os professores e alunos, mesmo separados geograficamente, possam se comunicar e trocar informações em tempo real, tanto através de textos como de vídeo conferências. Nestes ambientes, o aluno que 4
  • 5. normalmente apenas assistiriai a uma aula pré-gravada ou faria o estudo de um texto sozinho, pode interagir diretamente tanto com os outros alunos como com o professor para tirar dúvidas e fazer perguntas. O Projeto e-Teacher nasceu da necessidade de se montar uma estrutura simples e intuitiva para a organização dos materiais de aula das várias disciplinas e vários cursos que uma instituição possa oferecer. Além da organização e disponibilização dos materiais e a possibilidade de interação entre alunos e professores, a ferramenta também busca ajudar na administração dos cursos e disciplinas, com cadastros, matrículas, horários e marcação de avaliações. Mas o e-Teacher não procura ser uma ferramenta de e-Learning completa, pois já existem várias outra ferramentas com maior maturidade que podem ser utilizadas em conjunto, como ferramentas de vídeo-conferência, conversas em tempo real em salas de chats e fóruns comunitários. A implementação do projeto também serviu com um campo de testes para novas tecnologias e para a aplicação de novas técnicas de desenvolvimento, como os conceitos de inversão de controle e mapeamento objeto relacional, além do uso e homologação de diversos padrões de projeto. O sistema foi desenvolvido na linguagem de programação Java. 5
  • 6. 2. Fundamentação Teórica 2.1 Como surgiu a internet? A rede mundial de computadores que conhecemos hoje surgiu da reunião de vários esforços, as vezes separados, as vezes unidos, e o mais importante deles foi a ARPAnet, um projeto financiado pela Agencia de Projetos de Pesquisa Avançada dos Estados Unidos (ARPA – Advanced Research Projects Agency), que foi a primeira rede de computadores por comutação de pacotes (troca de mensagens) e ancestral da Internet que conhecemos hoje. Seu projeto foi desenvolvido em 1967 e foi finalmente posto em prática em 1969, na Universidade da Califórnia (Ucla). De 1969 até o inicio dos anos 90 a rede mundial de computadores tinha um apelo meramente acadêmico. Apenas Institutos de pesquisa e universidades tinha acesso a informação que circulava na rede que viria a ser conhecida como Internet. Mas neste início de década veio a verdadeira revolução que esta rede mundial vinha preparando, o surgimento da World Wide Web, uma rede mundial de computadores que reuniria não apenas institutos relacionados a educação, pesquisa e exercito, mas as empresas e pessoas de todo o mundo. Essa revolução nasceu, em parte, no Centro Europeu para Física Nuclear (Cern – European Center for Nuclear Physics), sob a tutela de Tim-Berners Lee, entre 1989 e 1991. Ele e seus companheiros desenvolveram a linguagem de marcação Hyper-Text Makup Laguage (HTML), o protocolo de comunicação de computadores Hyper-Text Transfer Protocol (HTTP), o primeiro servidor de páginas Web e o primeiro Browser. 6
  • 7. A partir de então a Internet começou a dar seus primeiros passos para fazer a revolução da informação que ela está causando até hoje. Pois esteja onde você estiver, pode conseguir informações sobre quase tudo o que desejar, bastando apenas ter um aparelho que se conecte a internet, não necessariamente um computador, pois vídeo-games, aparelhos celulares, televisores e ainda outros aparelhos não tão comuns (como geladeiras) também estão se conectando a rede de mundial de computadores para trocar informações. E é esta facilidade para se obter as informações que transforma a Internet em uma das mais importantes criações do ser humano, mas também traz novos e gigantescos problemas por causa da falta de controle que existe sobre o que é publicado na rede. Os maiores exemplos disso são as redes Peer-to-Peer (P2P), onde pessoas trocam arquivos de diversos tipos, como música, vídeos, documentos, de modo gratuito, muitas vezes infringindo as leis de propriedade intelectual sobre aqueles arquivos ou informações que estão sendo trocadas. 2.1.1 Novas tecnologias da informação e o futuro da Internet A Internet forçou a criação de novos padrões na disseminação do conhecimento de no modo como ele deve ser tratado. Os sistemas de computação eram vistos de uma forma quase mágica, pois apenas seus criadores e pessoas especializadas sabiam utilizar, deram lugar a interfaces gráficas para o usuário, as chamadas GUI (Graphic User Interface), que tornam a sua operação cada vez mais intuitiva e fazem com que se exija cada vez menos das pessoas para que elas operem um computador de forma satisfatória. Com essa facilidade e a socialização dos computadores (mais em alguns países do quem em outros), os meios para a distribuição da informação estão tendo que se adequar tanto a facilidade de uso como a velocidade de acesso. 7
  • 8. O futuro da Internet já está sendo apontado, ela está se dirigindo para uma convergência entre todas as outras formas de mídia, para criar um algo novo e que mesmo que não leve os outros meios a extinção vai diminuir cada vez mais o seu peso sobre a informação e formação de opinião, porque uma pessoa que tenha acesso a Rede não vai precisar sair dela para ouvir uma rádio, assistir um programa de televisão, ler o seu jornal preferido, fazer uma pesquisa para um trabalho acadêmico, conhecer novas pessoas ou se divertir jogando alguma coisa. Não há nada de ficção científica nisso, a tendência de que o computador se torne o centro de entretenimento e pesquisa nos lares é real e já está acontecendo nos grandes centros, como EUA, Europa e Japão, mas até que esta nova mídia chegue a os países mais pobres vai demorar um pouco, e pode até mesmo nem tornar-se realidade tão cedo, se depender do controle que as elites desejam manter sobre seus dominados. A Internet caminha para ser a mais importante fonte de informação da humanidade (se não já for), mas também é a que mais exclui, por seu alto custo econômico, proibitivo para a maioria dos lares dos países subdesenvolvidos, como o Brasil. 2.2 Educação à distância Entende-se como educação a distância a estratégia desenvolvida por sistemas educativos para oferecer educação a setores ou grupos da população que, por razões diversas, tem dificuldades de acesso a serviços educativos regulares. Este modo de ensino é caracterizado pela separação entre alunos e professores no espaço e/ou tempo, pelo controle do aprendizado sendo feito mais intensamente pelo próprio aluno do que pelo seu professor, que não tem condições de acompanhá-lo pessoalmente, e pela comunicação entre alunos e professores se dando por meios impressos ou meios tecnológicos de comunicação e não pessoalmente. 8
  • 9. A primeira experiência de ensino a distância que se tem notícia aconteceu na Suécia, em 1833, para um curso de contabilidade. A prática então se disseminou por toda Europa e depois para o resto do mundo. Hoje, os principais divulgadores desta prática são França, Inglaterra e Espanha. O Brasil tem contato com a educação a distância a partir de 1904, quando universidades e escolas internacionais oferecem seus cursos, mas a primeira empreitada verdadeiramente brasileira só surge em 1934 quando Edgard Roquete-Pinto a Rádio-Escola Municipal no Rio de Janeiro. A partir desse primeiro passo várias novas ações foram movidas na área de educação a distância, como a formação do Instituto Universal Brasileiro em 1941, que ainda hoje é um dos maiores exemplos de ensino a distância no país. Hoje, várias universidades brasileiras tem centros de estudos em ensino a distância e também desenvolvem vários projetos se utilizando desse modelo. Um dos exemplos é a Universidade Federal de Lavras (UFLA), que oferece cursos de especialização (Latu Sensu) à distância a mais de 18 anos, em diversas áreas do conhecimento. 2.2.1 Ensino assistido por computador O ensino assistido por computador foi uma das primeiras modalidades de ensino a distância a utilizar o computador como facilitador na educação. Ele é caracterizado por ser um programa que o usuário executa localmente em sua máquina, que mostra um passo-a-passo para que o usuário possa aprender a utilizar ou operar um programa contido em seu computador. Esta modalidade foi muito utilizada na década de 80, mas hoje não é mais tão comum por causa dos altos custos envolvidos na criação das aulas. 9
  • 10. Hoje as pessoas costumam utilizar um modo simplificado dessa modalidade, que consiste em tirar screnshots (imagens da tela) do computador, adicionar notas e comentários as imagens e depois montar uma apresentação de imagens seqüenciais (ou apresentação de slides). Existem softwares especializados na criação deste tipo de mídia, tanto gratuitos como proprietários, como o Viewlet Builderii. 2.3 E-Learning O E-Learning é um passo a frente do ensino assistido por computadores, porque ele procura fazer uso da interatividade que o computador e a Internet podem fornecer, com o uso de multimídia e interatividade, que não eram utilizados no método anterior. Mas o E-Learning não é utilizado apenas para educação à distância, ele também pode ser utilizado com uma fonte de ajuda e desenvolvimento para o ensino presencial tradicional, fornecendo outras maneiras para que alunos e professores possam interagir de forma a fixar melhor os conhecimentos. O aprendizado híbrido, que mistura o ensino tradicional com o uso de tecnologia e computadores para a educação é simplesmente uma extensão do uso de ferramentas de e- learning. Nele, as atividades são divididas em síncronas, que são as aulas presenciais, apresentação de trabalhos e outros momentos nos quais os alunos estão junto dos professores, e atividades assíncronas, que são o acesso ao sistema de gerenciamento de educação (Managed Learning Enviromentiii), acesso e produção de blogs, wikis e pesquisas na internet. Nos últimos tempos, o foco deste tipo de ensino está se direcionando muito mais para as discussões e fóruns sobre os assuntos do que no simples estudo do conteúdo em si. Este tipo 10
  • 11. de abordagem, conhecida como construtivismo, que afirma que através de discussões e do pensar sobre os assuntos os alunos aprendem e conseguem manter muito mais informação do que simplesmente “decorar” o que foi passado nas aulas. Uma das mais famosas ferramentas de e-learning da atualidade é o Moodleiv, que é uma das mais completas plataformas de e-learning e ensino a distância da atualidade. Ele é um software livre e gratuito distribuído sobre a licença Gnu Public Licence, multiplataforma e que já está sendo desenvolvido a mais de 7 anos por uma comunidade vibrante de usuários e entusiastas. Um dos maiores exemplos do sucesso do uso do Moodle é a Open Universityv, que é uma universidade especializada no ensino a distância da Inglaterra, que reúne estudantes de todo o mundoe já formou mais de 3 milhões de pessoas em diversas áreas e níveis de ensino. A Open University também é conhecida por ser a universidade com as melhores avaliações dos estudantes do Reino Unido e do País de Gales. 11
  • 12. 3. Materiais e métodos 3.1 Ferramentas utilizadas no desenvolvimento do projeto 3.1.1 Linguagem de programação A linguagem de programação escolhida para o desenvolvimento do projeto foi a linguagem Java, desenvolvida pela Sun Microsystems. Java começou a ser desenvolvida em dezembro de 1990 pelo Green Project, que tinha como objetivo principal a criação de uma nova linguagem de programação simples e multiplataforma que pudesse ser embarcada em ambientes que não fossem computadores. A idéia na criação da linguagem era que ela fosse utilizada como controladora de eletrodomésticos como geladeiras, fogões e aparelhos de microondas. Com o passar do tempo e a evolução das pesquisas, o grupo responsável percebeu que ainda não era o momento propício para esse tipo de desenvolvimento, especialmente pela baixa capacidade dos computadores da época e pelo auto preço que adicionar microcontroladores a aparelhos eletrônicos poderiam ter. Em 1994, com o surgimento do navegador na Interntet Mosaic (que mais tarde se transformaria no navegador Netscape), o time responsável pelo Green Project resolveu aproveitar o início da internet e criou os primeiros applets, que eram programas em Java que rodavam dentro dos navegadores de internet, inicialmente apenas no Netscape. Com o crescimento da Internet nos anos vindouros, Java tornou-se uma das linguagens de programação mais populares do planeta, mas no fim da década de 90 o uso de Java em Appets nos browsers perdeu muito espaço para outras alternativas mais simples, como o Macromedia Flash, um ambiente de criação de animações para a internet. A saída da Microsft do corpo gerente da plataforma (o JCPvi) também fez com que a quantidade de pessoas utilizando 12
  • 13. applets diminuísse, pois o navegador Internet Explorer não tem mais suporte a essas aplicações Java. Hoje a linguagem continua sendo uma força no meio acadêmico, no desenvolvimento de sistemas com página dinâmicas e, segundo pesquisas recentes, no desenvolvimento de sistemas desktop, que até pouco tempo atrás eram dominados pelo conjunto de ferramentas da Microsft, o Windows Forms. Java foi escolhida como a linguagem na qual o projeto seria desenvolvida porque os materiais de referência são fáceis de ser encontrados, ela é a linguagem de programação utilizada nas aulas de “Programação Orientada a Objetos” e porque é de fácil uso e entendimento, contando com um conjunto de ferramentas e frameworks que facilitam e aumentam a produtividade dos programadores. Outro fator importante é que a plataforma é gratuita e a maior parte de suas ferramentas também é, fazendo com que os gastos para inicio do desenvolvimento seja praticamente nenhum, apenas o gasto com aprendizado é necessário. 3.1.2 Banco de dados O banco de dados utilizado no projeto foi o MySQL (na versão 4.1), que é um banco de dados relacional gratuito e licenciado pela Gnu Public Licence. O MySQL foi criado originalmente pelo finlandês Michael Widenius em 1995 e é mantido atualmente pela empresa MySQL AB. Ele é um banco de dados com suporte a espeficicação SQL 1992 e algumas partes da especificação SQL 1999. Ele foi escolhido como banco de dados para o projeto por ser de fácil utilização, disponível gratuitamente e ser um dos mais rápidos bancos da atualidade. O uso do MySQL em grandes sistemas já foi comprovado por várias empresas, especialmente o Google, que o utiliza como 13
  • 14. repositório para as suas pesquisas. O MySQL tem uma implementação madura do padrão de conexão com bancos de dados em Java (o Java Database Connectivity – JDBC) e tida como uma das melhores implementações do mercado. 3.1.3 Mapeamento objeto relacional Um dos maiores problemas de se desenvolver sistemas que acessam bancos de dados relacionais a partir de linguagens orientadas a objetos, é a diferença de tratamento na construção e análise de informações entre os dois sistemas. Em um sistema orientado a objetos, as informações são reunidas em estruturas que reúnem tanto os dados como as operações que podem ser aplicadas neles, já em um sistema relacional, os dados são separados das operações que podem acontecer sobre eles, da mesma maneira que ocorre em linguagens de programação estruturadas, como C, Perl e Pascal. As ferramentas de mapeamento objeto-relacional funcionam como um tradutor de informações entre os dois sistemas, elas formam uma passagem para que os dados possam trafegar entre os dois sistemas sem que seja necessário que um dos lados tenha que se adequar aos outros. Um exemplo clássico disso são os relacionamentos entre as entidades de um sistema. Em um banco relacional, os relacionamentos são modelados através de chaves primárias e estrangeias, conceitos inexistentes em sistemas puramente orientados a objetos, pois nestes sistemas os objetos se relacionam através de referências aos objetos (ou ponteiros). A ferramenta de mapeamento vai trabalhar fazendo com que o banco de dados relacional veja os relacionamentos de ponteiros do sistema orientado a objetos como o seu próprio sistema de chaves primárias e estrangeiras e o sistema orientado a objetos vai ver os relacionamentos de 14
  • 15. chaves primárias e estrangeiras do banco relacional como o seu sistema de ponteiros para objetos. Os primeiros estudos na área datam da década de 80, mas apenas no fim dos anos 90 que houve realmente uma busca por este tipo de ferramentas. As aplicações ficam cada dia mais complexas, modelos relacionais simples não tem mais condições de resolver o problema e os bancos de dados puramente orientados a objetos ainda não são uma realidade para a maioria dos projetos, tanto pela sua curta existência e pouco conhecimento dos seus limites como pelos custos elevados que a adoção deste tipo de software poderia trazer. Neste quadro começam a surgir as primeiras ferramentas de mapeamento no mercado, com uma se destacando mais do que as outras, o TopLink, que mais tarde seria comprado pela Oracle. O TopLink, uma ferramenta de mapeamento objeto relacional para sistemas em Java (que foi a primeira linguagem a ter ferramentas de mapeamento objeto relacional), tornou-se o modelo para as ferramentas seguintes. Hoje existe uma profusão destas ferramentas em várias linguagens, especialmente em Java que tem duas especificações oficiais que lidam especialmente com esse tipo de abordagem. Uma das especificações é a Java Data Objects (JDO), que funciona não apenas como uma ferramenta de mapeamento objeto relacional, mas como um mecanismo de persistência, pesquisa e acesso a informações em qualquer formato que os forncedores desejem desenvolver, como bancos de dados ou arquivos XML, a outra especificação é a Enterprise Java Beans, que é mais restrita no que tange a persistência, sento essencialmente uma extensão para ferramentas de mapeamento objeto relacional, mas sendo mais abrangente em outros casos, com trabalho com objetos distribuídos e serviços de cluster de bancos de dados. 15
  • 16. A ferramenta de mapeamento escolhida para uso no projeto é o Hibernate, que é atualmente a mais utilizada ferramenta de mapeamento objeto relacional do mercado e que está recebendo uma nova versão para a plataforma .NET da Microsoft. O Hibernate foi desenvolvido com base no TopLink mas hoje é um framework de desenvolvimento maduro que influenciou fortemente a atualização da especificação EJB do Java, simplificando ainda mais o acesso a bancos de dados relacionais na linguagem. A versão utilizada foi a 3.1. 3.1.3 Container de inversão de controle No desenvolvimento do sistema, utilizamos um novo conceito do desenvolvimento orientado a objetos, a inversão de controle. Este conceito prega uma quebra com a crença anterior de que os objetos devem ser sempre auto-contidos e conhecer todas as suas dependências. Em um ambiente onde a inversão de controle é utilizada, os objetos não conhecem nem acessam as suas dependências diretamente, eles conhecem apenas as interfaces (ou contratos) que os objetos devem cumprir. Com o uso de contratos, a implementação dos objetos fica livre de interações externas e pode ser facilmente mudada sem que o código e os objetos clientes daquelas informações sofram mudanças. Os dois tipos mais utilizados de inversão de controle são a busca por dependências e a injeção de dependências. Na busca por dependências, os objetos buscam ativamente por outros objetos que obedeçam ao contrato em um registro centralizado que normalmente é fornecido pelo servidor de aplicações aonde o sistema está funcionando. Em uma aplicação Java, esse registro normalmente é um contexto da Java Naming and Directory Interface (JNDI), configurado e mantido externamente as aplicações que o utilizam. Os objetos vão até o registro e buscam por objetos que implementam o contrato específico através de chaves de busca. Mas a busca por dependências ainda é falha no sentido de que os objetos continuam tendo que procurar por suas dependências ativamente, ainda é necessário acessar o registro e 16
  • 17. buscar o objeto manualmente, fato que causa um acoplamento desnecessário entre o cliente e o registro, fato que é revisto na injeção de dependências. Em um ambiente com inversão de controle por injeção de dependências, os objetos recebem as suas dependências através da interação de um container externo a aplicação, que trafega nos objetos que necessitam de outros objetos para trabalhar e provê estas dependências. Diferentemente da busca por dependências, os objetos não precisam fazer a cesso direto nem buscar ativamente por suas dependências em um registro, um serviço especializado nisso (que é um container de inversão de controle) faz toda a busca e a colocação dos objetos onde eles são necessários, através de configurações em código ou em arquivos de configuração (como arquivos XML específicos do container). O uso da inversão de controle torna-se obrigatório especialmente em sistemas que exigem um nível muito grande de independência entre seus recursos. Uma das necessidades de independência mais comuns é a independência de bancos de dados, especialmente para empresas que desenvolvem software de prateleira, pois elas precisam tentar atingir a maior quantidade de clientes possíveis, não se prendendo a uma implementação ou banco de dados específico. O uso da inversão de controle em um sistema pode facilitar essa independência. O framework de inverão de controle utilizado no desenvolvimento do projeto foi o Spring Framework, que além de ser o container de inversão mais utilizado do momento, provê vários outros serviços para as aplicações que o utilizam, como constructos para trabalhar com programação orientada a aspectos em Java e distribuição transparente de objetos usando as bibliotecas padrão do Java. O crescimento e maturidade do Spring também causaram grandes mudanças na maneira de se desenvolver aplicações para a web em Java, que normalmente dependiam de grandes 17
  • 18. servidores de aplicação caríssimos da IBM, BEA e Oracle. As aplicações que utilizam o Spring podem ter as mesmas funcionalidades rodando em máquinas mais leves e utilizando servidores gratuitos como o Tomcat, fato que também resultou em uma mudança de mentalidade e foco por parte das empresas que desenvolvem servidores de aplicação comerciais. 3.1.4 Framework web A interface web do sistema foi desenvolvida através de páginas JavaServer Pages que geravam resultados em XHTML. O controle dessas páginas foi desenvolvido utilizando o módulo Spring MVC do container Spring. Toda a aplicação segue o padrão de projeto Model- View-Controller, onde o sistema é dividido em camadas que se comunicam entre si. As páginas JSP, tendo responsabilidade apenas de mostrar resultados, não executavam lógica, já que elas eram parte da camada View (ou visualização), os objetos do módulo Spring MVC eram responsáveis pela camada Controller (controladora), que recebe as interações dos usuários, acessa a camada Model (modelo), que contém as lógicas de negócio relacionadas a aplicação e repassa os resultados mais uma vez para serem expostos na visualização. Essa abordagem torna o desenvolvimento ou até mesmo a troca de interfaces gráficas pela aplicação uma coisa simples, pois uma camada comunica-se apenas com a sua camada diretamente superior ou inferior. A camada de visualização não pode acessar a camada do modelo diretamente, apenas por chamadas a camada de controle, do mesmo modo que a camada do modelo nunca acessa a camada de visualização diretamente, também precisa passar pela camada controladora para fazer esse tipo de ação. Arquiteturas em camadas intercomunicantes também ajudam na manutenção da aplicação, ao ponto que elas formam uma separação semântica tanto visual como em código, evitando que 18
  • 19. mudanças em uma das camadas afete as outras em um efeito dominó, porque sempre existe uma “camada de contenção”, já que não é possível se comunicar com partes que estão muito acima ou muito abaixo de onde o código está rodando. 3.1.5 Ambiente de desenvolvimento O ambiente de desenvolvimento integrado (IDE) utilizado na codificação do sistema foi o plugin Java Development Toolkit (JDT) da plataforma Eclipse. O Eclipse é uma plataforma que segue o padrão de container de plugins OSGI, tento uma gama de plugins que vão desde o desenvolvimento em linguagens funcionais, como LISP, até geradores de relatórios e gráficos, como o Business Intelligence and Reporting Tools. Ele foi desenvolvido originalmente pela IBM e mais tarde foi doado para a recém criada Eclipse Foundation. O seu plugin mais conhecido, o JDT, é atualmente o ambiente de desenvolvimento Java mais utilizado no planeta, graças as suas diversas funcionalidades de auto-completação de código, refactoring embutido e dicas para resolver problemas comuns no desenvolvimento. 3.2 Metodologia de Desenvolvimento O projeto foi desenvolvido seguindo alguns dos preceitos da metodologia de desenvolvimento Extreme Programming. A Extreme Programming é uma metodologia que tem foco no desenvolvimento e geração de resultados para os clientes e esse foi, talvez, o maior problema que foi encontrado pelo grupo no desenvolvimento do projeto. Como não havia um cliente presente, já que o software estava sendo desenvolvido com o intuito de ser uma ferramenta “de prateleira”, não havia a possibilidade de se ter um possível “cliente” disponível para avaliar os resultados ou os caminhos que o sistema estava tomando. 19
  • 20. Outras características, entretanto, puderam ser colocadas em prática no projeto, como o desenvolvimento guiado pelos testes, integração contínua e iterações curtas para a geração de resultados. O uso de testes unitários delineou um caminho simples para a criação e testes das funcionalidades do sistema e a integração foi feita sem maiores problemas graças ao uso da ferramenta de gerência de projetos Apache Mavenvii . 20
  • 21. 4. Resultados 4.1 Estado atual do sistema O sistema desenvolvido no projeto encontra-se na sua primeira versão estável, mas devido ao curso espaço de tempo ainda não demonstra todas as funcionalidades projetadas na sua concepção. As funcionalidades atualmente implementadas são: Inserção, edição e exclusão de Cursos, Disciplinas, Turmas, Semestres, Alunos, Professores, Materais e Links relacionados; Área especial para professores e alunos; Blog de notícias e novidades para as disciplinas e professores, com a possível participação de alunos; Cadastro de novos alunos e matrículas em disciplinas e turmas específicas; Controle da segurança dos materiais enviados; As funcionalidades antes pensadas mas que ainda não foram adicionadas: Fornecer mecanismo automático para avaliação dos alunos, com base em exercícios feitos pelo próprio sistema; Colocação das notas e geração das médias dos alunos; Fórum especial para retirada de dúvidas dos alunos e discussão dos assuntos relacionados; Avaliação dos alunos para os materiais disponibilizados nas áreas das disciplinas; 21
  • 22. 4.2 Outros resultados O sistema também obteve outros resultados que não o desenvolvimento do sistema. Foram publicados 3 artigos desenvolvidos pelos membros do projeto, dois em um site especializado em programação e outro e uma revista especializada em programação Java. Os materiais publicados foram os seguntes: Introdução ao Hibernate 3 – Disponível no Grupo de Usuários Java (GUJ) em http://guj.com.br/java.tutorial.artigo.174.1.guj Hibernate 3 Avançado – Disponível no Grupo de Usuários Java (GUJ) em http://guj.com.br/java.tutorial.artigo.181.1.guj Introdução a Inversão de controle com o framework Spring – Publicado na revista MundoJava número 13, ano III 22
  • 23. 5. Conclusão O projeto gerou uma ferramenta que já pode ser utilizada como um gerenciador para os conteúdos de disciplinas e aulas. Ela também já pode ser utilizada como um meio de se organizar as matriculas dos alunos e controlar o acesso de estranhos a materiais específicos. Graças a preocupação com a arquitetura simples e de fácil extensão, o sistema pode ser facilmente aumentado e melhorado com as novas funcionalidades que estão planejadas e até mesmo outras que ainda não foram pensadas. O uso de uma linguagem de programação muito conhecida tanto no mercado quanto comercialmente para o seu desenvolvimento torna a aplicação ainda mais fácil de ser extendida. Durante o processo de pesquisa e desenvolvimento, alguns problemas surgiram, como a pequena quantidade de informações sobre o histórico da educação a distância, a falta de referência em livros e atualizada sobre a linguagem de programação Java e os frameworks utilizados. Os artigos publicados pelo grupo continuam sendo ainda hoje trabalhos pioneiros no Brasil sobre Hibernate 3 e Spring, demonstrando o baixo interesse das editora sobre estes assuntos mais avançados, que também são fonte de aplicações mais robustas e mais fáceis de serem estendias. O não investimento neste tipo de publicação mais especializada pode aumentar ainda mais a distância do mercado brasileiro de software e suas principais concorrências no mundo hoje, como a Índia, que tem um forte apoio dos estados unidos no seu desenvolvimento tecnológico. Com o desenvolvimento do projeto também foi possível perceber que nem sempre é válido o desenvolvimento com vistas em evitar mudanças futuras. Muitas vezes, os planos adicionados antes da hora ou de uma real necessidade do sistema foram engolidos por problemas reais que surgiram. O planejamento do desenvolvimento ainda é de suma importância, mas ele 23
  • 24. mostrou-se mais confiável no curto prazo do que em iterações de desenvolvimento mais longas. Lidando com prazos e tarefas menores foi possível manter um passo mais firme no desenvolvimento e no controle de novas funcionalidades, pois muitas das funcionalidades eram entrelaçadas entre si, causando diversos problemas quando elas não conseguiam se comunicar e trabalhar corretamente em conjunto. A comunicação entre o grupo de desenvolvedores também foi um dos pilares do desenvolvimento do sistema. Com uma lista de discussão e fórum privado exclusivo para a discussão dos assuntos relacionados ao projeto, o foco do desenvolvimento foi mantido e a comunicação fluiu de forma natural, mesmo não sendo possível aplicar uma das práticas mais importantes do método Extreme Programming, a programação em par. A importância desse projeto também se deu graças a quantidade de novos conhecimentos que foram gerados entre o grupo que o desenvolveu e o retorno que esse mesmo grupo pode fazer a comunidade de desenvolvedores através dos três materiais publicados, sendo dois disponíveis gratuitamente na Internet e o terceiro disponível em uma das edições de uma das mais respeitadas revistas sobre a plataforma Java do Brasil. Os objetivos do projeto, que eram desenvolver um sistema funcional e contribuir com novos conhecimentos para a comunidade foram atingidos, especialmente no que se relaciona a contribuição, pois o fim da pesquisa é contribuir para a melhora do mundo no qual habitamos. 24
  • 25. 6. Bibliografia KING, GAVIN; BAUER, CHRISTIAN; Hibernate In Action. Manning, 2004. HARROP, ROB; MACHACEK, JAN; Pro Spring. Apress, 2005. DEITEL, H. M.; DEITEL, P. J.; Java, como programar. 4 ed. – Porto Alegre: Bookman, 2003. KUROSE, JAMES F.; ROSS, KEITH W.; Redes de Computadores e a Internet: Uma nova abordagem. 1 ed. – São Paulo : Addison Wesley, 2003. MASSOL, VINCENT; O’BRIEN, TIMOTHY; Maven: A Developer’s Notebook. O’Reilly, 2004. D’ANJOU, JIM; FAIRBROTHER, SCOTT; KEHN, DAN; KELLERMAN, JOHN; MAcCARTHY; The Java Developer’s Guide to Eclipse. 2º edição, Addison-Wesley. TELES, VINÍCIUS MANHÃES; Extreme Programming: Aprenda como encantar seus usuários desenvolvendo software com agilidade e alta qualidade. Novatec Editora, 2004 FREEMAN, ELIZABETH; FREEMAN, ERIC; SIERRA, KATHY; BATES, BERT; Head First Design Patterns. O’Reilly, 2004. 25
  • 26. COLYER, ADRIAN; CLEMENT, ANDY; HARLEY, GEORGE; WEBSTER, MATTHEW; Eclipse AspectJ: Aspect-Oriented programming whith AspectJ and the Eclipse AspectJ Development Tools. Addison- Wesley, 2005. HUSTED, TED; DUMOULIN, CEDRIC; FRANCISCUS, GEORGE; WINTERFELDT, DAVID; Struts em Ação. Editora Ciência Moderna, 2004. BASHAN, BRIAN; SIERRA, KATHY; BATES, BERT; Head Fist Servlets & JSP: Passing the Sun Certified Web Component Developer Exam. O’Reilly, 2004. Instituto Universal: http://www.institutouniversal.com.br/ UFLA – Universidade Federal de Lavras: http://www.ufla.br/ FAESA Online – Educação a Distância: http://ead.faesa.br/ Wikipedia – Online Learning: http://en.wikipedia.org/wiki/Online_learning Wikipedia – E-Learning: http://en.wikipedia.org/wiki/E-learning Wikipedia – Ensino assistido por computador: http://en.wikipedia.org/wiki/Computer- based_training 26
  • 27. 7. Apêndice - Notas 27
  • 28. i Como no projeto Telecurso da Fundação Roberto Marinho. ii Desenvolvido pela Qarbon e disponível em http://www.qarbon.com/ iii Um Managed Learning Enviroment é a junção de um sistema de gerenciamento de informações com um ambiente de aprendizado virtual. Eles tem como objetivo facilitar a administração da educação e dos cursos para alunos e professores, sendo muitas vezes utilizados tanto para ensino a distância como para a educação híbrida, que reúne o ensino presencial ao uso de computadores e multimídia. iv Disponível em http://moodle.org/ v Disponível em http://www.open.ac.uk/ vi O JCP (Java Community Process) é o orgão gestor da linguagem de da plataforma Java, mantido por várias empresas que usam e produzem programas em Java, como IBM, Sun, BEA e Oracle. Ele é responsável pela tomada de decisões sobre tudo o que é feito na linguagem e na plataforma, como por exemplo a criação e implementação de provas-de- conceito de novas funcionalidades para a plataforma. vii O Apache Maven é um gerenciador de projetos genérico desenvolvido pela Apache Software Foundation. Ele funciona como uma base para a manutenção do ciclo de vida de sistemas, especialmente sistemas em Java, passando entre o desenvolvimento, testes de todos os tipos (unitários, homologação, in container e outros), avaliação de qualidade e métricas até a implantação do sistema em um servidor apropriado.