Desenvolvendo Sistemas de Mediação de Bilhetagem para Telefonia

João Dubeux Kawamura

 

1.A EMPRESA

2.O PROJETO

3.RESUMO DAS ATIVIDADES

4.CONHECIMENTOS TECNICOS

5.CONCLUSÃO

 

A EMPRESA

 

A empresa Choose Technologies (www.choose.com.br) tem um nome no mercado como provedora de soluções de engenharia de software e de metodologias de desenvolvimento. Ela é a representante comercial de ferramentas CASE e também tem um departamento de desenvolvimento de sistemas de alto desempenho e sistemas de otimização.

 

O público alvo do departamento de desenvolvimento são empresas com processos complexos, que exigem soluções complexas, área na qual a Choose Technologies (www.choose.com.br ) tem uma vantagem estratégica devido a tecnologia que a empresa domina - as bibliotecas ILOG (www.ilog.com).

 

As bibliotecas ILOG proporcionam vantagens estratégicas porque permitem o desenvolvimento de aplicações complexas com tempo de desenvolvimento reduzido, possibilitando a comercialização de sistemas de qualidade com preços competitivos.

 

A ILOG desenvolve bibliotecas com implementações de algoritmos de programação matemática, para o desenvolvimento de sistemas para qualquer segmento do mercado que necessite de otimização: Indústrias que querem melhorar o processo de produção, frete e planejamento, ou até mesmo empresas que queiram disponibilizar para os clientes serviços de otimização, como configurações de produtos complexos pela web (como por exemplo, carros).

Um exemplo disso é o ILOG Solver, uma biblioteca para o desenvolvimento de sistemas de programação por restrições, escrita em C++. Com a especificação de classes e definição de operadores, é muito simples expressar restrições sobre dados.

 

Outro Produto que a ILOG desenvolve é o ILOG Rules, uma biblioteca que consiste em uma engine de inferência de regras, e mecanismos para aplicar essas regras em qualquer objeto C++ que já exista no sistema. O produto conta também com um pré-compilador que interpreta um conjunto de regras escritas na linguagem ILOG Rules Script, (bem semelhante ao Prolog) e gera código correspondente em C++, caso seja interessante ter regras estáticas no código, mais rápidas. Um terceiro produto da ILOG utilizado foi o ILOG Server, que implementa um sistema de objetos distribuídos de interfaces dinâmicas.

 

 

O PROJETO

O Projeto SOLT- Sistema Online de tarifação, faz bilhetagem, uma etapa crítica do sistema de telecomunicações.

Uma rede de telefonia fixa funciona da seguinte maneira: existem centrais locais de telefone, que são muito numerosas (o estado da Bahia, por exemplo,tem mais ou menos 600) e as centrais de tráfego, que são centrais que tratam de ligações interurbanas e internacionais, chamadas também de "bilhetadores". O grosso da receita das empresas de telefonia vem dessas ligações interurbanas. As centrais de tráfego são um pouco menos numerosas, por exemplo, o estado da Bahia tem cerca de 20 dessas centrais.

Cada vez que uma ligação interurbana é feita, é efetuado um registro que será usado para tarifar o assinante da ligação. No jargão das telecomunicações, isso se chama "bilhete". Esses registros devem ser então enviados para um sistema que cuide da tarifação.

A complexidade do processo se deve ao grande volume de dados que devem ser processados. Na verdade o problema da mediação de bilhetagem, que é exatamente o que o sistema faz, vem do fato que, por um lado o hardware das centrais telefônicas evoluiu muito, provendo mais performance e mais serviços. Na outra ponta do processo, os sistemas de tarifação também evoluíram. Mas a comunicação entre eles, o processo que passou a ser chamado de “bilhetagem”, continuou fraco.

A bilhetagem é literalmente uma pedra no sapato das empresas de telefonia. Erros e problemas no processo de tarifação fazem com que as empresas percam até 5% do faturamento. O processo é tão complicado que algumas empresas simplesmente desistem de cobrar por telefonemas interurbanos, cobrando uma taxa fixa dos assinantes.

O projeto SOLT foi premiado em novembro de 2000, no evento ILOG User’s meeting como melhor produto de Telecom do ano de 2000, desenvolvido com bibliotecas ILOG.

 

RESUMO  DAS  ATIVIDADES

 

Comecei meu estágio estudando o ILOG VIEWS, uma biblioteca C++ e um conjunto de ferramentas para construção de interfaces gráficas homem-computador multiplataforma, separando o código da interface.

Estudei também um sistema implantado na TELESC de SC desenvolvido pela empresa.

 

Em seguida, comecei o desenvolvimento do SOLT – sistema on-line de tarifação. Na verdade o nome não é muito adequado, uma vez que o sistema faz mediação de bilhetagem de telefonia.

Como os requisitos de performance eram desafiadores, optou-se por uma arquitetura de objetos distribuídos, usando o servidor de objetos distribuídos ILOG Server. Essa foi uma decisão de importância estratégica para a empresa, já que essa tecnologia não era dominada por ninguém na empresa. Com um tempo de desenvolvimento maior (que incorporou o tempo de aprendizado da tecnologia), e logo um custo maior, ganhou-se o domínio da tecnologia.

A equipe de desenvolvimento contava inicialmente com cinco pessoas. Três pessoas trabalhando com formatação de bilhetes de tarifação (um dos módulos) e outros dois - eu inclusive - trabalhando com a arquitetura do sistema e a interface gráfica.

Ou seja, desde o começo do meu trabalho já havia uma cobrança dos clientes, parceiros e da própria empresa para a realização do trabalho. Com um certo atraso, foi entregue a versão alfa do produto que entrou em produção na Telemar- Bahia.

Como resultado desse trabalho, também posso apontar o acúmulo de conhecimentos técnicos, como arquiteturas de objetos distribuídos e instalação e manutenção de bancos de dados relacionais.

 

Em seguida, dando continuidade a esse trabalho, a equipe, já acrescida de mais duas pessoas, dirigiu os esforços para o segundo cliente que havia comprado o produto, a Embratel. O escopo desse projeto era bem maior e o grande trabalho seria acrescentar funcionalidades para o cliente.

Nesse projeto, como a equipe era maior, o cliente era maior e as relações comerciais mais difíceis, a equipe sentiu na pele o quão desastroso pode ser o desenvolvimento de um sistema grande sem uma definição, ainda que informal, de uma metodologia de desenvolvimento e, conseqüentemente de uma documentação coerente.

 

Os requisitos eram modificados freqüentemente, os parceiros se recusavam a cooperar, e muito trabalho foi desperdiçado. A coroação do caos foi o cancelamento do projeto por parte do cliente, ironicamente em conseqüência do não cumprimento de prazos por parte de um dos parceiros da empresa. Nessa etapa do meu trabalho eu produzi o módulo de distribuição de carga e exclusão mútua do sistema. O sistema é distribuído com um servidor de objetos e vários clientes que se conectam com esse servidor que agregam cada um uma funcionalidade ao sistema. Assim, a escalabilidade pode ser granularizada ao nível das funcionalidades. Cada funcionalidade pode pontencialmente ser escalável. Uma etapa crítica e cara em termos de processamento é o processo que interpreta os lotes que vão chegando ao sistema e traduz para as saídas, de acordo com as regras configuradas pelo usuário. Caso a velocidade desse processamento não atenda as necessidades de alguma empresa ou cliente, o problema pode ser resolvido com a adição de novas maquinas, de forma totalmente transparente. Para isso desenvolvi um mecanismo de exclusão mútua no servidor para garantir o funcionamento dos processos que rodam em paralelo.

 

Considero a experiência reveladora porque me mostrou a necessidade de formalização de processos para o desenvolvimento. A implantação desses processos depende muito do comprometimento de cada um envolvido.

 

Depois disso, parti para a implementação de mais funcionalidades do sistema, dessa vez novamente para a Telemar-Bahia, que queria uma nova versão do produto. O módulo de formatação do sistema foi o que teve que ser modificado por mim. Considero essa etapa do meu trabalho interessante porque tive um contato maior e mais direto com os clientes. Tecnicamente, foi interessante também, já que aprendi um pouco de programação por regras, com o ILOG RULES, uma biblioteca de programação por regras.

 

ASPECTOS ORGANIZACIONAIS

A empresa tem uma estrutura organizacional bem aberta no sentido que não existem cargos rígidos hierárquicos. Formalmente, os projetos têm gerentes, que dividem o trabalho e acompanham o desenvolvimento do projeto. Novas idéias e pontos de vista passam pelo crivo do gerente, mas fundamentalmente devem ser aceitas pela equipe como um todo. Esses processos acontecem informalmente na organização.

Isso estimula um bom ambiente de trabalho e incentiva a criatividade de cada um envolvido no processo. Cada indivíduo tem autonomia para imprimir sua marca pessoal no produto do trabalho, seja através do foco da sua dedicação ou de discussões e opiniões. Ao meu ver, isso é importante porque incentiva o comprometimento por parte dos envolvidos, o que é fundamental.

Por outro lado, essa abertura faz com que os processos da empresa sejam extremamente dependentes dos envolvidos, que definem até certo ponto seus próprios critérios de validação e prioridade, o que é perigoso do ponto de vista da organização, vinculando o sucesso de projetos puramente aos indivíduos. Como por exemplo, em um time de basquete, em que um mau jogador compromete o rendimento do time.

Nesse tipo de organização, imagino que seja ainda mais importante o investimento nas relações pessoais: como trabalhar em grupo, como dividir tarefas e o tempo de forma inteligente e produtiva. Em uma situação de pressão, essas relações interpessoais são levadas ao extremo e intensificadas. Rixas pessoais são evidenciadas, bons relacionamentos são carregados. Algumas pessoas notoriamente trabalham melhor sob pressão, outras trabalham pior. Mas identificar isso é importante.

Um aspecto muito positivo da minha experiência profissional foi notar como lidar com as pessoas e entender como a forma de lidar com as pessoas influencia em seu comportamento. Ao meu ver essa evolução das relações no trabalho deve ser contínua, melhorias e degenerações sendo identificadas e eventualmente corrigidas.

CONHECIMENTOS TÉCNICOS ADQUIRIDOS

 

 

Arquitetura de objetos distribuídos: foi interessante notar as vantagens de uma tecnologia para o próprio processo de desenvolvimento, como ela influi na possibilidade da divisão do trabalho, na modularização e na análise.

Outro ponto interessante foi a implementação de mecanismos de concorrência na plataforma de objetos distribuídos usada, o ILOG SERVER.

 

 

Programação por regras (“IA”): eu tive uma experiência desenvolvendo aplicações com a biblioteca ILOG RULES – uma implementação do algoritmo RETE para inferência de regras com várias facilidades. É muito interessante ver na prática como disciplinas altamente teóricas do BCC,  como lógica/métodos formais, acabam por ser importantíssimas.

 

 

Sistemas gerenciadores de bancos de dados relacionais: tive contato com aplicações práticas de um banco relacional com exigências extremas de performance. Tive a oportunidade de entender como é implementado um SGBDR, como ele lida com aspectos dos bancos de dados e como isso influi no trabalho.

 

 

Desenvolvimento de Interfaces Homem-Computador: considero interessantes as noções de ergonomia, coerência conceitual na interface gráfica com o usuário que aprendi nesse estágio.

 

 

Aplicações de conceitos de OO no desenvolvimento de projetos (em C++): Foi muito interessante entender a fundo como os conceitos de OO permitem a reutilização de código. Como podem ser bem usados, boas práticas de OO. Em oposição a isso, observei também como pode ser um mau projeto com OO.

 

CONCLUSÃO

 

Algumas experiências foram muito importantes para mim: O contato direto com clientes e a própria negociação com eles foram importantes. A importância das relações pessoais foi ressaltada para mim. Viajar a trabalho e experimentar o isolamento em um ambiente desconhecido, com o propósito único do trabalho também foi uma experiência interessante (viajei para Salvador e Rio de Janeiro, por dois meses em cada).

 

Após a experiência com o estágio que tive, pude identificar algumas disciplinas do BCC que tiveram mais utilidade diretamente no trabalho, posso enumerar algumas como: estruturas de dados, sistemas operacionais, bancos de dados, sistemas de objetos distribuídos.

No entanto outra conclusão que posso tirar dessa experiência é que a maturidade de raciocínio adquirida com disciplinas como cálculo, álgebra e lógica também são importantes. A influência dessas disciplinas é muito mais sutil, mas de alguma forma, ajuda a relacionar informações de forma que o entendimento de processos complexos é muito mais fácil. Não é fácil de explicar, mas tenho a impressão cada vez mais forte de que essas disciplinas foram importantes para a minha formação.