Skip to content

Desenvolvimento de Aplicações para a Internet

09/01/2010

Depois de algumas palestras sobre o assunto, decidi compilar um pouco do que vinha falando sobre o assunto por aí em um post único que pode ser mais elucidativo para aqueles que têm dúvida no assunto. O roteiro envolve um pouco sobre Web 2.0 (já estou um pouco cansado de falar sobre isso), técnicas para escolha de framework e desenvolvimento propriamente dito e um pouco do que acredito ser o futuro da rede.

Antes de começar, algumas das referências que considero das mais importantes sobre o assunto:

Me lembro que quando comecei a falar de Web 2.0, mais precisamente numa palestra no ESLIF em 2007 se não me engano, quase ninguém sabia do que se tratava o termo. Havia na época uma corrente que tentava difundir Web 2.0 como AJAX (que se revelou não ser a solução mágica que todos acreditavam) e acreditava-se ser uma mudança técnica. O termo já era bastante difunido no exterior e Tim O’Reilly já havia se tornado quase um mito, mas a divulgação no Brasil era baixa. Contudo, houve um evento em São Paulo que parece ter sido um divisor de águas. A partir dele foi criado um Buzz em torno do tema e a divulgação evoluiu rapidamente. Ainda acho a melhor definição a que encontrei nessa notícia:

Web 2.0 é uma série de aplicações que propiciam e potencializam a formação de redes sociais digitais. Redes sociais são coletivos de pessoas e agentes que interagem direta ou indiretamente entre si e constroem certos padrões recorrentes de relacionamento e comportamento.

Ou seja, a mudança é comportamental e não técnica. Obviamente, surgiram tecnologias que potencializaram essas mudanças, mas foi um movimento que empurrou a tecnologia. Podemos dizer que um dos fatores que potencializou a mudança foi a queda no preço dos recursos computacionais, gerando a tão falada computação em nuvem, mas esse é tema para um outro post. Do lado do desenvolvedor, que é o objetivo do post, a mudança conceitual foi como tornar a gerência do conteúdo mais fácil por parte do usuário.

Se voltarmos aos primórdios da Internet, principalmente no Brasil, os principais portais sempre foram derivados de outras mídias e grupos midiáticos. O primeiro grande portal do Brasil foi o UOL (Universo Online) que começou como a simples republicação do conteúdo da Folha de São Paulo na Internet. Nesse ponto, os responsáveis por alimentar o conteúdo eram normalmente jornalistas contratados para aquilo. Aliás, mesmo com toda a mudança conceitual, essa é uma prática que permance até os dias de hoje.

Surgiu então a Web 2.0 e o foco saiu do jornalista profissional para pessoas como eu e você, que nos tornamos publicadores de conteúdo. Alguns fatos foram catalizadores das mudanças, e alguns episódios podem ser considerados marcos, mas para não me alongar muito escrevo sobre isso nesse artigo que está na seção de Publicações do blog. Hoje em dia é impensável imaginar que todos os portais, blogs e sítios mais variados da Internet tenham equipes profissionais de revisão e edição (eu por exemplo não tenho), mas ainda assim a informação precisa ser acessada e, principalmente, inserida em algum lugar. É preciso então existir ferramentas computacionais que possibilitem gerenciar o processo de forma que qualquer usuário, mesmo que totalmente leigo em computação, seja capaz de publicar conteúdo na Internet.

CMS’s, Frameworks, toolkits e outros

Quase todo o mundo que lida com Internet já ouviu falar das palavras acima de alguma forma, mas a maior parte das pessoas não só não tem a menor ideia do que se tratam como ainda acreditam que tudo é a mesma coisa. Para facilitar o entendimento vamos dividir as funcionalidades do ponto de vista do usuário: publicação e gerenciamento de conteúdo, desenvolvimento de sistemas para a Internet e redes sociais.

A publicação e gerencimento de conteúdo atende à necessidade mais simples da maior parte dos usuários, que se trata simplesmente de colocar alguma coisa para as pessoas na Internet. O WordPress, ferramenta que hospeda esse blog, é um bom exemplo de aplicações do tipo. Podem ainda ser citadas outras aplicações do mesmo tipo, como Zope/Plone, Joomla, etc. Quando tratamos apenas do conteúdo publicado e seu gerenciamento, estamos falando normalmente de CMS ou Content Management System. O nome é bastante elucidativo de seus fins.

Quando falamos de desenvolvimento de sistemas para a Internet, temos um conceito bem mais amplo, e aí acontece a maior parte das confusões. A própria definição de sistema é bastante difícil de sintetizar, mas acho que posso usar das palavras do meu professor e orientador, Dr. Jorge Fernandes, que podem ser encontradas aqui:

Um sistema pode ser definido como um conjunto de elementos interrelacionados que interagem no desempenho de uma função.

Com essa definição, poderíamos dizer que CMS’s são também sistemas de internet, que desempenham a função específica de publicar conteúdo. Quando falamos aqui de sistemas de internet, falamos de sistemas de maneira geral, que podem desempenhar as mais variadas funções. Bons exemplos podem ser Sistemas de Gestão Empresarial (Enterprise Resource Planning – ERP), sistemas de gerência eletrônica de documentos (GED), sistemas de controle de estoque, entre outros. Para o desenolvimento de tais sistemas, é muito difundida a palavra framework.

O conceito de framework surge da ideia de que a maior parte dos problemas não são tão diferentes assim uns dos outros, e existem uma série de requisitos comuns entre tipos de problema que podem ser reaproveitados. Um controle de estoque é o mesmo sistema em quase todas as empresas, e a existência de um framework de sistemas de controle de estoque seria o agrupamento de vários componentes que resolvem partes específicas desse problema. Um cadastro de produtos e de usuários é uma necessidade comum a todos eles, e não seria necessário desenvolvê-los de novo em todas as empresas do mundo.

O conceito se torna ainda mais abrangente ao analisarmos a Internet. Muitos estudiosos têm defendido modelos mais genéricos de framework, principalmente no mundo da orientação a objeto. Imagina-se que todos os sistemas que são baseados na Internet precisam de algumas funcionalidades básicas, não importando o seu fim, como por exemplo um servidor Web, um sistema de autenticação e um driver de conexão a um banco de dados. São normalmente chamados de frameworks de software, por serem componentes de desenvolvimento para outros softwares ou sistemas, e não o sistema em si. Contudo, os defensores mais ferrenhos do framework como solução a um determinado problema imaginam que ferramentas genéricas demais não podem ser encaixadas na definição da palavra por não serem solução para nenhum problema em si.

Há ainda as ferramentas que são tão especializadas que não podem ser totalmente encaixadas no conceito de framework, principalmente por facilitarem o desenvolvimento de novos módulos e possuírem vários módulos prontos, mas não serem totalmente automatizadas. São mais conhecidos como toolkits ou conjuntos de ferramentas.

Sempre que partirmos para o desenvolvimento de sistemas para a Internet vamos nos deparar com alguns deles, e a tarefa mais importante de um bom desenvolvedor é saber escolher a melhor ferramenta para o problema a ser resolvido. É tão ou mais importante que escolher a melhor linguagem de programação quando no desenvolvimento de software básico, e só poderemos fazer uma escolha adequada se soubermos o tipo de problema que estamos tentando resolver. Assim, para sistemas de internet frameworks serão normalmente uma boa escolha, pois a customização é sempre necessária, mas grande parte das necessidades são sempre as mesmas.

Por fim, com a realidade de colaboração da Internet, cada vez mais as redes sociais têm uma importância decisiva. A maior parte de nós talvez seja um grande usuário de redes sociais, mas teríamos a mesma capacidade de desenvolver uma se a tarefa nos fosse dada?

A maior dificuldade de desenvolver uma rede social é que a necessidade foge dos padrões convencionais de desenvolvimento das aplicações. Diferentemente da publicação e organização do conteúdo proporcionada por um CMS, numa rede o conteúdo precisa ser reaproveitado e redistribuído, ao mesmo tempo em que as contribuições devem ficar sempre registradas. A maior mudança porém está no foco do sistema: enquanto num CMS tradicional o foco é o conteúdo em si numa rede social o personagem mais importante é o usuário e suas interações no ciberespaço. Quando entramos numa rede levamos o nosso “eu virtual” e passamos a existir em um outro ambiente, e reproduzir a vida de um ser humano pode ser algo realmente complexo.

Algumas empresas perceberam primeiro a importância dessa “manifestação virtual” e criaram um único usuário para todos os seus serviços, como o Google e o Yahoo. A modelagem de um sistema de rede coloca o usuário no centro do universo virtual, e possibilita uma série de interações que podem ser depois analisadas em seus padrões, que são de fato a riqueza da rede.

Para o desenvolvimento de redes sociais o foco deixa de ser o atendimento dos requisitos e passa a ser o tratamento da informação. Na nova internet, uma das proficiências mais importantes do desenvolvedor é o conhecimento de bancos de dados e seus modelos, além dos possíveis tipos de relação. No futuro, onde há a promessa de Internet semântica, informação é o poder, e sairá na frente quem entender primeiro todas as suas nuances.

Anúncios
2 Comentários leave one →
  1. 14/01/2010 01:28

    Gostei, valeu!

  2. Eduardo Santos permalink
    14/01/2010 13:09

    Obrigado. Sinta-se à vontade para colocar suas observações.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: