Como a programação por componentes ou orientada por objetos facilitam o desenvolvimento de sistemas de aplicação?

As equipes de desenvolvimento de sistemas procuram metodologias e ferramentas que possam diminuir o tempo de desenvolvimento, qualidade dos sistemas, diminuição da quantidade de código e a redução do custo de desenvolvimento e manutenção. Duas opções estão disponíveis para os programadores: a programação usando componentes e a programação orientada a objetos. Segundo o Gartner Group, a programação usando componentes será utilizada pela maioria dos programas OLTP em 5 anos. A componetização tem a vantagem da independência entre os componentes com a possibilidade de reutilização do código. Os objetos, por sua vez, são fortemente entrelaçados com uma hierarquia baseada em heranças de objeto-pai para objeto-filho, tirando um pouco da flexibilidade. Entretanto, isso traz uma forte produtividade porque na alteração de um objeto-pai os objetos-filhos são imediatamente atualizados.

Com a criação das redes de computadores e da filosofia cliente/servidor tornou-se comum o uso de interfaces de programas (API – Application Program Interface) para a comunicação entre os programas dos clientes e os bancos de dados dos servidores. As APIs mais conhecidas são o ODBC da Microsoft e o SQL*Net da Oracle. O banco de dados além de armazenar os dados tinha a função de monitorar as transações. Para aumentar a produtividade criaram-se monitores de transações. Criou-se então uma independência entre os programas e os dados, introduzindo o conceito de multicamadas no modelo cliente/servidor. Dentro do foco de multicamadas criaram-se os modelos COM, CORBA e JavaBeans para estabelecer a comunicação entre componentes e objetos distribuídos, garantindo a interoperacionalidade entre eles.

Os componentes são definidos como uma unidade independente com possibilidade de reutilização em forma binária que pode ser conectada a outros componentes formando uma aplicação completa. Os componentes não precisam ser compilados e são flexíveis através do uso de mecanismos simples e padronizados para assegurar a interoperacionalidade. Para a comunicação entre os componentes é necessário um mecanismo chamado ORB (Object Request Brokers). Os ORBs conseguem localizar outros componentes dinamicamente, mesmo que esses componentes estejam remotos. Atualmente o desafio da tecnologia por componentes é o uso de uma camada chamada OTM (Object Transaction Manager) que reúne as funções dos monitores transacionais e dos ORBs para atender a grandes volumes de dados e transações.

Duas críticas são feitas sobre a programação orientada a objetos: a primeira é que os objetos são definidos com um nível muito baixo de expressão só podendo ser compreendidos e utilizados por programadores, sendo inacessível para usuários finais; e, a segunda crítica é que devido a necessidade de um forte entrelaçamento dos objetos para suportar uma hierarquia de heranças entre objetos-pai e objetos-filhos tornar-se pouco flexível a reutilização dos objetos. Apesar dessas limitações existem fatores que garantem produtividade no desenvolvimento por objetos.