Ir al contenido / Skip navigation
Menú
jordisan Usability - UX - research
jordisan is an Information Systems Engineer and Master in HCI who tries to develop his work in the border areas between human and computers, and between research and professional projects.

currículum · resume (English) · portfolio (home) | @jordisan · ramsys(a)gmail.com

Other personal projects:

UCDmanager

'Menéame' para Windows 8

METAeuFORiAS

Últimos artículos
Comentarios recientes
Clasificación de artículos

¿Qué es un 'framework'?

¿Qué es un 'framework'?

Viernes, 29 Septiembre 2006

El término 'framework' se utiliza constantemente en el desarrollo de software, pero… ¿sabríamos definir qué es un 'framework'? He aquí una descripción.

Muchos de los que nos dedicamos al desarrollo de software utilizamos, conocemos o, como mínimo, nos hemos tropezado con el concepto de framework (cuya traducción aproximada sería "marco de trabajo"). En concreto, y por diferentes motivos, he hecho algún pinito utilizando JavaServer Faces así como en Ruby on Rails.

Sin embargo, el concepto de framework no es sencillo de definir, a pesar de que cualquiera con experiencia programando captará su sentido de manera casi intuitiva, y es muy posible que esté utilizando su propio framework (aunque no lo llame así).

¿Cuál es el sentido de un framework?

En casa del herrero…

Una choza de maderaSabemos por experiencia lo importante que es la normalización de datos en cualquier aplicación. Los usuarios pueden manejar su información en papel, fichas, en su propia memoria, tenerla duplicada, con incoherencias, omisiones, … ¡Todo un infierno! Pero una aplicación informática necesita que esa información esté estructurada de un modo conocido para poder manejarla: almacenarla, recuperarla, y todos los "-arla" que se requieran. Para eso definimos modelos de datos con una determinada estructura (que habitualmente se convierten en tablas de una base de datos).

Pero ¿qué ocurre con la información que manejamos los propios desarrolladores para crear una aplicación? Léase código fuente, librerías, ficheros de configuración, etc. Muchas veces parece que la única elección importante es la tecnología concreta a utilizar (lenguaje de programación, gestor de bases de datos, etc.) pero, a partir de ahí, cada programador puede crear su propio maremagnum de ficheros y código fuente.

¿Por qué permitir ese "desorden" en un desarrollo, si estamos tan convencidos de las bondades de estructurar y normalizar la información? Eso es ni más ni menos lo que pretende un framework.

Entonces ¿qué es un 'framework'?

Armazón de una casita de maderaSiendo muy simple, es un esquema (un esqueleto, un patrón) para el desarrollo y/o la implementación de una aplicación. Sí, es una definición muy genérica, pero también puede serlo un framework: sin ir más lejos, el paradigma MVC (Model-View-Controller) dice poco más que "separa en tu aplicación la gestión de los datos, las operaciones, y la presentación". En el otro extremo, otros frameworks pueden llegar al detalle de definir los nombres de ficheros, su estructura, las convenciones de programación, etc.

Pongamos un ejemplo: una aplicación web que utilice Java como lenguaje de programación puede implementarse de multitud de formas, mediante servlets y JSPs. Hay algunas convenciones que es necesario seguir, como usar un fichero de configuración web.xml, pero el programador sigue sin tener un patrón claro a seguir para la creación de servlets, clases, JSPs, etc.

En una primera estandarización, la utilización de una arquitectura MVC aconseja que separemos la lógica de la aplicación (en los servlets) de la presentación (usando JSPs); en concreto, no sería correcto codificar lógica de aplicación o accesos a base de datos dentro de los JSP.

Un paso más allá: utilizando Faces como framework, la estructura de la aplicación queda todavía más definida: un único servlet (FacesServlet) va a controlar el flujo de la aplicación; además, el uso de un fichero concreto (faces-config.xml) permite crear la navegación de la aplicación, definir los objetos (beans) pasados como parámetros, etc., todo ello sin necesidad de codificarlo en Java o JSP.

Los frameworks no necesariamente están ligados a un lenguaje concreto, aunque sea así en muchas ocasiones. En el cada vez más popular Ruby on Rails, 'Ruby' es el lenguaje de programación y 'Rails' el framework; por otro lado, JavaServer Faces está orientado a desarrollos en Java. Sin embargo, nada impide definir el mismo framework para lenguajes diferentes: por ejemplo, existe un framework llamado Biscuit cuyo objetivo es prácticamente convertirse en un "PHP on Rails". Eso sí, cuanto más detallado es el framework, más necesidad tendrá de ceñirse a un lenguaje concreto.

También es posible que el framework defina una estructura para una aplicación completa, o bien sólo se centre en un aspecto de ella. Siguiendo con los ejemplos, Ruby on Rails ofrece un marco para el desarrollo completo de una aplicación web, mientras que JavaServer Faces está más orientado a la interfaz de usuario.

¿Qué ventajas tiene utilizar un 'framework'?

Las que se derivan de utilizar un estándar; entre otras:

  • El programador no necesita plantearse una estructura global de la aplicación, sino que el framework le proporciona un esqueleto que hay que "rellenar".
  • Facilita la colaboración. Cualquiera que haya tenido que "pelearse" con el código fuente de otro programador (¡o incluso con el propio, pasado algún tiempo!) sabrá lo difícil que es entenderlo y modificarlo; por tanto, todo lo que sea definir y estandarizar va a ahorrar tiempo y trabajo a los desarrollos colaborativos.
  • Es más fácil encontrar herramientas (utilidades, librerías) adaptadas al framework concreto para facilitar el desarrollo.

¿Y si no necesito o no quiero utilizar un 'framework'?

Por supuesto, un desarrollador puede crear toda una aplicación sin seguir ningún framework conocido; puede que sea tan pequeña que no lo considere necesario, que no conozca ninguno que se adapte a sus necesidades, o simplemente no desee dedicar tiempo a seleccionar y utilizar uno.

Sin embargo, a medida que la aplicación crece, un programador competente procurará seguir unas determinadas pautas que le faciliten su trabajo de desarrollo y mantenimiento: separación de presentación y lógica, una sintaxis coherente, etc. La evolución natural sera hacia que, de algún modo, se construirá su propio framework.

Y en vez de definir un estándar, ¿por qué no utilizar uno ya definido, y aprovechar el trabajo de otros muchos desarrolladores? Hacer un desarrollo críptico y difícil de interpretar puede ser útil en un concurso de código ofuscado o para presumir de "gurú", pero es muy poco útil para desarrollar y mantener una aplicación. El coste inicial (la curva de aprendizaje) de utilizar un framework se compense probablemente en cuanto el trabajo de desarrollo crezca mínimamente.

De acuerdo; pero ¿qué 'framework' utilizo?

Buscando en la red se encuentra mucha información sobre los frameworks existentes para las diferentes plataformas y lenguajes. Posiblemente uno de sus principales problemas es que haya demasiados: ya se sabe, lo bueno de los estándares es que hay muchos para elegir :) . Sin embargo, la elección del framework concreto a utilizar vendrá marcada por:

  • El tipo de aplicación a desarrollar
  • El lenguaje de programación y otras tecnologías concretas: base de datos, sistema operativo, etc.

Como introducción a los frameworks, Ruby on Rails me parece una buena opción para desarrollar una aplicación web y como ejemplo de lo que es un framework. Dentro del mundo Java, Struts parece uno de los más extendidos.

En conclusión

La utilización de un framework en el desarrollo de una aplicación implica un cierto coste inicial de aprendizaje, aunque a largo plazo es probable que facilite tanto el desarrollo como el mantenimiento.

Existen multitud de frameworks orientados a diferentes lenguajes, funcionalidades, etc. Aunque la elección de uno de ellos puede ser una tarea complicada, lo más probable que a largo plazo sólo los mejor definidos (o más utilizados, que no siempre coinciden con los primeros) permanezcan. Y si ninguno de ellos se adapta a las necesidades de desarrollo, siempre es mejor definir uno propio que desarrollar "al por mayor".

44 comentarios

  1. Trackbacks por meneame.net:

    ¿Qué es un ‘framework’?…

    Muchos de los que nos dedicamos al desarrollo de software utilizamos, conocemos o, como mínimo, nos hemos tropezado con el concepto de framework (cuya traducción aproximada sería “marco de trabajo”). En concreto, y por diferentes motivos, he hec…

  2. Pingback por Miguelsebastian.es cae tan rápido como el candidato | 5líneas.com | Internet, desarrollo web, tecnología y otras cosas por descubrir:

    […] Y todo esto con software libre. Wordpress para el blog, pligg (variante de meneame) para la sección de participación y programación basada en el framework en PHP CodeIgniter (de los creadores del pMachine) para otras partes del sitio. Este excelente trabajo lo realizaron Jorge Maestre y dnx. El primero relata con detalle en su blog el desarrollo del proyecto y las herramientas utilizadas. Lástima que parece que tanto trabajo haya caído en saco roto y las esperanzas de Jorge de que el portal se mantuviera después de las elecciones se hayan esfumado. Pero es así, en este y otros muchos casos, con cualquier signo político; la web se crea para la campaña electoral, para ganar votos. Luego, se acabó. Lo veremos en las próximas semanas. Por cierto, hubo polémica con el dominio miguelsebastian.com; ahora redirige a libertaddigital.com. Subir […]

  3. Pingback por jordisan.net :: Patrones de software, MVC y los teléfonos móviles:

  4. Trackbacks por autobombo.es:

    ¿Qué es un ‘framework’?…

    El concepto de framework no es sencillo de definir, a pesar de que cualquiera con experiencia programando captará su sentido de manera casi intuitiva. Entonces… ¿qué es un framework?…

  5. Comentario por Saúl:

    Muy bueno este post, te felicito

  6. Comentario por Jordi Sánchez:

    Gracias mil, Saúl :)

  7. Comentario por novatisimo:

    Muy buen post, aunque no soy programador me viene una idea sobre lo que es un framework.

    Una pregunta, mootools es un framework, pero como incluirlo en modulos ya creados para joomla?.

    Osea, descargo el archivo mootools.js.php y luego?. Sera que me le explican?. Gracias

  8. Comentario por jordisan:

    novatisimo,

    no he trabajado con MooTools, pero al ser un framework JavaScript, supongo que se puede utilizar en Joomla! integrándolo en una plantilla.

    Puede que esto te sea útil:

    http://beautyindesign.com/tutorial/free_series_mootools_for_the_rest_of_us.php

  9. Comentario por zenphp:

    Hola, no se si vivo en Júpiter o en la Tierra, pero me ha dado por crear un framework php en español, qué opinas de que el código ,comentarios ,tutoriales, foros,etc. sea todo en español?

    Saludos,ah, la web es http://blog.zenphp.es :) y bueno, he hecho realidad muchas de las cosas que comentas sin embargo queda por pulirlo para que sea super sencillo de usar desde una interfaz amigable…

  10. Comentario por jordisan:

    zenphp,

    enhorabuena por atreverte con un proyecto así :)

    El hecho de que esté todo en español puede limitar bastante el número de usuarios que se decida por él. Aunque también es cierto que podría ser una característica que lo distinga de la multitud de frameworks que pululan por ahí.

    Yo te diría que, más que esforzarte en que esté HECHO en español, lo ORIENTES a desarrollos que utilicen ese idioma; por ejemplo: proporcionando funciones específicas de fecha y hora, de moneda; asegurándote de que no hay problemas con caracteres no-ASCII; etc.

  11. Comentario por zenphp:

    Ahora se que vivo en marte, lo estoy orientando a proyectos en español, he insertado muchas funciones para fechas y codificación UTF-8, por ejemplo en la base de datos se intenta realizar consultas con ese juego de caracteres…además recomiendo usar plantillas con ese juego y se incluye un .htaccess con la sentencia "AddDefaultCharset UTF8" sin embargo se que no es suficiente…me han recomendado el uso de gettext, pero no tengo ni idea de como funciona…:O

    Lo que no tengo muy claro es de si hacer algo con la moneda del estilo de OsCommerce y demás…qué opinas?

  12. Comentario por jordisan:

    zenphp,

    con el Gettext no te puedo ayudar, aunque aquí hay un tutorial que parece interesante: http://www.onlamp.com/pub/a/php/2002/06/13/php.html

    Hacer algo como OsCommerce es bastante ambicioso; yo pensaba en algo más básico, como crear funciones de conversión entre monedas; o un poco más avanzado, como crear funciones para llamar a pasarelas de pago/TPV virtuales de bancos y cajas españoles.

  13. Pingback por Meme: mi artículo más visitado / Blog (artículos) // jordisan.net:

    […] Pues bien,  resulta que en este blog el artículo más visitado es este: ¿Qué es un ‘framework’?, que intenta ser una explicación sencilla y lo suficientemente general de lo que significa el término ‘framework’ […]

  14. Comentario por jorgebee65:

    Gracias, me ha servido tu articulo.

  15. Comentario por Jhon F. Ortiz O.:

    ¡Hola! He visto este artículo muy útil sobre-todo para las personas que llevamos la idea de ser excelentes programadores. Actualmente programa en Java, y había algo que intuía, y era la idea de una forma de programar aplicaciones siguiendo parámetros bien definidos, la conclusión un Framework. Gracias por la información. ¡Hasta pronto!

  16. Comentario por jordisan:

    ¡Encantado de que os haya sido útil el artículo!

  17. Comentario por Gianky:

    bueno, gracias a ti pude entender lo q es un framework, mi gran duda ahora es como trabajar con este; tengo un trabajo (2 año d ing d sist) y tengo q elaborar un trabajo utilizando frameworks, ahora tabajo con el eclipse y el dreamweaver, y la verdad es q estoy algo desubicado ya q cuando descargo un framework no lo puedo levantar con nada :s quiza este haciendo algo mal, tu ayuda me vendria bien.. gracias.

  18. Comentario por Gianky:

    bueno creo q me confundi algo… tengo q trabajar con akelos php framework. lo e descargado, y ahi empieza el problema….

  19. Comentario por Teodoro:

    Hola a todos, os dejo una url con un sitio en el que te puedes descargar un framework php5 mvc con templates y un pequeño proyecto de ejemplo. Espero que os guste.

    Saludos nuevamente.

    http://www.phppoo.freezoka.com/es/

  20. Comentario por samuel:

    con que se puede ocnfundir framework …???

    o tecnicamente QUE NO ES FRAMEWORK??

  21. Comentario por zenphp:

    No es un framework cuando el conjunto de librerías está sin completar o contiene errores graves, que para poder hacer algo sencillo necesites modificar el propio framework o el lenguaje del mismo sea tan complejo que sea imposible hacer nada sin complicarse la vida.

  22. Comentario por JJTR:

    Sprng es un frame work y como empiezo ha usar Spring

  23. Comentario por Julio:

    Y yo que pensaba que un framework era solamente un conjunto de librerías…Gracias por sacarme de la ignorancia…

  24. Comentario por Saladashed.-:

    QUE GENIAL, la verdad que este post vale oro, está explicado sencilla y claramente, sin caer en la simplicidad.

    Ojala encontrara mas colaboradores como tu!

    Felicidades y no te detengas!

  25. Comentario por ZardwiZ:

    Muy bueno y claro tu articulo sobre Framework. He leido 5 o 6 definiciones de esto y la tuya ha sido la mas clara.

  26. Comentario por Máxi:

    Diculpa entonces al desarrollar una aplicación tengo que utilizar un Framework y un IDE más decirdir que lenguaje de programación utilizar?

  27. Comentario por Máxi:

    Entonces puede utilizar solo un Framework con un lenguaje de programación o bien solo el IDe con un lenguale de programación?

  28. Comentario por Ali:

    Mis felicitaciones estimado amigo

  29. Comentario por Zaira:

    Eres un crack. Gracias por explicarlo tan bien. Yo también pensaba que era sólamente un conjunto de librerías.

  30. Comentario por Angelica:

    Exelente explicacion estoy haciendo mis practicas profeciones y me has salvado la cabeza , felicidades me encanta tu trabajo :)

  31. Comentario por Patricia:

    Muy buena explicación!

  32. Comentario por Brian:

    tengo una preguntica fuera del caso … yo estoy estudiando tecnologia en desarrollo de software y quisiera saber en que puedo laboral y endonde??

    que pena ponerte en estas!!

  33. Comentario por saopma:

    no cabe duda es una de las definiciones mas claras que he encontrado en la red. gracias de antemano!! me sirvió de mucho para mi formación curso la carrera de Ing.TIC's

  34. Comentario por adfesabo:

    Gracias. Amplió mi concepto de framework.

  35. Comentario por txaler:

    De enorme ayuda por tu post.. Soy Ingeniero Informatico, y me estoy empezando a familiarizarme con los frameworks y es el mejor post que he leido en mucho tiempo.

    Gracias.

  36. Comentario por diseño web:

    Hi my family member! I wish to say that this post is amazing, great written and come with almost all vital infos. I'd like to look extra posts like this .

  37. Comentario por hkr:

    Muy claro. Gracias

  38. Comentario por Oski:

    Muchas gracias Jordi! Me has aclarado muchos conceptos.

    Felicidades por tu trabajo y que tu altruismo se vuelva contra ti, ;)

  39. Pingback por MARCO DE TRABAJO TI – FRAMEWORK « soasaascloudingcmmi:

    […] todo en: http://jordisan.net/blog/2006/que-es-un-framework Share this:TwitterFacebookMe gusta:Me gustaSe el primero en decir que tegusta. […]

  40. Pingback por eMobc, un Framework opensource para generar aplicaciones nativas en Android, IOS y Webapps | My Daily Feeds:

    […] Para los que ya os hayáis perdido entre tanta palabreja técnica, os lo resumo. Básicamente, eMobc es una plataforma que reúne una serie de conceptos y funciones que nos van a permitir programar de forma más fácil nuestras aplicaciones. Para los que estáis empezando, os recomiendo informaros en profundidad sobre qué es un frameworky cómo utilizarlo, descubriréis un mundo apasionante allí oculto. […]

  41. Pingback por eMobc, un Framework opensource para generar aplicaciones nativas en Android, IOS y Webapps - Aplicaciones Android:

    […] aplicaciones nativas en Android, IOS y WebappsPosted on 24 noviembre, 2012 by Adrian Latorre | Leave a reply eMobc Hoy es sábado y por tanto toca profundizar un poco en el tema de la programación Android.En este caso os queremos presentar un proyecto español que nos ha llamado la atención: eMobc, un framework opensource para generar aplicaciones nativas en Android y otras plataformas. Vamos a explicarlo con más detalle.eMobc Tal y como ya he dicho un par de veces, eMobc es un framework ( Licencia Affero GPLv3 ) para el desarrollo de aplicaciones nativas multiplataforma ( Android, Objetive-C , Java, HTML5 ) utilizando XML. Y la verdad, es un framework bastante completo con funcionalidades tales como:Uso sencillo de la programación nativa mediante el uso de XMLFramework orientado a pantallas ( los tipos de pantallas útiles están definidas ). Estas pantallas se pueden generar de manera dinámicaEs multiplataformaDispone de un sistema de notificaciones y menús muy interesante eMobc acaba de lanzar su versión 0.1 y está accesible en Github, pero cada día siguen trabajando para mejorarlo. En  breve publicarán la documentación (API y PDF’s) y los complementos necesarios.Para los que ya os hayáis perdido entre tanta palabreja técnica, os lo resumo. Básicamente, eMobc es una plataforma que reúne una serie de conceptos y funciones que nos van a permitir programar de forma más fácil nuestras aplicaciones. Para los que estáis empezando, os recomiendo informaros en profundidad sobre qué es un frameworky cómo utilizarlo, descubriréis un mundo apasionante allí oculto.Para los más entendidos, os dejo con unos cuantos links de interés:Repositorio oficial del proyecto : https://github.com/emobcDescarga: www.emobc.com/descarga.phpCorreo Electrónico : developers@emobc.comRedes Sociales :Twitter : @emobcappFacebook : https://www.facebook.com/emobcapp El artículo eMobc, un Framework opensource para generar aplicaciones nativas en Android, IOS y Webapps se publicó en El Androide Libre (El Blog Android de referencia. Aplicaciones, noticias, Juegos y smartphones Android Libres)Seguramente también te interesará…Los 5 errores más comunes en las aplicaciones AndroidConfigura en 10 segundos una aplicación con AndroidKickstartRGoogle lanza una herramienta para ayudar a los desarrolladores a llevar sus aplicaciones a iOS¿Es JAVA en Android tan importante como parece?La salud y la importancia de la Scene de desarrolladores AndroidLos Libros Open Source sobre Android20 horas de YouTube para aprender a programar AndroidAl final resulta que Android no es tan “abierto” como dice ser Posted in android.Tagged android, aplicaciones, framework, htc, Java, noticias, open source, Programación, rom, ROM's, samsung. Cancelar respuesta […]

  42. Pingback por NewsMobilePhone – eMobc, un Framework opensource para generar aplicaciones nativas en Android, IOS y Webapps:

    […] Para los que ya os hayáis perdido entre tanta palabreja técnica, os lo resumo. Básicamente, eMobc es una plataforma que reúne una serie de conceptos y funciones que nos van a permitir programar de forma más fácil nuestras aplicaciones. Para los que estáis empezando, os recomiendo informaros en profundidad sobre qué es un frameworky cómo utilizarlo, descubriréis un mundo apasionante allí oculto. […]

  43. Comentario por Star academy:

    Creo que es mejor no usar el código y el código fuente de los demás, ya que puede haber algún tipo de protección de falla.

Deje un comentario / Leave a comment

By jordisan (Google+ profile) | @jordisan (Twitter)