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.