• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Relatório final do projeto de pesquisa e-Teacher
 

Relatório final do projeto de pesquisa e-Teacher

on

  • 1,689 views

Relatório final do projeto de pesquisa e-Teacher desenvolvido durante a minha graduação em Tecnologia em Sistemas para a Internet.

Relatório final do projeto de pesquisa e-Teacher desenvolvido durante a minha graduação em Tecnologia em Sistemas para a Internet.

Statistics

Views

Total Views
1,689
Views on SlideShare
1,689
Embed Views
0

Actions

Likes
0
Downloads
18
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft Word

Usage Rights

CC Attribution-NonCommercial-ShareAlike LicenseCC Attribution-NonCommercial-ShareAlike LicenseCC Attribution-NonCommercial-ShareAlike License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Relatório final do projeto de pesquisa e-Teacher Relatório final do projeto de pesquisa e-Teacher Document Transcript

    • 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 – 20051
    • 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 – 2005SumárioSumário.......................................................................................................................................22
    • 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......................................................................................................................103. 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..................................................................................194. Resultados.............................................................................................................................21 4.1 Estado atual do sistema...................................................................................................21 4.2 Outros resultados.............................................................................................................225. Conclusão..............................................................................................................................236. Bibliografia...........................................................................................................................257. Apêndice - Notas...................................................................................................................273
    • 1. IntroduçãoA Internet surgiu como um meio de comunicação eficiente entre universidades espalhadas emtodo o mundo, onde eles trocavam informações, pesquisas e descobertas de forma mais rápidado 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óriode conhecimento que nós conhecemos hoje.Nos anos 80 foi desenvolvido o modo de ensino conhecido como “treinamento baseado emcomputador”, que consistia em um programa de computador que é executado pelo usuário emum computador. Essa maneira de ensino foi muito utilizado para treinar os usuários a utilizaras aplicações contidas em seus computadores, mas devido a sua baixa interatividade e osautos custos para o desenvolvimento, perdeu força nos dias atuais. Algumas ferramentas aindatrazem versões simples desse tipo de treinamento, conhecidas como “tutoriais”, para ajudar ousuá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 serdeixado de lado. Conhecida atualmente como e-Learning, o uso de computadores etecnologias de rede para facilitar e complementar a educação tem demonstrado umcrescimento gigantesco e resultados incríveis, especialmente graças a interatividade que osambientes de e-Learning demonstram.Ferramentas de e-Learning também estão sendo utilizadas para dar suporte a ensino adistância (ou não presencial). Essas ferramentas fornecem meios para que os professores ealunos, mesmo separados geograficamente, possam se comunicar e trocar informações emtempo real, tanto através de textos como de vídeo conferências. Nestes ambientes, o aluno que4
    • 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 tirardúvidas e fazer perguntas.O Projeto e-Teacher nasceu da necessidade de se montar uma estrutura simples e intuitivapara a organização dos materiais de aula das várias disciplinas e vários cursos que umainstituição possa oferecer. Além da organização e disponibilização dos materiais e apossibilidade de interação entre alunos e professores, a ferramenta também busca ajudar naadministração dos cursos e disciplinas, com cadastros, matrículas, horários e marcação deavaliações.Mas o e-Teacher não procura ser uma ferramenta de e-Learning completa, pois já existemvárias outra ferramentas com maior maturidade que podem ser utilizadas em conjunto, comoferramentas de vídeo-conferência, conversas em tempo real em salas de chats e fórunscomunitários.A implementação do projeto também serviu com um campo de testes para novas tecnologias epara a aplicação de novas técnicas de desenvolvimento, como os conceitos de inversão decontrole e mapeamento objeto relacional, além do uso e homologação de diversos padrões deprojeto. O sistema foi desenvolvido na linguagem de programação Java.5
    • 2. Fundamentação Teórica2.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 projetofinanciado pela Agencia de Projetos de Pesquisa Avançada dos Estados Unidos (ARPA –Advanced Research Projects Agency), que foi a primeira rede de computadores porcomutação de pacotes (troca de mensagens) e ancestral da Internet que conhecemos hoje. Seuprojeto foi desenvolvido em 1967 e foi finalmente posto em prática em 1969, na Universidadeda Califórnia (Ucla).De 1969 até o inicio dos anos 90 a rede mundial de computadores tinha um apelo meramenteacadêmico. Apenas Institutos de pesquisa e universidades tinha acesso a informação quecirculava na rede que viria a ser conhecida como Internet. Mas neste início de década veio averdadeira revolução que esta rede mundial vinha preparando, o surgimento da World WideWeb, uma rede mundial de computadores que reuniria não apenas institutos relacionados aeducação, pesquisa e exercito, mas as empresas e pessoas de todo o mundo. Essa revoluçãonasceu, em parte, no Centro Europeu para Física Nuclear (Cern – European Center forNuclear Physics), sob a tutela de Tim-Berners Lee, entre 1989 e 1991. Ele e seuscompanheiros 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 dainformação que ela está causando até hoje. Pois esteja onde você estiver, pode conseguirinformações sobre quase tudo o que desejar, bastando apenas ter um aparelho que se conecte ainternet, 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 seconectando 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 maisimportantes criações do ser humano, mas também traz novos e gigantescos problemas porcausa da falta de controle que existe sobre o que é publicado na rede. Os maiores exemplosdisso são as redes Peer-to-Peer (P2P), onde pessoas trocam arquivos de diversos tipos, comomúsica, vídeos, documentos, de modo gratuito, muitas vezes infringindo as leis depropriedade intelectual sobre aqueles arquivos ou informações que estão sendo trocadas.2.1.1 Novas tecnologias da informação e o futuro da InternetA Internet forçou a criação de novos padrões na disseminação do conhecimento de no modocomo ele deve ser tratado. Os sistemas de computação eram vistos de uma forma quasemágica, pois apenas seus criadores e pessoas especializadas sabiam utilizar, deram lugar ainterfaces gráficas para o usuário, as chamadas GUI (Graphic User Interface), que tornam asua operação cada vez mais intuitiva e fazem com que se exija cada vez menos das pessoaspara 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 emoutros), os meios para a distribuição da informação estão tendo que se adequar tanto afacilidade de uso como a velocidade de acesso.7
    • O futuro da Internet já está sendo apontado, ela está se dirigindo para uma convergência entretodas as outras formas de mídia, para criar um algo novo e que mesmo que não leve os outrosmeios a extinção vai diminuir cada vez mais o seu peso sobre a informação e formação deopinião, porque uma pessoa que tenha acesso a Rede não vai precisar sair dela para ouvir umarádio, assistir um programa de televisão, ler o seu jornal preferido, fazer uma pesquisa paraum 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 deentretenimento e pesquisa nos lares é real e já está acontecendo nos grandes centros, comoEUA, Europa e Japão, mas até que esta nova mídia chegue a os países mais pobres vaidemorar um pouco, e pode até mesmo nem tornar-se realidade tão cedo, se depender docontrole 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 maioriados lares dos países subdesenvolvidos, como o Brasil.2.2 Educação à distânciaEntende-se como educação a distância a estratégia desenvolvida por sistemas educativos paraoferecer educação a setores ou grupos da população que, por razões diversas, tem dificuldadesde acesso a serviços educativos regulares. Este modo de ensino é caracterizado pela separaçãoentre alunos e professores no espaço e/ou tempo, pelo controle do aprendizado sendo feitomais intensamente pelo próprio aluno do que pelo seu professor, que não tem condições deacompanhá-lo pessoalmente, e pela comunicação entre alunos e professores se dando pormeios 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, em1833, para um curso de contabilidade. A prática então se disseminou por toda Europa e depoispara o resto do mundo. Hoje, os principais divulgadores desta prática são França, Inglaterra eEspanha.O Brasil tem contato com a educação a distância a partir de 1904, quando universidades eescolas internacionais oferecem seus cursos, mas a primeira empreitada verdadeiramentebrasileira só surge em 1934 quando Edgard Roquete-Pinto a Rádio-Escola Municipal no Riode Janeiro. A partir desse primeiro passo várias novas ações foram movidas na área deeducação a distância, como a formação do Instituto Universal Brasileiro em 1941, que aindahoje é 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émdesenvolvem vários projetos se utilizando desse modelo. Um dos exemplos é a UniversidadeFederal de Lavras (UFLA), que oferece cursos de especialização (Latu Sensu) à distância amais de 18 anos, em diversas áreas do conhecimento.2.2.1 Ensino assistido por computadorO ensino assistido por computador foi uma das primeiras modalidades de ensino a distância autilizar o computador como facilitador na educação. Ele é caracterizado por ser um programaque o usuário executa localmente em sua máquina, que mostra um passo-a-passo para que ousuário possa aprender a utilizar ou operar um programa contido em seu computador. Estamodalidade foi muito utilizada na década de 80, mas hoje não é mais tão comum por causados altos custos envolvidos na criação das aulas.9
    • Hoje as pessoas costumam utilizar um modo simplificado dessa modalidade, que consiste emtirar screnshots (imagens da tela) do computador, adicionar notas e comentários as imagens edepois montar uma apresentação de imagens seqüenciais (ou apresentação de slides). Existemsoftwares especializados na criação deste tipo de mídia, tanto gratuitos como proprietários,como o Viewlet Builderii.2.3 E-LearningO E-Learning é um passo a frente do ensino assistido por computadores, porque ele procurafazer uso da interatividade que o computador e a Internet podem fornecer, com o uso demultimídia e interatividade, que não eram utilizados no método anterior. Mas o E-Learningnão é utilizado apenas para educação à distância, ele também pode ser utilizado com umafonte de ajuda e desenvolvimento para o ensino presencial tradicional, fornecendo outrasmaneiras para que alunos e professores possam interagir de forma a fixar melhor osconhecimentos.O aprendizado híbrido, que mistura o ensino tradicional com o uso de tecnologia ecomputadores 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 asdiscussões e fóruns sobre os assuntos do que no simples estudo do conteúdo em si. Este tipo10
    • de abordagem, conhecida como construtivismo, que afirma que através de discussões e dopensar sobre os assuntos os alunos aprendem e conseguem manter muito mais informação doque simplesmente “decorar” o que foi passado nas aulas.Uma das mais famosas ferramentas de e-learning da atualidade é o Moodleiv, que é uma dasmais completas plataformas de e-learning e ensino a distância da atualidade. Ele é umsoftware livre e gratuito distribuído sobre a licença Gnu Public Licence, multiplataforma eque já está sendo desenvolvido a mais de 7 anos por uma comunidade vibrante de usuários eentusiastas. 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úneestudantes de todo o mundoe já formou mais de 3 milhões de pessoas em diversas áreas eníveis de ensino. A Open University também é conhecida por ser a universidade com asmelhores avaliações dos estudantes do Reino Unido e do País de Gales.11
    • 3. Materiais e métodos3.1 Ferramentas utilizadas no desenvolvimento do projeto3.1.1 Linguagem de programaçãoA linguagem de programação escolhida para o desenvolvimento do projeto foi a linguagemJava, desenvolvida pela Sun Microsystems. Java começou a ser desenvolvida em dezembro de1990 pelo Green Project, que tinha como objetivo principal a criação de uma nova linguagemde programação simples e multiplataforma que pudesse ser embarcada em ambientes que nãofossem computadores. A idéia na criação da linguagem era que ela fosse utilizada comocontroladora 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 aindanão era o momento propício para esse tipo de desenvolvimento, especialmente pela baixacapacidade dos computadores da época e pelo auto preço que adicionar microcontroladores aaparelhos eletrônicos poderiam ter. Em 1994, com o surgimento do navegador na InterntetMosaic (que mais tarde se transformaria no navegador Netscape), o time responsável peloGreen Project resolveu aproveitar o início da internet e criou os primeiros applets, que eramprogramas em Java que rodavam dentro dos navegadores de internet, inicialmente apenas noNetscape.Com o crescimento da Internet nos anos vindouros, Java tornou-se uma das linguagens deprogramação mais populares do planeta, mas no fim da década de 90 o uso de Java em Appetsnos browsers perdeu muito espaço para outras alternativas mais simples, como o MacromediaFlash, um ambiente de criação de animações para a internet. A saída da Microsft do corpogerente da plataforma (o JCPvi) também fez com que a quantidade de pessoas utilizando12
    • applets diminuísse, pois o navegador Internet Explorer não tem mais suporte a essasaplicações Java.Hoje a linguagem continua sendo uma força no meio acadêmico, no desenvolvimento desistemas com página dinâmicas e, segundo pesquisas recentes, no desenvolvimento desistemas desktop, que até pouco tempo atrás eram dominados pelo conjunto de ferramentas daMicrosft, o Windows Forms.Java foi escolhida como a linguagem na qual o projeto seria desenvolvida porque os materiaisde referência são fáceis de ser encontrados, ela é a linguagem de programação utilizada nasaulas de “Programação Orientada a Objetos” e porque é de fácil uso e entendimento, contandocom um conjunto de ferramentas e frameworks que facilitam e aumentam a produtividade dosprogramadores. Outro fator importante é que a plataforma é gratuita e a maior parte de suasferramentas também é, fazendo com que os gastos para inicio do desenvolvimento sejapraticamente nenhum, apenas o gasto com aprendizado é necessário.3.1.2 Banco de dadosO banco de dados utilizado no projeto foi o MySQL (na versão 4.1), que é um banco de dadosrelacional gratuito e licenciado pela Gnu Public Licence. O MySQL foi criado originalmentepelo 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 daespecificação SQL 1999.Ele foi escolhido como banco de dados para o projeto por ser de fácil utilização, disponívelgratuitamente e ser um dos mais rápidos bancos da atualidade. O uso do MySQL em grandessistemas já foi comprovado por várias empresas, especialmente o Google, que o utiliza como13
    • repositório para as suas pesquisas. O MySQL tem uma implementação madura do padrão deconexão com bancos de dados em Java (o Java Database Connectivity – JDBC) e tida comouma das melhores implementações do mercado.3.1.3 Mapeamento objeto relacionalUm dos maiores problemas de se desenvolver sistemas que acessam bancos de dadosrelacionais a partir de linguagens orientadas a objetos, é a diferença de tratamento naconstrução e análise de informações entre os dois sistemas. Em um sistema orientado aobjetos, as informações são reunidas em estruturas que reúnem tanto os dados como asoperações que podem ser aplicadas neles, já em um sistema relacional, os dados são separadosdas operações que podem acontecer sobre eles, da mesma maneira que ocorre em linguagensde programação estruturadas, como C, Perl e Pascal.As ferramentas de mapeamento objeto-relacional funcionam como um tradutor deinformações entre os dois sistemas, elas formam uma passagem para que os dados possamtrafegar entre os dois sistemas sem que seja necessário que um dos lados tenha que se adequaraos outros.Um exemplo clássico disso são os relacionamentos entre as entidades de um sistema. Em umbanco relacional, os relacionamentos são modelados através de chaves primárias eestrangeias, conceitos inexistentes em sistemas puramente orientados a objetos, pois nestessistemas os objetos se relacionam através de referências aos objetos (ou ponteiros). Aferramenta de mapeamento vai trabalhar fazendo com que o banco de dados relacional veja osrelacionamentos de ponteiros do sistema orientado a objetos como o seu próprio sistema dechaves primárias e estrangeiras e o sistema orientado a objetos vai ver os relacionamentos de14
    • chaves primárias e estrangeiras do banco relacional como o seu sistema de ponteiros paraobjetos.Os primeiros estudos na área datam da década de 80, mas apenas no fim dos anos 90 quehouve realmente uma busca por este tipo de ferramentas. As aplicações ficam cada dia maiscomplexas, modelos relacionais simples não tem mais condições de resolver o problema e osbancos de dados puramente orientados a objetos ainda não são uma realidade para a maioriados projetos, tanto pela sua curta existência e pouco conhecimento dos seus limites comopelos custos elevados que a adoção deste tipo de software poderia trazer. Neste quadrocomeçam a surgir as primeiras ferramentas de mapeamento no mercado, com uma sedestacando 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 foia primeira linguagem a ter ferramentas de mapeamento objeto relacional), tornou-se o modelopara as ferramentas seguintes. Hoje existe uma profusão destas ferramentas em váriaslinguagens, especialmente em Java que tem duas especificações oficiais que lidamespecialmente com esse tipo de abordagem.Uma das especificações é a Java Data Objects (JDO), que funciona não apenas como umaferramenta de mapeamento objeto relacional, mas como um mecanismo de persistência,pesquisa e acesso a informações em qualquer formato que os forncedores desejemdesenvolver, como bancos de dados ou arquivos XML, a outra especificação é a EnterpriseJava Beans, que é mais restrita no que tange a persistência, sento essencialmente umaextensão para ferramentas de mapeamento objeto relacional, mas sendo mais abrangente emoutros 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 amais utilizada ferramenta de mapeamento objeto relacional do mercado e que está recebendouma nova versão para a plataforma .NET da Microsoft. O Hibernate foi desenvolvido combase no TopLink mas hoje é um framework de desenvolvimento maduro que influencioufortemente a atualização da especificação EJB do Java, simplificando ainda mais o acesso abancos de dados relacionais na linguagem. A versão utilizada foi a 3.1.3.1.3 Container de inversão de controleNo desenvolvimento do sistema, utilizamos um novo conceito do desenvolvimento orientadoa objetos, a inversão de controle. Este conceito prega uma quebra com a crença anterior deque os objetos devem ser sempre auto-contidos e conhecer todas as suas dependências. Emum ambiente onde a inversão de controle é utilizada, os objetos não conhecem nem acessamas suas dependências diretamente, eles conhecem apenas as interfaces (ou contratos) que osobjetos devem cumprir. Com o uso de contratos, a implementação dos objetos fica livre deinterações externas e pode ser facilmente mudada sem que o código e os objetos clientesdaquelas 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çãode dependências. Na busca por dependências, os objetos buscam ativamente por outrosobjetos que obedeçam ao contrato em um registro centralizado que normalmente é fornecidopelo servidor de aplicações aonde o sistema está funcionando. Em uma aplicação Java, esseregistro 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é oregistro e buscam por objetos que implementam o contrato específico através de chaves debusca. Mas a busca por dependências ainda é falha no sentido de que os objetos continuamtendo que procurar por suas dependências ativamente, ainda é necessário acessar o registro e16
    • buscar o objeto manualmente, fato que causa um acoplamento desnecessário entre o cliente eo 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 recebemas suas dependências através da interação de um container externo a aplicação, que trafeganos 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 nembuscar 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 elessão necessários, através de configurações em código ou em arquivos de configuração (comoarquivos XML específicos do container).O uso da inversão de controle torna-se obrigatório especialmente em sistemas que exigem umnível muito grande de independência entre seus recursos. Uma das necessidades deindependência mais comuns é a independência de bancos de dados, especialmente paraempresas que desenvolvem software de prateleira, pois elas precisam tentar atingir a maiorquantidade de clientes possíveis, não se prendendo a uma implementação ou banco de dadosespecí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 SpringFramework, que além de ser o container de inversão mais utilizado do momento, provê váriosoutros serviços para as aplicações que o utilizam, como constructos para trabalhar comprogramação orientada a aspectos em Java e distribuição transparente de objetos usando asbibliotecas padrão do Java.O crescimento e maturidade do Spring também causaram grandes mudanças na maneira de sedesenvolver aplicações para a web em Java, que normalmente dependiam de grandes17
    • servidores de aplicação caríssimos da IBM, BEA e Oracle. As aplicações que utilizam oSpring podem ter as mesmas funcionalidades rodando em máquinas mais leves e utilizandoservidores gratuitos como o Tomcat, fato que também resultou em uma mudança dementalidade e foco por parte das empresas que desenvolvem servidores de aplicaçãocomerciais.3.1.4 Framework webA interface web do sistema foi desenvolvida através de páginas JavaServer Pages quegeravam resultados em XHTML. O controle dessas páginas foi desenvolvido utilizando omó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. Aspá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 MVCeram responsáveis pela camada Controller (controladora), que recebe as interações dosusuários, acessa a camada Model (modelo), que contém as lógicas de negócio relacionadas aaplicaçã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 pelaaplicação uma coisa simples, pois uma camada comunica-se apenas com a sua camadadiretamente superior ou inferior. A camada de visualização não pode acessar a camada domodelo diretamente, apenas por chamadas a camada de controle, do mesmo modo que acamada do modelo nunca acessa a camada de visualização diretamente, também precisapassar pela camada controladora para fazer esse tipo de ação.Arquiteturas em camadas intercomunicantes também ajudam na manutenção da aplicação, aoponto que elas formam uma separação semântica tanto visual como em código, evitando que18
    • mudanças em uma das camadas afete as outras em um efeito dominó, porque sempre existeuma “camada de contenção”, já que não é possível se comunicar com partes que estão muitoacima ou muito abaixo de onde o código está rodando.3.1.5 Ambiente de desenvolvimentoO ambiente de desenvolvimento integrado (IDE) utilizado na codificação do sistema foi oplugin Java Development Toolkit (JDT) da plataforma Eclipse. O Eclipse é uma plataformaque segue o padrão de container de plugins OSGI, tento uma gama de plugins que vão desde odesenvolvimento em linguagens funcionais, como LISP, até geradores de relatórios e gráficos,como o Business Intelligence and Reporting Tools. Ele foi desenvolvido originalmente pelaIBM e mais tarde foi doado para a recém criada Eclipse Foundation. O seu plugin maisconhecido, o JDT, é atualmente o ambiente de desenvolvimento Java mais utilizado noplaneta, graças as suas diversas funcionalidades de auto-completação de código, refactoringembutido e dicas para resolver problemas comuns no desenvolvimento.3.2 Metodologia de DesenvolvimentoO projeto foi desenvolvido seguindo alguns dos preceitos da metodologia de desenvolvimentoExtreme Programming. A Extreme Programming é uma metodologia que tem foco nodesenvolvimento e geração de resultados para os clientes e esse foi, talvez, o maior problemaque foi encontrado pelo grupo no desenvolvimento do projeto. Como não havia um clientepresente, 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 paraavaliar os resultados ou os caminhos que o sistema estava tomando.19
    • Outras características, entretanto, puderam ser colocadas em prática no projeto, como odesenvolvimento guiado pelos testes, integração contínua e iterações curtas para a geração deresultados.O uso de testes unitários delineou um caminho simples para a criação e testes dasfuncionalidades do sistema e a integração foi feita sem maiores problemas graças ao uso daferramenta de gerência de projetos Apache Mavenvii .20
    • 4. Resultados4.1 Estado atual do sistemaO sistema desenvolvido no projeto encontra-se na sua primeira versão estável, mas devido aocurso espaço de tempo ainda não demonstra todas as funcionalidades projetadas na suaconcepçã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 dealunos;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 feitospelo 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 resultadosO sistema também obteve outros resultados que não o desenvolvimento do sistema. Forampublicados 3 artigos desenvolvidos pelos membros do projeto, dois em um site especializadoem programação e outro e uma revista especializada em programação Java. Os materiaispublicados foram os seguntes:Introdução ao Hibernate 3 – Disponível no Grupo de Usuários Java (GUJ) emhttp://guj.com.br/java.tutorial.artigo.174.1.gujHibernate 3 Avançado – Disponível no Grupo de Usuários Java (GUJ) emhttp://guj.com.br/java.tutorial.artigo.181.1.gujIntrodução a Inversão de controle com o framework Spring – Publicado na revista MundoJavanúmero 13, ano III22
    • 5. ConclusãoO projeto gerou uma ferramenta que já pode ser utilizada como um gerenciador para osconteúdos de disciplinas e aulas. Ela também já pode ser utilizada como um meio de seorganizar 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 serfacilmente 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 muitoconhecida tanto no mercado quanto comercialmente para o seu desenvolvimento torna aaplicação ainda mais fácil de ser extendida.Durante o processo de pesquisa e desenvolvimento, alguns problemas surgiram, como apequena quantidade de informações sobre o histórico da educação a distância, a falta dereferência em livros e atualizada sobre a linguagem de programação Java e os frameworksutilizados. Os artigos publicados pelo grupo continuam sendo ainda hoje trabalhos pioneirosno Brasil sobre Hibernate 3 e Spring, demonstrando o baixo interesse das editora sobre estesassuntos mais avançados, que também são fonte de aplicações mais robustas e mais fáceis deserem estendias. O não investimento neste tipo de publicação mais especializada podeaumentar ainda mais a distância do mercado brasileiro de software e suas principaisconcorrências no mundo hoje, como a Índia, que tem um forte apoio dos estados unidos noseu desenvolvimento tecnológico.Com o desenvolvimento do projeto também foi possível perceber que nem sempre é válido odesenvolvimento com vistas em evitar mudanças futuras. Muitas vezes, os planos adicionadosantes da hora ou de uma real necessidade do sistema foram engolidos por problemas reais quesurgiram. O planejamento do desenvolvimento ainda é de suma importância, mas ele23
    • mostrou-se mais confiável no curto prazo do que em iterações de desenvolvimento maislongas. Lidando com prazos e tarefas menores foi possível manter um passo mais firme nodesenvolvimento e no controle de novas funcionalidades, pois muitas das funcionalidadeseram entrelaçadas entre si, causando diversos problemas quando elas não conseguiam secomunicar e trabalhar corretamente em conjunto.A comunicação entre o grupo de desenvolvedores também foi um dos pilares dodesenvolvimento do sistema. Com uma lista de discussão e fórum privado exclusivo para adiscussão dos assuntos relacionados ao projeto, o foco do desenvolvimento foi mantido e acomunicação fluiu de forma natural, mesmo não sendo possível aplicar uma das práticas maisimportantes 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 queforam gerados entre o grupo que o desenvolveu e o retorno que esse mesmo grupo pode fazera comunidade de desenvolvedores através dos três materiais publicados, sendo doisdisponíveis gratuitamente na Internet e o terceiro disponível em uma das edições de uma dasmais respeitadas revistas sobre a plataforma Java do Brasil.Os objetivos do projeto, que eram desenvolver um sistema funcional e contribuir com novosconhecimentos para a comunidade foram atingidos, especialmente no que se relaciona acontribuição, pois o fim da pesquisa é contribuir para a melhora do mundo no qual habitamos.24
    • 6. BibliografiaKING, 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 novaabordagem. 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 seususuários desenvolvendo software com agilidade e alta qualidade. Novatec Editora, 2004FREEMAN, ELIZABETH; FREEMAN, ERIC; SIERRA, KATHY; BATES, BERT; HeadFirst Design Patterns. O’Reilly, 2004.25
    • COLYER, ADRIAN; CLEMENT, ANDY; HARLEY, GEORGE; WEBSTER, MATTHEW;Eclipse AspectJ: Aspect-Oriented programming whith AspectJ and the Eclipse AspectJDevelopment 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: Passingthe 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_learningWikipedia – E-Learning: http://en.wikipedia.org/wiki/E-learningWikipedia – Ensino assistido por computador: http://en.wikipedia.org/wiki/Computer-based_training26
    • 7. Apêndice - Notas27
    • 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 deaprendizado virtual. Eles tem como objetivo facilitar a administração da educação e dos cursos para alunos eprofessores, sendo muitas vezes utilizados tanto para ensino a distância como para a educação híbrida, que reúne oensino 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 empresasque usam e produzem programas em Java, como IBM, Sun, BEA e Oracle. Ele é responsável pela tomada de decisõessobre 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. Elefunciona como uma base para a manutenção do ciclo de vida de sistemas, especialmente sistemas em Java, passandoentre o desenvolvimento, testes de todos os tipos (unitários, homologação, in container e outros), avaliação de qualidadee métricas até a implantação do sistema em um servidor apropriado.