PROPUESTA DE IMPLEMENTACIÓN SIMPLE DEL PATRÓN DE DISEÑO MODELO VISTA CONTROLADOR SOBRE PHP SIN EL USO DE FRAMEWORKS Y UTILIZANDO PROGRAMACIÓN ORIENTADA A OBJETOS

El patrón MVC (Model, View, Controller) [1] o Modelo, Vista Controlador, es un tipo de diseño que separa en capas bien definidas el desarrollo de una aplicación. Esas partes mencionadas anteriormente son tres, el Modelo encargado de la lógica del negocio y la persistencia de los datos, las Vistas son las responsables de mostrar al usuario el resultado que obtienen del modelo a través del controlador. El Controlador es el encargado de gestionar las peticiones del usuario y procesarlas invocando al modelo. En este trabajo se desarrolla una propuesta del uso del patrón MVC en PHP, para generar aplicaciones que requieren el procesamiento de formularios. La estructura de la página de envoltura, aquella que le da el formato o presentación a toda la aplicación, será la común: un encabezado, un menú, y un contenido sin pie de página ya que no es relevante para esta propuesta. El objetivo de la presente propuesta es presentar un modelo base para el desarrollo de aplicaciones escalables usando el lenguaje php, en el que pueda intervenir un equipo de programadores al que se distribuyan claramente sus responsabilidades y se puedan añadir sin dificultad cualquier tipo de componentes o bibliotecas extras al proyecto. Es necesario aclarar, algo que para los desarrolladores de software es evidente, conforme crece un proyecto informático su complejidad se vuelve inmanejable, impidiendo a los encargados del mantenimiento del software tener un control sobre las partes del programa informático que deben modificarse para obtener los resultados esperados, pero sin que esos cambios afecten, inconscientemente, otras partes del producto, que no necesitan o, incluso, no deben ser alteradas. En ocasiones se corre el riesgo, incluso, de que cualquier modificación inadecuada sobre las líneas de código, pueden dejar sin funcionalidad parte o la totalidad del programa. Esta situación no ocurre únicamente al momento de la codificación del programa, sino que puede producirse con sólo alterar alguno de los archivos de configuración del sistema. Es por ello que de alguna manera se necesita conocer con precisión qué componente del producto debe modificarse para obtener el cambio de funcionalidad requerida ante una solicitud de mantenimiento. El modelo inicial debe contemplar esta adaptabilidad a los cambios, sin perder su claridad. Se hace mención a un modelo inicial, porque, es a partir de dicho modelo, que se produce una evolución gradual del software que fomenta la adopción o transformación de nuevos modelos, cada uno de los cuales debe ser coherente a la carga y necesidad de información que se desea procesar por medio del producto.
En síntesis, la propuesta presentada parte de la necesidad de crear aplicaciones informáticas donde se requiere la intervención de programadores de distintos niveles, a los cuales se les asigne responsabilidades bien definidas (estos son los hechos).
Entre los problemas que ocurren cuando se decide iniciar un proyecto informático, está la dispar experiencia que existe entre los desarrolladores, lo que, en sistemas altamente acoplados, origina que los errores provocados por la incorrecta implementación de los programadores menos experimentados, repercuta en el trabajo de los otros, produciendo incrementos en los costos de desarrollo.
Este modelo pretende entre otras cosas adaptarse a los requerimientos del usuario final, al tiempo qué intenta evitar que los cambios en dichos requerimientos y las modificaciones en algunas partes del sistema impacten fuertemente sobre otras partes del mismo, produciendo alteraciones inesperadas en el comportamiento final del producto.
Además se desea que desde un inicio y en todas las fases, el proyecto muestre funcionalidad y que esta no se pierda en ningún momento del desarrollo, pese a los cambios que puedan presentarse.
El modelo por sí sólo, no basta, aunque es parte de la solución a lo expuesto, pues es necesario una buena administración sobre los cambios a realizarse, especialmente en lo relacionado con el momento y la duración de los mismos. Con respecto a esta observación, nuestra propuesta constituye el modelo base a partir del cual se realizarían transformaciones sucesivas siguiendo una arquitectura dirigida por modelos (Model Driven Architecture) [2]. Nuestra propuesta, basada en el lenguaje PHP, es un modelo dependiente de la plataforma (PSM), que ha sido resultado de la evolución de un modelo independiente de la plataforma (PIM) y que a su vez, parte de requerimientos genéricos. Cabe recalcar que de ninguna manera pretende declarar o hacer ver como caducas las bases del desarrollo de software tradicional pues es de dichas bases que recibe su sustento, sino más bien, intenta verificarlas, confirmarlas y adaptarlas a un contexto específico, dentro de nuestro medio, para hacer más claras las experiencias obtenidas de dicha ciencia y poder utilizarlo como herramienta de investigación, antes que como solución comercial [3]. Es importante indicar que el presente modelo no utiliza frameworks [4], sino que aprovecha las capacidades del lenguaje. Pero evidentemente es requerido que cualquier framework o protocolo pueda con facilidad integrarse al producto cuando se requiera, pues estos añaden potencia y funcionalidades a las aplicaciones de acuerdo al contexto en el cual se necesite su uso. Por ejemplo como parte de la evaluación de esta característica en el modelo se incorpora el uso del protocolo NuSoap [5] que puede ser sustituido por la implementación de SOAP [6] propia de PHP. Aunque en este caso no incluimos inicialmente más de este tipo de componentes o ayudas pues se desea mantener un buen grado de simplicidad, que permita evaluar de mejor manera la evolución del modelo sobre el lenguaje en el cual se prueba. En lo referente a lo alcanzado hasta el momento, se puede afirmar que la evolución del modelo presentado sigue su curso según lo esperado, se adapta a nuevas necesidades, sin mayor dificultad. Permite un desarrollo orientado exclusivamente a la lógica del negocio, que se refleja en cada componente del software con bajo acoplamiento y dependencia, permitiendo la modularidad de sus componentes. La vista se adapta fácilmente a las solicitudes y necesidades de los usuarios gracias a la flexibilidad de los lenguajes HTML5 (HyperText Markup Language versión 5) y CSS3 (cascading style sheets versión 3) [7], y también es adaptable gracias a la implementación de dichas tecnologías sobre los navegadores de última generación. La funcionalidad está presente en todo momento, pues los cambios se originan en la lógica del negocio, es decir, en el modelo, mientras las alteraciones de la vista no modifican dicha lógica, aunque pueden requerir una adaptación del controlador. Adicionalmente la propuesta permite el fácil uso de bibliotecas que manejan ciertas capacidades, como por ejemplo la utilización de Web Services [8] en distintas implementaciones.
Adicionalmente, la corta implementación presentada en este documento, ha sufrido varias modificaciones como parte de su evolución a base de requerimientos reales de usuarios institucionales, que pueden confirmarse en la dirección web del proyecto: http://saccec.com. Sin embargo, el modelo ha permanecido invariante, esto quiere decir que la lógica de programación representada por el diagrama UML (Unified Modeling Language) [9] que se expone para explicar el diseño, confirma su validez, al menos en un período de treinta días de desarrollo, esto es lo que se ha podido observar.

Dado que es un proyecto de investigación, su utilización y desarrollo están restringidos a nivel académico y de enseñanza de la asignatura de programación, pero está orientado a integrarse a sistemas populares basados en PHP (Hypertext Pre-processor) a través de sus interfaces externas, para interactuar y automatizar procesos administrativos sobre dichas plataformas. En otros documentos similares se podrá añadir, más adelante, nueva información sobre el alcance de esta propuesta. Por ahora es todo lo que se puede afirmar según lo evaluado.

Referencias:
[1] J. Pavón, «Universidad Complutense Informática,» 09 2008. [En línea]. Available: https://www.fdi.ucm.es/profesor/jpavon/poo/2.14.MVC.pdf. [Último acceso: 11 11 2015].
[2] V. S. Meaurio y E. Schmieder, «La Arquitectura de Software en el Proceso de Desarrollo: Integrando MDA al Ciclo de Vida en Espiral,» Revista Latinoamericana de Desarrollo de Software, vol. 1, nº 4, pp. 142-146, 2012.
[3] H. Antillanca Espina y G. Cerda Neumann, «Propuesta Metodológica para el Desarrollo de Software de Investigación,» 10 2012. [En línea]. Available: http://sitios.diinf.usach.cl/kddp/files/2012/10/Paper-Propuesta-de-.... [Último acceso: 09 11 2015].
[4] J. Gutiérrez, «Lenguajes y Sistemas Informáticos.- Universidad de Sevilla,» [En línea]. Available: http://www.lsi.us.es/~javierj/investigacion_ficheros/Framework.pdf. [Último acceso: 11 11 2015].
[5] F. Corno y D. Bonino, «e-Lite,» 02 04 2009. [En línea]. Available: http://elite.polito.it/files/slide/Computers/Programming/Languages/.... [Último acceso: 02 11 2015].
[6] M. Gudgin, M. Hadley, N. Mendelsohn, J.-J. Moreau, H. F. Nielsen, A. Karmarkar y Y. Lafon, «w3c,» 27 abril 2007. [En línea]. Available: http://www.w3.org/TR/2007/REC-soap12-part2-20070427/.
[7] A. Pastorini, «Facultad de Ingeniería.- Universidad de la República - Uruguay,» [En línea]. Available: https://www.fing.edu.uy/tecnoinf/mvd/cursos/ria/material/teorico/ri.... [Último acceso: 11 11 2015].
[8] I. Baltopoulos, «University of Cambridge,» 2005. [En línea]. Available: https://www.cl.cam.ac.uk/~ib249/teaching/Lecture1.handout.pdf. [Último acceso: 11 11 2015].
[9] B. Fernando, «Curso de sistemas inteligentes,» [En línea]. Available: http://elvex.ugr.es/decsai/java/pdf/3E-UML.pdf. [Último acceso: 11 11 2015].

Visitas: 801

Comentar

¡Necesitas ser un miembro de RedDOLAC - Red de Docentes de América Latina y del Caribe - para añadir comentarios!

Participar en RedDOLAC - Red de Docentes de América Latina y del Caribe -

Comentario por luis salvador el noviembre 29, 2015 a las 8:51pm

La herramientas actuales y en línea para ayudar al auto aprendizaje de asignaturas técnicas están ligadas con la programación, entre ellas están las MOOC (https://es.wikipedia.org/wiki/Mooc), cursos masivos en línea en los cuales la interacción con el curso fue "programada" con anterioridad, por el profesor y su equipo. Son tomados sin embargo por los estudiantes, en ausencia del tutor, evaluados automáticamente y aprobados de acuerdo a las reglas del negocio impuestas en el programa. Más o menos como enseñaría un robot "programado" por el profesor.
¿Muchos preguntan, en serio valen?
Yo repondo, en serio valen las aulas virtuales, los blogs, los metaversos y los video juegos, la wikipedia, y todas las herramientas colaborativas de Google?, quien los programa?... Los técnicos...¿En serio vale la educación técnica?

IFC-RedDOLAC

Campus Virtual RedDOLAC

Su Constancia RedDOLAC

Anuncie sus Congresos o servicios Educativos en RedDOLAC

Consúltenos al correo: direccion@reddolac.org

Contáctenos

Participe en la sostenibilidad de RedDOLAC

Canal de audio RedDOLAC

RedDOLAC

Organizaciones

Su constancia de RedDOLAC

Gracias por su visita

© 2024   Creado por Henry Chero-Valdivieso.   Tecnología de

Emblemas  |  Reportar un problema  |  Términos de servicio