Trabalho de Formatura Supervisionado
Aluno : Fabiana Guarsoni Rocha
Professor : Carlos Eduardo Ferreira
Orientador : Marco Dimas Gubitoso
Chefe na PR&A : Roberto Masaishi Yoshikawa
Chefe na Oracle : Telmo Dias de Souza Carlos



Índice
        A proposta do projeto de formatura supervisionado é descrever as atividades realizadas durante o estágio, e mostrar como o estágio se inseriu no curso de Ciência da Computação, mostrando  as experiências adquiridas, minhas frustrações, desafios e dificuldades encontrados, o que foi aprendido durante este período, ...
        Escreverei sobre meu atual estágio e sobre o estágio anterior a este, mostrando as diferenças e comparando-os quando possível. Resolvi fazer desta forma pois considero interessante as diferenças que encontrei nos estágios que realizei, uma vez que o anterior foi realizado em uma empresa de pequeno porte e o  atual está sendo realizado em uma empresa de grande porte. No primeiro havia um projeto fixo, enquanto que no segundo não, as atividades são realizadas em pequenos projetos.

[Índice]


        O objetivo desta disciplina é estabelecer um paralelo entre o que foi aprendido durante a graduação e o que acontece de fato no mercado de trabalho. Durante a graduação aprendemos a teoria e a organizar as idéias, exercitamos nosso raciocínio e crescemos, tanto intelectualmente, quanto como cidadãos, mas a graduação em geral não nos dá esperiência para o mercado de trabalho. Durante este período adquirimos um grande volume de conhecimento, parecendo até um pouco desnecessário.
        Acredito que seja essencial a bagagem adquirida durante a graduação. É este conhecimento que nos dá base para tomarmos decisões e conseguirmos superar os desafios encontrados no dia-a-dia, no mercado de trabalho. E é na prática, seja em um estágio ou em uma iniciação científica, que vivenciamos o que foi estudado e aprendido.

[Índice]


        O primerio estágio foi realizado em uma empresa de consultoria finaceira chamada Prandini, Rabbat & Associates (PR&A), durante o período de 17 de julho de 2000 à 10 de abril de 2001. O estágio atual está sendo realizado em uma empresa de banco de dados chamada Oracle do Brasil Sistemas SA (Oracle), desde 17 de abril de 2001.
        Segue abaixo uma descrição sucinta de cada empresa, natureza de cada organização e da atividade de cada empresa e uma breve descrição do cargo ocupado nestas.

        A  Prandini, Rabbat & Associates (PR&A) é uma empresa nacional de pequeno porte, que desenvolve e implementa soluções nas áreas de finanças, otimização, estatística e computação.  Ela desenvolve softwares para instituições financeiras, em sua maioria bancos e fundos de pensão.
        Ela é dividida nas áreas de economistas, matemáticos, estatísticos, engenheiros e programadores. O estágio que eu fiz foi no módulo dos programadores. Os módulos são independentes, mas trabalham juntos, ou seja, os economistas, matemáticos e estatísticos são responsáveis por estudar o problema, analisar e modelar o problema, buscando uma solução para o mesmo. O módulo dos programadores e dos engenheiros  implementam a solução encontrada. Não é propriamente uma empresa de computação, o intuito é encontrar soluções para as questões do mercado financeiro, como por exemplo o cálculo do Value at Risk (VaR), o mercado de ações e de fundos de investimentos, ...
        A empresa incentiva o estagiário a não só implementar, como também a entender, analisar e modelar o problema para que melhor possa implementar a solução para as questões do mercado financeiro.

        A Oracle do Brasil Sistemas SA é filial da empresa Oracle, que é uma multinacional de grande porte, com sede na Califórnia na região do Vale do Silício. Possui várias filiais espalhadas pela Europa, Américas e Oceania. No Brasil, a Oracle possui unidades em vários estados : Minas Gerais, Rio de Janeiro, São Paulo, Paraná, Rio Grande do Sul..., sendo que a sede está localizada em São Paulo. A Oracle é uma empresa de Sistemas de Banco de Dados. Ela possui vários produtos, sendo entre eles os mais conhecidos o Oracle Application e o Banco de Dados Oracle.
        O estágio está sendo realizado na Fábrica de Software, que é uma célula da área Consultoria. Normalmente as pessoas que trabalham na Consultoria são alocadas em projetos e ficam em clientes. A Fábrica de Software conta com funcionários e parceiros, e essas pessoas dificilmente vão para clientes.

[Índice]


        Logo que comecei o estágio, fui alocada para o Projeto do VaR BBA Capital. Este projeto era implementar um sistema para o banco BBA Capital, que é um banco de investimentos. O sistema deveria calcular o Value at Risk (VaR).
        O Value at Risk é uma tentativa de previsão de perda máxima ou desvalorização máxima das carteiras de investimento administradas por um banco. As carteiras podem conter conjuntos de títulos públicos, privados, ações, derivativos, ...  e podem ser configuradas de acordo com preferências de cada investidor. Assim, o objetivo do Value at Risk é ajudar bancos ou instituições financeiras na eliminação de posições de alto risco e nas tomadas de decisão sobre novos investimentos.
        A idéia era implementar uma versão software da planilha que já rodava no BBA Capital, calculando diariamente o VaR dos fundos gerenciados pelo BBA Capital. O sistema deveria fazer consultas automáticas no Banco de Dados do BBA Capital, diferentemente do que era antes, onde o acesso era feito a uma base de dados em Access.
        O sistema foi desenvolvido em Delphi, por ser simples, de fácil operação e ideal para fazer a interface gráfica. O sistema era apoiado por bibliotecas de cáculos escritas em C, utilizando a ferramenta Visual C. Essas bibliotecas, chamadas DLLs, faziam o acesso a uma base de dados onde se encontravam os dados de mercado (preços de ações, valores de taxas, futuros, ...) e calculavam o VaR de books de posições nas carteiras. As carteiras, também chamadas de portifólios, armazenam o que foi investido num determinado período. Posso, por exemplo, ter uma carteira com ações e fundos de renda fixa, e esse dinheiro que apliquei pode render um certo tanto por mês. As DLLs já estavam implementadas, foi preciso fazer apenas algumas adaptações para que elas pudessem se comunicar com o novo sistema.
        A interface gráfica tinha os módulos : Conexão com a base de Dados, Tela de Séries Históricas, Tela de Opções e  Tela de Parâmetros do VaR. O usuário deveria se logar ao sistema, a conexão à base de dados era automática. No sistema ele poderia configurar como quisesse a sua carteira e os parâmetros do VaR. Estes dados eram armazenados na base de dados e se o usuário desejasse, os dados poderiam ser guardados em arquivos. Após essa configuarção inicial, o usuário poderia calcular o VaR. Para isso o Sistema retornava uma planilha com os resultados do Cáculo do VaR.

        Nas primeiras duas semanas recebi um treinamento de Delphi e fiz pequenos programas para testar e aprender mais sobre a ferramenta que seria usada para implementar a interface gráfica do sistema. Tive que me adaptar à ferramenta Visual C, pois as bibliotecas de cálculo seriam desenvolvidas em C. Aprendi também um pouco sobre o mercado financeiro, como funcionavam os fundos de investimentos. Era preciso ter um pequeno conhecimento de mercado financeiro, mesmo que bem superficial para começar a implementar o sistema.         Durante a fase de desenvolvimento do sistema, fui aprendendo um pouco mais sobre mercado financeiro. Durante o mês de janeiro de 2001 fiz o curso Introdução ao Mercado de Renda Fixa e Renda Variável na Andima. E durante todas as fases do projeto recebi assistência do meu chefe.         O projeto foi bem estruturado,  facilitando o desenvolvimento da interface gráfica. A interface gráfica do sistema deveria ser simples e de fácil opreração, ela seria utilizada pelos funcionários do banco. Desenvolvi quase todos o módulos do sistema. Segue abaixo uma breve descrição dos principais módulos do projeto VaR BBA Capital.         As Bibliotecas de Cálculo foram divididas da seguinte forma (permitindo assim uma melhor manutenção no futuro):         Dessas Bibliotecas de Cálculos, desenvolvi apenas o Módulo Vértices, pois as outras já haviam sido implementadas para outros sistemas e puderam ser aproveitadas, salvo algumas adaptações.

        Aqui você encontra algumas das principais telas do sistema que desenvolvi.

        O prazo inicial do Projeto VaR BBA Capital era de três meses, desde a especificação, desenvolvimento e implantação no cliente. Esse cronograma inicial teve de ser modificado, pois o Banco BBA Capital atrasou na entrega das stored procedures, uma vez que eles eram responsáveis por elas. Além disso, eles demoraram para disponibilizar a base de dados para nós fazermos os testes durante a fase de desenvolvimento. Outro imprevisto foi que o cronograma inicial tinha sido estipulado para uma pessoa que trabalhasse tempo integral, não era esse o meu caso, uma vez que trabalhava meio período. Assim, o sistema ficou pronto em mais ou menos sete meses.  [Índice]
 

        Ao contrário do estágio realizado na PR&A, onde havia um projeto bem definido, no qual trabalhei desde o início do desenvolvimento do sistema até o início da fase de testes e implantação do produto no cliente, o estágio na Oracle não conta com um projeto, mas sim com várias atividades em vários pequenos projetos. Por ser diferente, falarei um pouco sobre a Fábrica de Software, que é o setor em que o estágio está sendo realizado, e sobre as atividades exercidas na Fábrica de Software.
        Os CEBs, Complemento Estatuário Brasileiro, representam os módulos da Fábrica de Software, para complementar o Oracle Application às necessidades legais e fiscais brasileiras.
        Os CEBs são : RI (Recebimento Integrado), FSC (Fiscal, leis brasileiras), PAC (Custo Médio), Cash (Cash Management), HR (Recursos Humanos), EFTAP e EFTAR (trabalha com transferência bancária, EFT-Account Payables e EFT-Account Receivables), ...  Cada módulo representa um produto diferente. Há também o módulo dos DBAs, Data Base Administrator,  que é responsável pela manutenção da base de dados da Fábrica, pelo empacotamento dos Patches, pela administração dos Ambientes (Unix e Windows), suporte aos desenvolvedores de cada módulo da Fábrica e atendimento aos chamados dos clientes. O estágio está sendo feito no módulo dos DBAs.
        Os CEBs são empacotados e disponibilizados aos clientes através dos Patches. Patch, do inglês "remendo", nada mais é do que um empacotamento para efeito de correção ou melhoria. O Patch é um conjunto de arquivos (scripts de banco de dados), que através de um aplicativo chamado adpatch é aplicado em uma base de dados. O objetivo disso é atualizar ou corrigir a base de dados através dos scripts que estão no Patch. Assim, o cliente não precisa executar cada script do Patch, basta aplicar o Patch através do adpatch.
        Os scripts que estão no patch, em sua maioria são scripts de criação e manipulação de objetos, tais como tabelas, índices, seqüências, sinônimos, "grants", "views", ...
        Depois que o Patch foi empacotado e aplicado pelos DBAs na base de dados, os desenvolvedores fazem seus respectivos testes e após a liberação, os Patches são disponibilizados aos clientes em um servidor FTP.
        A Fábrica de Software conta também com o sistema para controle de arquivos e Patches chamado Controle de Versão. Esse sistema pode ser visto como três partes: a parte web, parte de banco de dados e a parte Unix. Na parte web, é possivel cadastrar um Patch, inserir e retirar os arquivos que estão nos Patches e submeter o Patch ao repositório, que é onde estão localizados todos os arquivos cadastrados no Controle de Versões. No Unix, é possível inserir um novo arquivo no Controle de Versão, retirá-lo para consulta, atalizar a versão do arquivo, ... E parte do banco de dados é responsável por manter a consistência e o controle do que aparece na parte web e o que existe fisicamente no Unix.

        Durante as primeiras semanas fiquei estudando uma apostila sobre modelagem de dados com a notação utilizada pela Oracle. Aprendi um pouco de Unix no Solaris, pois quase todos os servidores são Solaris. E estudei também shell scripts, pois a parte Unix do Controle de Versão é todo feito em shell.         No estágio, sempre que possível, meu chefe no estágio respondia as minhas dúvidas e explicava um pouco mais sobre como funcionavam os ambientes da Fábrica e sobre a fabricação de Patches. Mas o tempo é muito corrido e sempre tem muitas coisas para fazer, então o trinamento deixou um pouco a desejar.
        Durante o período de férias, fiz três cursos da Oracle: Modelagem, Intodução ao Oracle8i e PL/SQL, e Arquitetura e Administração de Banco de Dados. Era para eu ter feito mais os cursos de Backup e Recovery, e o de Performance, concluindo assim a linha de cursos da carreira de DBAs, mas não pude fazê-los pois durante o período de aulas tornou-se impossível fazer tais cursos.         Como na Oracle não existe um projeto bem definido, tenho várias atividades, como o empacotamenro de Patches, Servidor FTP, manutenção do Controle de Versão, administração de sistemas Unix e Windows, ... Segue abaixo uma breve descrição de cada atividade.
        A minha principal atividade é o empacotamento dos CEBs, através dos Patches. Os desenvolvedores da Fábrica de Software montam o Patch, ou seja, colocam nele os scripts necessários para um determinado Patch. Então, gero o Patch, ou seja,  uma rotina em shell script pega os scripts cadastrados no Controle de Versão, na parte web, e coloca em um diretório. Dentro deste há uma hieraquia de diretórios com os scripts. Normalmente os scripts vêm com erro, minha função é verificar cada arquivo e arrumar esses erros. Assim, o patch está pronto para ser aplicado na base de dados da Fábrica de Software. Após a aplicação, se tudo correu bem, os desenvolvedores testam e só então o Patch é disponibilizado na internet.
        Outra atividade é o Servidor de FTP. Inicialmente havia sido proposto um pequeno projeto: Servidor FTP Linux. O objetivo era instalar e configurar o Linux em uma máquina, configurar o servidor FTP, colocar os Patches que a Fábrica produz e criar um sistema onde cada cliente que tentasse fazer o download de um patch, fosse necessário fornecer um nome de usuário e uma senha. Para tanto seria necessário fazer um projeto de banco de dados, incluindo todas as fases desde modelagem do sistema, modelo lógico,  mapeamento para o modelo físico, ... Até o momento apenas instalei o Linux, configurei o servidor FTP e coloquei os Patches já disponibilizados aos clientes. Antes dele ir para a internet, é preciso tomar muito cuidado com a questão segurança. Para isso, estou estudando o que é preciso para que o servidor não seja ameaçado por invasão de hackers. É preciso fechar todas as possíveis portas de acesso para os hackers, como por exemplo, o telnet, sendmail, ssh, ... O servidor não vai estar conectado à rede interna, por questões de segurança, estará apenas na internet.
        Estou estudando o Controle de Versão, pois será necessário fazer a manutenção do mesmo, e incluir novas funcionalidades.
        Além disso trabalho também com administração de sistemas Unix e Windows. Sou responsável pelo controle das rotinas de backup dos quatro servidores da Fábrica de Software.         É difícil falar em conograma no estágio realizado na Oracle, já que exerço várias atividades em pequenos projetos. Assim que os desenvolvedores terminam de fazer os Patches, há uma grande pressão para que liberemos os Patches logo, nesse caso, deveria ser estipulado um prazo, para não ficar a correria que normalmente acontece. Assim que o servidor FTP estiver no ar, ou seja, disponível para os clientes na internet, o prazo para o projeto de banco de dados para o servidor será de seis meses.
        Quanto às outras atividades, não há nenhum cronograma estipulado. Conforme as tarefas vão aparecendo, dependendo das prioridades, elas são escaladas primeiro ou não. [Índice]

        Em seguida descreverei algumas das impressões que tive nos dois estágios realizados.

        A empresa é dividida em vários setores: economistas, estatísticos, matemáticos, engenheiros e programadores. Cada setor é composto por grupos de três ou quatro pessoas. Estava entre os programadores e o meu grupo era composto por três pessoas, sendo que uma delas estava em outro projeto e a outra era meu chefe. No Projeto VaR BBA Capital, estavámos eu e meu chefe, enquanto eu desenvolvia, ele me dava suporte. Havia liberdade entre os outros grupos, então, interagi não só com meu chefe, mas com as pessoas dos outros grupos. Sempre houve cooperação com os colegas de trabalho, assim como acontece com os colegas do BCC. Eles sempre se dispuseram a me ajudar.         Considero as disciplinas de base do BCC, como MAC110, MAC122 e Laboratório de Programação, fundamentais no aprendizado da lógica necessária para se programar. Estrutura de Dados foi também uma matéria importante para o sistema desenvolvido, pois o que aprendi nesse curso foi fundamental para as estruturas que desenvolvi no sistema. Utilizei também um pouco de Estatística Básica para alguns cálculos do sistema desenvolvido. Durante boa parte do estágio precisei mexer com banco de dados, e como ainda não havia cursado a disciplina de Banco de Dados, tive que aprender algumas coisas básicas para poder usar no sistema. A disciplina Princípio Interação Homem Computador também foi muito importante para a contrução da interface gráfica do sistema. Foi uma matéria com muitas aulas práticas, que me ajudaram muito na hora de desenvolver a interface gráfica.         No começo, a maior dificuldade era assimilar o grande volume de informação que recebi sobre o mercado financeiro, o trabalho como desenvolvedor não era difícil, pode-se dizer até que era tranqüilo, a grande dificuldade era mesmo entender como funcionava o mercado de ações e fundos de investimentos e as teorias associadas a eles.
        É claro que seria preciso ter feito um curso de economia para se aprofundar mais no assunto, mas era preciso apenas uma pequena base de conhecimento sobre o assunto para entender, modelar e começar a implementar o projeto. Quanta à implementação, não houve maiores dificuldades, pois a interface escolhida era fácil, e mesmo sem nunca ter mexido antes com Delphi, foi bem tranqüilo aprender a trabalhar com essa ferramenta. A implementação das Bibliotecas de Cálculo também não apresentou maiores problemas, uma vez que elas foram implementadas em C, e eu já tinha um bom conhecimento dessa linguagem, visto que vários projetos do curso foram em liguagem C.         O ambiente de trabalho era bem legal de se trabalhar,  havia cooperação entre as pessoas, elas sempre estavam dispostas a ajudar.
        Participei do projeto desde o início, ou seja, depois que ele foi especificado, estive em todas as fases de desenvolvimento do projeto, participando assim desdo o início até praticamente o fim, quando o sistema estava sendo implantado no Banco BBA Capital. Considero isso um grande ponto positivo, pois não tive que ficar tentando entender o código que outra pessoa tinha escrito. Outro ponto positivo é que tentei colocar comentários em quase todo o código, ajudando assim quem fosse o ler mais tarde.
        O chefe do estágio procurou dividir bem as fases do projeto, assim, implementar o sistema era como fazer um ep (exercício-programa) com várias fases.
        Uma coisa que não gostei muito é que não foi feita a engenharia de software do sistema, então um módulo era especificado e eu o desenvolvia, mas algumas vezes, depois que já os tinha desenvolvido, tive que mudar grande parte do módulo, fazendo com que tivesse que programá-los novamente. Resumindo, perdi um certo tempo codificando algumas coisas e no fim elas não foram necessárias.

[Índice]
 

        A equipe de trabalho onde o estágio está sendo realizado é composta por quatro pessoas. Cada pessoa é resposável por algumas atividades. Mesmo essas atividades sendo diferentes,  há uma grande cooperação entre os membros da equipe de trabalho, assim como acontece com os colegas do BCC, a diferença é que o líder da equipe, o chefe do estágio, filtra algumas informações e pressões para não atrapalhar o bom andamento das atividades dos outros membros da equipe. Sempre que possível, essas pessoas estão dispostas a me ajudar no que for preciso.        As disciplinas que considero fundamentais para o meu estágio são: Sistemas de Banco de Dados e Laboratório de Banco de Dados, pois a realidade da Oracle é mexer quase o tempo todo com Banco de Dados. Além disso, todas as outras disciplinas de introdução foram fundamentais para construir uma base de conhecimento que me permitiu ter uma boa lógica de programação, ajudando assim a estruturar e organizar as idéias. Uma outra disciplina que talvez fosse relevante ao estágio é Administração de Sistemas Unix. Acho que seria importante ter cursado esta matéria, mas não tive oportunidade, por causa dos horários não foi possível cursá-la.         Um dos maiores desafios que encontrei foi sair da empresa em que eu estava, com uma situação confortável e tranqüila, fazendo algo que gostava, para ir para uma empresa de grande porte com muitos desafios pela frente, sem saber ao certo o que ia fazer e o que ia acontecer.
        Assim como aconteceu na PR&A, no início do estágio, tive que assimilar uma grande quantidade de informação. Acho que essa mudança de ambiente e essa nova carga de informação constituem um grande desafio.
        Outro desafio era entender a codificação do Controle de Versão, uma vez que a parte Unix é toda em shell script e eu não tinha muita familiaridade com isso.         Assim como ocorreu na PR&A, o ambiente de trabalho é bem legal, existe a cooperação entre as pessoas, elas estão dispostas a ajudar, mas nem sempre o tempo e a grande quantidade de tarefas permitem.
        Uma coisa bem legal da Oracle é que eles investem bastante em cursos,  mas o meu treinamento no ambiente de trabalho deixou um pouco a desejar por falta de tempo do meu chefe para me treinar.
        Um ponto negativo é que não há um cronograma bem definido para a fabricação de Patches, então quando o desenvolvedor manda a requisição para empacotar o Patch, nós temos fazer o mais rápido possível, pois estes sempre são urgentes, mas às vezes é impossível fazer isso de forma rápida dada a grande quantidade de tarefas que têm que ser feitas.

[Índice]


        Gostei do estágio da PR&A, pois gosto da parte de desenvolvimento de sistemas, mas a área de mercado financeiro não faz parte das minhas áreas de interesse. Já na Oracle, descobri que gosto da área de Banco de Dados, mas não estou participando de projetos de desenvolvimento de sistemas como gostaria de estar. Gosto da área de atuação da Oracle, mas não estou completamente satisfeita com o que faço, pois gostaria de estar desenvolvendo mais.
        Com relação às diferenças encontradas nos dois estágios, posso dizer que uma vantagem de se trabalhar em uma empresa de pequeno porte é que se tem uma visão mais global dos processos, o que por muitas vezes permite entender melhor o que representa aquilo que está sendo desenvolvido, o que em geral não ocorre em empresas de grande porte, onde as pessoas tem apenas conhecimento de seus módulos específicos. Por outro lado, uma empresa de grande porte oferece uma estrutura melhor como cursos, treinamentos, planos de carreira e uma maior possibilidade de crescimento profissional e pessoal.
        Acredito que o curso do BCC me preparou bem para as necessidades do mercado, pois além de adquirir conhecimento técnico, o curso me deu a capacidade de aprender novas coisas e a me virar sozinha, o que é muito valorizado no mercado de trabalho.
        Quanto ao futuro, pretendo fazer o mestrado, em Ciência da Computação, solidificando ainda mais a minha base de conhecimento teórico e conceitual. Com isso espero que surjam oportunidades para que num curto espaço de tempo esteja bem colocada no mercado de trabalho e ganhando bem.

[Índice]


            No início do estágio na Oracle tive a oportunidade de ficar presa na sala do servidor. Na época, estavam trocando as fechaduras por fechaduras eletrônicas acionadas pelo crachá. Na hora de entrar na sala, sem problemas, passei o crachá na litora e a porta abriu. Fiquei um tempo na sala, fiz o que tinha que fazer e quando fui sair, a porta não abria. A leitora não funcionava do lado de dentro. Para meu desespero não havia telefone na sala. Comecei a mandar e-mails pedindo socorro para o pessoal do meu módulo. É claro que ninguém viu. Esperei mais um pouco e comecei a bater na porta, até que um colega ouviu e veio abrí-la. Até hoje quando chego no serviço,  quando passo as pessoas batem na mesa como se estivessem batendo em uma porta.             Estava mexendo no servidor Linux, e precisava rebootar a máquina, como ele ainda não estava configurado e com alguns problemas, não estava conseguindo de jeito nenhum. Olhei para baixo da mesa e vi um filtro de linha onde a máquina estava ligada. Não pensei duas vezes... Desliguei o filtro de linha. Nesse momento escutei o barulhinho de um outro servidor desligando. Era o servidor da área de customizações e tinha um banco de dados rodando nele. Logo religuei esse servidor e por sorte não danificou o banco de dados.

        Coisas de estagiário...

[Índice]


Fabiana Guarsoni Rocha    10/12/2001