blog
Artículos Desarrollo frameworks

¿Conoces el Framework que utilizas?

Hemos comentado anteriormente sobre varios Frameworks que existen en el mercado, y su función como herramientas que permiten agilizar y acelerar el desarrollo de aplicaciones web. Confeso que soy un entusiasta de este tipo de herramientas.

Hoy en la comida, comentábamos con Dani  sobre cómo puede ser problemático desarrollar utilizando un Framework, sin saber qué es lo que está pasando en los motores. Entonces me pareció buena idea hacer la reflexión:

A día de hoy, con tantas Bibliotecas y APIs ¿es realmente necesario conocer la Arquitectura del Software, o aprender el Framework ya es suficiente?

La cuestión es que algunas veces has tenido que aprender algún Framework por necesidad del proyecto, pero no tienes mucha idea de cómo es su arquitectura. O incluso sabes como es la arquitectura, pero el framework es tan complejo que es una limitación en si mismo y aunque no fuera recomendable por los creadores del mismo, has tenido que tocar en el core para poder implementar alguna funcionalidad crítica.

El debate sobre aprender Frameworks o/y  la Arquitectura está caliente en la web.  Obviamente todos tienen argumentos para lo que creen ser mejor. Además creo  que hay una confusión, entre lo que es una cosa y lo que es la otra. Para algunos la Arquitectura es la teoría y el Framework la implementación y esta teoría sirve, por ejemplo para saber qué hacer cuando 500 usuarios se conectan simultáneamente en tu aplicación, donde son importantes temas como escalabilidad, fiabilidad, disponibilidad, o rendimiento. ¿A ti qué te parece?

Una definición que se ve mucho en los foros es la que utiliza la metáfora de la construcción de la casa en que necesitamos un diseño de la casa, la arquitectura y los materiales (ladrillos, cementos, tornillos, etc…) el framework.

Sepas o no qué es una cosa y qué es la otra, creo que no puedes seguir desarrollando sin conocer tu framework. Sobretodo si sabes que tu proyecto puede escalar. Miremos un momento que nos dice el wikipedia sobre framework y arquitectura. 

“Un framework o infraestructura digital, es una estructura conceptual y tecnológica de soporte definido, normalmente con artefactos o módulos de software concretos, que puede servir de base para la organización y desarrollo de software. Típicamente, puede incluir soporte de programas, bibliotecas, y un lenguaje interpretado, entre otras herramientas, para así ayudar a desarrollar y unir los diferentes componentes de un proyecto”

“La arquitectura de software, tiene que ver con el diseño y la implementación de estructuras de software de alto nivel. Es el resultado de ensamblar un cierto número de elementos arquitectónicos de forma adecuada para satisfacer la mayor funcionalidad y requerimientos de desempeño de un sistema, así como requerimientos no funcionales, como la confiabilidad.”

O sea, si una Biblioteca es un conjunto de funciones reutilizables, que puedes usar en diferentes aplicaciones, un Framework sería un conjunto de bibliotecas para configurar las aplicaciones web, según unos principios básicos de la misma, la Arquitectura.  Por lo tanto, conocer la arquitectura te permite conocer el framework. 

Cuando tengas que escoger un framework no te olvides del objetivo de los mismos: 

Esconder las secciones de código que deben ser incluidos en diferentes partes, que tendrán  poco o ningún cambio, y también esconder el código de la infraestructura responsable por gestionar las peticiones y respuestas HTTP.

Para evitar problemas en el desarrollo de aplicaciones con algún de los frameworks más populares (ASP.NET, Ruby on Rails, Angular JS, o Symfony), es importante tener en cuenta, entre otras cosas el patrón según el cual este fue proyectado.  El patrón MVC (Modelo-Vista-Controlador) es un ejemplo. MVC sería una forma de separar la lógica de las diferentes responsabilidades de la aplicación.

La mayoría de los frameworks que conozco nacieron de la necesidad de un determinado proyecto y posteriormente este código se puso a la disposición de los demás desarrolladores como código abierto. Esto significa que, aunque su implementación sea, por ejemplo, una arquitectura MVC y ya domines el MVC, es importante hacer un buen análisis de la arquitectura para conocer los principios de diseño detrás de la infraestructura, la integración, la seguridad, etc… Es muy posible que el framework haya sido desarrollado para lograr un determinado objetivo, que no tenga nada que ver con el objetivo de tu proyecto.

En el proyecto que estás trabajando seguramente has pasado por la fase en qué necesitas entender los diferentes aspectos que integran tu software. Serias capaz de describir qué componentes tiene la arquitectura de tu software, que hace cada componente? ¿Cómo se comportan dichos componentes a lo largo de tiempo y como es su interacción?

Saber contestar a estas preguntas definirá si utilizar un determinado framework te permite acelerar el proceso de desarrollo o empeorar aún más los tiempos de entrega.

Fuentes:

Maquetar en Drupal 7: Funciones del Tema

Artículo anterior

Homenaje de Barcelona Mandela

Siguiente artículo
I help Organizations to use Technology to improve people's lives

También te puede interesar

¿Por qué debo mantener mi sitio web?

¿Qué problema hay en utilizar TDD?

La innovación en Pokémon Go

La tecnología no es la innovación, pero…