INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE – CAMPUS ARACAJU COORDENADORIA DO CURSO TÉCNICO EM INFORMÁTICA CURSO DE PROGRAMAÇÃO E SUPORTE EM SISTEMAS COMPUTACIONAIS Antônio Vinícius Menezes Medeiros Estael David de Menezes Neto ARGOS – SISTEMA DE CONTROLE DE MONITORIA Aracaju 2010 Antônio Vinícius Menezes Medeiros Estael David de Menezes Neto ARGOS – SISTEMA DE CONTROLE DE MONITORIA Trabalho de Conclusão de Curso apresentado à Coordenadoria de Informática do Instituto Federal de Educação, Ciência e Tecnologia de Sergipe, como parte das exigências do curso técnico “Programação e Suporte em Sistemas Computacionais”, para a obtenção do título de Técnico de Nível Médio. Orientador: Professor MSc. Marcus Aurelius de Oliveira Vasconcelos Aracaju 2010 Antônio Vinícius Menezes Medeiros Estael David de Menezes Neto ARGOS – SISTEMA DE CONTROLE DE MONITORIA Trabalho de Conclusão de Curso apresentado à Coordenadoria de Informática do Instituto Federal de Educação, Ciência e Tecnologia de Sergipe, como parte das exigências do curso técnico “Programação e Suporte em Sistemas Computacionais”, para a obtenção do título de Técnico de Nível Médio. Aprovado pela banca examinadora em ____ de ________________ de _______. BANCA EXAMINADORA: ___________________________________________ Professor MSc. Marcus Aurelius de Oliveira Vasconcelos – IFS/SE (Orientador) ___________________________________________ Professor MSc. Marcelo Machado Cunha – IFS/SE ___________________________________________ Professora Esp. Jislane Silva Santos de Menezes – IFS/SE Dedicamos este trabalho às pessoas que mais amamos nesta vida, nossos pais, nossas mães, nossa família, pois sempre nos apoiaram incondicionalmente. AGRADECIMENTOS Agradecemos em primeiro lugar a Deus, que iluminou o nosso caminho durante essa caminhada; Agradecemos também aos nossos pais, pessoas muito especiais em nossas vidas, que em todos os momentos nos deram apoio, nos incentivaram, nos encorajaram e que de coração estiveram do nosso lado nos momentos em que mais precisamos; Em especial queremos agradecer aos nossos colegas e amigos, Carlos David, Hector Hiroshi, Givanildo, Kelvin Mendes e Nilton Bruno pela palavra amiga e pela força nos momentos difíceis desta jornada; Agradecemos a todos aqueles que, direta ou indiretamente, contribuíram para a realização deste trabalho; E por fim gostaríamos de agradecer ao nosso orientador Marcus Aurelius, que nos ajudou e soube nos conduzir durante o desenvolvimento do trabalho. “Nos tesouros da Sabedoria estão as máximas da ciência” Ecl. 1,25 RESUMO Este trabalho é o resultado do desenvolvimento de uma aplicação do tipo clienteservidor para gerenciar a utilização dos computadores de uma monitoria via rede, utilizando o ambiente de desenvolvimento integrado Borland Delphi e o banco de dados MySQL. Trata-se de um projeto para atender às necessidades da biblioteca do Instituto Federal de Educação, Ciência e Tecnologia de Sergipe (IFS) – Campus Aracaju, que apesar de contar com computadores para catalogar os livros e disponibilizar acesso a Internet aos alunos ainda não informatizou por completo este setor. Diferentemente das demais aplicações cliente-servidor, essa aplicação é formada por apenas um executável que pode atuar tanto como cliente quanto como servidor. O trabalho atingiu seus objetivos uma vez que ele permitiu aos seus desenvolvedores demonstrar os conhecimentos adquiridos durante o curso e ficará disponibilizado na Internet para a posteridade para os que desejarem consultá-lo e utilizá-lo como referência ou fonte de aprendizado. Palavras-chave: Sistema de gerenciamento de monitoria, Aplicação cliente-servidor, Banco de dados. ABSTRACT This work is the result of the development of a client-server application to manage the use of computers of a LAN via network using the integrated development environment Borland Delphi and the MySQL database. This project meets the needs of the IFS – Campus Aracaju's library. Despite having computers to catalog its books and provide Internet access to students, it isn't fully computerized sector yet. Unlike other client-server applications, this application consists of only one executable that can act as both client and server. This work achieved its goals since it allowed its developers to show knowledge they acquired through the course and it will be available on the Internet for posterity for those who wish to view it and use it as reference or source for learning. Keywords: LAN management system, Client-server application, Database. LISTA DE FIGURAS Figura 1 – Diagrama de Entidade-Relacionamento 27 Figura 2 – Diagrama de casos de uso 36 Figura 3 – Aplicação servidor – Tela de carregamento 70 Figura 4 – Aplicação servidor – Tela principal 71 Figura 5 – Aplicação servidor – Menus e barra de ferramentas 71 Figura 6 – Aplicação servidor – Lista de alunos 72 Figura 7 – Aplicação servidor – Cadastro de aluno 73 Figura 8 – Aplicação servidor – Histórico do aluno – Aba "Seções" 73 Figura 9 – Aplicação servidor – Histórico do aluno – Aba "Observações" 74 Figura 10 – Aplicação servidor – Registro de observação 74 Figura 11 – Aplicação servidor – Reserva de seção 75 Figura 12 – Aplicação servidor – Fila de espera 75 Figura 13 – Aplicação cliente – Tela de login 76 Figura 14 – Aplicação cliente – Tela de login – Sair 77 Figura 15 – Aplicação cliente – Tela de login – Encerrar aplicação 77 Figura 16 – Aplicação cliente – Tela principal – Aba "Aluno" 78 Figura 17 – Aplicação cliente – Tela principal – Aba "Seção" 78 Figura 18 – Aplicação cliente – Aviso de tempo restante 79 Figura 19 – Aplicação servidor – Envio de mensagem 79 Figura 20 – Aplicação cliente – Aviso de mensagem recebida 80 Figura 21 – Aplicação servidor – Expulsão de aluno 80 Figura 22 – Aplicação servidor – Estender tempo 81 Figura 23 – Aplicação servidor – Importação da base de dados 82 Figura 24 – Aplicação servidor – Exportação da base de dados 82 Figura 25 – Aplicação servidor – Lista de máquinas 83 Figura 26 – Aplicação servidor – Histórico da máquina 84 Figura 27 – Aplicação servidor – Ícone da área de notificação 84 Figura 28 – Comunicação entre o sistema e o banco de dados através do 96 MDAC Figura 29 – Hermes, Argos Panoptes e Io 100 LISTA DE TABELAS Tabela 1 – Atributos da entidade ALUNO 56 Tabela 2 – Atributos da entidade MAQUINA 57 Tabela 3 – Atributos da entidade OBSERVACAO 58 Tabela 4 – Atributos da entidade SECAO 59 Tabela 5 – Atributos envolvidos no relacionamento POSSUI 60 Tabela 6 – Atributos envolvidos no relacionamento RESERVA 61 Tabela 7 – Atributos envolvidos no relacionamento RECEBE 61 SUMÁRIO 1 INTRODUÇÃO 13 2 AMBIENTE ENCONTRADO 14 3 AMBIENTE IDEAL 16 4 AMBIENTE PROPOSTO 18 4.1 Questões de segurança, desempenho e tolerância a falhas 22 5 DIAGRAMA ENTIDADE-RELACIONAMENTO (DER) 27 5.1 Dicionarização do DER 27 5.1.1 Entidade ALUNO 27 5.1.2 Entidade MAQUINA 28 5.1.3 Entidade OBSERVACAO 29 5.1.4 Entidade SECAO 29 6 ANÁLISE DE REQUISITOS 30 6.1 Requisitos funcionais 30 6.2 Requisitos não-funcionais 32 6.2.1 Requisitos de produto 32 6.2.2 Requisitos de processo 34 6.2.3 Requisitos externos 35 7 DIAGRAMA DE CASOS DE USO 36 7.1 Documentação estendida dos casos de uso 37 7.1.1 Cadastrar máquina 37 7.1.2 Cadastrar aluno 38 7.1.3 Registrar observação 39 7.1.4 Reservar seção 40 7.1.5 Visualizar fila de espera 42 7.1.6 Iniciar seção 43 7.1.7 Monitorar tempo 44 7.1.8 Bloquear seção 45 7.1.9 Encerrar seção 46 7.1.10 Estender tempo 47 7.1.11 Expulsar aluno 49 7.1.12 Enviar mensagem 50 7.1.13 Retomar seção 51 7.1.14 Verificar comunicação entre as máquinas 51 7.1.15 Encerrar aplicação 52 7.1.16 Exportar base de dados 53 7.1.17 Importar base de dados 54 8 PROJETO DE ARQUIVOS 56 8.1 Entidade ALUNO 56 8.2 Entidade MAQUINA 57 8.3 Entidade OBSERVACAO 58 8.4 Entidade SECAO 58 8.5 Relacionamento POSSUI 60 8.6 Relacionamento RESERVA 60 8.7 Relacionamento RECEBE 61 9 SCRIPT DE CRIAÇÃO DA BASE DE DADOS 62 10 IMPLEMENTAÇÃO 64 10.1 Ferramentas e técnicas utilizadas 64 10.2 Possibilidade de integração com outros projetos 68 11 PROJETO DE INTERFACES 70 12 PROJETO DE RELATÓRIOS 85 13 CONCLUSÃO 86 REFERÊNCIAS 87 APÊNDICE A – CONHECIMENTOS COMPLEMENTARES 89 Componentes Indy 89 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE – CAMPUS ARACAJU COORDENADORIA DO CURSO TÉCNICO EM INFORMÁTICA Microsoft Data Access Components (MDAC) 92 Funções da API do Windows 97 ANEXO A – ESCOLHA DO NOME ARGOS 100 ANEXO B – LICENÇA PÚBLICA GERAL DO GNU (GPL) 102 Introdução 101 Termos e condições para cópia, distribuição e modificação 103 Exclusão de garantia 109 Argos – Sistema de controle de monitoria – 12 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE – CAMPUS ARACAJU COORDENADORIA DO CURSO TÉCNICO EM INFORMÁTICA 1 INTRODUÇÃO Este trabalho objetiva demonstrar os conhecimentos de programação e suporte em sistemas computacionais adquiridos durante o curso através do projeto, desenvolvimento e implementação de um sistema do tipo cliente-servidor para gerenciar o uso dos computadores da monitoria da biblioteca do Instituto Federal de Educação, Ciência e Tecnologia de Sergipe (IFS) através da infraestrutura de rede presente na mesma. Durante o desenvolvimento da aplicação foram utilizados o ambiente de desenvolvimento integrado Borland Delphi 7 e o banco de dados MySQL, ferramentas apresentadas pelos professores no decorrer do curso. Argos – Sistema de controle de monitoria – 13 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE – CAMPUS ARACAJU COORDENADORIA DO CURSO TÉCNICO EM INFORMÁTICA 2 AMBIENTE ENCONTRADO A biblioteca Dr. Augusto César Leite do Campus Aracaju do IFS possui a serviço dos alunos uma monitoria com 10 computadores para a utilização de programas e acesso a sites da Internet. O controle do uso desses computadores é feito pelos funcionários da biblioteca. Ao solicitar a utilização de um computador, o aluno deixa a sua carteirinha da biblioteca com o funcionário responsável pela monitoria. Este anota em um pedaço de papel o horário em que o aluno entrou na monitoria e anexa este papel à carteirinha do aluno. As carteirinhas dos alunos são mantidas pelo funcionário no balcão da biblioteca para que ele possa saber quem está utilizando a monitoria. Os alunos dispõem de uma única conta de usuário do Windows, cujo nome de usuário é “aluno” e cuja senha é também “aluno”, para acessar os computadores da monitoria. Não há uma configuração individual para cada aluno, de modo que os programas e arquivos do computador ficam acessíveis a todos os alunos, mesmo àqueles que não necessitam utilizá-los. Na Área de Trabalho e na pasta Meus Documentos podem ser encontrados arquivos e pastas de todos os alunos. Os computadores da monitoria devem ser utilizados para fins de estudo exclusivamente. Não é permitida na monitoria a utilização dos computadores para visita de sites pornográficos, sites de e-mail, redes de relacionamentos, assim como não é permitida a utilização de sites e programas de bate-papo e de jogos. A instalação de programas e jogos nos computadores e o acesso aos sites não é controlado pela monitoria nem pela biblioteca, mas pelos técnicos da Coordenadoria de Tecnologia da Informação (CTI), responsáveis pela manutenção dos computadores do Instituto. Há uma lista de sites já conhecidos que são bloqueados pelo servidor que fornece às máquinas da monitoria o acesso à Internet e a configuração feita em cada máquina não permite a instalação de programas pelos alunos. Mesmo assim, há alunos que conseguem burlar o controle da CTI. Como não há uma conta de usuário para cada aluno, não é possível acompanhar a atividade individual de cada aluno e é mais difícil identificar possíveis usuários abusivos da monitoria. Para garantir o cumprimento das normas da monitoria, em intervalos de tempo regulares, o funcionário da biblioteca responsável Argos – Sistema de controle de monitoria – 14 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE – CAMPUS ARACAJU COORDENADORIA DO CURSO TÉCNICO EM INFORMÁTICA pelo controle do acesso aos computadores entra na monitoria e verifica as atividades dos alunos. O aluno que não observar essas restrições é primeiramente advertido e, em insistência da infração, é expulso da monitoria. A partir do momento em que entra na monitoria, o aluno tem direito a utilizar o computador que lhe foi cedido por meia hora (30 minutos). É permitido ao aluno durante este tempo sair de uma máquina para utilizar outra, desde que a mudança seja informada ao funcionário da biblioteca. Este, no entanto, nem sempre é informado quando um aluno muda de computador, o que torna ainda mais difícil o controle do acesso aos computadores da monitoria. Uma vez encerrado o tempo que foi concedido para o aluno se utilizar da monitoria, este deve encerrar as atividades que estava executando no computador e deixá-la. Esse tempo pode ser ampliado caso não haja alunos necessitando utilizar os computadores. Caso isto aconteça, o aluno deverá deixar o computador assim que surgir outra pessoa necessitando utilizar os computadores, encerrando suas atividades na máquina para que a outra pessoa possa utilizar o computador. Como já foi dito, o aluno também deve deixar a monitoria se for solicitada a sua saída pelo funcionário responsável por infração às normas da monitoria. Argos – Sistema de controle de monitoria – 15 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE – CAMPUS ARACAJU COORDENADORIA DO CURSO TÉCNICO EM INFORMÁTICA 3 AMBIENTE IDEAL A solução proposta pela equipe de desenvolvimento para tornar mais prático e eficiente o gerenciamento dos computadores da monitoria foi o desenvolvimento de uma aplicação do tipo cliente-servidor que, utilizando a infraestrutura de rede do Instituto, permitisse ao funcionário responsável controlar o uso desses computadores pelo computador que se encontra na recepção da biblioteca. Neste computador seria instalada a aplicação servidor, responsável pela gerência dos computadores da monitoria. Em cada computador da monitoria seria instalada a aplicação cliente, que manteria constante comunicação com a aplicação servidor, enviando a esta informações sobre a utilização da máquina – como hora de entrada e saída do aluno, programas abertos e sites utilizados – e liberando ou bloqueando seu uso conforme recebesse instruções dela para fazê-lo. Um domínio de rede seria implementado com a função de armazenar as contas de usuário e configurações personalizadas do Windows para cada aluno do Instituto. As máquinas da monitoria seriam configuradas para utilizar as contas de usuário configuradas nesse domínio e possuiriam contas locais apenas para os administradores, que poderiam utilizar essas contas nas máquinas para resolver eventuais problemas. Os alunos seriam então obrigados a utilizar suas próprias contas de usuário configuradas no domínio. O sistema acompanharia o login e logoff dessas contas nos computadores da monitoria, utilizando-as para controlar o acesso dos alunos a esses computadores. Um computador pertencente ao domínio da rede seria utilizado para armazenar a base de dados do sistema, que conteria, além das informações pessoais, utilizadas para identificação, o registro das atividades executadas por cada aluno – mais especificamente, sites acessados e programas iniciados. A base de dados do sistema também armazenaria as normas de uso dos computadores da monitoria, ou seja, a lista de programas e sites que não poderiam ser utilizados pelos alunos. Em cada máquina da monitoria, a aplicação cliente acompanharia cada atividade desempenhada pelo aluno que a estivesse utilizando e acessaria as normas de uso para verificar se aquela atividade era permitida na monitoria. Caso Argos – Sistema de controle de monitoria – 16 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE – CAMPUS ARACAJU COORDENADORIA DO CURSO TÉCNICO EM INFORMÁTICA constasse nas normas de uso que ela deveria ser bloqueada, a aplicação cliente automaticamente encerraria essa atividade e avisaria ao funcionário que o aluno tentou executá-la. Caso verificasse que um mesmo aluno estivesse infringindo as regras da monitoria com frequência, o funcionário responsável poderia, a qualquer momento, através de seu computador, acionar um comando que bloquearia o computador da monitoria que estivesse sendo utilizado por aquele aluno, expulsando-o. Sua conta de usuário seria bloqueada no domínio de rede, impossibilitando-o de acessar qualquer uma das outras máquinas até que obtivesse nova permissão para uso pelo funcionário. O sistema também facilitaria a comunicação entre o funcionário e os alunos quanto à questão da mudança de máquina: ele permitiria ao aluno sair de um computador e entrar em outro qualquer que estivesse disponível para uso, utilizando neste o tempo que lhe restava da sua concessão de acesso à monitoria. Toda a transição seria feita pelas próprias aplicações clientes instaladas nas máquinas e o funcionário seria apenas avisado pela aplicação servidor. Além das funções de controle de entrada e saída de usuários e de monitoramento das atividades destes, os funcionários da biblioteca solicitaram à equipe de desenvolvimento que o sistema fornecesse informações estatísticas a respeito da utilização dos computadores da monitoria, como, por exemplo, quais são os programas e sites mais utilizados. Isso poderia ajudá-los na identificação dos interesses dos alunos, possibilitando a melhoria do acervo da biblioteca, assim como na identificação de práticas abusivas que estivessem sendo praticadas com frequência na monitoria. Argos – Sistema de controle de monitoria – 17 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE – CAMPUS ARACAJU COORDENADORIA DO CURSO TÉCNICO EM INFORMÁTICA 4 AMBIENTE PROPOSTO Diante da constatada impossibilidade de se implantar um domínio de rede na instituição, que tornaria o sistema mais eficiente e funcional, a equipe de desenvolvimento propôs a criação de uma aplicação mais simples, que utilizará a estrutura de rede e a configuração de contas de usuário do Windows já existente na biblioteca. Os computadores da monitoria continuarão a utilizar apenas uma conta de usuário do Windows para todos os alunos, cujo nome de usuário é “aluno” e cuja senha é também “aluno”, como visto anteriormente, e o sistema possuirá seu próprio cadastro de alunos, que será armazenado na base de dados. A aplicação servidor, portanto, será a responsável pelo controle da entrada e saída de alunos nos computadores da monitoria, e não mais o domínio de rede. Nas máquinas da monitoria, a aplicação cliente será iniciada assim que for feito login na conta de usuário “aluno” e mostrará sua própria tela de login, que impedirá o aluno de acessar o sistema operacional. Os alunos deverão utilizar esta tela para entrar no sistema, informando sua matrícula. Já na máquina da recepção, a aplicação servidor será iniciada na máquina da recepção assim que o funcionário fizer login na conta de usuário “administrador”. Mais informações sobre esse assunto serão fornecidas na seção 4.1. O monitoramento e registro das atividades dos alunos – sites acessados e programas iniciados – também não pôde ser implementado, dada a insuficiência de documentação sobre recursos da linguagem de programação adotada que permitissem desenvolver essa funcionalidade. Como consequência, a geração de estatísticas com base no registro das atividades dos alunos também não pôde ser implementada. Informados disso, os funcionários entrevistados disseram que sua necessidade primária era o controle da entrada e saída de alunos da monitoria e que a ausência das funcionalidades que não poderiam ser implementadas não afetava seu interesse pelo desenvolvimento do sistema. Assim sendo, a equipe de desenvolvimento deu continuação ao projeto. Argos – Sistema de controle de monitoria – 18 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE – CAMPUS ARACAJU COORDENADORIA DO CURSO TÉCNICO EM INFORMÁTICA A base de dados armazenará informações pessoais de cada aluno para facilitar sua identificação. Essas informações – matrícula, nome completo, nome do curso, turma, endereço, bairro, CEP, cidade, estado, telefone residencial, celular, identidade, CPF e e-mail – deverão ser informadas pelo aluno na primeira vez em que ele solicitar a utilização de uma máquina da monitoria para que o funcionário cadastre-o na base de dados. Os funcionários da biblioteca também poderão fazer observações a respeito de cada aluno – poderão registrar, por exemplo, pendências do aluno com a biblioteca, momento em que o mesmo trancar a matrícula ou deixar de estudar no Instituto –, que serão armazenadas na base de dados, de forma que o funcionário responsável pela monitoria possa visualizar essas anotações antes de liberar a máquina para uso, permitindo ou negando o acesso de determinados alunos às máquinas. Diante disso, o que será armazenado na base de dados se restringirá à identificação e às observações relativas a cada aluno e o histórico das seções iniciadas pelos mesmos, com informações simples, como a data, a hora e em que máquina cada seção foi iniciada. No computador da recepção da biblioteca será instalada a aplicação servidor, que será manuseada por um funcionário da biblioteca, responsável pela gerência dos computadores da monitoria. Em cada computador da monitoria será instalada a aplicação cliente, que manterá constante comunicação com a aplicação servidor e liberará ou bloqueará o uso do computador conforme receba instruções da mesma para fazê-lo. Tanto a aplicação servidor quanto as aplicações cliente acessarão a base de dados, que poderá ser instalada no próprio computador que receberá a aplicação servidor ou em outro computador, contanto que este seja acessível pelas demais máquinas da rede. O controle do uso dos computadores da monitoria continuará sendo feito pelos funcionários da biblioteca. Ao solicitar a utilização de um computador, o aluno informará ao funcionário responsável a sua matrícula e a máquina que deseja utilizar, caso possua alguma preferência. Este passará essas informações à aplicação servidor, juntamente com o tempo ao qual o aluno terá direito a usar a máquina (que será, por padrão, 30 minutos, mas poderá ser qualquer outra Argos – Sistema de controle de monitoria – 19 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE – CAMPUS ARACAJU COORDENADORIA DO CURSO TÉCNICO EM INFORMÁTICA quantidade de tempo informada pelo funcionário ou mesmo tempo indeterminado, deixando neste caso o aluno livre para usar o computador o tempo que desejar). A solicitação do aluno será registrada. Se houver uma máquina disponível para uso (e, caso o aluno tenha informado uma máquina de sua preferência, seja essa máquina), o aluno poderá se dirigir a essa máquina e informar sua matrícula na tela inicial do sistema. Após verificar na base de dados que o aluno solicitou a utilização daquela máquina, a aplicação cliente nela instalada armazenará na base de dados o horário em que o aluno começou a utilizar a máquina e dará início à contagem do tempo restante para o fim da seção. A aplicação servidor será avisada pela aplicação cliente do início da seção e automaticamente informará ao funcionário sua ocorrência. Se não houver uma máquina ou se a máquina solicitada pelo aluno não estiver disponível para uso, o mesmo deverá permanecer nas dependências da biblioteca para que seja avisado quando for possível sua entrada na monitoria. Quando isso acontecer (quando uma máquina, ou quando a máquina solicitada, caso tenha sido especificada, estiver disponível), a aplicação servidor mostrará ao funcionário da biblioteca um aviso, informando que aquele aluno tem preferência pela utilização da máquina liberada. O funcionário então prosseguirá à liberação da máquina para uso do aluno, como descrito anteriormente. Os alunos que estiverem utilizando os computadores da monitoria poderão visualizar em suas telas quanto tempo lhes resta para utilizar o computador e serão avisados automaticamente pelo sistema quando estiver se aproximando o fim deste tempo. O sistema também facilitará a comunicação entre o funcionário que está administrando a monitoria e os alunos permitindo que aquele envie mensagens a estes, dispensando assim seu deslocamento da biblioteca para a monitoria apenas para dar avisos. Caso verifique que um mesmo aluno está infringindo as regras da monitoria com frequência e decida que este aluno deve ser expulso, o funcionário poderá, a qualquer momento, através de seu computador, acionar um comando que encerrará a seção deste aluno. Essa expulsão será computada no registro de atividades daquele aluno e sua matrícula será bloqueada na base de dados, impossibilitando-o então de acessar qualquer uma das outras máquinas até que obtenha nova Argos – Sistema de controle de monitoria – 20 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE – CAMPUS ARACAJU COORDENADORIA DO CURSO TÉCNICO EM INFORMÁTICA permissão para uso do funcionário responsável pela administração da monitoria. Para evitar abusos, as aplicações cliente encerrarão automaticamente as seções em suas máquinas caso verifiquem que não apresentam atividade dentro de certo tempo, garantindo assim que não haja máquinas da monitoria reservadas para alunos que não as estejam utilizando. Da mesma forma, elas não aceitarão que um aluno inicie uma seção caso verifiquem que certo tempo já se passou desde que o funcionário autorizou sua entrada. Esse tempo será, por padrão, 5 minutos, mas poderá ser alterado na configuração do sistema. Encerrado o tempo que foi concedido para o aluno utilizar o computador da monitoria, sua seção será inicialmente bloqueada pela aplicação cliente, as atividades que estavam em execução não serão encerradas imediatamente. Caso não haja alunos esperando um computador ser liberado, a seção permanecerá bloqueada, permitindo ao aluno retomá-la caso o funcionário conceda-lhe mais tempo para continuar utilizando a máquina em que estava. Caso contrário, ela será automaticamente encerrada. Se não houver alunos esperando um computador, o aluno pode solicitar ao funcionário mais tempo para continuar utilizando a máquina em que estava. Este informará à aplicação servidor a quantidade de tempo que deve ser acrescida à concessão de uso original (que será, por sugestão do programa, 30 minutos, mas poderá ser qualquer outra quantidade de tempo informada pelo funcionário ou mesmo tempo indeterminado, deixando neste caso o aluno livre para usar o computador o tempo que desejar). A aplicação servidor então registrará o acréscimo na base de dados e o aluno poderá se dirigir à máquina que estava utilizando, digitar sua matrícula na tela de login e retomar a seção, utilizando a partir de então o acréscimo concedido pelo funcionário. O sistema também permitirá ao funcionário encerrar a qualquer momento esta nova concessão de uso, caso surja outro aluno necessitando utilizar os computadores da monitoria. Caso o aluno não solicite mais tempo ou o faça mas não retome a seção bloqueada, ela poderá ser finalizada pelo funcionário acionando um comando na aplicação servidor ou será automaticamente finalizada pela aplicação cliente dentro de algum tempo, segundo o princípio das seções que não apresentam atividade, Argos – Sistema de controle de monitoria – 21 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE – CAMPUS ARACAJU COORDENADORIA DO CURSO TÉCNICO EM INFORMÁTICA explicado anteriormente. Uma vez que a seção seja encerrada, por qualquer motivo, a aplicação cliente reiniciará o computador, finalizando assim todas as atividades que estavam em execução. O aluno que estava utilizando aquela máquina só poderá voltar a utilizá-la ou utilizar outro computador solicitando ao funcionário da biblioteca a utilização de um computador da monitoria, passando por todo o processo descrito novamente (ver o 10º parágrafo desse mesmo capítulo). Vale lembrar que se o motivo do encerramento da seção for uma expulsão, a matrícula do aluno estará bloqueada para acesso e ele só poderá utilizar uma máquina da monitoria novamente se o funcionário responsável registrar uma observação que libere sua matrícula (ver o 14º parágrafo desse mesmo capítulo). 4.1 Questões de segurança, desempenho e tolerância a falhas Um dos pedidos feitos à equipe de desenvolvimento pelos funcionários foi que o sistema não questionasse por senhas, o que evitaria problemas que poderiam ocorrer caso algum funcionário esquecesse sua senha, e manteria a organização já presente na biblioteca (as únicas senhas lá estabelecidas são as das contas de usuário do Windows). Para atender a esse pedido, a equipe de desenvolvimento decidiu implementar apenas um executável, que seria instalado em todos os computadores, no servidor e nos clientes, e não dois executáveis diferentes, um para o cliente e outro para o servidor, como normalmente acontece com as aplicações do tipo cliente-servidor. A decisão se a aplicação se comportará como cliente ou servidor será tomada no momento em que a mesma for iniciada: ela verificará se a conta de usuário do Windows ativa no momento possui privilégios de administrador (a que somente os funcionários têm acesso); se isso acontecer, será iniciada como servidor, senão (caso da conta de usuário "aluno"), será iniciada como cliente. Isso não apenas atende ao pedido dos funcionários, aumentando a praticidade do sistema, como também torna sua implementação mais simples e Argos – Sistema de controle de monitoria – 22 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE – CAMPUS ARACAJU COORDENADORIA DO CURSO TÉCNICO EM INFORMÁTICA aumenta a flexibilidade do mesmo em caso de queda no servidor, como será explicado mais adiante. Para evitar que algum aluno encerre a aplicação cliente no intervalo de tempo em que é feito login na conta de usuário "aluno" e a aplicação é iniciada (isso pode ser feito, por exemplo, acionando o Gerenciador de Tarefas), a equipe de desenvolvimento recomenda que as máquinas da monitoria sejam configuradas para fazer login automático na conta de usuário “aluno” assim que o computador for ligado. Isso traz não apenas o benefício da segurança, como também dispensa ao aluno realizar login primeiro no Windows para só depois fazer login no sistema, tornando mais fácil seu acesso às máquinas da monitoria. Uma vez exibida a tela de login da aplicação cliente, que ocupará toda a tela e não poderá ser fechada ou minimizada, impedindo assim o acesso do aluno ao sistema operacional, ela bloqueará quaisquer recursos que possam ser utilizados pelo aluno para burlá-la ou encerrá-la, como o Gerenciador de Tarefas, a alternância entre janelas (realizada pela combinação de teclas Alt + Tab) e o acesso ao menu Iniciar ou à Área de Trabalho. Todos esses bloqueios, com exceção do bloqueio ao Gerenciador de Tarefas, serão desfeitos assim que o aluno iniciar sua seção, permitindo que o mesmo tenha acesso ao sistema operacional condizente com os privilégios definidos para sua conta de usuário pelo administrador. Será adotada para o banco de dados uma política de usuários que dificultará o acesso à base de dados do sistema: as aplicações cliente e a aplicação servidor acessarão a base de dados através de um usuário restrito que será criado apenas para essa finalidade; o usuário administrador do banco de dados não será, portanto, utilizado pelo sistema. Sua senha será reservada ao funcionário responsável pela manutenção para realizar possíveis correções na base de dados, que serão feitas manualmente utilizando um Sistema de Gerenciamento de Banco de Dados (SGBD). A troca de informações entre as aplicações servidor e cliente será feita preferencialmente através do banco de dados para evitar redundância e minimizar o tráfego de informações pela rede. Na ocorrência de alteração em algum registro, uma aplicação apenas avisará à outra, para que esta verifique na base de dados a alteração e execute as ações relativas à mesma. Argos – Sistema de controle de monitoria – 23 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE – CAMPUS ARACAJU COORDENADORIA DO CURSO TÉCNICO EM INFORMÁTICA A única exceção a essa regra serão as mensagens enviadas pelo funcionário aos alunos, que serão transmitidas pela rede de um computador para outro e não serão armazenadas na base de dados, pois os funcionários da biblioteca entrevistados não encontraram utilidade no registro dessas mensagens. As aplicações cliente instaladas nas máquinas da monitoria estarão verificando constantemente sua comunicação com a aplicação servidor e o banco de dados instalados no computador da recepção. Se houver alguma falha nessa comunicação (isso pode acontecer devido a, por exemplo, uma falha no fornecimento de energia, no switch, em algum cabo de rede, no sistema operacional da máquina servidor ou da máquina cliente, um travamento da aplicação servidor ou da aplicação cliente instalada na máquina, etc.), o acompanhamento da entrada e saída de usuários da monitoria será prejudicado. Tanto a equipe de desenvolvimento quanto os próprios funcionários entrevistados não acharam interessante manter a aplicação cliente em funcionamento caso houvesse alguma interrupção na comunicação entre esta e a aplicação servidor ou a base de dados, porque a partir do momento em que essa comunicação fosse interrompida não haveria como o funcionário acompanhar pela aplicação servidor a entrada e saída de alunos na monitoria, o que contraria completamente os objetivos do sistema. Diante disso, decidiu-se que, para garantir a integridade do sistema, a aplicação cliente só desempenhará suas atividades se for possível sua comunicação com a aplicação servidor e o banco de dados e bloqueará a seção na máquina em que está sendo executada caso essa comunicação seja interrompida. Essa seção não será imediatamente finalizada, permitindo ao aluno voltar a utilizar o computador caso a comunicação entre este e o servidor ou o banco de dados seja restabelecida. Se a falha ocorrer na comunicação entre as aplicações cliente e servidor, é possível também encerrar a aplicação cliente em qualquer uma das máquinas da monitoria e iniciar nessa mesma máquina uma aplicação servidor, uma vez que o único critério utilizado pela aplicação para decidir se deve ser iniciada como servidor ou cliente é o nível de privilégio da conta de usuário do Windows na qual está sendo iniciada, como explicado anteriormente. Para isso, o funcionário deve fazer logoff da conta de usuário "aluno" nessa máquina e fazer login na sua conta administrativa, Argos – Sistema de controle de monitoria – 24 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE – CAMPUS ARACAJU COORDENADORIA DO CURSO TÉCNICO EM INFORMÁTICA iniciando assim a aplicação servidor nessa conta. Durante sua inicialização, a aplicação servidor verificará se já existe uma aplicação servidor em execução em alguma máquina na rede, pois não pode haver na rede duas aplicações servidoras em execução ao mesmo tempo. Se houver, ela questionará ao funcionário se deve substituir a que está em execução no momento. Caso o funcionário opte por isso, ela iniciará normalmente, e a outra, percebendo que uma nova aplicação servidor foi iniciada, se encerrará automaticamente. Caso contrário, ela abortará sua inicialização e a aplicação servidor que já estava sendo executada permanecerá em execução normalmente. Quando os problemas de comunicação entre as máquinas forem resolvidos, o aluno que estava na monitoria deverá se dirigir à máquina que estava utilizando e digitar sua matrícula. Verificando que sua seção estava bloqueada, a aplicação cliente liberará a máquina para seu uso e retomará a contagem do tempo restante para o fim de sua seção. Haverá, no entanto, um limite de tempo para que a seção seja retomada. Se transcorrido esse tempo a seção não for retomada, ela será automaticamente encerrada como se fosse uma seção que não apresenta atividade. Caso não seja possível retomar imediatamente a comunicação entre as máquinas, para que o aluno não seja prejudicado em suas atividades, será permitido ao funcionário da biblioteca encerrar a aplicação cliente para que o aluno termine o que estava fazendo, guarde seus arquivos e saia. Para isso, o funcionário deverá acionar o devido comando na tela de login da aplicação cliente e fornecer-lhe o nome de usuário e senha de uma conta administrativa do Windows. Após verificar que a conta possui privilégios de administrador, a aplicação cliente se encerrará sem fazer logoff da conta de usuário “aluno”, permitindo que o aluno utilize livremente o computador. É importante observar que, caso encerre a aplicação cliente em execução na conta de usuário “aluno”, o funcionário deverá se responsabilizar por acompanhar a utilização do computador pelo aluno. Haverá também comandos na tela de login da aplicação cliente que permitirão aos funcionários fazer logoff da conta “aluno”, caso precisem utilizar suas contas nesses computadores, ou ainda desligar ou reiniciar o computador, sem precisar alternar para suas contas de usuário para depois fazê-los. Argos – Sistema de controle de monitoria – 25 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE – CAMPUS ARACAJU COORDENADORIA DO CURSO TÉCNICO EM INFORMÁTICA Para realizar qualquer uma dessas três operações não será necessária nenhuma validação, pois o próprio aluno poderia executá-los se a tela de login da aplicação cliente não estivesse sendo exibida e ele tivesse acesso ao sistema operacional. Uma vez acionado um desses comandos, a própria aplicação se encarregará de executá-los, sem contudo fechar sua tela de login ou conferir acesso ao sistema operacional antes que sejam concluídos, evitando assim que alunos fraudulentos acionem esses comandos numa tentativa de burlar sua segurança. Argos – Sistema de controle de monitoria – 26 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE – CAMPUS ARACAJU COORDENADORIA DO CURSO TÉCNICO EM INFORMÁTICA 5 DIAGRAMA ENTIDADE-RELACIONAMENTO (DER) A partir do ambiente proposto (ver capítulo 4), foi elaborado um Diagrama de Entidade-Relacionamento (DER), mostrado na Figura 1. Para isso foi utilizada a notação de Abrial (1974), abordada em Elmasri & Navathe (2006). ALUNO (1,1) RESERVA (0,n) SECAO (1,1) (0,n) RECEBE POSSUI (0,n) OBSERVACAO (1,1) MAQUINA Figura 1 – Diagrama de Entidade-Relacionamento 5.1 Dicionarização do DER As explicações a seguir sobre as entidades e seus atributos foram elaboradas com base na notação estudada em Elmasri & Navathe (2006). 5.1.1 Entidade ALUNO Definição: aluno matriculado na escola. Argos – Sistema de controle de monitoria – 27 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE – CAMPUS ARACAJU COORDENADORIA DO CURSO TÉCNICO EM INFORMÁTICA Atributos: • Matrícula (PK): matrícula do aluno • Nome: nome completo do aluno • Curso: nome do curso do aluno • Turma: turma do aluno • Endereço: endereço do aluno, com logradouro, número e complemento • Bairro: bairro onde o aluno mora • CEP: CEP do logradouro onde o aluno mora • Cidade: cidade onde o aluno mora • Estado: estado onde o aluno mora • Telefone: telefone residencial do aluno com área • Celular: celular do aluno com área • RG: número do documento de identidade do aluno com órgão expedidor • CPF: número do CPF do aluno • E-mail: e-mail do aluno • Status: situação do aluno com relação à escola e a biblioteca 5.1.2 Entidade MAQUINA Definição: computador da monitoria. Atributos: • Código (PK): código da máquina • Nome: nome de rede (hostname) da máquina • Processador: breve descrição do processador da máquina, com frabricante, nome, modelo e clock interno • Memória: quantidade de memória RAM da máquina • Sistema: nome e versão do sistema operacional instalado na máquina Argos – Sistema de controle de monitoria – 28 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE – CAMPUS ARACAJU COORDENADORIA DO CURSO TÉCNICO EM INFORMÁTICA 5.1.3 Entidade OBSERVACAO Definição: observação feita por um funcionário da biblioteca a respeito de determinado aluno. Atributos: • Código (PK): código da observação • Matrícula do aluno (FK): matrícula do aluno que recebeu a observação • Data: data em que a observação foi feita • Hora: hora em que a observação foi feita • Texto: conteúdo da observação 5.1.4 Entidade SECAO Definição: concessão de tempo que é feita pelo funcionário da biblioteca a um aluno para que este possa utilizar um computador da monitoria. Atributos: • Código (PK): código da seção • Matrícula do aluno (FK): matrícula do aluno que iniciou a seção • Código da máquina (FK): código da máquina na qual a seção foi iniciada • Data: data em que a seção foi iniciada • Hora: hora em que a seção foi iniciada • Tempo concedido: tempo que foi concedido ao aluno para utilizar a máquina • Tempo usado: tempo que o aluno utilizou a máquina • Status: situação da seção Argos – Sistema de controle de monitoria – 29 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE – CAMPUS ARACAJU COORDENADORIA DO CURSO TÉCNICO EM INFORMÁTICA 6 ANÁLISE DE REQUISITOS Como visto em Sommerville (2007), os requerimentos de um sistema consistem nas descrições dos serviços oferecidos pelo sistema e suas restrições operacionais. Podem ser classificados em requisitos funcionais ou requisitos nãofuncionais. 6.1 Requisitos funcionais Os requisitos funcionais de um sistema descrevem o que ele deve fazer. Durante o levantamento dos requisitos do Sistema de controle de monitoria, os requisitos funcionais identificados foram: a) Cadastrar máquina: o sistema cadastrará na base de dados a máquina na qual estiver sendo executado. Tal cadastro ocorrerá automaticamente na primeira vez em que ele for executado nessa máquina; b) Cadastrar aluno: o sistema possibilitará ao funcionário todas as operações referentes a cadastro de alunos: adição, alteração, busca e exclusão; c) Registrar observação: o funcionário poderá registrar observações a respeito de determinado aluno na base de dados. Uma observação poderá permitir ou proibir o acesso de um aluno aos computadores da monitoria; d) Reservar seção: quando um aluno solicitar a utilização de um computador, o sistema registrará sua solicitação na base de dados. Se houver uma máquina disponível, o aluno poderá se dirigir à mesma e iniciar a seção. Se não, a aplicação avisará ao funcionário quando uma máquina for liberada para que o aluno possa utilizá-la; e) Visualizar fila de espera: o sistema deverá possibilitar ao funcionário visualizar a lista de alunos que solicitaram uma seção no momento em que não havia computadores disponíveis e estão aguardando que um computador seja liberado; Argos – Sistema de controle de monitoria – 30 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE – CAMPUS ARACAJU COORDENADORIA DO CURSO TÉCNICO EM INFORMÁTICA f) Iniciar seção: quando o aluno iniciar uma seção em uma máquina da monitoria, o sistema deverá registrar a hora de início da seção, avisar ao funcionário que uma nova seção foi iniciada e iniciar a contagem do tempo restante para o término da seção; g) Monitoramento de tempo: a partir do momento em que o aluno iniciar uma seção, o sistema realizará a contagem do tempo restante para o término da seção, avisando ao aluno quando o fim da seção estiver próximo. O sistema também verificará quanto tempo se passou desde a última atividade iniciada pelo aluno e encerrará a seção caso nenhuma nova atividade tenha sido iniciada dentro de certo tempo; h) Bloquear seção: o sistema bloqueará a seção caso o tempo concedido ao aluno seja encerrado ou a comunicação com o servidor seja interrompida, impedindo o acesso do aluno ao computador. As atividades em execução não serão encerradas, permitindo que o aluno retome a seção caso o funcionário estenda seu tempo ou a comunicação com o servidor seja reestabelecida. O sistema deverá finalizar automaticamente a seção bloqueada caso não seja retomada dentro de certo tempo; i) Encerrar seção: a seção será encerrada caso apresente inatividade, caso o funcionário ordene seu encerramento ou expulse o aluno. A aplicação cliente então registrará o fim da seção e reiniciará o computador, garantindo que todas as atividades em execução sejam encerradas; j) Estender tempo: o sistema possibilitará ao funcionário da biblioteca estender o tempo da seção de um aluno ou mesmo liberar por tempo indeterminado sua permanência dentro da monitoria; k) Expulsar aluno: quando o funcionário ordenar que um aluno seja expulso da monitoria, o sistema encerrará a seção do aluno e registrará uma observação informando que o mesmo foi expulso, bloqueando sua matrícula para acesso da monitoria; l) Enviar mensagem: o sistema permitirá que o funcionário envie mensagens a todos alunos que estiverem utilizando os computadores da monitoria ou a um aluno em particular; Argos – Sistema de controle de monitoria – 31 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE – CAMPUS ARACAJU COORDENADORIA DO CURSO TÉCNICO EM INFORMÁTICA m) Retomar seção: uma vez que a seção esteja bloqueada, o aluno poderá retomá-la e voltar a utilizar a máquina caso o funcionário lhe conceda mais tempo ou caso a comunicação da aplicação cliente com a aplicação servidor e a base de dados seja retomada; n) Verificar comunicação entre as máquinas: a aplicação cliente deverá constantemente verificar se é possível sua comunicação com a aplicação servidor e o banco de dados, impedindo o aluno de utilizar a máquina se esta comunicação for interrompida; o) Encerrar aplicação: a aplicação cliente deverá possibilitar ao funcionário seu encerramento; p) Backup da base de dados: o sistema deverá possibilitar ao funcionário gerar e restaurar cópias de segurança da base de dados. 6.2 Requisitos não-funcionais Os requisitos não-funcionais de um sistema são requisitos que não estão diretamente relacionados com suas funções específicas, mas são restrições a essas funções. De acordo com a classificação proposta em Sommerville (2007), os requisitos não-funcionais identificados durante o levantamento de requisitos podem ser divididos em requisitos de produto, requisitos de processo e requisitos externos. 6.2.1 Requisitos de produto Os requisitos de produto especificam o comportamento do produto. São eles: a) Requisitos de usabilidade: - Interface gráfica amigável: a interface do sistema deverá ser mais simples e intuitiva possível. Para que isto se torne realidade, conceitos de usabilidade serão amplamente usados pelos desenvolvedores do projeto, tudo isso com a finalidade de que o tempo de aprendizado seja Argos – Sistema de controle de monitoria – 32 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE – CAMPUS ARACAJU COORDENADORIA DO CURSO TÉCNICO EM INFORMÁTICA pequeno e o sistema ofereça maior produtividade ao usuário; - Mensagens de erro claras: a fim de auxiliar o funcionário em seu trabalho, erros bem definidos e claros deverão ser levados em consideração no momento do desenvolvimento; b) Requisitos de performance: - Garantia de disponibilidade constante: como se trata de um sistema de controle de toda a monitoria, é interessante o funcionamento do mesmo em situações extremas, - Tempo de resposta: o sistema deverá garantir que qualquer das operações seja efetuada no menor tempo possível. - Manter os computadores atualizados: os computadores nos quais o sistema será instalado deverão ser revisados quanto à capacidade de processamento e memória, a fim de que o sistema possa neles apresentar máximo desempenho. c) Requisitos de armazenamento: - Banco de dados: o sistema utilizará uma base de dados para armazenar os dados que utilizar. É recomendável que um computador seja utilizado apenas para abrigar a base de dados. d) Requisitos de confiabilidade: - Uso de nobreak: é recomendável a utilização de nobreak para garantir que o sistema não vai cair por falta de energia elétrica ou queda na tensão da rede elétrica, impedindo assim a perda de dados. - Utilização de uma estrutura de rede estável: a estrutura de rede que será utilizada para proporcionar a comunicação entre as máquinas deve ser projetada de modo a ser a mais veloz possível. Deve, além disso, possuir mecanismos que evitem o tráfego de informações desnecessárias e garantam a segurança na rede, como switches, roteadores e firewalls. - Uso de SGBD: o uso de um SGBD, além garantir a integridade dos dados, proporciona mais velocidade nas operações de consulta, inserção e remoção de itens na base de dados. Argos – Sistema de controle de monitoria – 33 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE – CAMPUS ARACAJU COORDENADORIA DO CURSO TÉCNICO EM INFORMÁTICA - Correto ajuste do relógio do sistema: a fim de que a operação entre as máquinas seja sincronizada, os relógios dos computadores nos quais o sistema for instalado devem estar sincronizados com um servidor de hora da rede. - Fornecimento de dados consistentes: toda informação armazenada deve ser processada de forma que possa ser facilmente re-extraída da base de dados. Também deverá haver algum mecanismo de cancelamento de operações em caso de algum problema de comunicação. e) Requisitos de manutenibilidade: - Log de erros: a fim de auxiliar na manutenção do sistema, mensagens de erro bem definidas e claras deverão ser armazenadas em um arquivo de texto sempre que um erro ocorrer com o sistema. - Modularidade: o sistema deverá possuir uma arquitetura modular para possibilitar menor custo de extensão ou substituição de partes do software. 6.2.2 Requisitos de processo Os requisitos de processo derivam das políticas e procedimentos adotados pelos clientes e desenvolvedores em suas organizações. São eles: a) Requisitos de entrega: - Entrega de sistema: o sistema deverá ser entregue até o final do ano de 2010. b) Requisitos de implementação: - Utilização da linguagem de programação Borland Delphi: deverá ser utilizada a linguagem de programação Borland Delphi, que possibilita o desenvolvimento do sistema segundo o paradigma de programação orientado a objetos. - Utilização do banco de dados MySQL: o sistema deverá utilizar o banco de dados MySQL para gerir suas informações. Argos – Sistema de controle de monitoria – 34 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE – CAMPUS ARACAJU COORDENADORIA DO CURSO TÉCNICO EM INFORMÁTICA - Utilização da Structured Query Language (SQL): para realizar consultas à base de dados, o sistema deverá utilizar a SQL, que é uma linguagem padronizada e específica para esse tipo de operação. 6.2.3 Requisitos externos A designação requisitos externos abrange todos os requisitos que derivam de fatores externos ao sistema e seu processo de desenvolvimento. São eles: a) Requisitos de segurança: - Definição de privilégios no Windows: em cada máquina que executará o sistema, deverá ser criada uma conta de usuário limitada do Windows para acesso dos alunos e uma conta administrativa para eventual utilização dos funcionários. - Criação de uma conta de usuário para o sistema no banco de dados: deverá ser criada uma conta de usuário no banco de dados para uso exclusivo do sistema, com permissões para realizar as operações CREATE TABLE, SELECT, INSERT, UPDATE e DELETE. b) Restrições éticas: - Privacidade de um aluno em relação a outro: o sistema deverá garantir que nenhum aluno tenha acesso a informações sobre outros alunos. Argos – Sistema de controle de monitoria – 35 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE – CAMPUS ARACAJU COORDENADORIA DO CURSO TÉCNICO EM INFORMÁTICA 7 DIAGRAMA DE CASOS DE USO Para a elaboração do diagrama de casos de uso mostrado na Figura 2 foi utilizada a notação abordada em Larman (2002). Figura 2 – Diagrama de casos de uso Argos – Sistema de controle de monitoria – 36 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE – CAMPUS ARACAJU COORDENADORIA DO CURSO TÉCNICO EM INFORMÁTICA 7.1 Documentação estendida dos casos de uso O detalhamento dos casos de uso exibido a seguir foi feito utilizando a notação abordada em Larman (2002). 7.1.1 Cadastrar máquina Atores: funcionário. Pré-condição: o arquivo de configuração estar ausente. Pós-condição: o sistema cadastra a máquina na base de dados e gera o arquivo de configuração, contendo o código que foi atribuído à máquina. Entrada: as características da máquina (ver 5.1.2). Saída: nenhuma. Fluxo de eventos principal: 1. O caso de uso começa quando o sistema é executado pela primeira vez em uma máquina; 2. O sistema obtém do sistema operacional as informações sobre a máquina; 3. O sistema verifica se já possui uma máquina cadastrada com o mesmo nome de rede; 4. O sistema armazena na base de dados o cadastro da nova máquina; 5. O sistema armazena em um arquivo localmente o código da máquina e o caso de uso termina. Argos – Sistema de controle de monitoria – 37 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE – CAMPUS ARACAJU COORDENADORIA DO CURSO TÉCNICO EM INFORMÁTICA Fluxo de eventos secundário: 1. Se no passo 3 o sistema encontrar na base de dados uma máquina cadastrada com o mesmo nome de rede: a) O usuário será questionado se a máquina já cadastrada corresponde à máquina que se deseja cadastrar; b) Caso a resposta do usuário seja positiva, o sistema obterá o código da máquina já cadastrada na base de dados e prosseguirá ao passo 5; c) Caso a resposta do usuário seja negativa, o sistema prosseguirá ao passo 4, realizando um novo cadastro. 2. Se no passo 4 o sistema não conseguir armazenar na base de dados o cadastro da nova máquina, uma mensagem de erro será exibida e a operação será abortada. O sistema será então encerrado. 7.1.2 Cadastrar aluno Atores: funcionário. Pré-condição: nenhuma. Pós-condição: o sistema cadastra o aluno na base de dados. Entrada: as informações sobre o aluno (ver 5.1.1). Saída: confirmação do cadastro. Fluxo de eventos principal: 1. O caso de uso começa quando o funcionário clica em “Cadastrar aluno”; 2. O sistema solicita ao funcionário que digite as informações sobre o aluno; Argos – Sistema de controle de monitoria – 38 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE – CAMPUS ARACAJU COORDENADORIA DO CURSO TÉCNICO EM INFORMÁTICA 3. O funcionário fornece ao sistema os dados do aluno: matrícula, nome completo, nome do curso, etc; 4. O sistema verifica se já existe aluno cadastrado com a mesma matrícula do aluno a ser cadastrado; 5. O sistema armazena na base de dados o cadastro do novo aluno; 6. O sistema retorna uma mensagem de confirmação ao funcionário e o caso de uso termina. Fluxo de eventos secundário: 1. Se no passo 4 o sistema constatar que a matrícula informada já foi cadastrada, uma mensagem será mostrada e a operação será abortada. O sistema retornará então ao passo 2; 2. Se no passo 5 o sistema não conseguir armazenar na base de dados o cadastro do novo aluno, uma mensagem de erro será exibida e a operação será abortada. 7.1.3 Registrar observação Atores: funcionário. Pré-condição: o aluno estar cadastrado na base de dados. Pós-condição: o sistema registra uma observação sobre o aluno na base de dados. Entrada: a data e a hora atuais, a matrícula do aluno, a observação em si e se o aluno pode ou não utilizar a monitoria. Saída: confirmação do registro da observação. Argos – Sistema de controle de monitoria – 39 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE – CAMPUS ARACAJU COORDENADORIA DO CURSO TÉCNICO EM INFORMÁTICA Fluxo de eventos principal: 1. O caso de uso começa quando o funcionário seleciona um aluno na lista e clica em “Registrar observação”; 2. O sistema solicita ao funcionário que digite as informações sobre a observação; 3. O funcionário fornece ao sistema a matrícula do aluno, a observação a ser registrada e define se o sistema deve bloquear (ou liberar, caso já esteja bloqueada) a matrícula do aluno para acesso à monitoria; 4. O sistema obtém a data e a hora atuais e armazena na base de dados a observação a respeito do aluno; 5. Se no passo 3 o funcionário definiu que o acesso do aluno à monitoria deveria ser bloqueado (ou liberado), o sistema altera na base de dados o status do aluno; 6. O sistema retorna uma mensagem de confirmação ao funcionário e o caso de uso termina. 7.1.4 Reservar seção Atores: funcionário. Pré-condição: a máquina estar cadastrada na base de dados e conectada ao servidor. Pós-condição: o sistema registra na base de dados uma reserva de seção para o aluno. Entrada: a matrícula do aluno e a máquina que ele deseja utilizar (se houver preferência) e o tempo que será concedido para que ele utilize a máquina. Saída: confirmação da reserva. Argos – Sistema de controle de monitoria – 40 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE – CAMPUS ARACAJU COORDENADORIA DO CURSO TÉCNICO EM INFORMÁTICA Fluxo de eventos principal: 1. O caso de uso começa quando o funcionário clica em “Reservar seção”; 2. O sistema solicita ao funcionário que informe a matrícula do aluno, a máquina que ele deseja utilizar (se houver preferência) e o tempo que será concedido para que ele utilize a monitoria. O sistema sugere uma quantidade de tempo padrão predeterminada pelo funcionário na sua configuração; 3. O funcionário fornece ao sistema as informações solicitadas; 4. O sistema verifica se o aluno está cadastrado na base de dados; 5. O sistema verifica se o aluno possui permissão para acessar a monitoria; 6. O sistema verifica se o aluno já pode entrar na monitoria: se ele não definiu nenhuma preferência de máquina, o sistema verifica se há alguma máquina disponível para uso, senão o sistema verifica se a máquina solicitada encontra-se disponível; 7. O sistema armazena na base de dados a reserva de seção; 8. O sistema retorna uma mensagem de confirmação ao funcionário e o caso de uso termina. Fluxo de eventos secundário: 1. Se no passo 4 for constatado que o aluno não está cadastrado na base de dados: a) O sistema informará que o aluno não está cadastrado e oferecerá ao funcionário a opção de cadastrá-lo; b) Se o funcionário optar pelo cadastro, o cadastro de aluno será iniciado (<<extend>> Cadastrar aluno); c) O sistema retornará ao passo 2. 2. Se no passo 5 for constatado que o aluno não possui permissão para acessar a monitoria: a) O sistema informará que o aluno não possui permissão para acessar a monitoria e oferecerá ao funcionário a opção de visualizar as Argos – Sistema de controle de monitoria – 41 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE – CAMPUS ARACAJU COORDENADORIA DO CURSO TÉCNICO EM INFORMÁTICA observações feitas a respeito daquele aluno; b) O funcionário poderá registrar uma observação que permitirá que o aluno acesse a monitoria novamente (<<extend>> Registrar observação); c) O sistema retornará ao passo 2. 3. Se no passo 6 for constatado que o aluno ainda não pode entrar na monitoria: a) O sistema armazenará na base de dados a solicitação do aluno e informará ao funcionário da impossibilidade do mesmo entrar na monitoria; b) O sistema retornará ao passo 6. 7.1.5 Visualizar fila de espera Atores: funcionário. Pré-condição: haver alunos aguardando que um computador seja liberado. Pós-condição: os alunos continuarão aguardando a liberação de um computador. Entrada: nenhuma. Saída: lista dos alunos que estão aguardando que um computador seja liberado. Fluxo de eventos principal: 1. O caso de uso começa quando o funcionário clica em “Fila de espera”; 2. O sistema obtém da base de dados a lista das seções que não foram iniciadas porque no momento em que foram solicitadas não havia computadores disponíveis; 3. O sistema lista essas seções informando, para cada uma, o código da Argos – Sistema de controle de monitoria – 42 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE – CAMPUS ARACAJU COORDENADORIA DO CURSO TÉCNICO EM INFORMÁTICA seção, a matrícula e o nome do aluno, a máquina que foi solicitada (se houve essa solicitação), a hora em que a seção foi solicitada e o tempo que foi concedido pelo funcionário e o caso de uso termina. 7.1.6 Iniciar seção Atores: funcionário e aluno. Pré-condição: a seção ter sido reservada e a aplicação cliente estar conectada à aplicação servidor e ao banco de dados. Pós-condição: o sistema registra na base de dados o início da seção e avisa ao funcionário que a seção foi iniciada. Entrada: a matrícula do aluno e o código da máquina na qual ele iniciou a seção. Saída: aviso do início da seção. Fluxo de eventos principal: 1. O caso de uso começa quando o aluno digita sua matrícula na tela de login da aplicação cliente e clica em “Login”; 2. A aplicação cliente verifica na base de dados se há uma seção reservada para o aluno; 3. A aplicação cliente registra na base de dados o início da seção e fecha a tela de login; 4. A aplicação cliente envia uma mensagem à aplicação servidor, que informa ao funcionário o início da seção e o caso de uso termina. Argos – Sistema de controle de monitoria – 43 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE – CAMPUS ARACAJU COORDENADORIA DO CURSO TÉCNICO EM INFORMÁTICA Fluxo de eventos secundário: 1. Se no passo 2 for constatado que não há uma seção reservada para o aluno, a aplicação cliente exibirá na tela de login uma mensagem de erro e a operação será abortada. 7.1.7 Monitorar tempo Atores: funcionário e aluno. Pré-condição: a seção estar em andamento ou bloqueada e a aplicação cliente estar conectada à aplicação servidor e ao banco de dados. Pós-condição: a seção pode permanecer em andamento, ser bloqueada ou encerrada. Entrada: hora atual. Saída: quanto tempo resta ao aluno para ele utilizar a máquina em que se encontra. Fluxo de eventos principal: 1. O caso de uso é iniciado de minuto em minuto, enquanto uma seção está em andamento ou bloqueada; 2. Se a seção estiver em andamento: a) A aplicação cliente verifica há quanto tempo o aluno não mexeu o mouse ou apertou alguma tecla e se esse tempo é igual ao tempo para considerar uma seção inativa; b) A aplicação cliente verifica quanto tempo se passou desde seu início e se o tempo concedido para o aluno utilizar a máquina se esgotou; Argos – Sistema de controle de monitoria – 44 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE – CAMPUS ARACAJU COORDENADORIA DO CURSO TÉCNICO EM INFORMÁTICA 3. Se a seção estiver bloqueada, a aplicação cliente verifica quanto tempo se passou desde seu bloqueio e se esse tempo é igual ao tempo para considerar uma seção inativa; 4. O caso de uso termina. Fluxo de eventos secundário: 1. Se no passo 2, item a, a aplicação cliente verificar que a máquina não apresenta atividade, o monitoramento do tempo será suspenso e a seção será encerrada (<<extend>> Encerrar seção); 2. Se no passo 2, item b, a aplicação cliente verificar que o tempo concedido para o aluno utilizar a máquina se esgotou, a seção será bloqueada (<<extend>> Bloquear seção); 3. Se no passo 2, item b, a aplicação cliente verificar que o tempo concedido para o aluno utilizar a máquina está próximo de acabar, uma mensagem será exibida alertando-o que o fim da seção está próximo; 4. Se no passo 3 a aplicação cliente verificar que já se passou muito tempo desde que a seção foi bloqueada, o monitoramento do tempo será suspenso e a seção será encerrada (<<extend>> Encerrar seção). 7.1.8 Bloquear seção Atores: aluno. Pré-condição: a seção estar em andamento. Pós-condição: a aplicação cliente registra na base de dados o bloqueio da seção, exibe a tela de login e informa o motivo pelo qual a seção foi bloqueada. Entrada: o código da seção e o motivo pelo qual ela foi bloqueada. Argos – Sistema de controle de monitoria – 45 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE – CAMPUS ARACAJU COORDENADORIA DO CURSO TÉCNICO EM INFORMÁTICA Saída: mensagem informando o motivo pelo qual a seção foi bloqueada. Fluxo de eventos principal: 1. O caso de uso começa quando o tempo concedido ao aluno esgota ou quando a comunicação entre as máquinas é interrompida; 2. A aplicação cliente tenta registrar na base de dados que a seção foi bloqueada; 3. A aplicação cliente tenta enviar uma mensagem à aplicação servidor para informar ao funcionário que a seção foi bloqueada; 4. A aplicação cliente exibe a tela de login, impossibilitando o aluno de acessar o sistema operacional e exibindo uma mensagem que informa o motivo pelo qual a seção foi bloqueada, e o caso de uso termina. Fluxo de eventos secundário: 1. Se no passo 2 a aplicação cliente não conseguir acessar a base de dados, este erro será ignorado, pois a perda da comunicação com a base de dados é um dos motivos que pode desencadear o bloqueio da seção, e o sistema prosseguirá ao passo 3; 2. Se no passo 3 a aplicação cliente não conseguir enviar uma mensagem à aplicação servidor, este erro será ignorado, pois a perda da comunicação com a aplicação servidor é um dos motivos que pode desencadear o bloqueio da seção, e o sistema prosseguirá ao passo 4; 7.1.9 Encerrar seção Atores: funcionário e aluno. Pré-condição: a seção estar em andamento ou bloqueada. Argos – Sistema de controle de monitoria – 46 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE – CAMPUS ARACAJU COORDENADORIA DO CURSO TÉCNICO EM INFORMÁTICA Pós-condição: a aplicação cliente registra na base de dados o encerramento da seção e reinicia o computador. Entrada: o código da seção e o motivo pelo qual ela foi encerrada. Saída: nenhuma. Fluxo de eventos principal: 1. O caso de uso começa quando a seção é considerada inativa, quando o tempo para retomá-la é encerrado, quando o funcionário solicita o encerramento de uma seção bloqueada ou a expulsão do aluno; 2. A aplicação cliente tenta registrar na base de dados que a seção foi encerrada; 3. A aplicação cliente reinicia o computador e o caso de uso termina. Fluxo de eventos secundário: 1. Se no passo 2 a aplicação cliente não conseguir acessar a base de dados, este erro será ignorado, pois a seção pode estar bloqueada devido à perda da comunicação com a base de dados, e o sistema prosseguirá ao passo 3; 7.1.10 Estender tempo Atores: funcionário e aluno. Pré-condição: a seção estar em andamento ou bloqueada e a aplicação cliente estar conectada à aplicação servidor. Argos – Sistema de controle de monitoria – 47 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE – CAMPUS ARACAJU COORDENADORIA DO CURSO TÉCNICO EM INFORMÁTICA Pós-condição: a aplicação cliente registra na base de dados o acréscimo de tempo e informa ao aluno que seu tempo foi estendido. Entrada: o código da seção e a quantidade de tempo que deve ser acrescentada. Saída: mensgem informando ao aluno que seu tempo foi estendido. Fluxo de eventos principal: 1. O caso de uso começa quando o funcionário seleciona a seção na lista e clica em "Estender tempo"; 2. A aplicação servidor solicita ao funcionário que informe a quantidade de tempo que deve ser acrescentada; 3. O funcionário fornece à aplicação servidor a quantidade de tempo que deve ser acrescentada; 4. A aplicação servidor registra na base de dados o acréscimo de tempo e envia uma mensagem à aplicação cliente; 5. A aplicação cliente exibe uma mensagem ao aluno informando-lhe o novo limite de tempo e o caso de uso termina. Fluxo de eventos secundário: 1. Se no passo 4 a aplicação cliente não conseguir acessar a base de dados, uma mensagem será mostrada e a operação será abortada. 2. Se no passo 5 a seção estiver bloqueada: a) A aplicação cliente fechará a tela de login; b) A aplicação cliente registrará na base de dados o início de uma nova seção com o tempo adicional que foi concedido ao aluno; c) A aplicação cliente retornará ao passo 5. Argos – Sistema de controle de monitoria – 48 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE – CAMPUS ARACAJU COORDENADORIA DO CURSO TÉCNICO EM INFORMÁTICA 7.1.11 Expulsar aluno Atores: funcionário e aluno. Pré-condição: a seção estar em andamento e a aplicação cliente estar conectada à aplicação servidor. Pós-condição: a aplicação cliente registra a expulsão do aluno, encerra sua seção e bloqueia sua matrícula. Entrada: o código da seção e o motivo pelo qual o aluno foi expulso. Saída: mensagem informando ao aluno sua expulsão. Fluxo de eventos principal: 1. O caso de uso começa quando o funcionário seleciona a seção na lista e clica em "Expulsar aluno"; 2. A aplicação servidor solicita ao funcionário que informe o motivo da expulsão do aluno; 3. O funcionário fornece à aplicação servidor o motivo da expulsão do aluno; 4. A aplicação servidor registra na base de dados que o aluno foi expulso (<<include>> Registrar observação) e envia uma mensagem à aplicação cliente; 5. A aplicação cliente avisa ao aluno de sua expulsão, encerra a seção (<<include>> Encerrar seção) e o caso de uso termina. Fluxo de eventos secundário: 1. Se no passo 4 o sistema não conseguir armazenar a expulsão do aluno na base de dados, uma mensagem de erro será exibida e a operação será abortada. Argos – Sistema de controle de monitoria – 49 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE – CAMPUS ARACAJU COORDENADORIA DO CURSO TÉCNICO EM INFORMÁTICA 7.1.12 Enviar mensagem Atores: funcionário e aluno. Pré-condição: a seção estar em andamento e a aplicação cliente estar conectada à aplicação servidor. Pós-condição: a aplicação cliente exibe a mensagem na tela para o aluno. Entrada: o código da seção e a mensagem em si. Saída: mensagem enviada pelo servidor. Fluxo de eventos principal: 1. O caso de uso começa quando o funcionário seleciona a seção na lista e clica em "Enviar mensagem"; 2. A aplicação servidor solicita ao funcionário que informe a mensagem a ser enviada; 3. O funcionário fornece à aplicação servidor a mensagem a ser enviada; 4. A aplicação servidor envia a mensagem à aplicação cliente; 5. A aplicação cliente exibe a mensagem recebida da aplicação servidor e o caso de uso termina. Fluxo de eventos secundário: 1. Se no passo 4 a aplicação servidor não conseguir enviar a mensagem à aplicação cliente, uma mensagem de erro será exibida e a operação será abortada. Argos – Sistema de controle de monitoria – 50 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE – CAMPUS ARACAJU COORDENADORIA DO CURSO TÉCNICO EM INFORMÁTICA 7.1.13 Retomar seção Atores: funcionário e aluno. Pré-condição: a seção estar bloqueada e a aplicação cliente estar conectada à aplicação servidor e ao banco de dados. Pós-condição: o sistema registra na base de dados o início de uma nova seção e avisa ao funcionário que a seção foi retomada. Entrada: a matrícula do aluno e o código da máquina na qual a seção foi retomada. Saída: aviso do início da seção. Fluxo de eventos principal: 1. O caso de uso começa quando a seção está bloqueada, a tela de login da aplicação cliente está em exibição e o aluno digita sua matrícula e clica em “Login”; 2. A aplicação cliente verifica quanto tempo restava para o aluno utilizar da seção que foi bloqueada e registra na base de dados o início de uma nova seção com esse tempo (<<include>> Iniciar seção); 3. A aplicação cliente fecha a tela de login; 4. A aplicação cliente envia uma mensagem à aplicação servidor, que informa ao funcionário o início da seção e o caso de uso termina. 7.1.14 Verificar comunicação entre as máquinas Atores: funcionário e aluno. Pré-condição: as aplicações cliente e servidor estarem em conexão entre si e com o banco de dados. Argos – Sistema de controle de monitoria – 51 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE – CAMPUS ARACAJU COORDENADORIA DO CURSO TÉCNICO EM INFORMÁTICA Pós-condição: as aplicações cliente e servidor permanecerem em conexão entre si e com o banco de dados. Entrada: nenhuma. Saída: nenhuma. Fluxo de eventos principal: 1. O caso de uso é iniciado de segundo em segundo, enquanto a aplicação está em execução; 2. A aplicação cliente envia uma mensagem à aplicação servidor confirmando o status da conexão e aguarda uma resposta; 3. A aplicação servidor recebe e responde a mensagem da aplicação cliente; 4. A aplicação cliente verifica a conexão com o banco de dados e o caso de uso termina. Fluxo de eventos secundário: 1. Se no passo 2 a aplicação cliente enviar uma mensagem à aplicação servidor e não receber uma resposta, ela bloqueará a seção em andamento na sua máquina, se houver (<<extend>> Bloquear seção), e a operação será abortada; 2. Se no passo 4 a aplicação cliente verificar que não está conectada ao banco de dados, ela bloqueará a seção em andamento na sua máquina, se houver (<<extend>> Bloquear seção), e a operação será abortada. 7.1.15 Encerrar aplicação Atores: funcionário. Argos – Sistema de controle de monitoria – 52 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE – CAMPUS ARACAJU COORDENADORIA DO CURSO TÉCNICO EM INFORMÁTICA Pré-condição: a aplicação cliente estar em execução. Pós-condição: a aplicação cliente é encerrada. Entrada: o nome de usuário e a senha de uma conta administrativa do Windows. Saída: nenhuma. Fluxo de eventos principal: 1. O caso de uso começa quando o funcionário clica em "Encerrar aplicação"; 2. A aplicação cliente solicita ao funcionário que informe o nome de usuário e a senha de uma conta administrativa do Windows; 3. A aplicação cliente verifica se a conta fornecida possui privilégios administrativos e se a senha foi digitada corretamente; 4. A aplicação cliente é encerrada e o caso de uso termina. Fluxo de eventos secundário: 1. Se no passo 3 a aplicação cliente verificar que a conta fornecida não possui privilégios administrativos ou a senha informada não confere com a senha da conta informada, uma mensagem de erro será exibida e a operação será abortada. 7.1.16 Exportar base de dados Atores: funcionário. Pré-condição: a aplicação servidor estar em execução. Argos – Sistema de controle de monitoria – 53 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE – CAMPUS ARACAJU COORDENADORIA DO CURSO TÉCNICO EM INFORMÁTICA Pós-condição: uma cópia de segurança da base de dados é gerada. Entrada: a localização do utilitário de backup do banco de dados e o local onde a cópia de segurança será salva juntamente com o nome do arquivo. Saída: confirmação da exportação. Fluxo de eventos principal: 1. O caso de uso começa quando o funcionário clica em "Exportar base de dados"; 2. O sistema solicita ao funcionário que informe a localização do utilitário de backup do banco de dados e o local onde a cópia de segurança será salva juntamente com o nome do arquivo; 3. O sistema executa o utilitário de backup do banco de dados, que cria um script SQL no local especificado pelo funcionário; 4. O sistema compacta o script SQL; 5. O sistema retorna uma mensagem de confirmação ao funcionário e o caso de uso termina. Fluxo de eventos secundário: 1. Se no passo 3 o sistema verificar que o utilitário de backup do banco de dados não se encontra na localização informada, uma mensagem de erro será exibida e a operação será abortada; 2. Se no passo 4 o sistema não conseguir compactar o script SQL, uma mensagem de erro será exibida e a operação será abortada. 7.1.17 Importar base de dados Atores: funcionário. Argos – Sistema de controle de monitoria – 54 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE – CAMPUS ARACAJU COORDENADORIA DO CURSO TÉCNICO EM INFORMÁTICA Pré-condição: a aplicação servidor estar em execução. Pós-condição: a base de dados é recuperada. Entrada: a localização do utilitário de linha de comando do banco de dados e o local onde se encontra a cópia de segurança a ser recuperada. Saída: confirmação da importação. Fluxo de eventos principal: 1. O caso de uso começa quando o funcionário clica em "Importar base de dados"; 2. O sistema solicita ao funcionário que informe a localização do utilitário de linha de comando do banco de dados e o local onde se encontra a cópia de segurança a ser recuperada; 3. O sistema extrai o script SQL do arquivo compactado; 4. O sistema invoca o utilitário de linha de comando do banco de dados, que executa os comandos contidos no script SQL extraído; 5. O sistema exclui o script SQL; 6. O sistema retorna uma mensagem de confirmação ao funcionário e o caso de uso termina. Fluxo de eventos secundário: 1. Se no passo 3 o sistema não conseguir extrair o script SQL do arquivo compactado, uma mensagem de erro será exibida e a operação será abortada; 2. Se no passo 4 o sistema verificar que o utilitário de backup do banco de dados não se encontra na localização informada, uma mensagem de erro será exibida e a operação será abortada. Argos – Sistema de controle de monitoria – 55 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE – CAMPUS ARACAJU COORDENADORIA DO CURSO TÉCNICO EM INFORMÁTICA 8 PROJETO DE ARQUIVOS A partir do DER (ver capítulo 5), foi elaborado o projeto de arquivos do sistema, detalhado nas seções a seguir. A notação utilizada foi baseada na adotada em Elmasri & Navathe (2006). 8.1 Entidade ALUNO Representa um aluno matriculado na escola. Tabela 1 – Atributos da entidade ALUNO Atributo Tipo alu_matricula varchar(20) PK FK NN AI Descrição X X Matrícula do aluno e identificador único dos alunos. alu_nome varchar(50) Nome completo do aluno. alu_curso varchar(50) Nome do curso do aluno. alu_turma varchar(20) Turma do aluno. alu_endereco varchar(255) Endereço do aluno, com logradouro, número e complemento. alu_bairro varchar(50) Bairro onde o aluno mora. alu_cep varchar(8) CEP do logradouro onde o aluno mora, apenas caracteres numéricos. alu_cidade varchar(50) Cidade onde o aluno mora. alu_estado varchar(2) Sigla do estado onde o aluno mora. alu_telefone varchar(10) Telefone residencial do aluno com área, apenas caracteres numéricos. alu_celular varchar(10) Celular do aluno com área, apenas caracteres numéricos. alu_rg varchar(20) Número do documento de identidade do aluno com órgão expedidor. Argos – Sistema de controle de monitoria – 56 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE – CAMPUS ARACAJU COORDENADORIA DO CURSO TÉCNICO EM INFORMÁTICA alu_cpf varchar(11) Número do CPF do aluno, apenas caracteres numéricos. alu_email varchar(50) E-mail do aluno. alu_status varchar(1) Situação do aluno com relação à escola e a biblioteca: 0 = regular, sem pendências com a biblioteca (pode usar a monitoria); 1 = irregular, com pendências com a biblioteca; 2 = não estuda mais na instituição (não pode usar a monitoria). 8.2 Entidade MAQUINA Representa o computador que executa a aplicação servidor ou um computador da monitoria, que executa a aplicação cliente. Tabela 2 – Atributos da entidade MAQUINA Atributo Tipo PK FK NN AI Descrição maq_codigo integer X X X Código da máquina e identificador único das máquinas. maq_nome varchar(65) Nome de rede (hostname) da máquina. maq_processador varchar(100) Breve descrição do processador da máquina, com frabricante, nome, modelo e clock interno. maq_memoria integer Quantidade de memória RAM da máquina em megabytes (MB). maq_sistema varchar(50) Nome e versão do sistema operacional instalado na máquina. Argos – Sistema de controle de monitoria – 57 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE – CAMPUS ARACAJU COORDENADORIA DO CURSO TÉCNICO EM INFORMÁTICA 8.3 Entidade OBSERVACAO Representa uma observação feita por um funcionário da biblioteca a respeito de determinado aluno. Tabela 3 – Atributos da entidade OBSERVACAO Atributo Tipo PK FK NN AI Descrição obs_codigo integer X X X Código da observação e identificador único das observações. alu_matricula varchar(20) X Matrícula do aluno que recebeu a observação. O registro se relaciona com um registro da entidade ALUNO através do conteúdo desse campo (ver 8.7). obs_data varchar(8) Data em que a observação foi feita, no formato AAAAMMDD. obs_hora varchar(4) Hora em que a observação foi feita, no formato HHMM. obs_texto varchar(255) Conteúdo da observação. 8.4 Entidade SECAO Representa uma concessão de tempo que é feita pelo funcionário da biblioteca a um aluno para que este possa utilizar um computador da monitoria. Argos – Sistema de controle de monitoria – 58 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE – CAMPUS ARACAJU COORDENADORIA DO CURSO TÉCNICO EM INFORMÁTICA Tabela 4 – Atributos da entidade SECAO Atributo Tipo PK FK NN AI Descrição sec_codigo integer X X X Código da seção e identificador único das seções. alu_matricula varchar(20) X Matrícula do aluno que iniciou a seção. O registro se relaciona com um registro da entidade ALUNO através do conteúdo desse campo (ver 8.6). maq_codigo integer X Código da máquina na qual a seção foi iniciada. O registro se relaciona com um registro da entidade MAQUINA através do conteúdo desse campo (ver 8.5). sec_data varchar(8) Data em que a seção foi iniciada, no formato AAAAMMDD. sec_hora varchar(4) Hora em que a seção foi iniciada, no formato HHMM. sec_tempo_concedido integer Tempo em minutos que foi concedido ao aluno para utilizar a máquina. sec_tempo_utilizado integer Tempo em minutos que o aluno utilizou a máquina. O valor desse campo é incrementado a cada minuto de utilização da máquina. sec_status varchar(1) Situação da seção: 0 = em espera; 1 = reservada; 2 = em andamento; 3 = finalizada pelo Argos – Sistema de controle de monitoria – 59 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE – CAMPUS ARACAJU COORDENADORIA DO CURSO TÉCNICO EM INFORMÁTICA aluno ou por tempo esgotado; 4 = finalizada pelo funcionário; 5 = finalizada por inatividade; 6 = finalizada por expulsão; 7 = finalizada por problemas técnicos. 8.5 Relacionamento POSSUI Relacionamento que ocorre entre as entidades SECAO e MAQUINA. Cada máquina pode estar relacionada a (isto é, possui) qualquer número de seções (nenhuma, uma ou mais de uma seção), mas uma seção pode estar relacionada a (isto é, pertence a) uma e somente uma máquina. Isso caracteriza um relacionamento 1:N, onde SECAO representa a entidade fraca e MAQUINA representa a entidade forte, havendo um atributo na entidade SECAO que identifica a máquina a qual ela está relacionada. Tabela 5 – Atributos envolvidos no relacionamento POSSUI Atributo Entidade de origem Entidade de destino maq_codigo MAQUINA SECAO 8.6 Relacionamento RESERVA Relacionamento que ocorre entre as entidades ALUNO e SECAO. Cada aluno pode estar relacionado a (isto é, reserva) qualquer número de seções (nenhuma, uma ou mais de uma seção), mas uma seção pode estar relacionada a (isto é, é reservada por) um e somente um aluno. Isso caracteriza um relacionamento 1:N, onde SECAO representa a entidade fraca e ALUNO representa a entidade forte, havendo um atributo na entidade SECAO que identifica o aluno ao qual ela está Argos – Sistema de controle de monitoria – 60 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE – CAMPUS ARACAJU COORDENADORIA DO CURSO TÉCNICO EM INFORMÁTICA relacionada. Tabela 6 – Atributos envolvidos no relacionamento RESERVA Atributo Entidade de origem Entidade de destino alu_matricula ALUNO SECAO 8.7 Relacionamento RECEBE Definição: relacionamento que ocorre entre as entidades ALUNO e OBSERVACAO. Cada aluno pode estar relacionado a (isto é, recebe) qualquer número de observações (nenhuma, uma ou mais de uma observação), mas uma observação pode estar relacionada a (isto é, é recebida por) um e somente um aluno. Isso caracteriza um relacionamento 1:N, onde OBSERVACAO representa a entidade fraca e ALUNO representa a entidade forte, havendo um atributo na entidade OBSERVACAO que identifica o aluno ao qual ela está relacionada. Tabela 7 – Atributos envolvidos no relacionamento RECEBE Atributo Entidade de origem Entidade de destino alu_matricula ALUNO OBSERVACAO Argos – Sistema de controle de monitoria – 61 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE – CAMPUS ARACAJU COORDENADORIA DO CURSO TÉCNICO EM INFORMÁTICA 9 SCRIPT DE CRIAÇÃO DA BASE DE DADOS A base de dados modelada conceitualmente no ambiente proposto (ver capítulo 4), logicamente no DER (ver capítulo 5) e fisicamente no projeto de arquivos (ver capítulo 8) pode ser criada através da execução do script SQL exibido no Quadro 1 em qualquer ferramenta de gerenciamento de banco de dados. A equipe de desenvolvimento recomenda a utilização do MySQL Workbench, ferramenta fornecida pelo próprio desenvolvedor do MySQL. Quadro 1 – Script de criação da base de dados CREATE SCHEMA `argos` DEFAULT CHARACTER SET latin1; USE `argos`; CREATE TABLE `arg_aluno` ( `alu_matricula` varchar(20) NOT NULL, `alu_nome` varchar(50) DEFAULT NULL, `alu_curso` varchar(50) DEFAULT NULL, `alu_turma` varchar(20) DEFAULT NULL, `alu_endereco` varchar(255) DEFAULT NULL, `alu_bairro` varchar(50) DEFAULT NULL, `alu_cep` varchar(8) DEFAULT NULL, `alu_cidade` varchar(50) DEFAULT NULL, `alu_estado` varchar(2) DEFAULT NULL, `alu_telefone` varchar(10) DEFAULT NULL, `alu_celular` varchar(10) DEFAULT NULL, `alu_rg` varchar(20) DEFAULT NULL, `alu_cpf` varchar(11) DEFAULT NULL, `alu_email` varchar(50) DEFAULT NULL, `alu_status` varchar(1) DEFAULT NULL, PRIMARY KEY (`alu_matricula`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; CREATE TABLE `arg_maquina` ( `maq_codigo` integer NOT NULL AUTO_INCREMENT, `maq_nome` varchar(65) DEFAULT NULL, `maq_processador` varchar(100) DEFAULT NULL, `maq_memoria` integer DEFAULT NULL, `maq_sistema` varchar(50) DEFAULT NULL, PRIMARY KEY (`maq_codigo`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; Argos – Sistema de controle de monitoria – 62 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE – CAMPUS ARACAJU COORDENADORIA DO CURSO TÉCNICO EM INFORMÁTICA CREATE TABLE `arg_observacao` ( `obs_codigo` integer NOT NULL AUTO_INCREMENT, `alu_matricula` varchar(20) DEFAULT NULL, `obs_data` varchar(8) DEFAULT NULL, `obs_hora` varchar(4) DEFAULT NULL, `obs_texto` varchar(255) DEFAULT NULL, PRIMARY KEY (`obs_codigo`), KEY `recebe` (`alu_matricula`), CONSTRAINT `recebe` FOREIGN KEY (`alu_matricula`) REFERENCES `arg_aluno` (`alu_matricula`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=latin1; CREATE TABLE `arg_secao` ( `sec_codigo` integer NOT NULL AUTO_INCREMENT, `alu_matricula` varchar(20) DEFAULT NULL, `maq_codigo` integer DEFAULT NULL, `sec_data` varchar(8) DEFAULT NULL, `sec_hora` varchar(4) DEFAULT NULL, `sec_tempo_concedido` integer DEFAULT NULL, `sec_tempo_utilizado` integer DEFAULT NULL, `sec_status` varchar(1) DEFAULT NULL, PRIMARY KEY (`sec_codigo`), KEY `reserva` (`alu_matricula`), KEY `possui` (`maq_codigo`), CONSTRAINT `possui` FOREIGN KEY (`maq_codigo`) REFERENCES `arg_maquina` (`maq_codigo`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `reserva` FOREIGN KEY (`alu_matricula`) REFERENCES `arg_aluno` (`alu_matricula`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET= latin1; Argos – Sistema de controle de monitoria – 63 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE – CAMPUS ARACAJU COORDENADORIA DO CURSO TÉCNICO EM INFORMÁTICA 10 IMPLEMENTAÇÃO Para o desenvolvimento do sistema foi utilizada a linguagem de programação Delphi, que é uma linguagem que permite a criação de aplicações desktop utilizando o paradigma de programação orientado a objetos. Para agilizar o desenvolvimento, foi utilizado o ambiente de desenvolvimento integrado Borland Delphi 7.0. Optou-se por utilizar o MySQL 5.1 como banco de dados, por ser uma aplicação robusta, amplamente utilizada e conhecida pelo mercado e também por apresentar os recursos necessários para a implementação da base de dados do sistema. Para modelar e gerenciar o banco, foi utilizada a ferramenta MySQL Workbench, que é oferecida pelo próprio desenvolvedor do MySQL. 10.1 Ferramentas e técnicas utilizadas O processamento de dados, a comunicação entre as máquinas e o acesso ao banco de dados foi encapsulado em classes com o objetivo de melhor empregar o paradigma de programação orientado a objetos, tornando o sistema modular e permitindo a separação entre processamento e interface. Para a implementação desta, foram utilizados principalmente os componentes padrão fornecidos com o Borland Delphi 7. Além deles, foram utilizados dois componentes de terceiros, o ZipMaster e o CoolTrayIcon, e um componente foi desenvolvido, o SortListViewEx. Os códigos-fonte desses componentes acompanham o códigofonte do sistema. Uma breve descrição e explanação dessas classes e componentes será vista nessa seção. As classes foram desenvolvidas utilizando a notação padrão do Delphi: seus nomes equivalem aos nomes das entidades que abstraem precedidos da consoante T, que indica tipo. São elas: TAluno, TMáquina, TObservação, TSeção, TConfiguração, TLog e TRede. No código-fonte do sistema, há uma unit para cada uma dessas classes. Argos – Sistema de controle de monitoria – 64 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE – CAMPUS ARACAJU COORDENADORIA DO CURSO TÉCNICO EM INFORMÁTICA As quatro primeiras representam abstrações das entidades identificadas durante a modelagem do sistema (ver 5.1) e encapsulam todos os dados e operações referentes a essas entidades, entre elas o cadastro, o carregamento, a modificação e a exclusão de registros na base de dados. Para realizar tais operações, os objetos dessas classes possuem métodos que geram os comandos SQL correspondentes, executam esses comandos utilizando um componente nãovisual AdoQuery (ver Apêndice A) e retornam verdadeiro ou falso como resultado de sua execução, permitindo que a interface exiba as mensagens de sucesso ou de erro correspondentes às operações. As classes TConfiguração e TLog abstraem o armazenamento de informações em arquivos locais: a primeira tem como função gerar, abrir, ler e atualizar o arquivo de configuração gerado por cada aplicação cliente, que contém o código da máquina cadastrado no banco de dados, o endereço e a porta do servidor; a última representa o arquivo de texto que registra os eventos ocorridos durante a execução da aplicação (ver 6.2.1, alínea e) e tem capacidade para gerar, abrir, ler e atualizar esse arquivo. A comunicação entre as aplicações cliente e servidor é abstraída pela classe TRede. Ela se utiliza dos componentes não-visuais IdTCPClient, IdUDPClient, ADOConnection, IdTCPServer e IdUDPServer (ver Apêndice A), todos pertencentes ao conjunto de componentes padrão do Delphi, para efetuar a comunicação entre as aplicações servidor e cliente e entre essas e o banco de dados. Ela apresenta funções distintas a depender da aplicação que seja iniciada. Quando o executável é iniciado como uma aplicação servidor, o objeto criado com base na classe TRede é responsável por se conectar ao banco de dados e aos clientes, armazenar uma lista dos clientes conectados, das seções em andamento nesses clientes e dos alunos que os estão utilizando, se houver. Tem capacidade para enviar ordens de encerramento de seção, expulsão de aluno e mensagens de texto aos clientes. Também dispara eventos quando um cliente é conectado ou desconectado, quando o acesso ao banco é interrompido ou retomado e quando uma seção é iniciada, bloqueada, retomada, encerrada ou tem seu tempo estendido em algum dos clientes, para que os componentes da interface possam realizar a devida interação com o funcionário que está utilizando a aplicação servidor. Argos – Sistema de controle de monitoria – 65 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE – CAMPUS ARACAJU COORDENADORIA DO CURSO TÉCNICO EM INFORMÁTICA Na aplicação cliente, o objeto da classe TRede realiza a conexão com o servidor e o banco de dados, verifica a comunicação do cliente com os mesmos e dispara eventos quando o cliente é conectado ou desconectado ao servidor ou ao banco de dados, quando a seção é iniciada, bloqueada, retomada, encerrada ou tem seu tempo estendido e quando uma mensagem é recebida do servidor, para que os componentes responsáveis pela interface possam realizar a devida comunicação com o aluno que está utilizando o cliente em questão. Todas as telas do sistema que aparecem para o usuário são formadas pelo componente Form. Sobre este componente são depositados os outros componentes que formam a interface de interação do usuário com a ferramenta. A tela principal da aplicação servidor (ver Figura 4) é composta de um componente ActionMenu, onde é formado o menu com as opções para o usuário, um componente ActionToolBar, que exibe as mesmas opções que o menu mas em formato de botões, para os usuários que prefererirem assim os acionarem, dois componentes SortListViewEx, que serão explicados mais adiante, mas nessa tela servem para listar os cliente conectados e os últimos eventos ocorridos e um componente StatusBar, que forma a barra de status onde aparecem avisos para o usuário. Nessa tela estão as chamadas para as demais telas da aplicação servidor conforme a seleção do usuário a partir do menu ou da barra de ferramentas. Nas telas do sistema de uma forma em geral o componente Image foi utilizado para exibir o ícone que representa cada tela, foram utilizados os componentes Edit, MaskEdit, Memo e ComboBox para visualização e entrada de dados, componentes Label para exibir o título e identificar os campos, componentes GroubBox para agrupar campos, componentes ActionManager para armazenar e habilitar ou desabilitar as ações e, componentes BitBtn para permitir ao usuário acionar a execução das ações. Nas telas de histórico do aluno (ver Figuras 8 e 9) e histórico da máquina (Figura 26) na aplicação servidor e na tela principal da aplicação cliente (Figuras 16 e 17), os componentes PageControl e TabSheet foram utilizados para dividir a tela em guias como se fossem um arquivo fichário. A tela principal da aplicação cliente não apresenta muitas opções de ações a Argos – Sistema de controle de monitoria – 66 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE – CAMPUS ARACAJU COORDENADORIA DO CURSO TÉCNICO EM INFORMÁTICA serem executadas, sendo principalmente informativa. Nas telas principais das aplicações servidor e cliente há dois componentes Image e um componente Shape na parte superior, que são utilizados para exibir o logotipo do sistema. Há também em cada uma delas um componente CoolTrayIcon, que será explicado mais adiante. Para centralizar os componentes de rede e banco de dados usou-se o DataModule, que é uma espécie de tela para o desenvolvedor, no qual estão os componentes relativos ao acesso às máquinas da rede – IdTCPClient, IdUDPClient, IdTCPServer e IdUDPServer – e ao banco de dados – ADOConnection e AdoQuery. Nele encontram-se ainda os objetos que são criados durante a inicialização da aplicação seja ela cliente ou servidor e que são acessíveis por todo o sistema: TConfiguração, TLog e TRede. Como os componentes possuem propriedades e eventos, utilizou-se de algumas de suas propriedades para definir as características iniciais de cada componente, bem como adequá-lo à necessidade do protótipo. Em alguns eventos efetuou-se a programação de cada um destes, dentre as quais as consistências, chamadas de telas, chamadas de funções, tratamento dos dados, execução de comandos SQL dentre outros. Maiores informações sobre o funcionamento de cada componente bem como sobre o ambiente Delphi e sua estrutura de linguagem, pode ser encontradas em Cantù (2003). O componente ZipMaster foi utilizado nas operações de exportação e importação da base de dados, para compactar e descompactar, respectivamente, o script SQL gerado. No código-fonte do sistema, esse componente se encontra inserido no DataModule. Há, na mesma unit que contém o DataModule, duas rotinas que o manuseiam, compactando ou descompactando o arquivo que lhes é passado como parâmetro. Maiores informações sobre o funcionamento desse componente podem ser encontradas em DelphiZip (2010) ou no arquivo de ajuda que acompanha o seu código-fonte. O componente CoolTrayIcon foi utilizado nas telas principais das aplicações cliente e servidor para gerar o ícone que é exibido na área de notificação do sistema quando essas telas são fechadas ou minimizadas. Para restaurar a aplicação, o usuário pode efetuar um duplo-clique sobre o ícone ou clicar com o Argos – Sistema de controle de monitoria – 67 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE – CAMPUS ARACAJU COORDENADORIA DO CURSO TÉCNICO EM INFORMÁTICA botão direito e escolher no menu que aparece a opção de restaurar a janela. Esse menu também permite o encerramento da plicação, no caso da aplicação servidor, ou o encerramento da seção, no caso das aplicações cliente. Quando a aplicação é restaurada ou fechada, esse ícone deixa de ser exibido. Maiores informações sobre o funcionamento desse componente podem ser encontradas em Jakobsen (2006) ou no arquivo de ajuda que acompanha o seu código-fonte. O componente SortListViewEx foi desenvolvido a partir de dois componentes de terceiros cujo código-fonte pode ser obtido da Internet: o SortListView e o ListViewEx. Ele foi utilizado nas telas de listagem de registros. Seu desenvolvimento se deu para suprir a necessidade de recursos que não eram oferecidos pelo componente ListView que acompanha o Delphi, como a ordenação por determinada coluna ao clicar em seu nome ou a seleção de quais colunas devem ser exibidas ou ocultadas através de um menu, que pode ser exibido com o clique do botão direito do mouse. Maiores informações sobre os componentes nos quais o SortListViewEx se baseia podem ser encontradas em Priyatna (2007) e Below (2010). 10.2 Possibilidade de integração com outros projetos Além deste projeto, outros projetos desenvolvidos pela turma este ano tiveram como objetivo atender a alguma necessidade do Instituto: a) Sistema de controle de biblioteca, por Amanda Hellen Cerqueira Santos, Amanda Menezes de Oliveira Lima e Fábio Nascimento Santos; b) Sistema de gerenciamento de manutenção de equipamentos, por Alice Rodrigues Santos e Vivia Monique de Souza Lima; c) Sistema de integração aluno-escola, por Kelvin Mendes Sampaio, Matheus Oliveira Garcia e Nilton Bruno Feitosa Santana. Foi questionado durante o desenvolvimento do Sistema de controle da monitoria a possibilidade de integrar a ele esses outros sistemas: Argos – Sistema de controle de monitoria – 68 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE – CAMPUS ARACAJU COORDENADORIA DO CURSO TÉCNICO EM INFORMÁTICA a) A integração com o Sistema de controle de biblioteca poderia gerar automaticamente observações sobre pendências de um aluno com a biblioteca, bloqueando sua matrícula e impedindo seu acesso a monitoria quando surgisse uma pendência; b) O Sistema de gerenciamento de manutenção de equipamentos poderia ser utilizada para gerar e armazenar o cadastro das máquinas da monitoria; c) O Sistema de integração aluno-escola poderia ser utilizado para gerir as informações pessoais referentes a cada aluno e automaticamente atualizar seu status quando o mesmo deixasse a escola. Se isso fosse feito, esses outros sistemas poderiam desempenhar funções que não são específicas do Sistema de controle da monitoria, enquanto este seria responsável somente por gerir a monitoria, que é a sua especificidade. No entanto, o tempo disponível para a implementação do programa não foi suficiente para que essa integração fosse analisada e implementada. Decidiu-se então que o sistema desempenharia as funções que não lhe são específicas de maneira simples, como já havia sido planejado. Argos – Sistema de controle de monitoria – 69 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE – CAMPUS ARACAJU COORDENADORIA DO CURSO TÉCNICO EM INFORMÁTICA 11 PROJETO DE INTERFACES Para atender ao requisito não-funcional "Interface gráfica amigável" (ver 6.2.1, alínea a), procurou-se simplificar a interface do sistema ao máximo. Os ícones possuem identidade visual, pois todos eles pertencem ao tema de ícones Oxygen. Além disso, seu significado foi padronizado: comandos semelhantes em telas diferentes possuem os mesmos ícones. Um exemplo dessa padronização é a tela principal da aplicação servidor, mostrada na Figura 4, cujos menus e barra de ferramentas apresentam os mesmos ícones dispostos na mesma sequência (ver Figura 5). É possível acionar os mesmos comandos por qualquer um dos dois. Para facilitar a assimilação da interface pelo usuário, os comandos também foram nomeados de acordo com os requisitos funcionais (ver seção 6.1) e os casos de uso (ver capítulo 7) levantados durante a fase de análise. Isso também pode ser percebido na tela principal da aplicação servidor. A seguir, as telas do programa serão exibidas simulando uma sequência lógica de funcionamento parecida com a sequência em que o programa foi descrito no ambiente proposto (ver capítulo 4). Mais informações sobre o tema de ícones utilizado podem ser obtidas em Oxygen (2010). Figura 3 – Aplicação servidor – Tela de carregamento Argos – Sistema de controle de monitoria – 70 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE – CAMPUS ARACAJU COORDENADORIA DO CURSO TÉCNICO EM INFORMÁTICA Figura 4 – Aplicação servidor – Tela principal Figura 5 – Aplicação servidor – Menus e barra de ferramentas Argos – Sistema de controle de monitoria – 71 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE – CAMPUS ARACAJU COORDENADORIA DO CURSO TÉCNICO EM INFORMÁTICA Figura 6 – Aplicação servidor – Lista de alunos Argos – Sistema de controle de monitoria – 72 Figura 7 – Aplicação servidor – Cadastro de aluno Figura 8 – Aplicação servidor – Histórico do aluno – Aba "Seções" Figura 9 – Aplicação servidor – Histórico do aluno – Aba "Observações" Figura 10 – Aplicação servidor – Registro de observação INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE – CAMPUS ARACAJU COORDENADORIA DO CURSO TÉCNICO EM INFORMÁTICA Figura 11 – Aplicação servidor – Reserva de seção Figura 12 – Aplicação servidor – Fila de espera Argos – Sistema de controle de monitoria – 75 Figura 13 – Aplicação cliente – Tela de login INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE – CAMPUS ARACAJU COORDENADORIA DO CURSO TÉCNICO EM INFORMÁTICA Figura 14 – Aplicação cliente – Tela de login – Sair Figura 15 – Aplicação cliente – Tela de login – Encerrar aplicação Argos – Sistema de controle de monitoria – 77 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE – CAMPUS ARACAJU COORDENADORIA DO CURSO TÉCNICO EM INFORMÁTICA Figura 16 – Aplicação cliente – Tela principal – Aba "Aluno" Figura 17 – Aplicação cliente – Tela principal – Aba "Seção" Argos – Sistema de controle de monitoria – 78 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE – CAMPUS ARACAJU COORDENADORIA DO CURSO TÉCNICO EM INFORMÁTICA Figura 18 – Aplicação cliente – Aviso de tempo restante Figura 19 – Aplicação servidor – Envio de mensagem Argos – Sistema de controle de monitoria – 79 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE – CAMPUS ARACAJU COORDENADORIA DO CURSO TÉCNICO EM INFORMÁTICA Figura 20 – Aplicação cliente – Aviso de mensagem recebida Figura 21 – Aplicação servidor – Expulsão de aluno Argos – Sistema de controle de monitoria – 80 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE – CAMPUS ARACAJU COORDENADORIA DO CURSO TÉCNICO EM INFORMÁTICA Figura 22 – Aplicação servidor – Estender tempo Argos – Sistema de controle de monitoria – 81 Figura 23 – Aplicação servidor – Importação da base de dados Figura 24 – Aplicação servidor – Exportação da base de dados INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE – CAMPUS ARACAJU COORDENADORIA DO CURSO TÉCNICO EM INFORMÁTICA Figura 25 – Aplicação servidor – Lista de máquinas Argos – Sistema de controle de monitoria – 83 Figura 27 – Aplicação servidor – Ícone da área de notificação Figura 26 – Aplicação servidor – Histórico da máquina INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE – CAMPUS ARACAJU COORDENADORIA DO CURSO TÉCNICO EM INFORMÁTICA 12 PROJETO DE RELATÓRIOS Consta das solicitações feitas pelos funcionários responsáveis pela monitoria que o sistema fizesse relatórios estatísticos sobre a utilização das máquinas que informassem os programas e sites mais utilizados pelos alunos (ver último parágrafo do capítulo 3), mas tais relatórios não puderam ser desenvolvidos devido a ausência de documentação sobre recursos da linguagem de programação adotada que permitissem desenvolver essa funcionalidade (ver 4º parágrafo do capítulo 4). Sendo assim, o sistema não gera nenhum relatório que possa ser impresso. Argos – Sistema de controle de monitoria – 85 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE – CAMPUS ARACAJU COORDENADORIA DO CURSO TÉCNICO EM INFORMÁTICA 13 CONCLUSÃO O desenvolvimento deste trabalho foi interessante para os integrantes da equipe, pois os mesmos foram expostos a uma situação real, que os possibilitou vivenciar a rotina dos profissionais já formados e atuantes na área, como também exigiu que conhecimentos complementares ao curso fossem adquiridos para que se pudesse desenvolver determinadas especificidades do sistema. Espera-se que o aprendizado adquirido com esse trabalho não se restrinja apenas aos seus desenvolvedores, mas a todos alunos do curso ou mesmo de outras instituições de ensino que tenham o interesse em consultá-lo. Para isso, todo o material referente ao corrente trabalho – apresentação, especificação, códigofonte, instalador e vídeos explicativos – foi disponibilizado na Internet sob licença GPL (ver Anexo A) em um site criado apenas com a finalidade de armazená-lo (<http://argoslan.sourceforge.net/>). A licença GPL garante que qualquer um tenha acesso livre e irrestrito aos documentos disponibilizados nesse site. Como um projeto de software livre, esse sistema não se encontra e jamais se encontrará finalizado, sendo passível de mudanças, correções e melhorias pela comunidade. Todos os interessados encontram-se convidados a contribuir com o seu aperfeiçoamento, seja sugerindo novas funcionalidades, propondo alterações ou enviando códigos para serem incorporados ao programa, ou até mesmo obtendo cópias, instalando e testando em suas máquinas para que esse projeto possa sempre crescer e o resultado desse crescimento seja compartilhado por todos. Argos – Sistema de controle de monitoria – 86 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE – CAMPUS ARACAJU COORDENADORIA DO CURSO TÉCNICO EM INFORMÁTICA REFERÊNCIAS ABOUT.COM. About Delphi Programming - For Novice and Expert CodeGear Delphi Developers. Disponível em: <http://delphi.about.com/>. Acesso em: 26 novembro 2010. ALVES, William Pereira. Fundamentos de banco de dados. 1 ed. São Paulo: Érica, 2004. BELOW, Peter. ListViewEx. Versão 1.0: Peter Below, 2010. Disponível em: <http://delphi.about.com/library/weekly/aa053105a.htm>. Acesso em: 23 dezembro 2010. CANTÙ, Marco. Dominando o Delphi 7 – A Bíblia. São Paulo: Pearson Makron Books, 2003. DELPHIZIP. ZipMaster. Versão 1.9.0: DelphiZip, 2010. Disponível em: <http://www.delphizip.org>. Acesso em: 23 dezembro 2010. ELMASRI, Ramez; NAVATHE, Shamkant B. Sistemas de banco de dados. 4 ed. São Paulo: Pearson Addison-Wesley, 2006. FREE SOFTWARE FOUNDATION. GNU General Public License. Traduzido por: Creative Commons. Versão 2.0: Free Software Foundation, 1991. Disponível em: <http://creativecommons.org/licenses/GPL/2.0/legalcode.pt>. Acesso em: 23 dezembro 2010. HOWER, Chad Z. ZipMaster. Versão 1.9.0: DelphiZip, 2010. Disponível em: <http://www.delphizip.org>. Acesso em: 23 dezembro 2010. JAKOBSEN, Troels. CoolTrayIcon. Versão 4.4.0: Troels Jakobsen, 2006. Disponível em: <http://subsimple.com>. Acesso em: 23 dezembro 2010. LARMAN, Craig. Applying UML and Patterns: an Introduction to Object-Oriented Analysis and Design and Iterative Development. 2. ed. Upper Saddle River: Prentice Hall PTR, 2002. Argos – Sistema de controle de monitoria – 87 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE – CAMPUS ARACAJU COORDENADORIA DO CURSO TÉCNICO EM INFORMÁTICA MICROSOFT. MSDN – Microsoft Developer Network. Disponível na Internet em: <http://msdn.microsoft.com>. Último acesso em: 26/11/2010. ORACLE. MySQL :: MySQL 5.1 Reference Manual. Disponível na Internet em: <http://dev.mysql.com/doc/refman/5.1/en/>. Último acesso em: 27/11/2010. OXYGEN. Oxygen Icons. Versão 1.0: Oxygen, 2010. Disponível em: <http://www.oxygen-icons.org/>. Acesso em: 23 dezembro 2010. PRESSMAN, Roger S. Engenharia de software. 6 ed. São Paulo: McGraw-Hill, 2007 PRIYATNA. SortListView. Versão 1.01: Priyatna, 2007. Disponível em: <http://www.priyatna.org>. Acesso em: 23 dezembro 2010. SOMMERVILLE, Ian. Software engineering. 8 ed. Harlow: Pearson Addison-Wesley, 2007. THE INDY PROJECT. Indy. Disponível em: <http://www.indyproject.org/>. Acesso em: 26 dezembro 2010. Argos – Sistema de controle de monitoria – 88 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE – CAMPUS ARACAJU COORDENADORIA DO CURSO TÉCNICO EM INFORMÁTICA APÊNDICE A – CONHECIMENTOS COMPLEMENTARES Durante a realização deste trabalho, a aquisição de conhecimentos complementares aos obtidos pelo curso se fez necessária para que se fosse possível desenvolver determinadas especificidades do sistema proposto. Este apêndice tem como objetivo fornecer noções acerca desses conhecimentos adquiridos. Componentes Indy Entre os componentes padrão que acompanham o Borland Delphi, há um conjunto de componentes chamado Indy (Internet Direct). Trata-se de um projeto de componentes código-aberto, cuja equipe de desenvolvimento é liderada por Chad Z. Hower, que oferece suporte aos protocolos de rede mais conhecidos e utilizados. Antigamente, esses componentes eram chamados WinShoes, como um trocadilho com WinSocks, abreviação de Windows Sockets, o nome da biblioteca de sockets do Windows. Um socket é uma combinação de um endereço IP com uma porta. Representa uma conexão entre dois processos, que podem estar em uma mesma máquina ou em máquinas diferentes. A biblioteca WinSocks é utilizada como um padrão para a criação de programas que utilizem Internet, Intranet ou qualquer outro tipo de comunicação por rede no Windows, independentemente do protocolo utilizado. Normalmente, ela é utilizada para fornecer o protocolo TCP/IP para os programas, mas também pode fornecer outros protocolos, como Novell (IPX/SPX), UDP, ICMP, NetBIOS, entre outros. A proposta dos componentes Indy é encapsular os protocolos fornecidos por essa e outras bibliotecas do Windows, provendo esses protocolos às aplicações desenvolvidas utilizando a linguagem de programação Delphi. Eles oferecem suporte aos procolos IP, TCP, UDP, RAW, SMTP, POP3, NNTP, HTTP, entre outros, em um total de mais de 100 protocolos de alto nível. Argos – Sistema de controle de monitoria – 89 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE – CAMPUS ARACAJU COORDENADORIA DO CURSO TÉCNICO EM INFORMÁTICA A versão 7 do ambiente de desenvolvimento Borland Delphi vem com os componentes Indy versão 9, que foi a versão utilizada no desenvolvimento do sistema. No Borland Delphi 7 os componentes Indy estão distribuídos em 5 paletas: a) Indy Clients: contém os componentes que encapsulam os clientes, que, por definição, são os que iniciam a comunicação. Normalmente, um cliente se comunica com apenas um servidor por vez. Se um programa necessita se comunicar com vários servidores ao mesmo tempo, deve apresentar vários implementação clientes. do sistema Dessa os paleta foram componentes utilizados IdTCPClient na e IdUDPClient, que representam os clientes dos protocolos TCP e UDP, respectivamente; b) Indy Servers: contém os componentes que encapsulam os servidores, que, por definição, são os que recebem, processam e respondem a requisições dos clientes. Normalmente, um servidor pode se conectar a vários clientes simultaneamente. Cada conexão com um cliente representa, no entanto, um socket diferente. Dessa paleta foram utilizados na implementação do sistema os componentes IdTCPServer e IdUDPServer, que representam os servidores dos protocolos TCP e UDP, respectivamente; c) Indy Intercepts: novidade dos componentes Indy 9 em relação à versão anterior (Indy 8), que acompanhava o Borland Delphi 6. Contém componentes que realizam encriptação, decriptação, compressão e descompressão dos dados que trafegam pela rede e também depuração e registro de eventos de rede. Nenhum desses componentes foi utilizado na implementação do sistema; d) Indy I/O Handlers: outra novidade da versão 9 dos componentes Indy em relação à anterior. Contém componentes que permitem implementar clientes ou servidores partindo do baixo nível. Nenhum desses componentes foi utilizado na implementação do sistema; e) Indy Misc: contém componentes com funções diversas, que podem estar relacionadas ou não à comunicação em rede. Dessa paleta foi utilizado na Argos – Sistema de controle de monitoria – 90 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE – CAMPUS ARACAJU COORDENADORIA DO CURSO TÉCNICO EM INFORMÁTICA implementação do sistema o componente IdAntiFreeze, que melhora o tempo de resposta de interface do programa enquanto o mesmo encontra-se realizando alguma comunicação pela rede. Os componentes Indy podem ser facilmente reconhecidos, pois todos eles têm seu nome iniciado pelo prefixo Id. No código-fonte do sistema, eles se encontram inseridos no DataModule e são utilizados pelo objeto Rede para realizar a comunicação entre as aplicações cliente e servidor. Sua utilização é bastante simples, porque seus desenvolvedores seguiram o padrão da Borland em termos de notação e funcionamento. Assim, para tentar estabelecer conexão com o servidor, deve-se chamar o método Connect (conectar, em inglês). Se a conexão não for estabelecida, uma exceção será gerada. Os componentes clientes e servidores também dispoem de eventos que são disparados quando uma nova conexão é estabelecida ou quando uma requisição é recebida. Já em termos de funcionamento, as rotinas dos componentes Indy se assemelham às rotinas de operações de leitura e escrita em arquivos da linguagem Delphi, uma vez que há comandos para "escrever" (enviar mensagens) e "ler" (receber respostas) dados através da rede. Sua velocidade nessas operações, no entanto, pode ser menor, pois depende da velocidade da conexão. Atualmente, a versão 9 ainda é a versão mais estável dos componentes Indy, encontrada nas versões mais recentes do Delphi e do C++ Builder, lançadas em 2010. Há uma nova versão dos componentes Indy ainda em desenvolvimento, que está disponível para várias linguagens de programação além do Delphi, como C#, C++, Visual Basic.NET e outras linguagens baseadas na plataforma .NET, e ainda será portada para a linguagem Free Pascal, o equivalente livre do Borland Delphi. Como o projeto Indy se expandiu e passou a englobar outros projetos menores em outras áreas, aqueles componentes passaram a ser chamados Indy Sockets, para diferenciar dos outros projetos pertencentes ao projeto Indy. Mais informações sobre os componentes Indy podem ser obtidas em About.com (2010), Cantù (2003), The Indy Project (2010) ou ainda consultando-se a ajuda do Borland Delphi 7, que é a fonte de informação mais completa e detalhada a respeito desses componentes. Argos – Sistema de controle de monitoria – 91 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE – CAMPUS ARACAJU COORDENADORIA DO CURSO TÉCNICO EM INFORMÁTICA Microsoft Data Access Components (MDAC) Alguns sistemas que utilizam bancos de dados são desenvolvidos em torno de tecnologias em que o mecanismo de acesso ao banco de dados fica embutido na aplicação, sendo de responsabilidade do programador desenvolver esse mecanismo. Em outros casos, a aplicação depende que o próprio SGBD execute as operações de consulta ao banco, como acontece com os sistemas desenvolvidos utilizando Paradox, Access e Visual FoxPro. À medida que os aplicativos comerciais foram se tornando mais sofisticados, os programadores passaram a buscar mecanismos que os dispensassem de implementar o acesso ao banco de dados e os permitissem dedicar suas horas de trabalho a desenvolver os recursos específicos de suas aplicações. Tem se tornado cada vez mais comum a utilização de um mecanismo intermediário entre a aplicação e o banco de dados, com o objetivo não apenas de simplificar a aplicação, como também permitir que o acesso aos dados seja feito de forma mais flexível, e o programa possa se conectar aos mais variados tipos de fontes de dados. Uma das empresas que ao longo dos anos tem pesquisado e criado várias tecnologias nesse sentido é a Microsoft. Como parte integrante de seu sistema operacional, o Windows, ela distribui o Microsoft Data Access Components (MDAC), que é um framework de tecnologias correlacionadas que permitem aos programadores desenvolverem aplicações que acessem dados de maneira uniforme em praticamente qualquer fonte de dados existente. O objetivo de sua utilização é permitir ao programador focar seu desenvolvimento no acesso aos dados em si, sem se preocupar com seus pormenores, como o hardware, a arquitetura, o banco de dados, as rotinas ou programas que são utilizados para promover esse acesso. O MDAC também é conhecido por Windows Data Access Components (Windows DAC), por ser distribuído como parte integrante do Windows. As principais tecnologias que o constituem são as interfaces Open Database Connectivity (ODBC), OLE DB e ActiveX Data Objects (ADO). Esta seção dedica-se a explicar os conceitos que as envolvem e como elas foram implementados no sistema. Argos – Sistema de controle de monitoria – 92 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE – CAMPUS ARACAJU COORDENADORIA DO CURSO TÉCNICO EM INFORMÁTICA A interface ODBC, criada em 1992, é uma interface de acesso padrão a SGBDs. Ela é implementada a nível de sistema operacional, sendo portanto de baixo nível e alta performance. Possui uma versão própria da linguagem SQL com a qual um programa pode se comunicar com diferentes aplicações de banco de dados de forma transparente. Utilizando a interface ODBC, um mesmo programa pode utilizar, por exemplo, ora o MySQL, ora o Access, ora o SQL Server sem a necessidade de implementar, para cada um deles, uma rotina de acesso específica. A utilização da interface ODBC é caracterizada pela interação entre três componentes: a) Uma aplicação com suporte a ODBC: é a aplicação que o usuário visualiza na tela do seu computador, que deve acessar um banco de dados via ODBC, sendo por isso chamada "cliente ODBC". É fácil desenvolver aplicações com suporte a ODBC, uma vez que várias linguagens de programação já trazem rotinas próprias para a utilização dessa interface, como Delphi, Free Pascal, Visual Basic, entre outras; b) Um SGBD: é a aplicação de banco de dados ao qual o cliente ODBC será conectado, sendo por isso chamado "servidor ODBC" ou "fonte de dados ODBC". Esse componente é invisível ao usuário; c) Um conector ODBC: é o componente que fará a comunicação entre o cliente e o servidor ODBC. Esse componente também é invisível ao usuário. A comunicação entre esses três componentes acontece da seguinte forma: o cliente ODBC envia comandos ODBC ao SGBD, solicitando a realização de alguma operação em determinada base de dados. No entanto, o SGBD não recebe a solicitação até que o comando seja interpretado pelo seu conector ODBC, que transformará o comando enviado pelo cliente ODBC em um comando que o SGBD possa interpretar. Este então recebe a solicitação, realiza o devido processamento, e responde ao cliente ODBC. A resposta, assim como a requisição, não é feita de forma direta: a resposta do SGBD passa primeiramente pelo conector ODBC, que a transformará em uma resposta passível de interpretação pelo cliente ODBC. Argos – Sistema de controle de monitoria – 93 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE – CAMPUS ARACAJU COORDENADORIA DO CURSO TÉCNICO EM INFORMÁTICA A principal limitação da interface ODBC é que ela se aplica apenas a SGBDs relacionais. Alguns anos após seu lançamento, à medida se intensificou a utilização de linguagens e bancos de dados orientados a objetos, novas formas de acesso aos dados se fizeram necessárias. Foi então que, após ter lançado várias tecnologias que posteriormente foram descontinuadas, a Microsoft lançou em 1996 a OLE DB. Como sucessora da interface ODBC, a interface OLE DB é muito mais funcional e geral, pois não impõe nenhuma limitação específica à sintaxe dos comandos utilizados para realizar a consulta ou à forma dos dados acessados, exigindo apenas que os mesmos possam ser obtidos em forma de tabelas. Dessa forma, ela permite não apenas o acesso a bancos de dados, como também a todos os tipos de dados, estejam eles armazenados em bancos de dados ou arquivos físicos, como planilhas eletrônicas, por exemplo. Seu funcionamento, no entanto, é semelhante ao da interface ODBC no sentido de que a aplicação que a utiliza necessita de um conector para prover sua comunicação com uma fonte de dados. O primeiro conector OLE DB desenvolvido foi o Microsoft OLE DB Provider for ODBC (MSDASQL), que fornece às aplicações desenvolvidas utilizando a interface OLE DB acesso aos bancos de dados que dispõem de conectores ODBC. A interface ODBC portanto não foi descontinuada, passando a ser utilizada em conjunto com a interface OLE DB para conectar aplicações a bancos de dados, enquanto a utilização exclusiva da OLE DB se tornou reservada a casos mais complexos, que necessitassem uma maior sofisticação, como acesso a planilhas. Uma limitação apresentada pela OLE DB, por sua vez, é o fato de ela ainda ser uma interface de baixo nível, semelhante à interface ODBC. Ela não poderia, portanto, ser utilizada pelas aplicações web, que começavam naquela época a emergir no mercado. O surgimento de novas necessidades faz com que surjam novas tecnologias e foi então que a Microsoft lançou no mesmo ano a interface ADO, que representa uma abstração de alto nível das fontes de dados que antes eram acessadas por meio da interface OLE DB. A partir de então, a interface ADO se tornou, dentre as disponibilizadas pelo MDAC, a interface definitiva a ser utilizada por qualquer sistema, seja ele desktop ou Argos – Sistema de controle de monitoria – 94 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE – CAMPUS ARACAJU COORDENADORIA DO CURSO TÉCNICO EM INFORMÁTICA web, para se conectar aos bancos de dados, ainda que existam outras interfaces intermediárias nessa conexão, o que é invisível à aplicação. É possível desenvolver uma aplicação em linguagens de baixo nível, como o C++, que acessem diretamente uma fonte de dados via OLE DB ou ODBC, mas não é usual. Dentre os componentes padrão que acompanham o ambiente de desenvolvmento Borland Delphi, encontram-se os componentes dbGo, agrupados na paleta ADO, que fazem uso da interface ADO para prover a comunicação entre as aplicações nele desenvolvidas e os bancos de dados. Durante a implementação do sistema, dois desses componentes, o AdoConnection e o AdoQuery, foram utilizados para promover a comunicação entre as aplicações cliente e servidor e o banco de dados MySQL através do seu conector ODBC. A Figura 28 ilustra de forma mais simples e resumida essa comunicação. A preferência pela utilização dessas tecnologias para realizar a conexão do sistema com o banco de dados se deu inicialmente não por sua flexibilidade, mas pela falta de outro mecanismo que conseguisse promover a conexão efetiva do sistema com a versão mais recente do MySQL. A decisão foi tomada após várias tentativas de conexão frustradas utilizando tecnologias como a Borland Database Engine (BDE), os componentes dbExpress, os componentes ZeosLib e do sucesso obtido com a combinação de ADO e ODBC. Uma pesquisa mais profunda sobre essas tecnologias acabou por tornar a decisão em utilizá-las definitiva. Há basicamente três vantagens na comunicação entre aplicação e banco de dados através das interfaces ADO e ODBC: a) Os desenvolvedores de aplicativos não precisam se preocupar quanto ao SGBD que será utilizado pelos usuários de suas aplicações. Qualquer aplicação com suporte a ODBC pode acessar qualquer SGBD para o qual exista um conector ODBC. Exemplos de SGBDs que dispõem de conectores ODBC incluem Access, DB2, Firebird, Informix, MySQL, Oracle, Paradox, PostgreSQL, SQL Server, SQLBase, entre outros. Se o usuário necessitar mudar o banco de dados utilizado, basta mudar o conector utilizado pela sua aplicação para fazer o acesso ao banco; Argos – Sistema de controle de monitoria – 95 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE – CAMPUS ARACAJU COORDENADORIA DO CURSO TÉCNICO EM INFORMÁTICA SISTEMA DE GERENCIAMENTO DE MONITORIA INTERFACE ADO INTERFACE OLE DB CONECTOR: MSDASQL INTERFACE ODBC CONECTOR: MYSQL ODBC CONNECTOR BANCO DE DADOS MYSQL Figura 28 – Comunicação entre o sistema e o banco de dados através do MDAC b) Como consequência, os desenvolvedores também não precisam se preocupar com possíveis atualizações do SGBD utilizado por suas aplicações: caso o SGBD sofra um atualização e por isso se torne inacessível à aplicação, basta atualizar o conector ODBC; c) Finalmente, para o desenvolvedor de bancos de dados, oferecer suporte à interface ODBC significa facilitar o acesso ao seu produto: lançando um conector ODBC específico para seu SGBD, ele permitirá que qualquer aplicação que já possua suporte a ODBC o utilize. Apesar de não terem sido realizados testes nesse sentido, acredita-se, pelas informações obtidas durante as pesquisas, que o sistema seja capaz de utilizar qualquer SGBD desde que seja instalado no sistema operacional um conector ODBC apropriado para o mesmo. Mais informações sobre interfaces, fontes de dados e conectores ODBC, OLE DB e ADO e componentes dbGo podem ser obtidas em About.com (2010), Cantù (2003), Microsoft (2010) e na ajuda do Borland Delphi 7. Argos – Sistema de controle de monitoria – 96 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE – CAMPUS ARACAJU COORDENADORIA DO CURSO TÉCNICO EM INFORMÁTICA Funções da API do Windows Uma Application Programming Interface (API) é um conjunto de especificações e rotinas que um programa pode seguir para acessar e utilizar serviços e recursos oferecidos por outro programa, que implementa a API. Ela serve como uma interface entre diferentes programas e facilita a interação entre os mesmos da mesma maneira como a interface gráfica facilita a interação entre seres humanos e computadores. O sistema operacional Windows é composto pelo núcleo do sistema e por várias bibliotecas (ou, abreviadamente, DLLs, do inglês Dynamic Link Libraries) que complementam os recursos desse núcleo. Essas bibliotecas contêm dentro de si diversas constantes, estruturas de dados, funções e procedimentos que compõem a chamada API do Windows e podem ser acessadas por qualquer aplicação em execução sobre o sistema operacional. Na verdade, enquanto estão sendo executados, os programas fazem chamadas à API do Windows o tempo todo, ainda que isso seja invisível ao usuário ou ao desenvolvedor. A maioria dos desenvolvedores certamente desconhece esse fato devido à utilização do Borland Delphi, que, sendo um ambiente de desenvolvimento integrado, tem como função facilitar e agilizar o desenvolvimento, e uma de suas características nesse sentido é dispensar ao desenvolvedor a utilização das funções da API do Windows para executar tarefas rotineiras: as próprias units que compõem a linguagem de programação Delphi definem objetos, classes, tipos de dados e componentes que encapsulam em si os elementos da API do Windows. Para exibir um form na tela, por exemplo, tudo que o desenvolvedor precisa codificar no seu programa é a chamada ao método Show do objeto Form, quando na verdade são necessárias chamadas a diversas funções da API do Windows para desenhar o form desejado na tela. O que acontece é que esse método encapsula essas chamadas. Assim, elas são feitas durante a execução do programa de forma transparente pelo objeto Form. Quando uma aplicação necessita de mais recursos do que os oferecidos pela linguagem de programação, no entanto, torna-se necessário utilizar as próprias Argos – Sistema de controle de monitoria – 97 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE – CAMPUS ARACAJU COORDENADORIA DO CURSO TÉCNICO EM INFORMÁTICA funções da API do Windows para implementá-los. As funções mais comuns da API do Windows são declaradas na unit Windows, que acompanha o ambiente de desenvolvimento Borland Delphi. Assim, o usuário não precisa saber quais bibliotecas as implementam nem fazer nenhum tipo de preparação prévia quando necessitar utilizá-las. Uma vez que a unit Windows esteja declarada na cláusula uses do código-fonte do programa, é possível chamar qualquer função da API do Windows simplesmente invocando seu nome, assim como é feito com qualquer outra função da própria linguagem de programação. Outras units que declaram funções da API do Windows são a ShellAPI, a ComObj e a ShlObj. Se a função desejada não se encontrar declarada em nenhuma dessas units, será necessário declará-la na unit em que se deseja utilizá-la. Isso pode ser feito provendo sua declaração na cláusula interface e sua definição externa na cláusula implementation ou unir ambas em uma só sentença na cláusula implementation da unit. Uma vez que a função esteja corretamente declarada e definida, é possível chamá-la simplesmente invocando seu nome, assim como é feito com qualquer outra função definida dentro do programa. Todas as funções da API do Windows que foram utilizadas para desenvolver o Sistema de controle SistemaOperacional, de monitoria cujo foram código-fonte encapsuladas se encontra pelo dentro objeto da unit uSistemaOperacional. Os outros componentes do sistema fazem utilização dessas funções de forma indireta através desse objeto. Houve uma função da API do Windows que era necessária ao desenvolvimento do programa e não foi implementada dentro das units do Delphi. Ela teve que ser implementada dentro da unit uSistemaOperacional. Foi a CreateProcessWithLogonW, pertencente à biblioteca advapi32.dll. Sua utilização se deu como explicado acima: sua declaração foi feita na cláusula interface e sua definição externa na cláusula implementation. Ela é chamada dentro do método ExecutarComo, cuja finalidade é executar um programa com os níveis de privilégio de outro usuário do Windows. Argos – Sistema de controle de monitoria – 98 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE – CAMPUS ARACAJU COORDENADORIA DO CURSO TÉCNICO EM INFORMÁTICA Maiores informações a respeito das funções da API do Windows podem ser obtidas através da análise do código-fonte das units anteriormente citadas, que se encontram na pasta "Source\Rtl\Win" dentro do diretório onde o Borland Delphi é instalado, ou consultar a ajuda, que contém informações a respeito de todas as funções da API do Windows já implementadas pela linguagem de programação Delphi. A Microsoft oferece também suporte aos desenvolvedores através do portal Microsoft Developer Network (MSDN), onde podem ser encontradas documentação e ferramentas necessárias para desenvolver programas baseados na API do Windows e em outras tecnologias relacionadas ao sistema. É importante observar que as funções da API do Windows são sempre documentadas para as linguagens C ou C++, uma vez que são desenvolvidas nessas linguagens. Assim, é necessário ter um conhecimento mínimo das estruturas de dados presentes nessas linguagens antes de procurar informações sobre essas funções. Um exemplo disso são as funções que retornam valores lógicos como resultado de sua execução: se fossem documentadas para a linguagem Delphi, seus possíveis valores de retorno seriam apenas True ou False, mas como são documentadas para as linguagens C e C++, outros possíveis valores são 0 e 1, pois nessas linguagens de programação os valores 0 e 1 são equivalentes a True e False, respectivamente. Argos – Sistema de controle de monitoria – 99 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE – CAMPUS ARACAJU COORDENADORIA DO CURSO TÉCNICO EM INFORMÁTICA ANEXO A – ESCOLHA DO NOME ARGOS Figura 29 – Hermes, Argos Panoptes e Io Imagem retirada da Internet. Disponível em <http://mithologywithapurpose.wordpress.com/2007/07/04/argus-panoptes/>. Acesso em 27/12/2010. [...] Outro episódio de ciúme de Hera foi quando Zeus, por saber que Hera estava chegando e ele estava com uma de suas amantes (Io), a transforma rapidamente em uma vaca. Hera, muito desconfiada, pede para Zeus aquela vaca de presente e Zeus não podendo negar um presente, o dá para sua esposa. Ela então coloca aquela novilha aos cuidados de Argos, um monstro de muitos olhos, que ao dormir nunca fechava todos com isso a novilha estava sempre sendo observada. Mas Zeus ao ver o sofrimento da amante pede para que Hermes mate Argos. Então, Hermes toca uma música, fazendo Argos dormir completamente, fechando todos os olhos. Após isso, Hermes arranca-lhe a cabeça. Hera muito triste pelo acontecimento, pega todos os olhos e coloca na cauda de seu pavão, onde eles estão até hoje. [...] (Texto retirado da Internet. Disponível em: <http://www.infoescola.com/mitologia-grega/hera/> Acesso em 27/12/2010) Argos – Sistema de controle de monitoria – 100 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE – CAMPUS ARACAJU COORDENADORIA DO CURSO TÉCNICO EM INFORMÁTICA ANEXO B – LICENÇA PÚBLICA GERAL DO GNU (GPL) This is an unofficial translation of the GNU General Public License into Portuguese. It was not published by the Free Software Foundation, and does not legally state the distribution terms for software that uses the GNU GPL--only the original English text of the GNU GPL does that. However, we hope that this translation will help Portuguese speakers understand the GNU GPL better. Esta é uma tradução não-oficial da GNU General Public License para o Português. Ela não é publicada pela Free Software Foundation e não traz os termos de distribuição legal do software que usa a GNU GPL – estes termos estão contidos apenas no texto da GNU GPL original em inglês. No entanto, esperamos que esta tradução ajudará no melhor entendimento da GNU GPL em Português. Versão 2, Junho de 1991 Direitos Autorais Reservados © 1989, 1991 Free Software Foundation, Inc. 59 Temple Place, Suite [conjunto] 330, Boston, MA [Massachusetts] 02111-1307 USA [Estados Unidos da América] É permitido a qualquer pessoa copiar e distribuir cópias sem alterações deste documento de licença, sendo vedada, entretanto, qualquer modificação. Introdução As licenças da maioria dos softwares são elaboradas para suprimir sua liberdade de compartilhá-los e modificá-los. A Licença Pública Geral do GNU, ao contrário, visa garantir sua liberdade de compartilhar e modificar softwares livres para assegurar que o software seja livre para todos os seus usuários. Esta Licença Pública Geral é aplicável à maioria dos softwares da Free Software Foundation [Fundação do Software Livre] e a qualquer outro programa cujos autores se Argos – Sistema de controle de monitoria – 101 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE – CAMPUS ARACAJU COORDENADORIA DO CURSO TÉCNICO EM INFORMÁTICA comprometerem a usá-la. (Em vez dela, alguns outros softwares da Free Software Foundation são cobertos pela Licença Pública Geral de Biblioteca do GNU). Você também poderá aplicá-la aos seus programas. Quando falamos de software livre, estamos nos referindo à liberdade, não ao preço. Nossas Licenças Públicas Gerais visam garantir que você tenha a liberdade de distribuir cópias de software livre (e cobrar por isso se desejar), que receba código-fonte ou possa obtê-lo se desejar, que possa modificá-lo ou usar partes dele em novos programas livres; finalmente, que você tenha ciência de que pode fazer tudo isso. Para proteger seus direitos, necessitamos fazer restrições que proíbem que alguém negue esses direitos a você ou que solicite que você renuncie a eles. Essas restrições se traduzem em determinadas responsabilidades que você deverá assumir, se for distribuir cópias do software ou modificá-lo. Por exemplo, se você distribuir cópias de algum desses programas, tanto gratuitamente como mediante uma taxa, você terá de conceder aos receptores todos os direitos que você possui. Você terá de garantir que, também eles, recebam ou possam obter o código-fonte. E você terá a obrigação de exibir a eles esses termos, para que eles conheçam seus direitos. Protegemos seus direitos através de dois passos: (1) estabelecendo direitos autorais sobre o software e (2) concedendo a você esta licença, que dá permissão legal para copiar, distribuir e/ou modificar o software. Além disso, para a proteção de cada autor e a nossa, queremos ter certeza de que todos entendam que não há nenhuma garantia para este software livre. Se o software for modificado por alguém e passado adiante, queremos que seus receptores saibam que o que receberam não é o original, de forma que quaisquer problemas introduzidos por terceiros não afetem as reputações dos autores originais. Finalmente, qualquer programa livre é constantemente ameaçado por patentes de software. Queremos evitar o risco de que redistribuidores de um programa livre obtenham individualmente licenças sob uma patente, tornando o programa, com efeito, proprietário. Para impedir isso, deixamos claro que qualquer Argos – Sistema de controle de monitoria – 102 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE – CAMPUS ARACAJU COORDENADORIA DO CURSO TÉCNICO EM INFORMÁTICA patente deve ser licenciada para o uso livre por parte de qualquer pessoa ou, então, simplesmente não deve ser licenciada. Os exatos termos e condições para cópia, distribuição e modificação seguem abaixo. Termos e condições para cópia, distribuição e modificação 0. Esta Licença se aplica a qualquer programa ou outra obra que contenha um aviso inserido pelo respectivo titular dos direitos autorais, informando que a referida obra pode ser distribuída em conformidade com os termos desta Licença Pública Geral. O termo "Programa", utilizado abaixo, referese a qualquer programa ou obra, e o termo "obras baseadas no Programa" significa tanto o Programa, como qualquer obra derivada nos termos da legislação de direitos autorais: isto é, uma obra contendo o Programa ou uma parte dele, tanto de forma idêntica como com modificações, e/ou traduzida para outra linguagem. (Doravante, o termo "modificação" inclui também, sem reservas, a tradução). Cada licenciado, doravante, será denominado "você". Outras atividades que não a cópia, distribuição e modificação, não são cobertas por esta Licença; elas estão fora de seu escopo. O ato de executar o Programa não tem restrições e o resultado gerado a partir do Programa encontra-se coberto somente se seu conteúdo constituir uma obra baseada no Programa (independente de ter sido produzida pela execução do Programa). Na verdade, isto dependerá daquilo que o Programa faz. 1. Você poderá fazer cópias idênticas do código-fonte do Programa ao recebê-lo e distribui-las, em qualquer mídia ou meio, desde que publique, de forma ostensiva e adequada, em cada cópia, um aviso de direitos autorais (ou copyright) apropriado e uma notificação sobre a exoneração de garantia; mantenha intactas as informações, avisos ou notificações Argos – Sistema de controle de monitoria – 103 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE – CAMPUS ARACAJU COORDENADORIA DO CURSO TÉCNICO EM INFORMÁTICA referentes a esta Licença e à ausência de qualquer garantia; e forneça a quaisquer outros receptores do Programa uma cópia desta Licença junto com o Programa. Você poderá cobrar um valor pelo ato físico de transferir uma cópia, e você pode oferecer, se quiser, a proteção de uma garantia em troca de um valor. 2. Você poderá modificar sua cópia ou cópias do Programa ou qualquer parte dele, formando, dessa forma, uma obra baseada no Programa, bem como copiar e distribuir essas modificações ou obra, de acordo com os termos da Cláusula 1 acima, desde que você também atenda a todas as seguintes condições: a) Você deve fazer com que os arquivos modificados contenham avisos, em destaque, informando que você modificou os arquivos, bem como a data de qualquer modificação. b) Você deve fazer com que qualquer obra que você distribuir ou publicar, que no todo ou em parte contenha o Programa ou seja dele derivada, ou derivada de qualquer parte dele, seja licenciada como um todo sem qualquer custo para todos terceiros nos termos desta licença. c) Se o programa modificado normalmente lê comandos interativamente quando executado, você deverá fazer com que ele, ao começar a ser executado para esse uso interativo em sua forma mais simples, imprima ou exiba um aviso incluindo o aviso de direitos autorais (ou copyright) apropriado, além de uma notificação de que não há garantia (ou, então, informando que você oferece garantia) e informando que os usuários poderão redistribuir o programa de acordo com essas condições, esclarecendo ao usuário como visualizar uma cópia desta Licença. (Exceção: se o Programa em si for interativo mas não imprimir normalmente avisos como esses, não é obrigatório que a sua obra baseada no Programa imprima um aviso). Argos – Sistema de controle de monitoria – 104 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE – CAMPUS ARACAJU COORDENADORIA DO CURSO TÉCNICO EM INFORMÁTICA Essas exigências se aplicam à obra modificada como um todo. Se partes identificáveis dessa obra não forem derivadas do Programa e puderem ser consideradas razoavelmente como obras independentes e separadas por si próprias, nesse caso, esta Licença e seus termos não se aplicarão a essas partes quando você distribui-las como obras separadas. Todavia, quando você distribui-las como parte de um todo que constitui uma obra baseada no Programa, a distribuição deste todo terá de ser realizada em conformidade com esta Licença, cujas permissões para outros licenciados se estenderão à obra por completo e, conseqüentemente, a toda e qualquer parte, independentemente de quem a escreveu. Portanto, esta cláusula não tem a intenção de afirmar direitos ou contestar os seus direitos sobre uma obra escrita inteiramente por você; a intenção é, antes, de exercer o direito de controlar a distribuição de obras derivadas ou obras coletivas baseadas no Programa. d) Além do mais, a simples agregação de outra obra que não seja baseada no Programa a ele (ou a uma obra baseada no Programa) em um volume de mídia ou meio de armazenamento ou distribuição, não inclui esta outra obra no âmbito desta Licença. 3. Você poderá copiar e distribuir o Programa (ou uma obra baseada nele, de acordo com a Cláusula 2) em código-objeto ou formato executável de acordo com os termos das Cláusulas 1 e 2 acima, desde que você também tome uma das providências seguintes: a) Incluir o código-fonte correspondente completo, passível de leitura pela máquina, o qual terá de ser distribuído de acordo com as Cláusulas 1 e 2 acima, em um meio ou mídia habitualmente usado para intercâmbio de software; ou, b) Incluir uma oferta por escrito, válida por pelo menos três anos, para fornecer a qualquer terceiro, por um custo que não seja superior ao seu custo de fisicamente realizar a distribuição da fonte, uma cópia Argos – Sistema de controle de monitoria – 105 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE – CAMPUS ARACAJU COORDENADORIA DO CURSO TÉCNICO EM INFORMÁTICA completa passível de leitura pela máquina, do código-fonte correspondente, a ser distribuído de acordo com as Cláusulas 1 e 2 acima, em um meio ou mídia habitualmente usado para intercâmbio de software; ou, c) Incluir as informações recebidas por você, quanto à oferta para distribuir o código-fonte correspondente. (Esta alternativa é permitida somente para distribuição não-comercial e apenas se você tiver recebido o programa em código-objeto ou formato executável com essa oferta, de acordo com a letra b, acima). O código-fonte de uma obra significa o formato preferencial da obra para que sejam feitas modificações na mesma. Para uma obra executável, o código-fonte completo significa o código-fonte inteiro de todos os módulos que ela contiver, mais quaisquer arquivos de definição de interface associados, além dos scripts usados para controlar a compilação e instalação do executável. Entretanto, como uma exceção especial, o código-fonte distribuído não precisa incluir nada que não seja normalmente distribuído (tanto no formato fonte como no binário) com os componentes principais (compilador, kernel e assim por diante) do sistema operacional no qual o executável é executado, a menos que este componente em si acompanhe o executável. Se a distribuição do executável ou código-objeto for feita mediante a permissão de acesso para copiar, a partir de um local designado, então, a permissão de acesso equivalente para copiar o código-fonte a partir do mesmo local será considerada como distribuição do código-fonte, mesmo que os terceiros não sejam levados a copiar a fonte junto com o código-objeto. 4. Você não poderá copiar, modificar, sublicenciar ou distribuir o Programa, exceto conforme expressamente estabelecido nesta Licença. Qualquer tentativa de, de outro modo, copiar, modificar, sublicenciar ou distribuir o Programa será inválida, e automaticamente rescindirá seus direitos sob Argos – Sistema de controle de monitoria – 106 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE – CAMPUS ARACAJU COORDENADORIA DO CURSO TÉCNICO EM INFORMÁTICA esta Licença. Entretanto, terceiros que tiverem recebido cópias ou direitos de você de acordo esta Licença não terão suas licenças rescindidas, enquanto estes terceiros mantiverem o seu pleno cumprimento. 5. Você não é obrigado a aceitar esta Licença, uma vez que você não a assinou. Porém, nada mais concede a você permissão para modificar ou distribuir o Programa ou respectivas obras derivativas. Tais atos são proibidos por lei se você não aceitar esta Licença. Conseqüentemente, ao modificar ou distribuir o Programa (ou qualquer obra baseada no Programa), você estará manifestando sua aceitação desta Licença para fazê-lo, bem como de todos os seus termos e condições para copiar, distribuir ou modificar o Programa ou obras nele baseadas. 6. Cada vez que você redistribuir o Programa (ou obra baseada no Programa), o receptor receberá, automaticamente, uma licença do licenciante original, para copiar, distribuir ou modificar o Programa, sujeito a estes termos e condições. Você não poderá impor quaisquer restrições adicionais ao exercício, pelos receptores, dos direitos concedidos por este instrumento. Você não tem responsabilidade de promover o cumprimento por parte de terceiros desta licença. 7. Se, como resultado de uma sentença judicial ou alegação de violação de patente, ou por qualquer outro motivo (não restrito às questões de patentes), forem impostas a você condições (tanto através de mandado judicial, contrato ou qualquer outra forma) que contradigam as condições desta Licença, você não estará desobrigado quanto às condições desta Licença. Se você não puder atuar como distribuidor de modo a satisfazer simultaneamente suas obrigações sob esta licença e quaisquer outras obrigações pertinentes, então, como conseqüência, você não poderá distribuir o Programa de nenhuma forma. Por exemplo, se uma licença sob uma patente não permite a redistribuição por parte de todos aqueles que tiverem recebido cópias, direta ou indiretamente de você, sem o pagamento de royalties, então, a única forma de cumprir tanto com esta exigência quanto com esta licença será deixar de distribuir, por completo, Argos – Sistema de controle de monitoria – 107 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE – CAMPUS ARACAJU COORDENADORIA DO CURSO TÉCNICO EM INFORMÁTICA o Programa. Se qualquer parte desta Cláusula for considerada inválida ou não executável, sob qualquer circunstância específica, o restante da cláusula deverá continuar a ser aplicado e a cláusula, como um todo, deverá ser aplicada em outras circunstâncias. Esta cláusula não tem a finalidade de induzir você a infringir quaisquer patentes ou direitos de propriedade, nem de contestar a validade de quaisquer reivindicações deste tipo; a única finalidade desta cláusula é proteger a integridade do sistema de distribuição do software livre, o qual é implementado mediante práticas de licenças públicas. Muitas pessoas têm feito generosas contribuições à ampla gama de software distribuído através desse sistema, confiando na aplicação consistente deste sistema; cabe ao autor/doador decidir se deseja distribuir software através de qualquer outro sistema e um licenciado não pode impor esta escolha. Esta cláusula visa deixar absolutamente claro o que se acredita ser uma conseqüência do restante desta Licença. 8. Se a distribuição e/ou uso do Programa for restrito em determinados países, tanto por patentes ou por interfaces protegidas por direito autoral, o titular original dos direitos autorais que colocar o Programa sob esta Licença poderá acrescentar uma limitação geográfica de distribuição explícita excluindo esses países, de modo que a distribuição seja permitida somente nos países ou entre os países que não foram excluídos dessa forma. Nesse caso, esta Licença passa a incorporar a limitação como se esta tivesse sido escrita no corpo desta Licença. 9. A Free Software Foundation poderá de tempos em tempos publicar novas versões e/ou versões revisadas da Licença Pública Geral. Essas novas versões serão semelhantes em espírito à presente versão, mas podem diferenciar-se, porém, em detalhe, para tratar de novos problemas ou preocupações. Cada versão recebe um número de versão distinto. Se o Programa especificar um número de versão desta Licença que se aplique a ela e a Argos – Sistema de controle de monitoria – 108 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE – CAMPUS ARACAJU COORDENADORIA DO CURSO TÉCNICO EM INFORMÁTICA "qualquer versão posterior", você terá a opção de seguir os termos e condições tanto daquela versão como de qualquer versão posterior publicada pela Free Software Foundation. Se o Programa não especificar um número de versão desta Licença, você poderá escolher qualquer versão já publicada pela Free Software Foundation. 10. Se você desejar incorporar partes do Programa em outros programas livres cujas condições de distribuição sejam diferentes, escreva ao autor solicitando a respectiva permissão. Para software cujos direitos autorais sejam da Free Software Foundation, escreva para ela; algumas vezes, abrimos exceções para isso. Nossa decisão será guiada pelos dois objetivos de preservar a condição livre de todos os derivados de nosso software livre e de promover o compartilhamento e reutilização de software, de modo geral. Exclusão de garantia 11. COMO O PROGRAMA É LICENCIADO SEM CUSTO, NÃO HÁ NENHUMA GARANTIA PARA O PROGRAMA, NO LIMITE PERMITIDO PELA LEI APLICÁVEL. EXCETO QUANDO DE OUTRA FORMA ESTABELECIDO POR ESCRITO, OS TITULARES DOS DIREITOS AUTORAIS E/OU OUTRAS PARTES, FORNECEM O PROGRAMA "NO ESTADO EM QUE SE ENCONTRA", SEM NENHUMA GARANTIA DE QUALQUER TIPO, TANTO EXPRESSA COMO IMPLÍCITA, INCLUINDO, DENTRE OUTRAS, COMERCIABILIDADE AS E GARANTIAS ADEQUAÇÃO A IMPLÍCITAS UMA DE FINALIDADE ESPECÍFICA. O RISCO INTEGRAL QUANTO À QUALIDADE E DESEMPENHO DO PROGRAMA É ASSUMIDO POR VOCÊ. CASO O PROGRAMA CONTENHA DEFEITOS, VOCÊ ARCARÁ COM OS CUSTOS DE TODOS OS SERVIÇOS, REPAROS OU CORREÇÕES NECESSÁRIAS. Argos – Sistema de controle de monitoria – 109 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SERGIPE – CAMPUS ARACAJU COORDENADORIA DO CURSO TÉCNICO EM INFORMÁTICA 12. EM NENHUMA CIRCUNSTÂNCIA, A MENOS QUE EXIGIDO PELA LEI APLICÁVEL OU ACORDADO POR ESCRITO, QUALQUER TITULAR DE DIREITOS AUTORAIS OU QUALQUER OUTRA PARTE QUE POSSA MODIFICAR E/OU REDISTRIBUIR O PROGRAMA, CONFORME PERMITIDO ACIMA, SERÁ RESPONSÁVEL PARA COM VOCÊ POR DANOS, INCLUINDO ENTRE OUTROS, QUAISQUER DANOS GERAIS, ESPECIAIS, FORTUITOS OU EMERGENTES, ADVINDOS DO USO OU IMPOSSIBILIDADE DE USO DO PROGRAMA (INCLUINDO, ENTRE OUTROS, PERDAS DE DADOS OU DADOS SENDO GERADOS DE FORMA IMPRECISA, PERDAS SOFRIDAS POR VOCÊ OU TERCEIROS OU A IMPOSSIBILIDADE DO PROGRAMA DE OPERAR COM QUAISQUER OUTROS PROGRAMAS), MESMO QUE ESSE TITULAR, OU OUTRA PARTE, TENHA SIDO ALERTADA SOBRE A POSSIBILIDADE DE OCORRÊNCIA DESSES DANOS. Argos – Sistema de controle de monitoria – 110