Upload
mauricio-linhares
View
1.674
Download
0
Embed Size (px)
DESCRIPTION
Relatório final do projeto de pesquisa e-Teacher desenvolvido durante a minha graduação em Tecnologia em Sistemas para a Internet.
Citation preview
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
2
Sumário.......................................................................................................................................3
1. Introdução...............................................................................................................................5
2. Fundamentação Teórica..........................................................................................................7
2.1 Como surgiu a internet?....................................................................................................7
2.1.1 Novas tecnologias da informação e o futuro da Internet...........................................8
2.2 Educação à distância.........................................................................................................9
2.2.1 Ensino assistido por computador.............................................................................10
2.3 E-Learning......................................................................................................................11
3. Materiais e métodos..............................................................................................................13
3.1 Ferramentas utilizadas no desenvolvimento do projeto..................................................13
3.1.1 Linguagem de programação.....................................................................................13
3.1.2 Banco de dados........................................................................................................14
3.1.3 Mapeamento objeto relacional.................................................................................15
3.1.3 Container de inversão de controle............................................................................17
3.1.4 Framework web.......................................................................................................19
3.1.5 Ambiente de desenvolvimento.................................................................................20
3.2 Metodologia de Desenvolvimento..................................................................................20
4. Resultados.............................................................................................................................22
4.1 Estado atual do sistema...................................................................................................22
4.2 Outros resultados............................................................................................................23
3
5. Conclusão..............................................................................................................................24
6. Bibliografia...........................................................................................................................26
7. Apêndice - Notas...................................................................................................................28
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 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.
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.
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.
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
9
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.
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
10
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.
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.
11
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
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 Moodle iv, 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.
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
13
gerente da plataforma (o JCPvi) também fez com que a quantidade de pessoas utilizando
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.
14
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
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
15
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
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
16
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.
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),
17
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
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
18
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
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
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.19
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
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
20
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.
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 .
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;
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
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 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.
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.
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
27
7. Apêndice - Notas
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.28