Desarrollo multinivel para aplicaciones basadas en el web
Desde la programación procedimental hasta el Modelo de desarrollo MVC (Model, View & Controller), las diferentes metodologías de desarrollo han evolucionado, conservando un fin común: la total integración de componentes reutilizables y la separación de los niveles de programación.
Existen bastantes métodos de desarrollo multinivel en la actualidad. Muchos fueron pensados originalmente para la programación de aplicaciones tradicionales orientadas a un tipo de Sistema Operativo en particular.
Posteriormente, fueron adaptadas para su implementación en entornos de desarrollo orientados al web. Sin duda, algunos de ellos son eficaces en cualquier plataforma. Pero el hecho de que hayan sido concebidas primeramente para entornos tradicionales, no permite explotar el potencial que se tiene, al programar para la web.
El modelo MVC
El modelo con mayor auge en la actualidad es el modelo MVC. Sobre este modelo existe una serie de implementaciones como Ruby on Rails o Cake PHP. La ventaja fundamental del modelo es la separación de la lógica de programación en tres partes: Modelo, Vista y Controlador.
Según experiencias de programadores que han utilizado este modelo de desarrollo, el mismo se adapta perfectamente para proyectos pequeños, pero a medida que la complejidad del proyecto se incrementa, cada vez es más difícil llevar una integración perfecta sin afectar las demás estructuras.
Puede resultar bastante complicado seguir con el desarrollo de una aplicación con un nivel de complejidad mayor, sino contamos con la adecuada experiencia en el manejo del concepto.
En lo particular, veo un serio problema en esta situación, además de que el uso del modelo, utilizando cualquier tecnología como Ruby on Rails u otros frameworks de desarrollo, hasta por completo nuestro proyecto a tal o cual tecnología.
Esto puede ser un serio problema, si contamos con que la tendencia de nuevas herramientas mucho más fáciles de utilizar, están siendo desarrolladas continuamente y sus variantes son implementadas, como paquetes independientes de cualquier plataforma.
Hay mucho potencial en cualquier tecnología orientada al desarrollo de aplicaciones para Internet. Existen bastantes lenguajes de scripting, en la actualidad y todos brindan una excelente solución para un rango determinado de necesidades. ¿Por qué no utilizar las mejores características de cada lenguaje para el desarrollo de aplicaciones?
El modelo L5
El modelo L5, como le he llamado, es un modelo orientado, completamente, al desarrollo de aplicaciones para Internet. Este modelo no es una derivación del modelo de desarrollo MVC.
Es una división completa de las partes de integran el proceso de realización de cualquier proyecto orientado a Internet en el cual, la división la constituye las ramas de tecnologías que intervienen en una aplicación orientada a Internet. Así, el modelo se divide en 5 grandes áreas:
- Modelado de Datos
- Lógica de Programación
- Estructura de Contenido
- Diseño de la Interfaz
- Maquetación e Implementación
Estos cinco puntos son el pilar de este modelo. Adicionalmente, cada uno tiene un grado de división que puede ser propuesto por el equipo de desarrollo, dependiendo de la complejidad del proyecto.
Aquí no está incluido la fase de Análisis y la definición de Metas que es obvio que necesita existir para que estos puntos puedan llevarse a cabo; la guía sobre la que descansa cualquier proyecto de desarrollo.
La justificación de separar el modelo en cinco entidades, es bastante sencilla. Consideremos el desarrollo tradicional de un proyecto sencillo como por ejemplo un sitio de una pequeña empresa con un administrador de contenidos.
Trabajando con un administrador de contenidos
Si contamos con un administrador de contenidos, lo más común es que usemos una implementación de Base de Datos (MySQL, Oracle, SQL Server), relacionada con el contenido y accedida a través del lenguaje de scripting que hemos implementado (PHP, ASP.Net, Java, Ruby).
Debemos contar con un diseño de interfaz y el producto final es la página vista en el explorador (HTML, CSS, JavaScript). Si nos damos cuenta, existe varias tecnologías involucradas en el producto final. Todas con una tarea específica. Este modelo es aplicable en cualquier nivel de definición y complejidad de un proyecto.
El punto de inicio de cada proyecto se centra en la definición del modelo de la Base de Datos y del modelo de relaciones de los datos. Esta filosofía se enfoca en el hecho de que separar cada uno de los puntos mencionados, proporcionará el verdadero dinamismo que debe tener una aplicación.
Por ejemplo: en el apartado de la definición de la base de datos, relegamos por completo el manejo del almacenamiento y las funciones de manejo de datos al SGBD, sea cual sea. Con esto nos garantizamos un rendimiento absoluto y un máximo aprovechamiento.
También, el punto que se quiere destacar es que cada uno de los elementos y tecnologías que integran el modelo puede ser reemplazo sin que esto afecte por completo los procesos subsiguientes.
La programación adaptada a módulos
Para el segundo punto, la programación, elegimos tecnologías que se adapten a cada módulo que se desarrolle. Con esto podemos aprovechar al máximo el uso de una tecnología para una parte del esquema y utilizar diferentes tecnologías dentro del proyecto, con lo cual, cada modulo se puede hacer de una manera optima, y sencilla por que estamos utilizando la mejor tecnología para su desarrollo.
La Estructura de Contenido es uno de los más importantes y por así decirlo el punto de inflexión dentro del desarrollo. Aquí generamos un esquema de modelado de contenido. Es decir, en el desarrollo de la base de datos, optimizamos el manejo de la información, en el área de programación optimizamos los procesos y construimos el punto de unión entre el contenido y el almacenamiento.
En la programación no debemos generar consultas completas a la base de datos (sino llamadas a funciones y vistas almacenados en el SGBD). Las salidas deben estar en un formato estándar entre tecnologías como XML.
El contenido debe estar en un formato estándar. Esto permitirá su manipulación a cualquier dispositivo. El Diseño Gráfico de la Interfaz es la definición de plantillas para el diseño general del sitio y el último punto es la maquetación general del sitio con la integración y la interpretación del contenido generado. Este aspecto también es reemplazable. En si, todos los puntos son reemplazables y escalables.
Diseño inicial:
- MySQL
- PHP
- XML
- Diseño a Tres Columnas
- XHTML 1
Reemplazar por:
- SQL Server
- PHP
- XML
- Diseño a Tres Columnas
- XHTML 1
Actualización
Sin cambiar toda la estructura, en una nueva actualización podríamos quedar como:
- SQL Server
- ASP.Net
- XML
- HTML 5
Un cambio radical, pero el modelo sigue bastante intacto, como al principio.
Ventajas
Son muchas las ventajas que se desprenden de realizar un proyecto basado en esta metodología. El modelo es fácilmente utilizable en proyectos sencillos y complejos. Simplemente bastará con saber identificar de manera clara a los actores dentro del proceso y definir las funciones.
Muchas soluciones de terceros que podamos utilizar pueden ser fácilmente agregadas al proyectos dentro del nivel correspondiente sin afectar el desarrollo de los demás niveles. La combinación de tecnologías puede ser una gran ventaja.
Muchas de las soluciones realmente optimas para nuestro proyecto, si son de terceros, podrían no estar disponibles en nuestro lenguaje de scripting principal, por lo cual su utilización sería imposible.
Pero, no necesariamente debemos utilizar múltiples tecnologías dentro del proyecto. Si el proyecto no lo requiere o contamos con todos los elementos disponibles, podremos fácilmente, elegir por una solución.
Lo importante del desarrollo es que el producto final, cumpla con las necesidades requeridas. La optimización es muy importante. El modelo L5, hace mucho énfasis en ello. Al final, de cada desarrollo se pretenderá que hayamos construido una estructura de programación estable y sobre todo reutilizable.
Podemos dividir asimismo, los desarrollos de sub-módulos por clases, módulos y paquetes completos, con sus características dependencias. Siempre la estructura es interdependiente. El mayor reto sería crear una base sólida multinivel.
Desventajas
Las desventajas aparentes están relacionadas, dentro del proyecto en si. El utilizar múltiples tecnologías, demandará un mayor grado de conocimiento por parte del grupo de desarrolladores. Recordemos, que este punto no es necesario, pero si muy útil a la hora de hacer aplicaciones escalables.
La metodología demanda que el equipo esté conformado por profesionales con mayor conocimiento en todas las tecnologías: desde la implementación de la Base de Datos, hasta la Maquetación.
El otro punto, consistirá en que posiblemente necesitemos mayores recursos para poder diseñar un proyecto. Muchos, podríamos tener un proyecto publicado en algún servidor compartido, y esto podría llegar a ser desventajoso, debido el grado de personalización y requerimientos que podríamos llegar a alcanzar dentro de la aplicación.
Oportunidades
Todos las metodologías, brindan un sin número de oportunidades. Algunas son únicas para cada método.
Entre las oportunidades destacan un mejor control dentro del proyecto, sencillez de actualización y de proceso de depuración y mantenimiento, y que, preferiblemente, al final de cada desarrollo, contaremos con mejores herramientas, reutilizables en posteriores proyectos o en la escalabilidad de antiguos desarrollos.
Retos
Si somos profesionales en tal o cual filosofía de desarrollo, siempre el cambio de perspectiva, nos causará cierto grado de incertidumbre y malestar. Es normal. Uno de los retos para los nuevos emprendedores, será la tentación de volver a las viejas prácticas. El sistema, demandará cierto grado de disciplina.
Si no nos guiamos dentro de los parámetros de desarrollo, podríamos estropear el proceso. Talvez, no lo veamos dentro del producto final, pero en un futuro, podremos toparnos con serios problemas dentro de la estructura de la aplicación. La optimización, puede ser un proceso laborioso, pero debemos recordar que al final, este punto es vital para cualquier aspecto.
Las tecnologías en el Internet, están cambiando constantemente. Como anécdota personal, antes de la redacción de este artículo, recién me entero de otro lenguaje de programación, mucho más rápido que ofrece muchas oportunidades.
Realizar una aplicación que sea optima para el presente y que pueda ser sujeta de grandes cambios, dentro del ciclo de funcionamiento, puede ser un gran reto, pero ciertamente, como equipo o como profesional independiente, nos brindará más de una satisfacción.
Te invitamos a que estés pendiente de la serie de artículos relacionados con el desarrollo multinivel para aplicaciones basadas en el web, que estaremos publicando durante las siguientes semanas.
Me ha parecido muy interesante este artículo, creo que es una forma inteligente de programar hoy en día donde los lenguajes, las bases de datos y los formatos son tan diversos. Estaria interesado en saber algo más, no se tienes algun manual o guia o algún pequeño proyecto que acceda a alguna base de datos y que se pueda tomar como ejemplo para aprender.
Gracias de antemano. Ciao.
Excelente artículo. Definitivamente éste es el futuro del desarrollo de aplicaciones, tantos web como de “escritorio” que a la larga creo que van a desaparecer. Por la demanda de correr programas multiplataforma y por lo robusto y potente que se están volviendo los lenguajes script.
Buen articulo.
Excelente artículo Juan Manuel, muy bien estructurado.
Saludos
Excelente planteamiento. De hecho ya cuentas con al menos un seguido de esta metodología (yo xD).
Gracias por las ideas, siempre vienen bien.
Saludos!
es muy interesante la nota, pero hasta donde comprendi es solo teoria… como nos imaginamos que deberian estar compuestas las diferentes capas.
hasta aca esta todo buenisimo.
un golazo seria en una proxima nota una implementacion de estos conceptos en un mini-proyecto
para poner en practica esto que hemos leido que es muy interesante
la verdad que no me imagino implementando esto, si bien esta claro que es el camino no se como implementarlo!!
Definitivamente es importante ver todos los detalles de como mejorar nuestros sistemas a nivel web. Gracias por el aporte Juan Manuel. Saludos.
Saludos Amigos de la Comunidad de Maestros del Web:
Mi nombre es Juan Manuel Lemus. Realmente, estoy muy emocionado por la acogida que se le ha dado a mi articulo, que como nota, si pueden darse cuenta, es el primero que publico para Maestros del Web.
En vista de los multiples comentarios que he recibido solicitando la incorporacion de ejemplos acerca de como debería implementarse el modelo, he acordado con los editores que ampliaremos la serie de artículos.
Les pedimos un poco de paciencia en cuanto a la manera en que se van a publicar los ejemplos. Por lo pronto, el proximo capitulo de la serie, se centrara en el primer Nivel de la metodologia.
Despues de este, publicaré el primer ejemplo practico, referente al nivel del modelado de datos y asi se publicaran los cinco articulos con sus respectivos ejemplos.
Muchas gracias por su apoyo, y les prometo que muy pronto podran ver, por mi parte, la primera implementacion real del modelo.
Aprovecho para agradecer a mis cercanos: a Oscar, Stephanie y Gustavo.
Jajajja, ¿de verdad que no eres “el enviado” de Microsoft? Me ha parecido poco imparcial…
Me parece genial la noticia, me alegro que nos proporciones un ejemplo para poder empezar a implementar con esta teoria que desde mi punto de vista es muy acertada y se acerca a la realidad. Solo pido un favor, el ejemplo que vayas a publicar con tus futuras publicaciones, intenta que sea completo, es decir que tenga acceso a bases de datos, que necesite de ajax y php, vamos que sea algo que nos sirva de base estable para poder empezar a trabajar de esta forma.
Gracias de antemano y felicidades.
Buen artículo. Muy interesante lo de los módulos. Tremendamente adecuado para productos medianos y grandes.
Muy interesante el artículo, sobre todo hoy en día en que existen demasiadas tecnologías y los proyectos web son mas complejos y uno no sabe que obtar.
Hola,
el MVC no es un modelo de desarrollo: es un patron (es decir, un esquema para la arquitectura del software).
Tu modelo L5 es, en cambio, un metodo de desarrollo (que me parece presume una arquitectura MVC o de tres capas). Por lo tanto, no me parece correcta la comparacion entre L5 y MVC.
Con respecto a metodos de desarollo, seria bueno compararlo con metodos establecidos (e.g., el modelo de cascada, el Rational, etc.). Por lo que lei, parece tomar una metodo sequencial.
Interesante tu articulo, te felicito
Interesante el artículo, hace días yo pensaba algo similar :P.
Willie: es como el MVC o tres capas, solo que como lo veo, se trata de separar la Vista en tres partes para que sea más fácil su mantenimiento, escalabilidad y reuso.
Muy interesante Juan Manuel ojala y sigas con esto, sería interesante desarrollar bajo esa metodología y si es posible hasta Diseñar un framework. ¿Que te parece?
s4lu2
La verdad es que no estoy muy de acuerdo con lo que expones como metodología L5, me parece vender humo. Todo es tan vago y tan irreal que se nota que uno puede escribir lo que quiera sin dar la mínima prueba de viabilidad real. Pero eso no quiere decir que vaya a pasar por un gran arquitecto ni analista… A lo mejor para los más inexpertos, pero cualquiera con idea notará el humo que se está vendiendo.
Creo que confundes tecnologías con metodologías y patrones de diseño. Tú hablas más bien de una metodología pero centránote en tecnologías, lo cual hace pensar que no sabes de lo que estás hablando. MVC es un patrón de diseño de software, en este artículo pinta lo mismo que hablar de los reglajes de un coche de F1, o sea: nada.
Puntualizar, por otro lado, que un buen analista/diseñador comenzará una aplicación analizando y diseñando la capa de negocio, no de datos como expones en este artículo. Empezar creando el esquema de BBDD y sus relaciones en un proyecto significa que no se tiene idea de que realmente donde se resuelve el problema es en la capa de negocio y, por tanto, es esta capa la que debe “mandar” en el desarrollo. Esto se puede leer en cualquier libro de análisis.
Por otro lado llamar lenguajes de script a todas las tecnologías que mencionas en el artículo es algo sorprendente. ASP.NET es una tecnología que con cualquiera de sus lenguajes: C#, VB.NET, Managed C++, se compila (a código MSIL que el Runtine de .NET ejecuta, pero se compila), no se interpreta. ASP clásico sí era intepretado. Esto me hace pensar que fuera de lenguajes de script de los años 90 embarullados y eclécticos: PHP, ASP, no tienes experiencia en tecnologías más “serias” para proyectos grandes (que permian tener 150 objetos de negocio sin producir código inmantenible), como serían casi las 2 únicas que se ajustan a esta descripción: J2EE y .NET.
Si realmente propones que un proyecto en el que se ha implmentado la lógica de programación (¿esto qué es? …suena a humo, otra vez) en PHP, mañana se puede cambiar a ASP.NET creo que debes estar de broma. Debes estar de broma porque tecnologías como ASP.NET van indefectiblemente ligadas a producir HTML como salida y, por tanto tocan desde BLL hasta capa de presentación por su propa definición.
Me parece un artículo escrito desde irrealidad total y el hecho de que el papel, o el formulario web, lo aguanta todo y se puede escribir lo que sea. Fundamentación 0 y vendida de humo total. Palabras sin contenido.
creo que en lo q a programacion web se refiere estan comlpicando demasiado las cosas…
seria aun mas facil que creen un programa que funcione a partir de imagenes para la creacion web… que se pueda armar poniendo todo el contenico visual en una carpeta y luego esa carpeta se pueda exportar al ftp.
que el programa te permia añadir animacion y otro tipo de aplicacion visuales que te de la oportunidad de poner un rep de video sin ninguna marca preestablecida donde se le puedan cambiar los skins de manera que cada pagina pueda seguir con su estilo y no sea repetitivo…
seria una mezcla ente ilustrator dreamweaber y flash… y algun otro
pero seria facil poder manejar todo desde este punto y luego exportarlo a web …
de esta manera el diseñador tambien podria vender su producto sin nececidad de subirlo a internet. y los clientes se encargarian de eso proseso por el camino q ellos crean convenientes…
cualquier persona que quiera llevar adelante un proyecto de estas caracteristicas puede comunicarse con migo a [email protected]
del arte digital a la web. saludos!
[…] Si quieres leer el artículo completo sigue este enlace. […]
[…] Original de Maestrosdelweb.com […]
Hola, articulo muy inetersante, pero serias tan amable de colocar algun bibliografia donde buscar mas sobre este tema, gracias. Saludos!
Interesantisimo articulo.
Muy bueno.
Yessica:
Biografía en si no existe más alla de los vínculos que tiene cada uno de los artículos. Aunque pueda parecer extraño, este modelo es de autoría propia y en lo particular ha sido inspirado en los modos que he visto de programación de muchos compañeros, leyendo sobre experiencias de profesionales, etc.
Me he atrevido a desarrollar el modelo por que veo que el desarrollo se hace mucho mejor, más rápido y limpio.
[…] con el ciclo de artículos inspirados en el modelo L5 constituidos por una introducción sobre Desarrollo multinivel para aplicaciones basadas en el web, Modelado de datos e implementación de la base de datos (Primer Nivel: L5), Lógica de […]
[…] Desarrollo multinivel para aplicaciones basadas en el webwww.maestrosdelweb.com/editorial/desarrollo-multinivel-para-… por jmanuelemus hace pocos segundos […]
[…] Desarrollo multinivel para aplicaciones basadas en el web […]
[…] Desarrollo multinivel para aplicaciones basadas en el web […]
La verdad estoy de acuerdo con “Opinador”, el modelamiento de la BDD ya es cosa del pasado, te recomiendo que comiences a leer buenos libros de orientación de objetos, te ayudará bastante para perfeccionar tus metodologías de desarrollo.
La verdad es que siempre que comiences un proyecto debes modelar primero tu negocio, para luego separar todo en pequeños objetos, te vas a dar cuenta que la BDD termina siendo algo común y sin relevancia ya que solo se convertirá en lo que es… “un repositorio de datos”. Luego, si tu negocio cambia, cambias solo el objeto que implica y tu repositorio practicamente no debería sufrir cambios de magnitud, con esto si que haces un sistema extensible.
Mi crítica solo es constructiva y deberías comenzar por leer POO de Rebecca Wirfs-Brock
Saludos
En mi experiencia, por una parte se disfraza el código, o se lo esconde, y por otro lado se le da una mejor estructura a la programación.
companies debt consolodation credit debt consolodation
insurance company mutual arbella company arbella mutual insurance
[…] Desarrollo multinivel para aplicaciones basadas en web. […]
Y si leyeras algún libro sobre metodologías de desarrollo software te darías cuenta de que estás equivocado en mil cosas y que hay otras mil que solucionan tus problemas.