MAC 499 - Trabalho de Formatura Supervisionado

 

Aluna: Elaine Cristina Vilela Querido

Supervisor: Prof. José Coelho de Pina

Prof. Responsável: Carlos Eduardo Ferreira

 

1. Introdução

2. A Empresa

3. Minha Função e Objetivos

4.Ferramentas Utilizadas

5. Projetos

6. Desafios e frustrações encontrados

7. Lista das disciplinas cursadas no BCC mais relevantes para o estágio

8. Bibliografia utilizada durante o estágio

9. Conclusão

1. Introdução

Nesta monografia estão contidas informações referentes ao estágio realizado na Americanas.com, possui dados sobre a empresa, a equipe de trabalho, os projetos realizados, os objetivos e as frustrações encontradas durante todo o período.

 2. A Empresa

A Americanas.com é uma empresa de comércio eletrônico que atua no mercado desde 1999, e que conquistou o público com o primeiro sistema de cobrança de cartão de crédito on-line do país e uma logística que permite entregas muito rápidas. Hoje a Americanas.com é uma das maiores empresas de comércio eletrônico do país.

 Na época de sua criação, existiam ainda algumas barreiras que dificultavam o desbravamento do e-commerce no país, entre eles, a penetração da internet ainda era pequena, o hábito de comprar via internet não existia, a preocupação com a segurança era unânime, o recebimento nos prazos acordados era uma exceção, o padrão das operações on line era básico e o ciclo de reposição de produtos era inconsistente e lento entre outras, ou seja, toda cadeia de empresas envolvida no processo ainda estava acordando para a realidade digital, e portanto pouco estruturada para este tipo de operação.

Mas apesar de todos esses empessilhos, a Americanas.com foi criada e cresceu focada em Internet, mas também com outros canais de vendas como Quiosques e Televendas.

A Empresa é fisicamente dividida em Sede e Centro de Distribuição. Na Sede trabalham aproximadamente 70 pessoas subdivididas em determinados grupos: Tecnologia, Arte, Marketing, Conteúdo entre outros.E é onde ocorre todo o desenvolvimento e administração do site e de aplicações que vão de controle de logística á recursos humanos. O Centro de Distribuição é onde fica armazenado o estoque de produtos e é para onde são encaminhados todos os pedidos que devem ser entregues. Os servidores WEB, servidores de aplicação e banco de dados são mantidos por uma empresa tercerizada.

Uma pesquisa de perfil do cliente da Americanas.com, realizada em setembro de 2001 com 224.087 clientes, indica que:

Sexo:

Masculino: 212.111 (57%)

Feminino: 142.795 (39%)

Indefinido: 16.508 (4%)

Idade:

Até 18 anos: 6.702 (3,0%)

De 19 a 26 anos: 53.340 (23,8%)

De 27 a 35 anos: 61.439 ( 27,4%)

De 36 a 45 anos: 44.322 ( 19,8%)

Acima de 46 anos: 24.628 ( 11,0%)

Já utilizou algum tipo de parcelamento no site?

Não: 208.183 (92,9%)

Sim: 15.904 ( 7,1%)

Freqüência

Frequent: 8.280 (3,7%)

Habitual: 3.225 (1,4%)

New: 9.454 (4,2%)

OneShot: 148.975 (66,5%)

Seldom: 54.153 (28,6%)

Descrição

Frequent: Um pedido a cada dois meses ou mais

Habitual: Um pedido por mês ou mais

New: Menos de um mês de Relacionamento

OneShot: Aqueles que só realizaram um pedido

Seldom: Menos de um pedido a cada dois meses

3. Minha Função e Objetivos

 A equipe a que pertenço é formada por sete desenvolvedores, sou estagiária na área de desenvolvimento e comecei minhas atividades nessa empresa em 22/01/2001. Os projetos que já realizei ou que ainda participo tem supervisão de Pedro Donati (ex-aluno do BCC).

Como objetivos deste trabalho de formatura, pretendo adquirir experiência em projeto e desenvolvimento de sistemas orientado a objetos, desenvolver a capacidade de me relacionar com equipes de trabalho e colocar em prática, todo o aprendizado obtido no curso.

 

4. Ferramentas Utilizadas

 

Plataforma de Desenvolvimento

 

A maior parte das aplicações desenvolvidas na empresa são criadas utilizando uma ferramenta da Apple chamada WebObjects.

WebObjects possui um grande conjunto de ferramentas e framewoks orientado a objetos que permitem o desenvolvimento e criação de códigos reutilizáveis, aplicações Java e aplicações Cliente/Servidor. Ele permite criar com facilidade páginas WEB e o desenvolvimento toda a lógica de programação. As páginas são criadas visualmente e os campos no design visual podem ser associados a variáveis ou métodos em classes pertencentes ao seu projeto.

O código fonte pode ser escrito em uma de três linguagens: Objective-C, WebScript ou Java. Objective-C, apesar do nome, é uma linguagem que não tem muito a ver com C. É uma linguagem orientada a objetos, mas sua sintaxe é bem diferente de C++. Praticamente todo o desenvolvimento WebObjects é feito com Java como a linguagem por trás da interface. A programação em Java no WebObjects permite que seja usado qualquer recurso presente no pacote Java da Sun além de fornecer novas classes que facilitam certas tarefas como o acesso ao banco de dados.

WebObject é um application server orientado a objeto mas diferente de outros application server, ele lida com o acesso ao banco de dados e gerencia as sessões, separando a lógica de negócio da interface com o usuário e do modelo de dados. Este modelo de três camadas torna fácil e flexível o desenvolvimento e a manutenção de aplicações. Além disso, como WebObject usa puro Java, as aplicações podem facilmente interagir com outras aplicações Java.

Para acesso ao banco de dados o ele possui uma interface visual que permite que sejam definidas as propriedades das tabelas assim como as relações entre elas. Após ter suas relações definidas, joins entre as tabelas são feitos automaticamente quando necessário. Acessar os dados do banco também fica bem mais fácil, pois o WebObjects mapeia as tabelas em classes Java e as colunas em métodos das classes.

É possível construir database applications com WebObject com interface Java ou HTML, dependendo da necessidade.

Para fazer o controle de versões das aplicações, foi escolhido o CVS que permite registrar a história dos códigos fonte. Algumas vezes bugs demoram para ser detectados e isso pode ocorrer quando já foram feitas várias modificações, com o CVS nós podemos resgatar versões anteriores para ver exatamente qual mudança provocou o erro. O uso do CVS só iniciou depois que foram feitas as primeiras migrações para o WebObjects 5, anteriormente o controle de versões era feito por nós mesmos.

Plataforma de Hardware

Os servidores onde ficam as aplicações do site, as aplicações internas e banco de dados estao em máquinas SUN: 3 E3500, 1 E3000, 1 E450, 1 E250, 4 UltraX e 1 E10000.

Sistema Operacional:

O sistema operacional nos servidores é UNIX – SOLARIS.

Nas máquinas para desenvolvimento, Windows 2000 e MAC/OSX

Plataforma de Banco de Dados:

Gerenciador de Banco de Dados Oracle 8i

5. Projetos

 - Estudo do WebObject:

 Inicialmente foi necessário um estudo da ferramenta utilizada para desenvolvimento, o WebObject. Para isso foram utilizados os manuais e tutoriais da ferramenta.

 - Divisão da aplicação principal em Framework e aplicação

 O período inicial do estágio coincidiu com o período em que se estavam sendo realizadas alterações das aplicações do site e criando-se um Framework com classes que seriam reutilizadas por essas aplicações. Duas aplicações já haviam sido mudadas para essa estrutura, a aplicação referente a loja de CDs chamada CDStore e a referente a loja de brinquedos, chamada ToyStore. Ambas utilizavam o Framework.

 Restava a aplicação que se refere a todas as outras categorias de produtos na qual a loja trabalha, chamada Eacom. Foi quando comecei o primeiro trabalho com WebObject na empresa. Baseados no Eacom antigo e nas aplicações que já haviam sido alteradas, iniciamos a alteração do Eacom.

 - Manutenção e correção nas aplicações.

 Essas aplicações, citadas acima, necessitam de constantes manutenções e alterações. Essas alterações ou manutenções vão desde mudanças na interface HTML á novas informações que devem ser apresentadas e que necessitam de cálculos ou consultas ao banco de dados e que devem ser efetuadas pelo código fonte em Java.

 - Projeto de Busca Fonética

 Já havia no site um componente responsável por realizar uma busca por produtos através de alguma palavra digitada pelo usuário. Porém essa busca era feita no nome do produto ou em sua ficha que consiste de um campo no banco de dados contendo informações sobre esse produto.

 Iniciou-se então o projeto de busca fonética, onde uma stored procedure foi criada no banco de dados e esta ficaria responsável pela busca de produtos com fonética semelhante à palavra digitada pelo usuário. Esta stored procedure busca pela palavra digitada pelo usuário em uma tabela no banco de dados onde estao cada produto e sua descrição já tratada por uma outra stored procedure que deixa só as palavras relevantes e que faz com que sejam ignoradas diferenças na sintaxe das palavras. A palavra digitada pelo usuário também passa por essa procedure antes de ser pesquisada nesta tabela.

 Em seguida foi criada uma rotina no código fonte para acessar esta stored procedure e tratar as informações retornadas por ela através de dois cursores contendo um os grupos onde foram encontrados os produtos e a quantidade de produtos em cada grupo, e no outro cursor os produtos encontrados pela stored procedure.

 - Cálculo dos Parcelamentos em Cartão de Crédito

 Até alguns meses atrás as informações sobre formas de pagamento dos produtos não eram apresentadas junto com as informações do produto, apenas quando o cliente entrava no processo de compra é que essas informações eram mostradas.

 Foi criado então um componente para a apresentação das formas de parcelamentos com cartão de crédito na qual o cliente poderia efetuar a compra. Inicialmente esse cálculo se baseava apenas na taxa de juros e no valor do produto que indicava em quantas vezes o produto poderia ser parcelado.

 Posteriormente novas regras para parcelamento com ou sem juros foram criadas, aumentando a complexidade dos cálculos das parcelas. Então para facilitar a manutenção dessas regras, que mudam constantemente, foi criada no banco de dados uma tabela que mapeia todas essas regras com parâmetros, valores e datas de inicio e fim.

 - Criação da aplicação de Busca com XML

 É muito comum a existência de sites que fazem pesquisas de preços nas lojas virtuais. A Americanas.com tem parceria com alguns desses sites. Para que possam informar preços de produtos aos seus usuários necessitam realizar uma consulta em nosso banco.

Para que essas informações fossem transmitidas a esses parceiros, foi criada uma aplicação chamada Busca, onde o usuário passa como parâmetro da url o código da categoria na qual ele quer fazer a pesquisa e uma palavra que se refira ao produto que se deseja encontrar e obter informações.

 A aplicação então retorna os dados sobre o produto em XML para que a aplicação do parceiro possa processar essas informações. Para buscar esses produtos no banco de dados, a aplicação Busca utiliza-se da stored procedure criada para a busca fonética mencionada anteriormente.

 Hoje em dia essa aplicação é utilizada também para buscar outras informações no banco de dados, como informações sobre os grupos, também chamados de categorias de produtos, linhas e skus.

 - Migração para nova versão do WebObject

 Como a versão da ferramenta WebObject que utilizávamos estava duas versões atrasada, e a nova versão WebObject 5, trazia uma série de benefícios e vantagens adicionais sobre a versão WebObject 4.0 que utilizávamos, e também porque precisávamos ter um site que “agüentasse” o volume de acessos crescente e principalmente com a proximidade do Natal onde as vendas crescem absurdamente, foi iniciado o processo de migração.

 Esse processo não consistiu apenas em mudança de versão da aplicação WebObject, outras mudanças também ocorreram como:

- Aquisição de novas máquinas para o desenvolvimento;

- Aquisição de novas máquinas como servidores;

- Migração do Banco de Dados para Oracle 8

Esse processo de mudança do WebObject 4.0 para WebObject 5.0 trouxe consigo a aquisição de máquinas mais poderosas e mais modernas e a mudança de plataformas para a plataforma Mac da Apple, pois a nova versão da ferramenta para o sistema operacional MAC OSX, trazia benefícios a mais que a versão para Windows.

Inicialmente a migração das aplicações foi relativamente simples, necessitando de poucas alterações no código. Porém, quando essas aplicações foram submetidas ao volume de acessos quando colocadas no ar, não suportaram por muito tempo. Várias mudanças foram necessária para se obter uma versão estável mas ainda em teste no inicio do mês de novembro.

6. Desafios e frustrações encontrados

 No início do estágio, a principal dificuldade encontrada foi a falta de uma documentação geral mais consistente sobre as aplicações. Tive que ao mesmo tempo aprender a utilizar o WebObjects e entender o funcionamento das aplicações. A única documentação existente era os raros comentários de código e algumas definições do funcionamento do sistema. Não havia nenhuma referência sobre a base de dados. Durante as duas primeiras semanas, grande parte do tempo foi gasto no entendimento do banco de dados.

 Outro fato, que me incomoda bastante, são as alterações nas aplicações, principalmente nas regras de parcelamento sem aviso prévio. Muitas vezes, novas regras são criadas para parcelamento em cartão de crédito, e na maioria das vezes eu sou comunicada no dia em que as regras irão mudar. Talvez pela natureza da empresa, onde mudanças estratégicas ocorrem muito rapidamente, esse tipo de problema ocorra. Também esse deve ser o motivo para não haver muita documentação do que é feito na empresa. Todas essas mudanças que são feitas, ou mesmo novas aplicações são todas, combinadas em reuniões e não existe nada documentando o que deverá ser feito e como deve funcionar.

  

7. Lista das disciplinas cursadas no BCC mais relevantes para o estágio

 MAC-441 Programação Orientada a Objetos:

            Nesta disciplina iniciou-se os conceitos básicos de orientação a objeto que é muito utilizado no desenvolvimento das aplicações. Os conceitos de classe, herança, classes abstratas, frameworks e patterns.

 MAC-426 Sistemas De Bancos De Dados

            Foi essencial para a construção de consultas SQL. Como toda a informação que dever ser mostrada no site fica armazenada em um Banco de Dados Relacional, consultas SQL são largamente utilizadas.

 MAC-332 Engenharia De Software

            Nesta matéria pude ver como é importante a documentação e a especificação de um sistema é importante. Como cursei esta matéria apenas neste último semestre, agora é que estou começando a pensar em documentar tudo que eu faço dentro da empresa. Porém, da maneira como as regras mudam, e como as alterações surgem dificilmente conseguirei seguir a risca todos os detalhes de engenharia de software.

PCS – 210 Redes de Computadores

            Esta matéria foi essencial para o entendimento do funcionamento de redes, intranet e internet, que eu conhecia pouco até então.

 

8. Bibliografia utilizada durante o estágio

    Mark Grand

    Wiley

 

    David Belling e Susan Suchman Simone

    Addison Wesley

 

    Martin Fowler

    Addison Wesley

 

  9.Conclusão

  A realização do estágio foi muito importante para a minha formação, lá eu pude ter uma visão de como funciona o mercado de trabalho, como me relacionar com as pessoas dentro de um ambiente de trabalho.

Outra coisa que pude notar é que além das matérias citadas acima como importantes para o estágio, existem outras também que talvez não tiveram uma importancia direta, mas indiretamente tiveram a sua parcela de contribuição. São elas as matérias de mat, que inicialmente no curso, todos nós reclamamos muito dizendo que são matérias que nunca serão utilizadas, porém eu acredito que elas contribuem para o desenvolvimento do raciocionio, possibilitando um rápido entendimento dos problemas e soluções.