Aqui está um assunto polêmico. Existem dois grupos óbvios nesta discussão: Os que defendem o desenvolvimento de sistemas em PHP utilizando a linguagem pura e criando componentes a partir desta e os que defendem que todo desenvolvimento deve ter um framework comercial como apoio para o sistema. Pelo tema deste post, eu estou no ultimo grupo.
O grupo que utiliza a linguagem pura e busca o desenvolvimento de seus próprios componentes utiliza vários argumentos para tanto. Segurança, performance da aplicação, designer de sistema proprietário, etc. Muitas vezes pessoas deste grupo montam seus próprios framework visando agilizar o desenvolvimento de softwares em busca da reutilização.
Eu, como defensor dos framework comerciais para o desenvolvimento cito algumas vantagens de se utilizar destes:
- Existe uma maior facilidade para a detecção de erros, visto que frameworks são peças mais concisas de software.
- Podemos nos concentrar mais com a abstração de soluções do problema que estamos tratando.
- Torna mais eficiente a resolução dos problemas.
- Como todos os itens acima ocasionam uma maior produtividade, podemos garantir que também teremos um maior lucro, pois teremos uma antecipação da entrega, e uma maior satisfação dos clientes.
- Otimização de recursos
Os pontos descritos acima foram retirados da wikipedia. Vou listar os meus pontos além dos citados acima:
- Padronização do sistema: Um sistema com a utilização de um framework tem um “esqueleto” no qual se apoiar, facilitando a padronização do desenvolvimento do sistema nos diversos pontos.
- Baixo acoplamento entre componentes: Sistemas que utilizam frameworks tem por natureza um baixo acoplamento. Isto se dá pelo fato de os desenvolvedores de frameworks serem bem genéricos para o desenvolvimento visando atingir um número maior de soluções.
- Documentação: Um ponto importante de um framework comercial é a sua documentação. Dado determinado problema no sistema, pode-se consultar uma documentação onde o problema é detalhado e é apresentado uma solução para o tal. Frameworks “caseiros” carecem de documentação em sua grande maioria, dificultando a reutilização de seus componentes.
Existe uma certa preocupação com relação a performance de aplicações que utilizam framework e essa preocupação é válida. Martins Fowler, em seus diversos livros comenta que aplicar designer patterns e refatoração podem impactar em performance da aplicação. Entretanto, ele próprio comenta que essa preocupação pode ser deixada de lado até que o sistema esteja desenvolvido e que ela realmente seja um problema. Nestes casos, em um sistema bem desenvolvido utilizando orientação a objetos e designer patterns de maneira correta, refatorações visando a performance da aplicação são rápidas e fáceis de serem realizadas. É claro que estamos falando de problemas de performance simples que não sejam requisitos do sistema. Por exemplo, uma query que demora 1 min para execução sendo que o tempo máximo deste requisito do sistema seja 3 segundos. Talvez uma refatoração nos leve ao ganho de alguns segundos na query. Entretanto este fator deve ser levado em conta na fase de análise do projeto. Talvez, neste ponto do sistema, uma solução de ORM de um framework seja menos efetiva. Mas a troca de uma solução de ORM para uma extração pura é bem simples. É claro que isso foi um exemplo simples. Existem outros problemas que podem aparecer com relação a performance de uma aplicação que utiliza framework. No entanto, tais problemas são bem pontuais.
Outro ponto que algumas pessoas alegam é com relação a segurança. Alguns dizem: “Vai que existe um bug comprometedor neste framework e a minha aplicação fique vulnerável a ataques”. Bem a afirmação é válida e tem importância sim. Mas essa preocupação é a mesma para quaisquer sistemas e aplicativos existentes na infraestrutura da empresa. Por exemplo, digamos que exista uma vulnerabilidade no mod_rewrite do apache. Posso desativar o módulo ou trocar o meu servidor web. Da mesma maneira, com frameworks posso desativar determinado componente. Posso trocar o framework ou, posso até mesmo consertar a vulnerabilidade. Afinal na maioria dos casos tem-se acesso aos fontes de um framework podendo dessa maneira corrigir a vulnerabilidade e/ou evitar que esta seja utilizada.
É uma tendência a utilização de framework em desenvolvimento, principalmente desenvolvimento WEB. Portanto, caso tenha algo contra, reexamine o porquê e veja se vale a pena perder todas as vantagens listadas aqui.
Fontes: http://pt.wikipedia.org/wiki/Framework
