%% LyX 1.1 created this file.  For more info, see http://www.lyx.org/.
%% Do not edit unless you really know what you are doing.
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}

\makeatletter


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% LyX specific LaTeX commands.
\providecommand{\LyX}{L\kern-.1667em\lower.25em\hbox{Y}\kern-.125emX\@}

\makeatother

\begin{document}


\title{Monografia - Estágio na empresa OPUS Software}


\author{Elidia Yumi Kawahara Itikawa}

\maketitle
MAC 499 

Trabalho de Formatura Supervisionado-2000

Supervisor: Prof. José Coelho de Pina 

Responsável: Prof. Carlos Eduardo Ferreira


\section{Introdução}

Como trabalho de formatura, disciplina obrigatória que estou cursando neste
ano, optei por escrever uma monografia sobre o estágio que estou fazendo atualmente.
Durante esta jornada, tenho um supervisor que está acompanhando minhas atividades
e um coordenador da disciplina que estará avaliando meu trabalho de tempos em
tempos.


\section{Natureza da organização e da atividade}


\subsection{Sobre a Empresa}

A OPUS Software é uma empresa de informática que atua no mercado desde 1987,
prestando serviços nas áreas de treinamento e desenvolvimento de sistemas e
de consultoria em diferentes áreas. Em 1989 passou a atuar também na área de
desenvolvimento de software. A partir de 1999 a OPUS Software modificou seu
portfolio de produtos e serviços, tendo como foco principal o \char`\"{}desenvolvimento
de software levado a sério\char`\"{}. Com este objetivo, desenvolve sistemas
utilizando a metodologia de desenvolvimento de sistemas Tree, criada de acordo
com padrões amplamente aceitos no mercado, garantindo a seus clientes a eficácia
do projeto, desde a definição do escopo até a disponibilização do sistema. Todos
os produtos e serviços oferecidos pela OPUS Software visam oferecer soluções
para o mercado corporativo, de forma a alinhar tecnologia às necessidades das
empresas clientes. Atualmente a OPUS Software possui uma parceria com a Microsoft
representada pelos seguintes programas: 

\begin{itemize}
\item Microsoft Solutions Provider Partner, categorias desenvolvedor e integrador 
\item Microsoft Consulting Services Partner 
\item Microsoft Regional Director 
\end{itemize}
Sempre atuando no mercado corporativo, a OPUS Software tem como clientes grandes
empresas dos segmentos bancários, industrial e de seguros. A empresa localiza-se
na Rua Eugênio de Medeiros, 242 - 1o andar, Pinheiros, telefone 3816-2200. 


\subsubsection{Serviços e Produtos }

\begin{itemize}
\item Desenvolvimento de Sistemas 
\end{itemize}
A OPUS Software desenvolve sistemas de informática completos, personalizados
para seus clientes, utilizando as mais avançadas tecnologias disponíveis no
mercado. Para garantir o sucesso destes sistemas, a OPUS Software utiliza sua
metodologia de desenvolvimento de software, denominada TREE, baseada em padrões
de mercado. Os sistemas são desenvolvidos pela OPUS e implantados na empresa
do cliente através de uma política de transferência de tecnologia. Assim, o
cliente passa a ter autonomia sobre o sistema adquirido. 

\begin{itemize}
\item Soluções de Business Intelligence 
\end{itemize}
Toda empresa visa o sucesso e tem de enfrentar um mercado extremamente competitivo
com o máximo de agilidade nas tomadas de decisões. Para tanto, é necessário
ter em mãos informações precisas e objetivas que formem um cenário do mercado
presente, ao mesmo tempo que descreve tendências pelas quais se guiará no futuro.
Dentro deste cenário, a Opus Software oferece uma solução de Business Intelligence,
Opus-BI, criada para fazer com que o sistema de informação de sua empresa disponibilize
a informação certa às pessoas certas, no momento certo. Opus-BI é uma das soluções
de Business Intelligence mais eficazes disponíveis no mercado e está estruturada
para integrar-se aos mais diversos ambientes tecnológicos das empresas. Esta
solução foi criada visando a facilidade de customização e implantação, considerando
um custo que cabe dentro do orçamento das empresas e gerando benefícios já a
curto prazo. 

\begin{itemize}
\item Desenvolvimento de aplicações Internet e para ambiente Web 
\end{itemize}
A Opus Software desenvolve aplicativos que são intregrados à presença das empresas
na Internet ou a outros sistemas internos utilizando tecnologia Internet. Desta
forma, a Opus Software agrega valor às soluções de e-Commerce e e-Business das
empresas. 

\begin{itemize}
\item Alocação de Recursos Técnicos 
\end{itemize}
A OPUS Software disponibiliza a seus clientes, profissionais altamente qualificados,
em constante aperfeiçoamento e alinhados à sua metodologia para integrar a equipe
de desenvolvimento de sistemas, agregando conhecimento e experiência. Os profissionais
da Opus são especializados nas tecnologias que utilizam e comprometidos com
os objetivos traçados junto à equipe de desenvolvimento do cliente. Estes profissionais
trabalham em conjunto com a área de informática, acelerando o processo de aprendizado
da equipe e realizando a transferência de tecnologia. - Consultoria A alta capacitação
técnica dos profissionais da OPUS Software, constituída através da larga experiência
de participação em projetos, disponibiliza aos seus clientes, consultores nas
áreas de: Performance \& Tunning de Banco de Dados. Definição de Modelos de
Dados. Otimização de Data Warehouse e Data Mart. Projeto e implementação de
Intranets. Desenvolvimento de aplicações Web. Metodologia de Desenvolvimento
de Software.

\begin{itemize}
\item Produtos Especializados 
\end{itemize}
A Opus Software disponibiliza soluções prontas para seus clientes, utilizando
sua larga experiência no desenvolvimento de sistemas e observando as tendências
e posições de mercado. Estas soluções, conhecidas como produtos, estão prontas
para serem instaladas e utilizadas pelos clientes. A implantação desses produtos
é de baixa customização e de fácil realização.


\subsection{Minha Função }

Sou estagiária na área de desenvolvimento realizando projetos internos e/ou
voltados para clientes integrando diferentes equipes (de acordo com o projeto).
Comecei minhas atividades nesta empresa em 21/02/2000. Os projetos que já realizei
ou que ainda participo tem supervisão direta de Alexandre Nardi (ex-aluno do
BCC e atualmente fazendo mestrado no IME) e do Professor Vanini (do Instituto
de Computação da Unicamp).


\section{Objetivos }

Com este trabalho de formatura pretendo adquirir experiência no mercado de trabalho
(aprendendo novas tecnologias), colocando em prática os 4 anos de aprendizado
e estudos no IME. Atuando em uma grande empresa e integrando uma dinâmica equipe
de desenvolvimento de sistemas, além de experiência profissional a se buscar,
também é importante um crescimento pessoal através de vivências do cotidiano.


\section{Definição / Especificação do problema ou sistema principal do trabalho}


\subsection{Projeto Tecnoval / Valfilm / Laminados }

A Tecnoval, Valfilm e Laminados são empresas que atuam em vários ramos (alimentícia,
industrial, comercial), fornecendo embalagens para os mais diversos propósitos.
Seus clientes são muitos e de todos os tamanhos (pequenos a grande porte), e
estão espalhados pelo Brasil. Atualmente seus clientes fazem pedidos e consultas
dos mesmos por telefone. Este projeto consiste em um site institucional para
cada empresa e modernizar a comunicação com seus clientes. 


\subsubsection{Forma de organização da equipe de trabalho e atribuição de responsabilidades }

Em 23/05 integrei a equipe que trabalha neste projeto. Os sites institucionais
já estavam sendo elaborados pelo designer e a especificação do projeto (feita
pelo gerente do projeto) já estava pronta. Não tive dificuldades em seguir a
especificação e mais tarde até ajudei na atualização da mesma devido a mudanças
necessárias feitas durante o desenvolvimento. Fui a única a participar do processo
de desenvolvimento integralmente (houve a participação de outro membro da empresa
num determinado momento para agilizar o desenvolvimento da interface das páginas
HTML/ASP). Trabalhei na questão de segurança e acesso a pedidos/consultas de
clientes/representantes, e também implementando as atividades do administrador/operador. 


\subsubsection{Solução adotada}

Este foi o primeiro projeto na OPUS que utilizou o modelo de três camadas, apresentação,
negócio (business) e dados (arquitetura Windows DNA), e onde todas as funcionalidades
são acessadas através de componentes (dlls). Outro fato interessante do projeto
foi a utilização de um banco de dados que até então nenhuma outra pessoa da
empresa conhecia: o Progress. Inicialmente os dados eram guardados em um banco
de dados SQL. A migração dos dados e acessos para o Progress não foi fácil e
tivemos que buscar informações pela internet, lista de discussões e pela empresa
responsável pelo suporte. 

O projeto tem quatro perfis de usuário: cliente (qualquer funcionário de uma
empresa cliente da Tecnoval / Valfilm / Laminados), representante de empresas,
administrador e operador. Primeiramente os funcionários de empresas clientes
e representantes de clientes são guardados em um banco de dados como candidatos
a usuários. Um usuário com o perfil de administrador então aprova estes candidatos
para os quais serão gerados login e senha. O administrador ainda pode exercer
outras funcionalidades como remover o usuário e gerar outra senha para aquele
que a esqueceu (sem ter acesso a ela). Uma vez com seu login e senha, o usuário
pode fazer pedidos, que serão analisados por um usuário com o perfil de operador
(o operador aprova ou não os pedidos), e também acompanhar o andamentos dos
mesmos (se já foram aprovados ou não). É necessário garantir que os funcionários
de uma empresa cliente tenham acesso somente aos dados da mesma, assim como
os representantes de empresas. Durante o desenvolvimento foi constatada a necessidade
de alguns métodos auxiliares a mais daqueles que estão listados em seguida,
mas não houve nenhuma alteração quanto a especificação.

Apresentação detalhada da solução tecnológica adotada inicialmente, obedecendo
a arquitetura Windows DNA com modelo de três camadas: 

1. Camada de apresentação, constituída por páginas ASP/HTML, que são armazenadas
e executadas em um equipamento com Windows NT Server e Internet Information
Server (IIS). Contém o seguinte componente: 

a. Componente de Apresentação para Validação de Campos, que implementa as seguintes
funcionalidades: 

i. CGC: conferência dos dígitos de controle; 

ii. CPF: conferência dos dígitos de controle; 

2. Camada de negócio, que contém dois componentes, a saber: 

a. Componente de Negócio para Segurança, que implementa as funcionalidades: 

i. TemplateCandidato: obtém a estrutura de um candidato, que será preenchida
pelo usuário; 

ii. InsereCandidato: efetua o cadastramento de proposta de novo candidato; 

iii. ListaCandidatos: obtém os candidatos a serem avaliados; 

iv. AprovaCandidato: efetua o cadastramento de novo usuário. A geração de usuário
seguirá as seguintes regras: 

1. Primeiro nome + inicial do sobrenome (Ex: alexandren); 

2. Inicial do primeiro nome + sobrenome (Ex: anardi); 

3. Igual ao item 1 + contador, a partir de 1 (Ex: alexandren3). 

v. Login: autentica um usuário do sistema; 

vi. AlteraSenha: permite a troca de senha do usuário do sistema; 

vii. RemoveUsuário: elimina o acesso de um usuário ao sistema, removendo seu
login e senha. Para que possa ser realizada auditoria, NÃO é removido o registro
inteiro. 

b. Componente de Negócio para Informações, que implementa as funcionalidades: 

i. ConsultaCadastro: pesquisa de dados cadastrais; 

ii. ConsultaTitulos: pesquisa de títulos a pagar; 

iii. ConsultaPedidos: pesquisa de informações sobre pedidos em aberto; 

iv. InserePedido: inserção de novo pedido; 

v. TemplatePedido: obtém a estrutura de um pedido, que será preenchida pelo
usuário; 

vi. ListaPedidos: obtém os pedidos a serem analisados; 

vii. AprovaPedido: efetua a inserção de novo pedido no \char`\"{}Magnus\char`\"{}; 

3. Camada de dados, formada por: 

a. Banco de Dados Access, para armazenamento de informações de segurança e de
pedidos em aberto; 

b. Banco de Dados Progress Principal, que é utilizado pelo Magnus, e onde os
componentes de dados (definidos a seguir) buscam a maior parte das informações
necessárias; 

c. Banco de Dados Progress Auxiliar, que contém uma tabela para inserção de
pedidos com um gatilho para inclusão no Magnus; 

d. Componente de Dados para Segurança, utilizado pelo componente de negócio
para segurança, para interação com o banco de dados access. Implementa as seguintes
funcionalidades: 

i. AlteraSenha: permite que o usuário modifique sua senha; 

ii. TemplateUsuario: obtém a estrutura de um candidato, que será preenchida
pelo usuário; 

iii. AlteraUsuario: permite modificações nos dados cadastrais de um candidato; 

iv. ListaUsuarios: obtém relação de usuários de acordo com determinado filtro; 

v. InsereUsuario: efetua o cadastramento de novo usuário; 

vi. Login: autentica um usuário do sistema; 

vii. VerificaLogin: pesquisa a existência de um login passado como parâmetro;
Quando o usuário deixar de existir, o método AlteraUsuario deve ser invocado
com login e senha nulos. O registro não é removido por completo para permitir
a manutenção de histórico para auditoria. 

e. Componente de Dados para Informações, utilizado pelo componente de negócio
para informações, para interação com o banco de dados acima. Implementa as seguintes
funcionalidades: 

i. ConsultaCadastro: pesquisa de dados cadastrais a partir do Progress principal; 

ii. ConsultaTitulos: pesquisa de títulos a pagar a partir do Progress principal; 

iii. ConsultaPedidos: pesquisa de informações sobre pedidos em aberto a partir
do Progress principal e do banco de dados Access; 

iv. InserePedido: inserção de novo pedido no banco de dados Access; 

v. TemplatePedido: obtém a estrutura de um pedido, que será preenchida pelo
usuário; 

vi. ListaPedidos: obtém os pedidos a serem analisados, a partir do banco Access; 

vii. AprovaPedido: efetua a inserção de novo pedido no banco Progress Auxiliar,
para inserção no Magnus, e remove o registro do banco Access;

Cenários de Utilização

1. Usuário se autentica na tela de Login, e recebe seu perfil, que inclui permissões
de acesso e lista de empresas que pode representar (uma no caso de cliente e
mais de uma para representante); 

2. Para clientes: 

a. Tela padrão é a de cadastro; 

b. As demais telas de consultas apenas apresentam as informações ao usuário; 

3. Para representantes: 

a. Tela padrão é a de cadastro, que apresenta dados da primeira empresa da lista; 

b. As demais telas de consultas apenas apresentam as informações ao usuário; 

c. Na tela de inserção de pedidos, está sendo verificada a necessidade do uso
de look-ups; 

4. Para administradores de usuários: 

a. Tela padrão apresenta os candidatos a usuários, com dois radio buttons (Aprovado
e Reprovado). Os candidatos reprovados devem ser contatados pelo pessoal da
Tecnoval. Para os aprovados, será gerado senha (aleatória) e usuário, de acordo
com as regras: 

i. Primeiro nome + inicial do sobrenome (Ex: alexandren); 

ii. Inicial do primeiro nome + sobrenome (Ex: anardi); 

iii. Igual ao item i + contador, a partir de 1 (Ex: alexandren3). 

b. Tela que apresenta os usuários existentes, com um checkbox ao lado de cada
um. O usuário então pode selecionar um ou mais e deletá-los; 

5. Para o operador (analisa os pedidos novos): 

a. Tela padrão com os pedidos novos em ordem cronológica, e botões de próximo,
anterior, primeiro, último e opção de busca pelo número do pedido. Além disso,
botões de Aprovado e Reprovado.


\subsubsection{Ferramentas e técnicas utilizadas }

No decorrer do projeto, familiarizei-me com a linguagem de programação VisualBasic
para criação de bibliotecas dinâmicas (dlls) e acesso a banco de dados. E fiz
uso do VBScript para realizar baterias de testes em cima das funcionalidades
implementadas. Mais adiante utilizei ASP e JavaScript no trabalho com estas
funcionalidades nas páginas HTML. Foram utilizados vários bancos de dados: Access,
SQL Server (no início) e Progress, cada um para lidar com determinadas funcionalidades
disparadas através das páginas do site.


\subsubsection{Estimativa inicial de prazos e do andamento do projeto }

Inicialmente o projeto foi desenvolvido sem pressa devido aos vários obstáculos
encontrados, referentes a tecnologias que não dominava, por ser a única desenvolvedora
e também devido ao meu horário de meio expediente (pouco tempo de dedicação
para este projeto de médio porte). Na reta final, foi preciso algumas horas
extras para o término das atividades. A versão beta do projeto foi entregue
no prazo. Em seguida houve uma reunião, no final de dezembro, para possíveis
modificações no site a pedido do cliente e que após uma análise cuidadosa foram
consideradas viáveis. A versão definitiva foi entregue e o gerente de projeto
foi até o cliente (localizado na cidade de Lorena, São Paulo) para a instalação
do sistema. Durante a instalação foi detectado um problema cuja solução estou
acabando de desenvolver: houve problemas com datas e valores, dependendo da
versão (inglês ou português) do sistema operacional instalado. Assim que terminarem
os testes, a solução será enviada para a equipe de apoio em Lorena.


\subsubsection{Métricas post-mortem do andamento do projeto }

Apesar de um pouco de cansaço e tédio no final do projeto (foram sete meses
de trabalho!), não posso reclamar de todo o conhecimento teórico e prático que
obtive, além de uma visão ampla do processo de desenvolvimento de aplicações
em ambiente comercial. Tento organizar essas novas experiências para aproveitá-las
mais tarde em outros projetos.


\subsection{Chat }

Este projeto foi requisitado por um dos clientes da Opus (um centro de ensino
de língua inglesa) em virtude da má performance do chat que utilizam atualmente. 

O projeto se constitui de um servidor de Chat multi-sessão e de um cliente Chat
implementado como um applet disparado a partir do navegador Internet (browser).
Ainda está em discussão uma segunda parte do projeto: o cliente disponibilizará
cursos pela internet para seus alunos; então considera-se necessário um help
on-line de professores para que os alunos possam tirar suas dúvidas enquanto
estudam.


\subsubsection{Forma de organização da equipe de trabalho e atribuição de responsabilidades }

Eu e minha colega Izabel (também do IME) somos os projetistas desse chat sob
a supervisão do Prof. Vanini. Implementamos o cliente e o servidor seguindo
um protocolo de comunicação já definido (pelo nosso supervisor) e suficiente
para o projeto em questão. As duas procuravam saber detalhes do projeto e do
Java, e desenvolver as funcionalidades, sempre mostrando uma para a outra os
resultados até então obtidos. 


\subsubsection{Solução adotada}

O protocolo inicial (ver em seguida) foi alterado para que fosse possível, por
exemplo, que exista várias salas de chat e que o usuário possa ver todos os
outros conectados naquele momento nas salas, ou ainda que um usuário troque
seu nickname durante o chat. 

\begin{itemize}
\item O protocolo
\end{itemize}
O servidor de chat espera um pedido conexão TCP/IP, através de um socket na
porta xxxx. Uma vez estabelecida a conexão, ele espera que o cliente inicie
uma \char`\"{}sessão de chat\char`\"{}. 

As mensagens esperadas pelo servidor, sob a forma de strings são as seguintes
(as partes entre \char`\"{}<\char`\"{} e \char`\"{}>\char`\"{} são sequências
de cacteres quaisquer e \char`\"{}\_\char`\"{} representa um espaço em branco): 

\begin{itemize}
\item \char`\"{}L \_<nome do usuário> \char`\"{} - mensagem de login. Esta mensagem
marca o início de uma sessão de chat, por um usuário. Ao receber esta mensagem
o servidor inicia a sessão para o usuário e informa a todos os usuários conectados
da entrada de um novo usuário (através da mensagem \char`\"{}C <usuário>\char`\"{},
descrita adiante ) Exemplo: L piu-piu 
\item \char`\"{}X\char`\"{} - mensagem de logout (eXit). Encerra a sessão do usuário.
Ao receber esta mensagem o servidor encerra a sessão do usuário e informa todos
os demais através da mensagem \char`\"{}D <usuário>, descrita adiante). 
\item \char`\"{}W\char`\"{} - mensagem pedindo informação de quais são os usuários
conectados (Who?). Ao receber esta mensagem, o servidor a lista de nomes dos
usuários conectados ( através da mensagem \char`\"{}L <usuário1> ...< usuário
n> \char`\"{}. 
\item \char`\"{}S\char`\"{}\_<usuário destino>\_<texto> - Envio de uma mensagem a
um certo usuário. Ao receber esta mensagem de um cliente o servidor envia a
mensagem ao usuário destino (através da mensagem \char`\"{}M\_<usuário origem>\_<texto>,
descrita a seguir ). 
\end{itemize}
As mensagens enviadas ao cliente pelo servidor são as seguintes:

\begin{itemize}
\item \char`\"{}C <usuário>\char`\"{} - O usuário indicado acaba de se conectar ao
serviço de chat. Esta mensagem é enviada pelo servidor a todos os clientes conectados
cada vez que um novo usuário se conecta ao serviço. 
\item \char`\"{}D <usuário>\char`\"{} - O usuário indicado acaba de se desconectar
do serviço de chat. Esta mensagem é enviada a todos os usuários conectados cada
vez que um usuário encerra a sua sessão (através da mensagem \char`\"{}X\char`\"{}). 
\item \char`\"{}L <usuario 1> <usuário 2> ... <usuário n>\char`\"{} - Lista dos usuários
conectados. Esta mensagem é enviada ao cliente em resposta à mensagem \char`\"{}W\char`\"{}. 
\item \char`\"{}M <usuário origem> <texto>\char`\"{} - mensagem vinda de <usuário
origem>. O servidor envia esta mensagem ao cliente indicado quando <usuário
origem> pede o envio de uma mensagem a outro usuário através da mensagem \char`\"{}S
<usuário destino> <texto>\char`\"{} . 
\item \char`\"{}N <mensagem>\char`\"{} - Mensagem desconhecida. O servidor envia esta
mensagem ao cliente em resposta a uma mensagem sem sentido para a sessão do
cliente. 
\end{itemize}

\subsubsection{Ferramentas e técnicas utilizadas }

Ambos (cliente e servidor) são aplicações feitas em Java. Utilizamos a ferramenta
JBuilder que facilitou o desenvolvimento da interface. 

Como os usuários abrangerão todas as idades e de diferentes níveis de conhecimento,
procuramos implementar uma interface fácil de ser assimilada e usada. Para o
chat, são disponibilizados várias salas onde o usuário entra com um apelido
e conversa com outras pessoas, neste caso em inglês, podendo mudar de apelido
e/ou de sala quando quiser. 


\subsubsection{Estimativa inicial de prazos e do andamento do projeto }

Iniciamos as atividades em meados de novembro e por enquanto não há estimativa
de prazo para o projeto pois o cliente acaba de aprovar seu protótipo.


\section{Sobre o estágio}


\subsection{Participação em treinamento }

\textbf{Cursos }

Estão previstos vários cursos ministrados para os estagiários e aqueles alocados
em outras empresas. Foi organizado de forma que entre um curso e outro tenha
algum tempo de descanso. Cursos que participei: 

\begin{itemize}
\item Visual Basic 6 
\item Fase de auto-estudo da tecnologia ASP (Active Server Pages) 
\item Implementação de soluções com Microsoft SQL Server 7 
\item Estudo dirigido de programação WEB utilizando Microsoft Visual InterDev 6 
\item Curso introdutório de UML ( unified modelig language ): Voltado para a especificação
de sistemas utilizando orientação a objetos. 
\item Curso de programação com Objetos Distribuídos e Windows DNA 
\item Curso básico de XML ( extended markup language ) 
\item Compiladores: Participei, junto com outros membros da equipe de desenvolvimento,
de um curso de implementação de compiladores, ministrado pelo Prof. Fernando
A. Vanini, e que tem como objetivo esclarecer conceitos sobre a construção de
ferramentas de tradução, do ambiente de execução de programas escritos em linguagens
de alto nível e em linguagens orientadas a objetos. Este curso apresenta, ainda,
um exercício prático, constituído da implementação de um compilador para uma
linguagem simplificada (um sub-conjunto da linguagem Oberon, de Niklaus Wirth)
e deverá ser desenvolvido em Java, utilizando uma aproximação totalmente orientada
a objetos, gerando código para um dos processadores Risc da MIPS. Este trabalho
prático deverá ser realizado entre Janeiro e Fevereiro de 2001.
\end{itemize}

\subsection{Bibliografia utilizada ou básica para a área de atuação em que se insere o
estágio }

A Opus disponibiliza à sua equipe de desenvolvimento uma biblioteca com livros
e apostilas das tecnologias mais usadas nos projetos, e atualmente foi revisada
e organizada para uma renovação e atualização do acervo. 

No início de minha experiência na empresa foi necessário muito estudo e leitura
já que não tinha nenhum conhecimento sobre as tecnologias utilizadas nos projetos.
Os livros e apostilas que mais requisitei foram de Visual Basic, SQL, Java /
JavaScript, UML. Também pesquisei muito pela internet, desde artigos, definições
e até exemplos de código (quando foi possível e/ou necessário). Os assuntos
que mais procurei na web foram sobre ASP, Java e Progress. 


\subsection{Desafios e frustrações encontrados }

Desde o início encarei o estágio e os projetos que desenvolveria como desafio
devido a minha inexperiência. Eu tinha como objetivo transpor qualquer obstáculo
para cada vez mais adquirir novas informações e prática. Durante este caminho
(dez meses) houve algumas frustrações como quando os componentes e as aplicações
que fazia não funcionavam direito, após horas de estudos e programação; ou quando
chegava em uma parte do projeto e ficava detida porque havia necessidade de
conhecer mínimos detalhes de uma das tecnologias usadas. 


\subsection{Interação com membros da equipe que tenham agido como mentores do trabalho }

Gostaria que a equipe de desenvolvimento do projeto da Tecnoval / Valfilm /
Laminados (meu primeiro projeto) fosse maior (houvesse outro com tempo integral
no projeto além de mim). Não pude trocar informações com alguém tão diretamente
envolvido na programação quanto eu, mas mais experiente, então fiquei um pouco
sobrecarregada de atividades.


\subsection{Forma de acompanhamento utilizada pelo gerente/administrador do projeto }

No projeto da Tecnoval / Valfilm / Laminados participei do processo de desenvolvimento
sob constante supervisão do gerente de projeto Nardi (novamente a razão foi
a de ser a única desenvolvedora). Ele atuava junto ao cliente, buscando verificar
suas necessidades, e sempre que tinha dúvidas e dificuldades ele auxiliava-me
prontamente com os assuntos técnicos. No projeto de Chat o supervisor, Prof.
Vanini, está sempre atento às dúvidas e obstáculos que surgem, orientando-nos
e possibilitando que participemos com nossas próprias idéias, visando diversas
e diferentes alternativas de desenvolvimento.


\section{Sobre o curso do BCC}


\subsection{Diferenças notadas entre a forma de cooperação com colegas do BCC nas tarefas
em grupo das disciplinas e a forma de trabalho conjunto na empresa }

Os trabalhos em grupo de algumas disciplinas no BCC foram fundamentais para
amadurecer a forma de relacionamento com diversas pessoas, todas visando um
único objetivo. Manter a organização e a alta produtividade de uma equipe não
é uma tarefa fácil, uma vez que nos deparamos com diferentes formas de pensar
e temos que lidar com diferentes tipos de caráter. Pudemos trabalhar esta dificuldade
aos poucos através das tarefas em grupos, mesmo naqueles em que todos se conheciam.
Todos deveriam cooperar para que a tarefa (projeto, eps, relatórios,...) fosse
cumprida. E este aprendizado é de extrema utilidade quando se trabalha numa
empresa em que equipes devem ser rápidas e eficazes nos afazeres.


\subsection{Lista das disciplinas cursadas no BCC mais relevantes para o estágio }

O curso Bacharelado em Ciência da Computação do IME prepara os alunos para serem
autodidatas e com conhecimento bom o suficiente para um início de carreira de
sucesso. Isso é resultado de uma base teórica e prática sólida e eficaz. Na
minha opinião, todas as disciplinas que cursei foram importantes para minha
formação. O que pode vir a acontecer é do aprendizado de uma determinada disciplina
ser utilizada mais/menos que as outras. As disciplinas do último ano estão sendo
mais relevantes para o estágio que estou fazendo (mas lembrando que as disciplinas
dos dois primeiros anos foram responsáveis para o ótimo resultado do último).
Só para citar os nomes das disciplinas: 

MAC332 - Engenharia de Software 

MAC422 - Sistemas Operacionais 

MAC426 - Sistemas de Bancos de Dados 

MAC435 - Métodos Formais para Esp. e Construção de Programas 

MAC438 - Programação Concorrente 

MAC446 - Princípios de Interação Homem-Computador 

MAC448 - Redes de Computadores: uma Perspectiva de Sistemas de Software 

PCS210 - Redes de Computadores 

PCS216- Sistemas de Tempo Real

MAC499 - Trabalho de Formatura Supervisionado (anual) 


\subsection{Observações sobre a aplicação de conceitos estudados nos cursos no contexto
prático de aplicações reais }

Os conceitos estudados durante o curso estão sendo requisitados constantemente,
desde a fase inicial de planejamento dos projetos, durante toda a fase de desenvolvimento
e análise de risco, até a fase final de implantação. Quando comecei a participar
dos projetos na empresa, pude perceber melhor o lado prático e a aplicável de
todos os conceitos, teorias e definições, enfim, de tudo o que estudava nos
livros e aprendia nas aulas. Por esta razão, os muitos exercícios programas
e projetos (pequenos e/ou enormes) que realizamos durante todo o curso foram
fundamentais para que não houvesse um grande impacto ao entrarmos em um novo
ambiente diferente da faculdade - o mercado de trabalho ou pesquisas científicas. 


\subsection{Continuação dos estudos}

Se continuar atuando na área em que faço estágio, os passos que tomaria para
aprimorar os conhecimentos técnicos / metodológicos / comerciais / científicos
/ etc relevantes para a carreira são: 

Como as tecnologias e recursos envolvidos nesta carreira é muito dinâmico, vou
procurar sempre estar atualizada com novas informações através de livros, revistas,
pesquisas na internet e junto aos meus amigos da faculdade, trocando experiências
profissionais, já que a maioria trabalha em empresas diferentes e lidando com
tecnologias e métodos de desenvolvimento diferentes. Estou tentando também contactar
pessoas do exterior e que atuam na mesma área para trocar informações. Mais
tarde (dentro de no máximo dois anos) penso em fazer pós-graduação em Computação,
mas ainda não decidi a área.


\section{Conclusão }

Em 1997 ingressei no IME no curso de Bacharelado em Matemática, mais por curiosidade
(pois minha primeira opção era a poli), e se não desse certo, prestaria vestibular
novamente porque fazia cursinho junto com a faculdade. Desisti dos cursinhos
(desisti de um em maio e do outro em outubro) e me dediquei mais nos estudos
da faculdade. Hoje não me arrependo da transferência que tentei (e consegui)
no final do mesmo ano, pois hoje tenho várias oportunidades de fazer o que gosto. 

O período em que fui aluna no IME, além de ser muito bem preparada para me firmar
como uma profissional na área de computação, foi muito divertido pelas amizades
que fiz e pela troca de experiências com os professores (mesmo fora das aulas). 

Gostaria que o houvesse mais preparo e apoio no curso para aqueles que optam
por fazer estágio do mesmo modo como há o incentivo para aqueles que fazem iniciação
científica e querem seguir carreira acadêmica. Talvez palestras ou algumas aulas
sobre como está e o que exige o mercado de trabalho, quais as tecnologias mais
empregadas e como estão sendo aplicadas, ...

Vou ser efetivada em janeiro e fui convidada a integrar uma nova equipe de desenvolvimento
de software da empresa, que está sendo criada para trabalhar com tecnologia
Java, servidores de aplicação, workflow e ferramentas de desenvolvimento. Sou
um dos primeiros integrantes nesta equipe e assumirei maiores responsabilidades
do que nos outros projetos. Esta equipe, coordenada pelo Prof. Fernando A. Vanini,
visará determinar um novo modelo de desenvolvimento de aplicações para toda
a empresa, além de trabalhar na elaboração de um novo produto baseado nos conceitos
em questão (procurando encontrar uma alternativa ao 'mundo' Microsoft). Esta
nova equipe iniciará suas atividades em Janeiro de 2001 e, até lá, foi definido
um novo programa de preparação que inclui o estudo da linguagem de programação
Java e seu ambiente de desenvolvimento e execução, e de um projeto experimental
que tem como fim permitir a aplicação dos conceitos estudados - o projeto de
Chat.

\end{document}
