https://doi.org/10.22463/2011642X.2003
Recibido: 23 de julio de 2012 - Aprobado: 12 de agosto de 2012
La Programación Extrema o XP (Extreme Programming) pertenece a la familia de las metodologías agiles. XP propone cuatro prácticas esenciales; Entregas limitadas o pequeñas, semana de trabajo de 40 horas, Cliente en el sitio, Programación en Pareja. Este artículo describe la aplicación de XP, en la construcción de un Software para la captura y tabulación de encuestas para el proceso de Autoevaluación de los Programas Académicos de la Universidad Francisco de Paula Santander de Ocaña, para guiar el desarrollo del aplicativo se utilizó cada una de las etapas propuestas por XP, y dentro de ellas se describe como el equipo de trabajo aplicó los conceptos propuestos y los llevo a la práctica, con el objetivo de construir un Software mediante entregas frecuentes, funcionalmente completas, probadas, y con la documentación necesaria. Demostrando de esta forma que no todas las fases proporcionadas por los ciclos de vida tradicionales se adaptan a las necesidades, complejidad y magnitud de diferentes proyectos de desarrollo de Software.
Palabras clave:Ciclo de Vida, Manifiesto Agile, Programación Extrema, XP.
Extreme Programming or XP belongs to an agile methodologies family. XP has a proposal concerning to four keys practices; small Deliveries, 40 hours working week, customer on-site and programming pair. This article describes the application of XP, in a building software for capture and tabulation surveys for self-evaluation process of Francisco de Paula Santander Ocaña University Academic Programs, to guide the application development one of the steps proposed by XP were used, and within them is described as the team applied the quoted concepts and take them to practice focused of building a quick software, with whole functionally, tested and with the necessary documentation. Thus, demonstrate that not all phases provided by traditional life cycles are adapted to the needs, complexity and magnitude of different software development projects.
Keywords:Agile Manifiesto, Extreme Programming, life cycles, XP.
Este artículo trata de mostrar cómo se pueden aprovechar las bondades ofrecidas por XP, en el desarrollo de un aplicativo que permite almacenar y tabular los resultados de diferentes encuestas realizadas por el proceso de autoevaluación, que vienen llevando los programas académicos de la Universidad Francisco de Paula Santander de Ocaña. El documento se encuentra dividido en dos secciones; la primera expone los fundamentos teóricos sobre los cuales se rige XP y la segunda sección describe como esos fundamentos fueron aplicados en el desarrollo del aplicativo.
DesarrolloLa Programación Extrema o XP (Extreme Programming) pertenece a la familia de las metodologías agiles. XP es un enfoque de desarrollo de sistemas que acepta lo que se conoce como buenas prácticas en esta área y las lleva al extremo (Kendall & Kendall, 2005, pág. 94). Al introducirnos en esta metodología cabe resaltar la importancia del cliente, las pruebas, la refactorización , la simplicidad, la propiedad colectiva del código que se ven reflejadas en las cuatro prácticas esenciales de XP:
Entregas limitadas o pequeñas: Consiste en realizar entregas parciales de módulos del sistema. Esto no quiere decir que las tareas se dejen inconclusas; las funcionalidades quedan probadas, estables y completas, esta práctica lo que busca es mantener al cliente satisfecho.
Semana de trabajo de 40 horas: Los equipos de desarrollo de XP trabajan de manera intensa durante una semana típica de 40 horas. No admite horas extras, ya que lo que se busca es utilizar al máximo la energía de los desarrolladores.
Cliente en el sitio: Esta práctica insiste en que el cliente debe hacer parte fundamental y activa del grupo de trabajo y debe estar presente durante todo el proceso de desarrollo.
Programación en Pareja: Con esto se busca aumentar la calidad del código, ahorrar tiempo, estimula la creatividad y la reducción de código fuente (Kendall & Kendall, 2005, pág. 170).
Etapas de Desarrollo de XPSegún las características del software solicitado, dada la premura de tiempo en que se debería construir, según los requisitos de alto nivel suministrados y con el fin de aprovechar los beneficios que proporciona los procesos de construcción rápida de software, se tomó la decisión de utilizar un modelo de desarrollo de tipo ágil sobre los modelos tradicionales; dado que los métodos agiles permiten la implementación del software con el mínimo de documentación, en el menor tiempo posible y teniendo al cambio como una constante.
Para el Instituto de Ingeniería de Software (2010) o SEI (Software Engineering Institute), sugiere que dentro de la planeación de un proyecto de desarrollo de Software, se debe estimar los recursos humanos, tecnológicos y las herramientas a utilizar; no todas las aplicaciones necesitan el mismo modelo de desarrollo, depende de los requisitos que se determinen en la etapa inicial y de la rapidez y complejidad de las funcionalidades, es por eso que no todos los ciclos de vida de desarrollo de software se ajustan a todas las necesidades de proyectos diferentes, la metodología a seguir debe permitir realizar correcciones sobre el alcance, las necesidades, restricciones y costos del proyecto.
Aplicación de las Etapas de Desarrollo de XPEl rol de Cliente fue tomado por la funcionara encargada de la Coordinación del proceso de Autoevaluación dentro de la Universidad, ella tiene como responsabilidades definir las características del sistema y el orden de las prioridades en que deben ser liberadas las funcionalidades; adicionalmente debe aportar en la redacción de Historias de Usuario.
Los roles Programador y Probador fueron asumidos por dos estudiantes y un egresado del programa de Ingeniería de Sistemas, como Programadores ellos tienen destrezas para comprender diseños y codificación de lenguaje de Pre-procesador de hipertexto o PHP (Hypertext Preprocessor). Ellos están orientados a trabajar en compañía, con disposición al cambio y comprometidos con la realización pruebas unitarias al código. Desde el punto de vista de Probador, deben definir en conjunto con el cliente las pruebas funcionales necesarias para validar las entregas programadas en una iteración.
El Director del Departamento de Sistemas e Informática, fue el encargado de los roles Entrenador, Consultor y Jefe. Como Entrenador, debe de estar pendiente de los detalles y de motivar, controlar y acompañar a los programadores en su tarea. Como Consultor, debe estar disponible a resolver problemas de tipo técnico, a proponer mejoras de rendimiento dentro del código, mantener la calidad de las funcionalidades y hacer respetar el diseño planteado.
Después de varias reuniones, de dos (2) horas, durante una semana, entre el Cliente, el Jefe y los Programadores se definieron las Historias de Usuario, a ellas se les asigno su respectiva prioridad, en total se especificaron dieciocho (18) Historias de Usuario, las cuales se agruparon en los módulos de configuración, captura y reportes; dentro de configuración se encuesta la gestión de usuarios del sistema y de los procesos de autoevaluación, en el módulo de captura se realiza todo el proceso de registro de las encuestas realizadas (estudiante, docente, egresado y administrativo), y en reportes se puede observar los consolidados, por todos los programas, y por cada uno de los programas, agrupados en las cuatro categorías de encuestados; los valores son mostrados en cuatro tipos diferentes de reportes, promedio obtenido por ítem (la media obtenida por cada una de las preguntas), promedio obtenido por factor (la media de las respuesta de cada encuestado agrupados por factor), porcentaje por ítem (porcentaje por cada una de las respuestas), valor general (calificación total por promedio para cada encuestado).
La prioridad de entrega de cada conjunto de funcionalidades se organizó de la siguiente manera; la liberación inicial contemplo el módulo de captura de encuestas; de él depende la generación de los reportes, la segunda iteración adiciona el módulo de reportes, para que se puedan generar los consolidados y de ultimo se liberó el módulo de configuración, debido a que las responsabilidades que él tiene podían ser asumidas inicialmente por el Administrador de la Base de Datos o DBA (Database Administrator), quien gestionaba los usuario y fechas del proceso de autoevaluación directamente sobre la Base de Datos.
DiseñoLa realización de las pruebas resulto de forma satisfactoria; aunque algunas pruebas no resultaron adecuadas, es decir, de alguna manera se evidenciaron algunos errores, su corrección ayudó a la depuración del código, haciéndolo sostenible para futuros cambios en las funcionalidades del sistema.
ConclusionesLos procesos Agiles deben utilizarse preferiblemente solo en proyectos en donde se necesiten resultados rápidos, se cuente con poco personal, sea soportado con la mínima documentación y se esté dispuesto a seguir las fases del ciclo de vida que la metodología propone.
Aplicar XP en la creación del software de captura de información; permitió la organización de las entregar las funcionalidades, de forma incremental. De manera que primero se liberó y utilizo el modulo de captura de información sin tener el software completamente terminado.
Baird, S. (2003). Sams teach yourself extreme programming in 24 hours. United States of America: Sams Publishing.
Bennett, S., McRobb, S., & Farmer, R. (2006). Analisis y Diseno Orientado a Objetos de Sistemas. Madrid: McGraw-Hill.
Highsmith, J. (11 de Febrero de 2001). History: The Agile Manifesto. Recuperado el 15 de Septiembre de 2011, de http://www.agilemanifesto.org/history.html
Holmes, B., & T. Joyce, D. (2000). Object-oriented programming with Java. Sudbury: Jones and Bartlett Publishers.
Kendall, K. E., & Kendall, J. E. (2005). Análisis y diseño de sistemas. Sexta edición. México: Pearson Educación
Lapham, M. A., Williams, R., Hammons, C., Burton, D., & Schenker, A. (Abril de 2010). Software Engineering Institute. Recuperado el 2012 de Enero de 20, de Considerations for Using Agile in DoD Acquisition: http://www.sei.cmu.edu/reports/10tn002.pdf.
Larman, C. (2002). UML y Patrones. Madrid: Pearson Educacion, S.A.
Pressman, R. (2010). Ingenieria del Software un Enfoque Practico. Mexico, D.F: McGraw-Hill
Program, S. E. (2010). CMMI for Development, Version 1.3. CMU/SEI-2010-TR-033.
SommerVille, I. (2005). Ingenieras de Software Séptima edición. Madrid: Pearson Educación.
Team, P. W. (2011). pear. Recuperado el 3 de Septiembre de 2011, de PHPUnit: http://pear.php.net/package/PHPUnit/redirected
Wells, D. (1999). CRC Cards. Recuperado el 3 de Septiembre de 2011, de CRC Cards: http://www.extremeprogramming.org/rules/crccards.html
Wells, D. (1999). The Rules of Extreme Programming . Recuperado el 2 de Septiembre de 2011, de The Rules of Extreme Programming : http://www.extremeprogramming.org/rules.html
Wells, D. (1999). user stories. Recuperado el 3 de Septiembre de 2011, de user stories: http://www.extremeprogramming.org/rules/userstories.html
* Magister.Correo: aarosadog@ufpso.edu.co
** Ingeniero. Correo: aquinterod@ufpso.edu.co
*** Ingeniero. Correo: cdmenesesg@ufpso.edu.co