MAC499 - Trabalho de Formatura Supervisionado

Monografia

Aluno: Renato Kosaka Araujo
Orientador: Kunio Okuda
Prof. Responsável pela disciplina: Carlos Eduardo Ferreira


Esta monografia é baseada na minha experiência de estágio na Rede SACI - http://www.saci.org.br

Índice

Natureza da organização e da atividade
Atividades realizadas
Forma de organização da equipe de trabalho e atribuição de responsabilidades
Estimativa inicial de prazos e do andamento do projeto
Métricas post-mortem do andamento do projeto
Bibliografia utilizada
Participação em treinamento
Ferramentas e técnicas utilizadas
Técnicas que pareciam relevantes para o problema
Forma de acompanhamento utilizada pelo gerente/administrador do projeto
Desafios e frustrações encontrados
Disciplinas cursadas no bcc mais relevantes para o estágio
Interação com os membros da equipe
Se fosse continuar atuando na área...
Conclusões


Natureza da organização e da atividade

Sobre a Rede SACI

A Rede SACI é uma realização da Coordenadoria Executiva de Cooperação Universitária e de Atividades Especiais da Universidade de São Paulo (CECAE-USP), da Rede Nacional de Ensino e Pesquisa (RNP), do Amankay Instituto de Estudos e Pesquisa, e do Núcleo de Computação Eletrônica da Universidade Federal do Rio de Janeiro (NCE-UFRJ). Conta com o apoio da Fundação Telefônica e da Vitae.

Além dos portadores de deficiência existem familiares, amigos, profissionais especializados, formuladores de políticas públicas, instituições de ensino e pesquisa e organizações da sociedade civil e teremos uma parcela significativa da população envolvida, direta ou indiretamente, com a questão da deficiência.

Pensando em promover o contato entre essas pessoas e entidades, a Rede SACI disponibiliza canais de comunicação para difusão de informações sobre o tema. Com isso, a SACI visa estimular a inclusão social, a melhoria da qualidade de vida e o exercício da cidadania das pessoas portadoras de deficiência.

Suas principais ferramentas de trabalho são a Internet e os Centros de Informação e Convivência (CICs). Por meio da Internet, disponibiliza aos seus usuários endereço eletrônico, suporte técnico, softwares adaptados para deficientes, além de bases de dados, listas de discussão, agenda de eventos, entre outros serviços. Já os CICs são locais de fácil acesso, abertos a portadores de deficiência, onde são ministrados cursos gratuitos de capacitação para o uso da Internet e da Informática.

A Rede SACI nasceu em agosto de 1999 e, três meses depois, seu primeiro fruto estava na Internet: www.saci.org.br. Mas, na verdade, o conteúdo do site e a história da SACI já vinham sendo escritos há muito tempo.

Em 1992, a RNP, projeto especial do Ministério da Ciência e Tecnologia, iniciava esforços para ampliar o acesso à Internet para outros setores da sociedade, além da comunidade acadêmica. Como resultado dessa iniciativa, em 1994 nasceu a RENDE - Rede Nacional de Comunicação entre Portadores de Deficiência, em parceria com a USP-CECAE e com o apoio fundamental de Vitae, contando ainda com a colaboração do NCE-UFRJ. Tratava- se de um projeto ousado. Com a RENDE, os portadores de deficiência visual tiveram serviços de correio, jornal e mural eletrônicos. Com Nós Locais em São Paulo, Campinas e Santo André, a RENDE atendeu aproximadamente 150 usuários cadastrados em 11 Estados do país.

Na medida em que os computadores tornavam-se mais acessíveis à população e a Internet começava a ganhar espaço no Brasil, criavam-se as condições necessárias para o surgimento de um novo projeto que, integrado a essas iniciativas pioneiras, uniria informação e tecnologia a serviço dos portadores de deficiência. Surgia a Rede SACI, que tomou emprestado o nome do famoso personagem do folclore brasileiro por admirar suas qualidades: mesmo sendo portador de deficiência física, leva uma vida agitada e com bom humor.

[Topo]


Atividades realizadas

Sistema de cadastro de usuários

Minha principal atividade foi a de aprimorar o sistema de cadastro de usuários da Rede SACI. Quando eu entrei na Rede SACI este sistema estava com a primeira versão mais ou menos pronta, mas com poucos testes realizados e portanto com alguns problemas ainda. O sistema foi desenvolvido para ser utlizado através de interface web (intranet/internet) e consiste basicamente de 3 partes:

A época que eu entrei coincidiu com a reformulação de todo o site, onde inclusive ajudei com uma parte da transformação, reformulando totalmente as partes de currículos e de divulgação de ofertas de empregos para pessoas portadoras de deficiência para que ficassem compatíveis com o novo sistema e layout. Aproveitando a estréia do novo site o sistema de cadastro de usuários entrou no ar. Anteriormente os dados para cadastro de usuários vinham por email e uma pessoa tinha que digitar todos os dados no sistema antigo que utilizava o Access. Agora com o novo sistema o cadastro funciona da seguinte forma: a pessoa preenche todos os dados necessários, os dados são guardados num banco de dados e o cadastro fica esperando para ser aprovado. Um administrador deve aprovar/reprovar o cadastro, verificando a autenticidade dos dados e assim que aprovado o usuário receberá uma mensagem de boas vindas enviada por email (caso tenha escolhido esta opção no cadastro). Também ganha uma conta de email da Rede SACI e automaticamente é inserido na lista de discussão onde recebe um boletim diário com as últimas notícias e novidades da Rede SACI.

As principais atividades realizadas nesse projeto foram:

Uma questão que deveria ser levada em conta é a acessibilidade do site, principalmente para que pessoas com deficiência visual e que utilizam o site com leitores de tela também pudessem utilizar o site sem problemas.

Este projeto foi desenvolvido principalmente em PHP, utilizando como banco de dados o MySQL. Alguns scripts Perl tem também papel fundamental, principalmente na criação/remoção das contas de email dos usuários do sistema. Eles servem como uma espécie de intermediário entre os comandos rodados no Linux e o PHP.

Como este foi o principal projeto de que participei, eu o utilizarei nas outras partes da monografia. Ah, esse projeto também é conhecido como Rapadura (dado pela pessoa que o começou a implementar, mas como não gosto muito desse nome não irei usá-lo =] ).

Reformulação de partes do site antigo para o novo

No site da Rede SACI existe uma parte para entrada/consulta de currículos e também uma para divulgação de oportunidades de emprego. Estas partes tiveram que ser totalmente reformuladas, pois apesar de serem feitas na mesma linguagem (PHP) eles estavam muito mal escritos, principalmente no quesito legibilidade de código e ainda o novo site tem um sistema base que chama todas as outras partes (módulos). Então estas partes tiveram que ser reescritas no formato destes módulos para que o sistema base fosse capaz de executá-los.

Administração da rede e dos servidores

Nesta área a atividade mais importante foi a instalação de um antivírus no servidor de emails. Todos os emails que passam pelo servidor são checados com relação a vírus. Aqueles que possuem arquivos contaminados não são entregues e a pessoa que enviou o vírus recebe uma notificação automática avisando-o que o seu computador está contaminado. As atualizações do antivírus são feitas automaticamente através de um programa que é executado no crontab.

Outra atividade importante foi a participação da migração de um servidor de arquivos de uma máquina mais antiga para uma nova, onde comecei todo o processo instalando o sistema operacional (no caso uma distribuição Linux da Debian) e escrevi alguns scripts para passar todos os arquivos dos usuários de uma máquina para outra.

Fora isso quando acontece de algum problema ocorrer, por exemplo, algum daemon de um servidor parar de funcionar, eu ajudo na procura da solução do problema com o servidor.

Suporte técnico aos usuários

Eu também atendo usuários com problemas técnicos como, por exemplo, problemas com o cadastro, ou que perderam a senha (infelizmente um mecanismo automático de recuperação de senhas ainda não foi possível de ser implementado), seja por email ou por telefone.

[Topo]


Forma de organização da equipe de trabalho e atribuição de responsabilidades

Estas são as pessoas que tinham funções mais relacionadas ao meu trabalho:

Marta Gil (Gerente)
Ana Maria E. C. Barbosa (Supervisora de comunicação e Coordenadora do site)
Adriano Lopes Pereira (Administrador de Rede / Analista de Suporte)
Levi Fukumori (Programador)
Livga Un Ae Kim (Artista gráfica)

A Marta e a Ana são as chefes que estão mais próximas a mim. A Marta é um dos principais meios da Rede SACI se comunicar com o ambiente externo. Ela faz contato com empresas que patrocinam a SACI, representa a SACI na maioria dos eventos, realiza palestras, etc. Pela Ana passa todas as informações do site, como novas notícias, divulgação de eventos, novas oportunidades de trabalho, etc. Ela que distribui a maioria das tarefas para o pessoal que trabalha diretamente com o site. O Adriano é o principal responsável pela administração da rede e dos servidores, onde eu o ajudo com algumas tarefas. Ele também dá suporte técnico aos usuários. O Levi é o principal programador do site e também foi responsável pelo desenvolvimento do sistema de publicação e edição de notícias. A Livga é a responsável pela parte gráfica do site, como a criação de ícones, logos e imagens e também tratamento de fotos que venham a ser publicadas. A parte especializada em computação mesmo da Rede SACI sou eu, o Levi e o Adriano.

Normalmente cada um realiza uma tarefa distinta dos outros, mesmo porque não somos uma equipe muito grande, e assim acredita-se que há um número maior de atividades sendo realizadas ao mesmo tempo. A equipe trabalha em rede, onde alguns dos programas principais utilizados pelas pessoas são rodados nos servidores e todos os arquivos de trabalho também são armazenados neles. Como existem horários de trabalho distintos de cada pessoa, muito da comunicação é feita por email.

[Topo]


Estimativa inicial de prazos e do andamento do projeto

O projeto não tinha uma estimativa inicial de prazo bem definida. Ele não era urgente, pois a quantidade na época de usuários se cadastrando era pequena, mas quanto antes ele estivesse finalizado mais cedo essa tarefa de cadastro seria facilitada.

O andamento do projeto foi meio conturbado, já que ele passou por 2 programadores antes de eu ser contratado para dar continuidade ao projeto. O primeiro foi que fez o design do sistema e escreveu os scripts Perl. O segundo escreveu grande parte do sistema básico (cadastro, atualização dos dados do usuário e administração do sistema), mas como não foi muito testado ele continha uma série de bugs. Minha tarefa primeiramente foi eliminar esses bugs e para isso tive que ler quase que todo o código que já tinha sido escrito, pois os bugs ocorriam nas mais diversas partes. Essa leitura do código foi boa também para eu me familiarizar com a linguagem PHP que eu não conhecia. Eliminados esses bugs, o sistema básico já estava em funcionamento e como coincidiu com a época de lançamento do novo site fiz alguns ajustes para que seu layout se encaixasse com o site e ele foi para o ar. Com ele indo para o ar percebemos que ainda haviam alguns pequenos problemas que foram consertados. Hoje já faz mais de um ano desde a idéia inicial, mas ele ainda continua em desenvolvimento, seja adicionando novas funcionalidades como, por exemplo, a geração de estatísticas dos usuários cadastrados (quantos são deficientes, quantos não, etc.) ou refatorando partes do código. Esse desenvolvimento agora já anda num ritmo mais lento.

[Topo]


Métricas post-mortem do andamento do projeto

O projeto do sistema de cadastro de usuários foi muito útil para a Rede SACI, pois anteriormente todos os dados eram digitados por um funcionário num sistema feito em Access. E anteriormente a isso, todos os cadastros e informações de usuário eram guardados em papel mesmo, perdendo-se um tempo enorme caso fosse necessário se procurar alguma informação. Agora com o cadastro sendo feito pelos próprios usuários no site, todas as informações são guardadas no banco de dados estando disponíveis para serem pesquisadas e editadas pelos administradores do sistema com muito mais facilidade.

Para mim foi muito interessante trabalhar com este projeto, pois aprendi uma nova linguagem (PHP), vi na prática vários conceitos de Banco de Dados utilizando o MySQL e pude ver as peculiaridades de se implementar um programa voltado para a Web.

[Topo]


Bibliografia utilizada

As ferramentas que eu mais utilizei foram a linguagem PHP e o banco de dados MySQL. HTML e Perl também foram utilizados. Aqui vão alguns links de sites que usei para buscar informações:

[Topo]


Participação em treinamento

Treinamento não participei de nenhum, quase tudo que aprendi foi por conta própria, principalmente utilizando-se material online. Também contei com a ajuda dos companheiros de trabalho que sempre se dispunham a resolver dúvidas sobre assuntos que eles tinham conhecimento.

[Topo]


Ferramentas e técnicas utilizadas

A maioria dos programas que fiz eram em escritos em PHP. Utilizava como banco de dados o MySQL. Alguns dos programas PHP que fiz tinham partes que utilizavam Programação Orientada a Objetos. Além disso precisava saber HTML (inclusive a parte de acessibilidade) e também usei um pouco de Perl. Em conjunto com o PHP utilizamos uma biblioteca para acesso a banco de dados chamada ADOdb que será melhor explicada adiante.

[Topo]


Técnicas que pareciam relevantes para o problema

Algumas técnicas pareciam ser relevantes para o programa de cadastro de usuários, principalmente visando a clareza, organização e flexibilidade do programa. Como os códigos que já existiam tinham partes que não estavam muito claras e também muito pouco comentados eu gostaria de ter utilizado uma abordagem orientada a objetos para tentar resolver esses problemas, mas para isso seria necessário reescrever quase que todo o código. Isso até estava previsto, mas como sempre apareciam outras tarefas mais urgentes e a questão do tempo é que continua adiando essas mudanças. A única parte que consegui mudar foi o módulo de cadastro, dado que numa ocasião foi necessário implementar uma nova funcionalidade no sistema e aproveitei o momento realizar a mudança.

Ao longo do período que trabalhei lá descobrimos também uma biblioteca que visa a utilização de banco de dados chamada ADOdb. Ela provém uma maneira de não se preocupar qual banco de dados será utilizado (MySQL, PostreSQL, etc). Basta definir no ínicio qual banco de dados será utilizado e daí todo o acesso é feito de uma maneira uniforme, sem se preocupar com a plataforma. Algumas coisas já foram escritas utilizando essa biblioteca, mas ainda tem muito código que não. Isso aumentaria a flexibilidade e também ajuda a manter o código mais claro, não utilizando diversas maneiras diferentes de acesso ao banco de dados.

[Topo]


Forma de acompanhamento utilizada pelo gerente/administrador do projeto

O modo como minhas chefes acompanhavam o andamento dos projetos em que trabalhei era conversando com a gente mesmo e perguntando qual o prazo que ficaria pronto tal característica ou parte do sistema que elas estavam precisando com mais urgência. Como eu não tinha tanta experiência com prazos, tendia sempre a dizer um prazo menor do que o necessário, pois pensava nele de uma maneira onde não ocorreria interrupções e imprevistos. Pude perceber que interrupções e imprevistos acontecem e por isso quase sempre ocorriam atrasos. Mas agora vi que devemos estipular um prazo maior prevendo esses acontecimentos.

[Topo]


Desafios e frustrações encontrados

Um dos desafios de se trabalhar em sistemas que ficam disponíveis na web ou para o público em geral é que sempre que acontece um problema ele deve ser resolvido o mais rápido possível. Caso os usuários percebam você vai ouvir muitas reclamações. Isso vale para administração de rede também, quando ocorre problemas com os servidores.

Outro desafio é entregar as tarefas a serem cumpridas no prazo determinado. Muitas vezes ocorrem problemas no meio de uma tarefa que fazem com que ela se atrase. De vez em quando é possível entregar só o essencial e terminar as outras partes depois, mas as pessoas pensam que só com esse essencial o sistema já está funcionando e já te dão outras tarefas. Assim o término de tudo o que foi previsto vai sendo adiado cada vez mais.

Uma frustração foi fazer atividades relacionadas com administração de redes, pois tenho preferência pelo desenvolvimento. Mas como nunca tinha feito isso serviu para ver que realmente não gosto dessa área. Pude perceber que nem sempre fazemos só o que gostamos, tarefas que vão surgindo são atribuídas a aqueles que tem mais disponibilidade no momento. Até tarefas que não precisam de algum conhecimento de computação são feitas por mim de vez em quando. Acredito que isso deva acontecer em outras organizações também, principalmente as de pequeno porte.

[Topo]


Disciplinas cursadas no bcc mais relevantes para o estágio

Introdução à Computação (MAC110), Princípios de Desenvolvimento de Algoritmos (MAC122), Estruturas de Dados, Laboratório de Programação I e II e Programação Orientada a Objetos pela base de programação.

Sistemas de Bancos de Dados (MAC426) por utilizar banco de dados nos projetos. Pude ver no trabalho uma parte mais prática dessa disciplina.

Redes de Computadores (PCS210) por ter que lidar com os servidores da SACI.

Tópicos de Programação Orientada a Objetos (MAC 413) e Programação eXtrema (MAC445) pelas novas idéias sobre design e projeto, mesmo que não tenham sido aplicadas diretamente.

Por ter que participar na administração da rede e como utilizamos Linux em nossos servidores talvez a disciplina Administração de Sistemas UNIX (MAC433) pudesse ter sido útil. Infelizmente não tive a oportunidade de cursá-la.

[Topo]


Interação com os membros da equipe

Por trabalhar com colegas do IME mesmo, não existia nenhuma diferença no trabalho em grupo na Rede SACI e no IME. Quanto a forma de trabalho sempre tivemos uma certa liberdade para escolhermos a que acreditássemos mais indicada ou a que se encaixava melhor a cada situação. Para nossas chefes interessava mesmo o produto final ser entregue no prazo que dizíamos. Por elas não serem de uma área de computação e não terem um conhecimento de ferramentas e linguagens isso ficava mais por nossa conta de qual escolher para ser utilizada. A preocupação delas era mais com funcionalidades e novos programas que atendessem as suas necessidades e as necessidades dos usuários da Rede SACI.

[Topo]


Se fosse continuar atuando na área...

Se fosse continuar nessa área procuraria estudar mais aspectos de HTML, principalmente sobre acessibilidade. Também ter um conhecimento maior de como funcionam os programas utilizados por pessoas deficientes seria de grande ajuda.

Na parte de programação para web procuraria aprender sobre novas linguagens, como ASP (que não sei nada) e jsp (que sei alguma coisa), assim teria maiores oportunidades de encontrar empregos nesta área, pois acredito que estaria abrangendo as principais linguagens usadas atualmente neste campo.

[Topo]


Conclusões

Achei muito interessante trabalhar com um serviço voltado para web, pois vi que o desenvolvimento de sistemas desse podem ir muito além do simples HTML. Também fico feliz de ter participado de uma época muito boa para a Rede SACI, onde ela apareceu bastante na mídia (inclusive na Rede Globo), em que o número de visitas ao site cresceu muito e de cadastros de usuários praticamente dobrou (já estamos com mais de 4000). Além disso fico contente de trabalhar para uma organização que não está atrás de somente ganhar dinheiro e sim que tem uma preocupação social com essas pessoas que são uma parte considerável de nossa população.

Ah, e uma dica pra quem for fazer estágio. Tente fazê-lo num semestre onde você não esteja fazendo muitas matérias, pois um estágio consome um tempo razoável e seu rendimento pode cair muito. Talvez se você for muito organizado consiga não ter problemas com isso, mas não foi o meu caso. Nem fiz tantas matérias como em alguns outros semestres e já senti a diferença...

[Topo]