View - IFBa

Transcrição

View - IFBa
Moodle
Uma Análise da Arquitetura de Software
ALMEIDA, K. N.
MOURA, I. C. M.
[email protected]
[email protected]
GSORT – Grupo de Sistemas Distribuídos, Otimização Redes e Tempo-Real
IFBa – Instituto Federal de Educação, Ciência e Tecnologia
Salvador - Bahia, Brasil.
Abstract— This article presents an architectural analysis of
the Moodle educational under the components-connectors view
and deployment view.
Keywords — component; connector; view; architecture;
deployment;
I.
INTRODUÇÃO
O Moodle (Modular Object-Oriented Dynamic Learning
Environment) [1] é uma aplicação destinada ao Ensino e
Aprendizado a Distância (EaD) utilizando a Internet como
forma de comunicação de múltiplas vias. Foi criado pelo
educador e cientista computacional australiano Martin
Dougiamas em 2001 motivado pelas limitações de sistemas
de gerenciamento de aprendizado existentes na época que
eram de código fechado e não atendiam requisitos
identificados por educadores e como parte de sua tese de
doutorado institulada "The use of Open Source software to
support a social constructionist epistemology of teaching
and learning within Internet-based communities of reflective
inquiry".
O nome vem do verbo da linguagem inglesa “to moodle”
que descreve o processo de navegar despretensiosamente por
algo enquanto outras coisas são feitas ao mesmo tempo.
Este artigo tem como objetivo analizar as decisões
arquiteturais buscando encontrar implementações de padrões
e estilos arquiteturais verificando como eles atendem os
requisitos funcionais e não-funcionais do sistema. Esta
análise apresentada duas visões arquiteturais do sistema, a
estrutural (componente-conector) e a visão de implantação e
discute os padrões e estilos encontrados nas duas visões.
Com o intuito de executar o trabalho proposto foi
necessário baixar o código fonte do projeto, a utilização de
ferramentas de software para leitura do código fonte, realizar
análises das estruturas de pacotes e classes e de documentos
encontrados na comunidade de contribuição ao projeto.
Apresentamos inicialmente um breve histórico do sistema
mostrando a motivação para a sua criação, pequenos detalhes
de sua instalação e algumas de suas características mais
importantes, focando nos requisitos funcionais e nãofuncionais.
Em seguida é apresentado o projeto arquitetural do
sistema com foco em dois view points, o estrutural, do qual
há um detalhamento dos componentes e conectores
identificados e o de implatantação. Essa análise arquitetural
pretende expor estilos e padrões arquiteturais presentes no
projeto do sistema e o rationale para cada um dos itens
identificados.
Logo depois serão detalhes de como foram realizados os
mapeamentos dos artefatos, além de detalhamento das
tecnologias encontradas e detalhes importantes da sua
implantação, assim como características e justificativas para
o modelo mapeado na análise realizada.
Por fim, o trabalho apresenta uma discussão dos aspectos
encontrados na análise comparando seus pontos e negativos e
mostrando ponto de melhoria.
II.
O MOODLE
Sistemas para Ensino a Distancia (EaD) são também
conhecidos como CMS (Course Management System), LMS
(Learning Management System) ou VLE (Virtual Learning
Environment). Como qualquer sistema web para ensino e
aprendizado a distancia deve possuir funcionalidades que
permitam colaboração entre seus usuários através da
Internet. Deve estar adequado tanto para aulas 100% on-line
quanto para aulas presenciais com demanda de suporte
continuado fora de sala. É necessário ênfase em segurança
através de mecanismos de autenticação e autorização, bem
como funcionalidades de postagem de conteúdo didático,
fórum de discussão entre outras.
É baseado na metodologia pedagógica sócioconstrutivista que é uma das correntes teóricas empenhadas
em explicar como a inteligência humana se desenvolve
partindo da ideia de que o homem não nasce inteligente, mas
também não é passivo sob a influência do meio e responde
aos estímulos externos agindo sobre eles para construir e
organizar o seu próprio conhecimento, de forma cada vez
mais elaborada.
O Moodle tornou-se muito popular entre os educadores
de todo o mundo como uma ferramenta para criação de sites
dinâmicos on-line para seus alunos. É gratuito e open source
(GPLv3+), construído para ser uma alternativa às soluções
comerciais. A plataforma Moodle [3] pode ser definida como
uma caixa de ferramentas modular para o desenvolvimento
de atividades e tarefas on-line e para a criação de
comunidades de aprendizagem.
A Figura 1 mostra um diagrama em blocos da estrutura
do Moodle do ponto da estrutura do sistema. Esse ponto de
vista será discutido melhor na próxima seção do artigo.
De operação simples possui como requisito técnico a
necessidade de um servidor web com suporte a linguágem
PHP (“PHP: Hypertext Preprocessor") e também um banco
de dados que será acessado via ODBC. O sistema Moodle
pode ser instalado em um servidor local, mas também
permite a instalação distribuída utilizando vários servidores
web, servidores de banco de dados e de arquivos com o
objetivo de atender demandas de alta escala [5].
CLIENTE
HTTP
MOODLE
SERVIDOR
LINGUAGEM DE SCRIPT (PHP/PYTON/PERL)
BANCO DE DADOS
SERVIDOR WEB
SISTEMA OPERACIONAL
L/W/M
A
M
P
Figura 1 – Arquitetura do Sistema Moodle
A. Requisitos não-funcionais
Esses são requisitos em termos gerais identificados por
restrições impostas de alguma forma ao sistema para atender
alguma necessidade do mesmo [7].
Foram identificados no Moodle e em sua documentação
alguns destes requisitos.
Usabilidade: o Moodle precisa suportar serviços
personalizados e automatizados e estes serviços
precisam estar disponíveis de maneira transparente a
usuários sem conhecimento profundo de informática.
Precisa ser fácil e intuitivo.
Disponibilidade: o sistema precisa estar disponível
para garantir que os usuários possam acessar o
material de estudos a qualquer momento. Deve ser
robusto para atender os diversos tipos de usuários ao
mesmo tempo [8].
Escalabilidade: deve ser possível expandir o sistema
para acomodar o crescimento futuro, não só no
volume de instruções, mas também na quantide de
usuários. [8]
Interoperabilidade: para suportar conteúdos de
diferentes formatos e fornecedores o sistema deve
trocar informações usando padrões abertos de
apresentação na web [8].
Segurança: Como qualquer solução colaborativa, o
Moodle deve limitar e controlar seletivamente o
acesso ao seu conteúdo e para isso define papéis, cada
um com seu conjunto específico de privilégios [8].
B. Requisitos funcionais
Pode ser integrado a outros sistemas tais como sistemas
de matrícula presencial das instituições de ensino que o
adotam, sistemas de pagamento e sistemas de
armazenamento de notas dos alunos do curso presencial.
Segundo [7], esses requisitos devem ser declarações de
funções fornecidas pelo sistema, como o sistema deve reagir
a entradas específicas e como deve se comportar em
determinadas situações.
O sistema Moodle [4] possui um núcleo com 42 pacotes
principais (na versão 2.5) que possuem papéis distintos na
arquitetura do sistema. Além destes pacotes básicos muitos
plug-ins podem ser instalados adicionando novas features ou
modificando o comportamento de outras já existente.
Configuração automática da lista de alunos
matriculados: O sistema deve ser capaz de obter a
lista de alunos da instituição através de alguma
conexão com o sistema de matrículas da instituição.
A maioria dos plug-ins ao ser instalados gravam seus
parâmetros em uma ou mais tabelas de configurações gerais
do banco de dados, com o intuito de que o núcleo do
software tenha controle sobre os pacotes adicionados.
Foram tomadas decisões arquiteturais na concepção do
Moodle para que o sistema pudesse ser construído de forma a
atender necessidades levantadas por pedagogos que
entendiam que os sistemas existentes, na época, não eram
flexíveis o bastante para atender demandas específicas e tais
demandas não podiam ser adicionadas por conta dos sistemas
serem fechados.
Então a arquitetura tentou atender entre outros requisitos,
os que são citados a seguir.
Possuir estruturas semelhantes a salas de aula: O
sistema deve ser capaz de ter um comportamento
semelhante a uma escola com disciplinas e tarefas.
Configuração de idioma de acordo com local onde for
instalado: o sistema deve ser configurável para
possuir o idioma do local onde ele for instalado.
Ser possível gravar cópia de segurança dos itens nele
gerados: o sistema deve ser possuir um subsistema de
backup que guarde toda a estrutura criada após sua
instalação.
Controlar a autenticação: o sistema deve ser capaz de
ativar plugin de autenticação e enviar mensagens de
confirmação de cadastro.
Controlar autorização: deve ser capaz de atribuir ou
excluir perfis de acesso, suspender contas de usuário,
acrescentar novos usuários nos papéis existentes e
permitir que usuários anônimos acessem áreas
públicas do portal.
Gerenciar cursos: deve ser capaz de manter os cursos
e as categorias destes, exibir e manter a relação dos
participantes, exibir cursos por usuários.
Gerenciar grade de notas: deve ser capaz de manter as
notas dos inscritos em cursos.
Disponibilizar fórum: deve ser possível manter fóruns
dentro do ambiente.
Prover mecanismos de pesquisa textual: deve ser
possível pesquisar por termos detro do conteúdo do
portal.
Manter menus: deve ser possível ativar e desativar
menus e configurar os menus de acesso geral e
restrito.
Manter conteúdo do portal: deve haver gestão de
conteúdo.
Configuração de conteúdo dinâmico: deve ser
possível gerenciar o conteúdo dinâmico em formato
HTML (HyperText Markup Language), gerenciável
pela interface de administração.
Publicação de contatos: permitir publicação de
contatos
com
possibilidade
de
escolher
individualmente para cada um se o mesmo será
público ou visível apenas a usuários registrados.
Permitir ainda o envio de mails para cada contato,
pelo internauta, diretamente através do sistema.
III.
ASPECTOS ARQUITETURAIS
Com objetivo de apresentar e detalhar a análise
arquitetural do sistema Moodle, mostrar padrões e estilos de
arquitetura encontrados e detalhar os principais componentes
e conectores presentes no sistema, foram escolhidas duas
views: a estrutural e a de implantação. Estas serão analisadas
detalhadamente explicando para cada um de seus aspectos o
seu rationale.
O Moodle é um sistema construído em camadas e com
módulos bem definidos específicos para cada tarefa a ser
realizada. Estes módulos podem ser estendidos ou
adicionados através de plug-ins.
A. Visão Estrutural
A Figura 2 mostra o view point estrutural de uma parte
significativa do sistema no qual podemos observar alguns
estilos e padrões arquiteturais, seus componentes e
conectores. Não estão exibidos todos os componentes,
apenas um grupo significativo.
A view estrutural está representando alguns dos 42
pacotes principais do sistema como componentes, banco de
dados, repositório de arquivos e os seus conectores
principais, e ainda demonstra algumas possibilidades de
conexão com sistemas externos e a adição de plug-ins, neste
caso como estensão do tema.
O funcionamento do sistema se inicia através de uma
requisição HTTP que é recebida pelo core e na grande
maioria é repassada para o componente admin para que ele
solicite do componente correto o serviço que precisa ser
executado para aquele processo.
No modelo que representa a visão estrutural do sistema,
conforme Figura 2, foram mapeados os seguintes
componentes:
Core: Representa um pacote de classes e subpacotes.
Este componente representa o pacote mais externo de
componentes, nele estão contidos quase todos os
outros componentes do sistema. Ele recebe do
servidor web a requisição HTTP via remote procedure
call e delega ao admin via conector procedure call
que ele resolva a requisição.
Admin: representa um pacote de classes que também
possui subpacotes. Recebe via procedure call uma
comunicação do core para que resolva uma
determinada requisição e retransmite para o pacote
especializado naquela tarefa solicitada na requisição.
Pode ser uma solicitação de exibição de um curso ou
uma solicitação de autenticação de usuário, por
exemplo.
Enrol: representa o componente que é responsável
pela matricula dos alunos nas turmas virtuais. Ele
recebe as informações a respeito dos alunos através
de um conector event que o notifica quando há
alguma modificação na relação de alunos
matriculados.
Este conector verifica essas
informações em um sistema externo de matrícula via
event. É possível notar a presença do estilo
arquitetural publish-subscribe nesse componente do
sistema.
Auth: representa o componente responsável pelas
regras de autenticação e autorização do sistema. No
momento em que o administrador do sistema adiciona
um novo usuário e aplica um papel ao mesmo,
quando este usuário tenta acessar o sistema se o
módulo exigir autorização a requisição do usuário e
seu papel são submetidos à análise do auth e só então
liberados. Os acessos a este módulo são via conector
procedure call.
Lang: também se trata de um componente que
gerencia os idiomas nos quais a interface com o
usuário do Moodle já possui tradução. O pacote de
idiomas é acessado pelo módulo admin através das
suas configurações de preferência e utiliza conectores
procedure call.
Grade: representa o componente que gerencia notas,
cálculos de média e modos quantitativos de avaliação
dos alunos, usualmente, médias de notas numéricas
das atividades realizadas, como subpackage do core
também tem acesso via procedure call.
Course: esse componente gerencia os cursos que
podem ser criados é acessado via procedure call e
internamente são criadas atividades, fóruns, enquetes,
entre outras e são adicionadas ao curso, todas as
chamadas são procedure call.
Event: o conector pode ser encontrado em diversos
componentes do sistema Moodle, na análise descrita
neste documento foram relatadas duas ocorrências,
nas quais o mesmo tipo de conector possui interações
diferentes com os componentes os quais ele liga.
Tema: este bloco representa um componente que
estende a funcionalidade theme do Moodle com
alguma feature que não existe no pacote default. É
um exemplo de plugin que provê novas features ao
sistema ou modificam o comportamento de features já
existentes. O plugin normalmente implementa o
padrão GOF (Gang of Four) Observer que é o
pradrão implementado quando não se deseja que os
objetos possuam forte acoplamento [2]. Sendo assim,
há uma aderência ao estilo arquitetural publishsubscribe, pelo comportamento do componente de
auto registrar-se no sistema. Além disso, um plugin
pode ser implementado pela própria comunidade ou
pode ser um componente COTS (Commercial Offthe-Shelf) disponibilizado por alguma plataforma a
fim de viabilizar a comunicação entre os dois
sistemas.
Na primeira situação o componente enrol precisa ser
sinalizado sobre mudanças nas matrículas no sistema de
cadastro de alunos então o publicador busca a informação no
sistema externo e notifica o enrol. Essa situação caracteriza
o serviço de comunicação e coordenação.
Repositório de Arquivos: é um componente que
gerencia os arquivos enviados ao sistema pelos
usuários obedecendo aos níveis de autorização de
cada usuário em particular o gerenciador desse
repositório pode ser o componente nativo do sistema
ou também pode ser usando um sistema COTS
através de plugins. A manipulação dos documentos
dentro da estrutura de repositório é realizada através
de conectores RPC (remote procedure call).
Backup: um componente que realiza as tarefas de
backup e restore da aplicação. Quando uma ação de
backup é disparada o componente verifica através de
componentes procedure call com o core quais os
módulos que integrarão o backup e via RPC obtém
todos dados necessários para a cópia de segurança.
Banco de dados: são componentes COTS,
responsáveis pelo armazenamento dos dados do
sistema, tanto dados de configuração quanto dados
disponibilizados para os usuários e pelos usuários.
Tem o acesso através de um conector data access +
RPC, provido por um conector híbrido arbitrator +
distributor que coordenam e facilitam o acesso a base
de dados distribuída.
Após detalhar os componentes representados no modelo,
serão detalhados os conectores mais encontrados.
Na segunda situação um novo tema precisa registrar-se e
mudar o comportamento da interface de usuário, então ele
utiliza uma composição de event para se registrar no sistema
e as chamadas para seu comportamente são procedure call.
Procedure call: estes conectores na view estrutural
exposta nesse artigo possuem o mesmo tipo de
comportamento e construção, tendo os valores das
suas dimensões iguais. Em relação aos parâmetros o
valor do data transfer é value, semântica é inline
parameters, invocation record é push from L to R,
quanto ao entry point é single, quanto a invocação
explicita é method call, quanto a sincronicidade é
synchronous e quanto a assecibilidade são públicos.
Remote procedure call: é um composite de distributor
com procedure call.
Data access: provê o serviço de comunicação e
possui os seguintes valores em suas dimensões:
Availability persistent database access, Acessibility
private. O conector data access possui outras
dimensões, mas a análise realizada nesse trabalho não
foi capaz de inferir sobre estas dimensões.
Distributor: está presente em composites com
procedure call e arbitrator. Possui os seguintes
valores em suas dimensões: quanto a dimensão
delivery, semantics at least once, mechanism unicast,
e quanto a dimensão routing o path é static.
Arbitrator: executa o serviço de coordenação no
balanceamento de carga das bases distribuídas.
Foram encontrados na análise desta view estrutural os
padrões arquiteturais em camadas e baseado em plug-ins.
Deduz-se que foi pensado durante a concepção do sistema o
padrão baseado em plugins para suprir a deficiência que
outros sistemas semelhantes traziam de não poderem criar
nem estender funcionalidades.
Os estilos de arquitetura encontrados foram os de
invocação explícita, publish-subscribe, object-oriented e
baseado em interpretadores, mobile code.
Figura 2 – Visão Estrutural do Sistema Moodle
B. Visão de Implantação
A Figura 3 mostra o view point de implantação do
sistema Moodle. Nesta view temos a implantação do sistema
com base de dados e componentes distribuídos.
A visão de implantação, ou deployment view, ajuda a
dispor os elementos físicos da instalação do sistema onde é
possível prever procedimentos operacionais para instalação e
ajuda a analisar possíveis problemas de disponibilidade,
performance, segurança entre outros aspectos.
Os components mostrados no diagrama de implantação
são os seguintes:
Document Repository: Esse componente é um plugin
COTS que provê o serviço de gerenciamento de documentos
que os usuários submetem, controlado pelas regras de
autorização do sistema Moodle. Está fisicamente instalado
em outro servidor por conta das operações de I/O que
poderiam sobrecarregar o processamento do servidor web.
Reporting Tool: ferramenta de criação de relatórios,
COTS, instalada num servidor web diferente e sendo
acessada via RPC + Adaptor que provê a interoperabilidade
entre os dois sistemas.
Database: Bases de dados replicadas instaladas em
servidores de dados distribuídos e acessadas via DataAccess.
+ distributor + arbitrator.
Billing System: sistema externo de gerenciamento de
pagamento que modifica as informações de alunos
requeridas pelo sistema Moodle.
Student Information Server: sistema que mantém os dados
dos alunos da instituição. O Moodle requisita as informações
mais atualizadas dos alunos através de um conector event.
Moodle Core: os módulos principais do sistema Moodle
integram o core que gerencia todos os módulos com apoio do
módulo admin e do Autentication Provider quando é
requerida alguma regra de autenticação ou autorização para
acesso a algum módulo.
Figura 3 – Visão Estrutural do Sistema Moodle (Servidores Distribuídos)
IV.
IMPLEMENTAÇÃO
A implantação fácil e a versatilidade do sistema devem-se
ao seu projeto arquitetural estar dividido entre o núcleo e os
plugins que funcionam de maneira integrada para oferecer os
serviços necessários ao funcionamento do ambiente.
Para implantação é necessário basicamente um servidor
web compatível com PHP e um banco de dados compatível
com ODBC. O acesso a este poderá ser realizado através de
script PHP através de código C/C++ ou mesmo de qualquer
outra linguagem que seja suportada pelo sistema.
A utilização do Request Dispatcher é um fator de
implementação conduzidos pelo projeto arquitetural e é o
que confere ao Moodle um controle fácil de requisicões. O
Moodle [7] utiliza abordagem “Cool URL don’t change” a
qual prega que a manutenção dos dados na URL, sem que ela
seja alterada por posteriores intervenções nas páginas ou
novas requisições é o que torna o funcionamento interno da
aplicação rastreável. Outra forma de manter os dados das
requisições por todo o ciclo de operações de um cliente sobre
o Moodle é a aplicação do Design Pattern Singleton. Este
padrão garante a existência de apenas uma instância de
uma classe, mantendo um ponto global de acesso ao
seu objeto e assim proporcionar um caminho padrão para a
troca de mensagens entre os componentes do projeto.
Também segundo [6], é recomendável que a base de
dados que se comunica com o core Moodle esteja à parte
do diretório raiz. Essa é uma proposta que visa
proporcionar maior controle sobre os dados trafegados no
ambiente virtual o que implementa um serviço de
segurança pela preservaçào de integridade desses dados,
característica esta proveniente da técnica de
descentralização de sistemas.
V.
CONCLUSÃO
O Moodle vem tendo sua base instalada amplida
significamente no mundo e despertando cada vez mais
interesse quanto a sistemas de ensino e aprendizado a
distancia, seja em instituições públicas ou privada.
Flexível e adptável pela decisão de adoção de novas
features através de plug-ins. Possuindo facilidade de
interface e integração com outros produtos e sistemas.
Utilizando a linguagem PHP que suporta um grande conjunto
de sistemas de banco de dados bem como suporte a HTTP e
a protocolos de sistemas de e-mails.
A Arquitetura Cliente-Servidor é outro ponto destacado na
avaliação. Permite que os papéis e responsabilidades de um
sistema de computação possam ser distribuídos entre vários
computadores independentes criando uma vantagem
adicional de manutenção e divisão de tarefas. Servidores
podem controlar melhor o acesso e recursos para garantir que
apenas os clientes com as permissões adequadas possam
acessar e alterar dados. Desde que o armazenamento de
informações é centralizada, as atualizações dos dados são
muito mais fáceis de administrar. A utilização desta
arquitetura também favorece a utilização do sistema por
vários e diferentes clientes com capacidade igualmente
diferente.
Estas características foram definidas em grande parte pela
decisão sobre a arquitetura de software e do sistema e
identificadas neste trabalho.
Há que mencionar o fato de que sistemas cliente-servidor
podem ter seus serviços indisponíveis seja por excesso de
requisições, por limitações do servidor ou por
indisponibilidade de banda de tráfego. Nesta arquitetura se
um servidor crítico falha, os pedidos dos clientes não
poderão ser atendidos. Desta forma questões relacionados ao
Sistema Operacional, hardware e manutenção do sistema
ganham grande importância dentro do processo de
implantação quanto a quesitos de disponibilidade.
Neste aspecto vem também o entendimento do ponto de
melhoria necessário com a consideração de implantação ou
migração do sistema para Nuvem (Cloud Computing). Nesta
Arquitetura os aspectos mencionados (sistema operacional,
hardware e manutenção) passam a ser geridos como
commodities contratado de provedores especializados na
prestação do serviço de hosting. De grande importância
também as questões relacionadas à infraestrutura (consumo
de energia, resfriamento e espaço físico) são melhores
gerenciados permitindo o uso mais racional dos recursos
naturais.
VI.
[1]
[2]
[3]
[4]
[5]
[6]
[7]
[8]
REFERENCIAS
RICE IV, William H., “Moodle E-Learning Course Development”, 2ª
ed, Packt Publishing, Birmingham, UK, maio 2006.
GAMMA, Erich, et al. Sneddon, “Padrões de Projeto, Soluções
Reutilizáveis de Software Orientado a Objetos” Porto Alegre,
BookMan, 2000.
Moodle. Disponível em http://pt.wikipedia.org/wiki/Moodle. Último
acesso em 02/06/2013.
COLE, J and FOSTER, H., “Using Moodle, Teaching with the
Popular Open Source Course Management System”, 2ª ed,
Sebastopol, CA, novembro 2007.
Moodle.
Disponível
em
http://moodle.progdan.com/mod/page/view.php?id=745.
Último
acesso 08/06/2013.
Horstmann, Cay, “The Architecture of Open Source Applications:
Elegnce, Evolution, and a Few Fearless Hacks”, vol. II.
SOMERVILLE, I., Engenharia de Software, 6ª ed, Addison-Wesley,
São Paulo, SP, 2004.
MoodleDocs.
Disponível
em
http://docs.moodle.org/all/pt_br?O_caso_Moodle. Úmtimo acesso em
08/06/2013.