+2

A importância da interoperabilidade.

criado por Rafael Ferreira Silva em 18/08/2004 11:05pm
Atualmente o esforço de grandes empresas e organizações como, por exemplo, a W3C para criar ou estabelecer padrões de comunicação e formatação para Web não tem sido em vão, e cada vez mais os desenvolvedores e empresas estão empregando esses padrões nos seus produtos. A seguir listo alguns exemplos de padrões para web (ou não ) que foram criado para auxiliar a comunicação entre softwares:


  • Para conversa entre plataformas/tecnologias o RPC, hoje em dia implementado com XML, gerando o XML-RPC;<br>

  • Para exportação notícias temos alguns padrões: RSS/RDF/ATOM, todos implementados com XML;<br>

  • Para manipulação de blogs faz-se uso da Blogger-API, que usa XML-RPC;<br>

  • Para a padronização de cursos usados em sistemas de educação à distância há o SCORM e outros;<br>

  • Para formatação de conteúdos para web (páginas) o CSS associado com o XHTML (evolução do HTML);<br>

  • E para muitas outras coisas o uso do XML tem se tornado indispensável.



Esses são alguns poucos exemplos que tenho tido contato, com certeza há muitos outros, e alguns bem específicos. Se você vai desenvolver recomendo que você consulte alguma organização de referência para padronizações de software.

Entre os usuários de PHP eu tenho notado, no entanto, que poucas pessoas/grupos/empresas têm se preocupado com isso. Na minha humilde opinião alguns fatores determinantes para que isso ocorra são:


  • Essência do PHP. Pelo fato do PHP ser uma linguagem e não um framework (por exemplo) , ela não trata de assuntos específicos, e abrange muitas áreas, deixando os pontos específicos para o desenvolvedor. O que em si não é um defeito, pelo contrário. E como você já deve estar pensando, isso não é exclusividade do PHP, mas de qualquer linguagem. Mas em todo caso dificulta a aplicação de padrões quando deixa isso por conta do desenvolvedor.

  • Inexperiência. Devido ao fato do PHP ser uma linguagem relativamente simples de se aprender e implementar algo com ela, muitas pessoas sem conhecimento acabam produzindo softwares sem nenhum estudo, o que acaba dando em um sistema único e não reutilizável (ou no nosso caso, sem interoperabilidade).

  • Falta de uma comunidade séria. Apesar de haver uma grande quantidade de pessoas envolvidas com o PHP, não há uma comunidade séria que trabalha para tentar desenvolver soluções e suporte. O mais próximo disso é o site oficial, mas que passa longe de ser um centralizador de uma comunidade. Recentemente Chris Shiflett criou a PHP Community (http://www.phpcommunity.org), o que parece ser a primeira iniciativa séria da "profissionalização" do uso do PHP. Como voluntário l, espero que consigamos relamente ajudar a comunidade.



Esses pontos fracos que eu apresentei são apenas alguns poucos, com certeza há outros fatores para que não haja um uso tão grande de padrões, um deles é o mal que assola muitos bons desenvolvedores: a urgência de um projeto. Esse também tem sido um enorme problema, pois criou-se a idéia de que o PHP é uma linguagem de alta produtividade, o que não deixa de ser verdade; porém se esquece muitas vezes que essa produtividade está associada a prazo e bons profissionais. Logo temos um problema que não é fácil de resolver se não fazendo código de forma desorganizada ou sem que pensemos muito no nosso problema. E então temos o que eu costumo "carinhosamente" chamar de toscódigo (código muito tosco).

Bom, para resolver esses problemas e termos um sistema minimamente interoperacional devemos ter algumas coisas em mente:</p>

  • Se você não é o desenvolvedor, você deve contratar um bom profissional, e isso não é tão difícil de se encontrar no mercado hoje em dia;

  • Como desenvolvedor, primeiramente você deve ter um bom conhecimento do negócio do seu cliente, e também pensar numa futura integração de sistemas;

  • Ainda como desenvolvedor, é bom conhecer um pouco de padrões abertos, e se o sistema do seu cliente puder fazer uso de algum, corra atrás e leia o máximo que puder sobre a aquele padrão;



Atualmente estamos com um volume de programadores em PHP muito grande, porém, como em todo processo evolutivo, somente os melhores sobreviverão nesse mundo (se quiserem permanecer como programador). Digo isso não apenas com relação ao PHP, mas se você é programador e quer sobreviver às custas do seu trabalho, é bom começar a se tornar um profissional cada vez melhor. Um diferencial será, com certeza, a capacidade de entender e trabalhar com padrões abertos pois como eu já disse, o mercado está correndo atrás de tornar as coisas interoperacionais, pois isso diminui em muito o custo de produção de software.

Falei que há muitos projetos que engatinham ainda em termos de padronização, porém alguns já nasceram com isso em mente, e outros logo se adaptaram. Em se tratando de PHP temos um fantástico sistema de portais, estilo PHPNuke, chamado Drupal (http://www.drupal.org), que começou como blog e hoje é um completo CMS (Content Management System). Esse é um projeto que aprendeu logo o valor de se trabalhar com padrões (no início teve sérios problemas) , e hoje é um ótimo projeto apesar de ainda ficar devendo em alguns pontos(o sistema de templates ainda é meio complicado ).
Em se tratando de outras tecnologias há o OpenACS, por exemplo. Uma tecnologia muito forte e que está se consolidando cada vez mais principalmente fora do Brasil e que é um dos melhores exemplos de uso de padrões e tecnologias de ponta da atualidade.
Esses são exemplos de projetos que trabalham com padrões e que têm ganhado um grande reconhecimento na comunidade de desenvolvedores. Com certeza há muitos mais projetos que caminham no caminho certo, porém ainda há muito trabalho a se fazer e se você quer fazer parte dessa (r)evolução, recomendo fortemente que corra atrás de entender o mínimo possível de padrões abertos, pois fatalmente um dia você irá se deparar com algum cliente que deseja algo mais e que talvez você não consiga oferecer.

Alguns sites que recomendo que você consulte na hora de pensar num sistema para web:
http://www.w3c.org - maior organização para tratamento de padronização da web;

http://www.alistapart.com - um excelente site sobre acessibilidade e usabilidade

http://www.tableless.com.br - site brasileiro com a mesma ideia do A list apart

http://www.rfc-editor.org - um bom começo para quem precisa procurar um RFC

http://www.xmlrpc.com - site que trata do XML-RPC

http://xmlrpc.free-conversant.com/docs/bloggerAPI e http://www.dentedreality.com.au/bloggerapi - dois sites que tratam da blogger-api, o último fala de uma implementação em PHP.

http://www.google.com - não sabe por onde começar? Procure por aqui. Saber procurar já é um bom começo para quem quer aprender. :-)

Sinceramente, desejo que a comunidade PHP brasileira (e mundial), se envolva com esse assunto que atualmente é de grande importância para o desenvolvimento da web. A interoperabilidade é fundamental para que um sistema ganhe visibilidade se desenvolva, pense nisso na próxima vez que você for desenvolver algum software. Vamos nos esforçar cada vez mais para produzir software de qualidade, pois se somos uma comunidade, cabe a nós a tarefa de nos ajudarmos, e uma grande ajuda é facilitar o nosso próprio trabalho.

Comentários:

Mostrando 1 - 6 de 6 comentários
Olá Murilo,

Obrigado pelo seu comentário.

Penso bem parecido com você, quando dizes que muitas empresas(principalmente) optam por uma outra linguagem qualquer(Java é a mais comum), justamente por essa "obrigar" a se utlizar certos padrões.
Porém acredito que se os desenvolvedores PHP começarem a atentar mais para essa questão(como disse o Marcelio, alguns já estão atentando), certamente o PHP poderá se tornar uma dessa linguagens.

Um abraço,

Rafael
21/08/2004 12:28am (~19 anos atrás)

A falta de padrões de projeto é um dos motivos de muita gente usar outras linguagens como Java(na minha opinião) que é rigidamente vigiada pela http://www.jcp.org , não sou fã do java nem de qualquer outra linguagem ou plataforma , mais penso o php esta evoluindo que nem o java , tendo uma necessidade grande de padronização , mais organização para a tecnologia seja mais levada a serio por empresas (por exemplo) para ser mais usada para projetos mais complexos , pq já vi e vejo projetos inicialmente sendo desenvolvidos em php tendo a necessidade de utilizar outra linguagem para atender as necessidades , falo em projetos complexos pq em um projeto complexo é aonde vc ve a real potencia da linguagem(ou tecnologia) , o codigo em si é na minha opinião tem de 30% a 40% de importancia no projeto pq ?? existe muita mais coisas a se fazer antes de sair codificando.
Parabens pelo artigo.
21/08/2004 12:07am (~19 anos atrás)

Caro Roberto,

Obrigado pelo seu comentário.

Cocordo com vc quando diz que PHP é fantástica e etc...

Apesar de talvez não parecer, eu sou um entusiasta e amante de PHP. Adoraria ver essa linguagem crescer mais e mais(como ela já tem feito), e junto observar que os profissionais que a usam também estão evoluíndo e aprendendo mais, aumentando assim a qualidade do software produzido com ela, por isso escrevi esse artigo.

Espero que sirva para alguém ver que progamar em PHP(como em qualquer linguagem) exige mais do que boa vontade, exige conhecimento e dedicação. O nosso desejo de fazer algo deve ser um pouco contido em nome da coesão. Antes de meter a mão, pense bem antes no que vai fazer, e assim as chances de fazer besteiras será menor.

Um abraço,

Rafael
20/08/2004 8:22pm (~19 anos atrás)

"Existe mais de uma maneira de fazer"
-Larry Wall
Todos tem a possibilidade de fazer e aprender, abandonar, refazer ou reutilizar.
PHP é o que você quizer, ela é fantástica e melhor a cada dia, mesmo sem patrocinadores como a linguagem Java. Todo programador, penso eu, quer aquele gostinho do "feito por mim", isso é um estágio na caminhada do programador, ao avançar e trabalhar em equipe e projetos maiores os conceitos mudam e preocupações em diversos níveis tornam-se fundamentais.
A experiência vem com o tempo, então com ser experiente em menos tempo?
R: Aproveitando as dicas, como esta do Rafael e do Marcelio e outras tantas nesta comunidade, ou no sitepoint (http://www.sitepoint.com), imasters, phpbuilder, etc
20/08/2004 6:27pm (~19 anos atrás)

Olá Marcelio,

Obrigado pelo seu comentário.

Bom, realmente reconheço que em alguns pontos eu fui muito radical, e alguns dos exemplos que você citou(corrigiu) eu concordo com vc.

Concordo inteiramente quando você fala sobre a modelagem do projeto, acho fundamental a modelagem. Mais um ponto que esqueci de mencionar hehe (vou incluir isso na na nova revisão desse artigo).

A minha intenção com esse artigo, foi tentar mostrar que há ainda muito a se fazer por parte da comunidade de programadores em PHP(me incluo aqui).

Com relação aos seus comentários(das citações):

1) Quando coloquei a essência do php como um "problema" acho mesmo que me expressei mal, na verdade, não é um problema ela ser assim, mas é um problema quando os desenvolvedores não conseguem enxergar o contexto e a usam incorretamente.

2)Eu concordo em partes com você, mas veja que o que eu falo, falo com relação a software livre, e a reutilização aí é mínima quando o projeto está malfeito(na minha humilde opinião)

3)Quando eu falei da falta de comunidade séria, foi porque achei(e ainda acho) que a comunidade de PHP é muito mal organizada...
Concorodo que as comunidades que você citou são bons exemplos, mas ainda assim falta um ponto centralizador de idéias, e por isso citei a comunidade que espero q um dia terá mais força nesse sentido, a phpcommunity...

Novamente agradeço seu comentário, e parebenizo pelo mesmo, comentários como o seu fazem a gente rever, e repensar as coisas. Obrigado.

Um abraço,

Rafael
19/08/2004 8:42am (~19 anos atrás)

Marcelio Leal disse:
Rafael,

Importante o seu artigo por tocar em alguns assuntos bons e bem escrito...
É claro que a padronização, em qualquer nível é importante porém algumas de suas afirmações, na minha opinião, são irreais.
Atualmente o mais importante no sistema é a modelagem bem feita, se vc modela corretamente e tem um padrão(projeto, código, modelagem...) definido é fácil tornar um sistema que inicialmente não tem interoperabilidade, em um sistema que tem alto nível disto, simplesmente com Web services(SOAP ou XML-RPC), simplesmente criando interfaces, ou seja, que se adaptam a diversas aplicações.
E é neste ponto, interfaces, que reside toda interoperabilidade nos sistemas modernos, portanto você pode adaptar seu sistema escrito em PHP para se comunicar com outros sistemas desde que você modele razoavelmente bem.

Ainda cito e comento algumas afirmações:
---------------------------
"Essência do PHP. Pelo fato do PHP ser uma linguagem e não um framework (por exemplo) , ela não trata de assuntos específicos, e abrange muitas áreas, deixando os pontos específicos para o desenvolvedor. O que em si não é um defeito, pelo contrário. E como você já deve estar pensando, isso não é exclusividade do PHP, mas de qualquer linguagem. Mas em todo caso dificulta a aplicação de padrões quando deixa isso por conta do desenvolvedor. "
----------------------------
É interessante ressaltar que justamente é esse o papel de uma linguagem, e o PHP o faz bem e melhor do que a maioria das outras linguagens, e que o responsável é o desenvolvedor mesmo, e isso não é um erro, erro é o desenvolvedor não estudar e não desenvolver de maneira errada.
Quanto a questão de que PHP não é um framework, é importante observarmos o PHP de uma maneira geral, ou com a tecnologia PHP, e neste caso podemos visualizar diversos componentes que o completam e que fazem absolutamente sua função, como:
- PEAR, ADODB, Smarty, Classes(PHP Classes), Geradores(ClassGenerator),...

Ou seja, se alguém quiser encarar a tecnologia PHP como um "framework", também pode, e de maneira bem melhor, pois os hot-spots são ilimitados, por fazerem apenas sua função e por ser código aberto.

É importante ressaltar que justamente o PHP, como linguagem, não implementar coisas específicas, é o que dá a total liberdade para o desenvolvedor, ou seja, ele é o controlador da situação.

-------------------------
"Inexperiência. Devido ao fato do PHP ser uma linguagem relativamente simples de se aprender e implementar algo com ela, muitas pessoas sem conhecimento acabam produzindo softwares sem nenhum estudo, o que acaba dando em um sistema único e não reutilizável (ou no nosso caso, sem interoperabilidade)."
---------------------
Isso é realmente verdade, porém mesmo que ele desenvolva o sistema de maneira ruim ou único, ele pode ser reutilizável, porém é importante ressaltar que a modelagem tem que ter um mínimo de competencia.

----------------------
"Falta de uma comunidade séria. Apesar de haver uma grande quantidade de pessoas envolvidas com o PHP, não há uma comunidade séria que trabalha para tentar desenvolver soluções e suporte. O mais próximo disso é o site oficial, mas que passa longe de ser um centralizador de uma comunidade. Recentemente Chris Shiflett criou a PHP Community (http://www.phpcommunity.org">http://www.phpcommunity.org), o que parece ser a primeira iniciativa séria da "profissionalização" do uso do PHP. Como voluntário l, espero que consigamos relamente ajudar a comunidade. "
----------------------------

Eu discordo, acho que a comunidade é grande, boa e séria, exemplos são [phpespecialistas, phppaidegua]@yahoogroups.com, o própio phpbrasil.com, phpclasses.org, ...
O PHP, na minha opinião, é a melhor linguagem para a maioria das aplicações Web e para outros ramos da computação também, como geradores de artefatos, sendo assim ela é profissional, o que pode acontecer é que as pessoas que trabalham com este potencial não saibam utilizá-lo de maneira correta, por isso sua colocação, mas é importante ressaltar que quem é ou não profissional é o desenvolvedor e não uma linguagem do nível do PHP, Java, Phyton, C, ...

Com certeza seu artigo é de grande proveito, e ainda incluo alguns links e considerações:
- Procurem pelo Agata Report, muito bom, tanto implementação quanto funcionalidade;
- Ressaltar a técnica de Tableless, CSS...;


Ainda, é importante ressaltar que o desenvolvedor conheça cada vez mais a engenharia de software, suas técnicas e padrões, principalmente padrões de projeto, você pode começar pelo livro do presman(acho q eh assim que escreve) ou pelos artigos da série "Metodologias de desenvolvimento de software", publicados neste site.

Um abraço,

Marcelio Leal
19/08/2004 1:07am (~19 anos atrás)

Novo Comentário:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)