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 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.
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.