Enseanza de patrones de diseo utilizando robots con
alumnos de la materia Orientacin a Objetos II de la
Universidad Nacional de Ro Negro
Mauricio Tassara, Mauro Cambarieri, Marcelo Petroff, Claudio Iturburu, Horacio Muoz
Laboratorio de Informtica Aplicada - Universidad Nacional de Ro Negro
{mtassara, mcambarieri, mpetroff, citurburu, hmuoz}@[Link]
Abstract. Este trabajo presenta los resultados y conclusiones
preliminares de una experiencia educativa en la enseanza de
patrones de diseo de la materia Orientacin a Objetos II de la
Licenciatura en Sistemas de la Universidad Nacional de Ro Negro
(UNRN) - Sede Atlntica. Los patrones de diseo revolucionaron el
campo de la arquitectura de software permitiendo agilizar los
procesos de produccin mediante la estandarizacin de soluciones,
sin embargo el aprendizaje resulta ser complejo para alumnos de
carreras informticas por el alto nivel de abstraccin. Es por ello
que se hizo uso de robots para una visualizacin concreta y tangible
de la solucin aplicada facilitando la apropiacin del conocimiento
adquirido por el alumnado.
Keywords. Patrones de Diseo, Orientacin a Objetos, Enseanza,
Robtica.
1. Introduccin
El conocimiento y dominio de los patrones de diseo son de gran importancia en el
mbito de la ingeniera de software y en particular en el diseo de software orientado a
objetos. No hay una definicin generalmente aceptada de un patrn, pero tal vez el mejor
lugar para empezar es Christopher Alexander, una fuente de inspiracin para muchos
entusiastas de los patrones: Cada patrn describe un problema que ocurre infinidad de
veces en nuestro entorno, as como la solucin al mismo, de tal modo que podemos
utilizar esta solucin un milln de veces ms adelante sin tener que volver a pensarla otra
vez [1] [2]. La correcta aplicacin de los patrones de diseo puede permitir alcanzar
diseos de software ms flexibles, modulares, reutilizables y comprensibles, objetivos
muy importantes de la orientacin a objetos.
Sin embargo, el aprendizaje de dichos patrones de diseo suele resultar una tarea no
sencilla para los estudiantes universitarios de carreras vinculadas al desarrollo de
software. Es de vital importancia, para lograr una mejor comprensin de los mencionados
patrones de diseo, la aplicacin a problemas de diseo concretos, a situaciones reales en
las que los estudiantes descubran los beneficios de aplicarlos durante la actividad de
diseo del software. Es necesario para un completo entendimiento que se enfrenten a las
dificultades propias de su implementacin y que tengan la posibilidad de observar los
resultados durante la ejecucin de la solucin obtenida.
Con el objetivo de alcanzar las metas mencionadas, se propuso a los alumnos como
actividad prctica final de la asignatura Orientacin a Objetos 2, correspondiente al tercer
ao de la Licenciatura en Sistemas de la Universidad de Ro Negro, disear e implementar
la solucin a un problema vinculado a la programacin de Robots, integrando y aplicando
los patrones de diseo aprendidos durante el cursado de la asignatura.
La eleccin de la programacin de robots como una herramienta para la ejercitacin no es
azarosa. En el artculo Expiriences With Educational Robotic [3] se hace referencia a la
importancia de la aplicacin de la tecnologa en los procesos de aprendizaje y en
particular de los robots. La tecnologa debera promover el desarrollo de las
competencias bsicas y habilidades cognitivas de sus usuarios, explorando el aprendizaje
en una forma interactiva y ldica, permitiendo a la gente nuevos procesos educativos,
nuevas experiencias, nuevos descubrimientos y nuevas formas de aprendizaje. Por lo
tanto, el robot es atractivo como un medio, ya que invita a profesores y estudiantes a
ensear / aprender / descubrir / inventar en procesos colectivos, capaz de conectar la
abstraccin y el mundo concreto."
En este trabajo se expone la experiencia educativa llevada adelante, describiendo
detalladamente el proceso de diseo y desarrollo realizado por los alumnos. En la seccin
2 se exponen y discuten los resultados obtenidos, detallando en la seccin 3 las
conclusiones de la experiencia educativa realizada y trabajos futuros.
2. Descripcin de la experiencia educativa
El proceso de enseanza/aprendizaje llevado adelante durante el cursado de la asignatura
Orientacin a Objetos II de la Licenciatura en Sistemas de la Universidad Nacional de Ro
Negro (UNRN), incluy el dictado de 9 clases por parte del docente en las que se
explicaron los conceptos tericos relacionados a los patrones de diseo, y se presentaron
10 de los patrones de diseo ms ampliamente utilizados propuestos por Erich Gamma,
Richard Helm, Ralph Johnson y John Vlissides (the Gang of Four, GOF) en su libro
Patrones de Diseo: Elementos de Software Orientado a Objetos Reutilizables [4]. Se
sigui un proceso de descubrimiento de los patrones de diseo, donde a partir de ejemplos
prcticos, se arrib paulatinamente al diseo propuesto por cada uno de los patrones.
Luego se profundiz cada patrn detallando sus aspectos particulares.
Para complementar el proceso de aprendizaje de dichos patrones, se propusieron trabajos
prcticos en los que se planteaban problemas de baja complejidad a resolver aplicando los
patrones de diseo aprendidos hasta el momento. Los ejercicios prcticos proponan al
alumno no slo el diseo de la solucin, sino tambin su implementacin en el lenguaje
de programacin Java. Si bien, no es un lenguaje de programacin orientado a objetos
puro, se opt por este lenguaje ya que permite aplicar los conceptos claves del
mencionado paradigma y a partir del conocimiento y manejo del lenguaje por parte de
todos los alumnos del curso.
En los primeros tres trabajos prcticos se indic a los alumnos el patrn de diseo
especfico a aplicar en la solucin del problema propuesto. Paulatinamente, a medida que
los alumnos fueron madurando los conceptos y comprendiendo mejor la solucin de
diseo propuesta por los patrones, se dej en manos de los alumnos descubrir el patrn de
diseo ms adecuado a aplicar en la solucin del problema propuesto.
Para las ltimas tres semanas del cursado de la asignatura, momento en el cual haban sido
explicados a los alumnos la totalidad de los patrones de diseo propuestos por GOF y los
alumnos haban ejercitado cada uno de ellos resolviendo problemas prcticos mostrando
un nivel de madurez razonable en el manejo de los patrones de diseo, se propuso la
aplicacin de los patrones de diseo en el desarrollo de un software que d solucin a un
problema concreto de mayor complejidad utilizando combinacin de patrones. Por ello se
les planteo un ejercicio integrador donde deban realizar la programacin de un robot que
se desplazara por un circuito, marcado con una lnea negra, y que en caso de salir del
mismo emitiera una advertencia sonora.
En los siguientes prrafos se describen detalladamente el problema planteado y la
solucin propuesta por los alumnos.
2.1 Planteo del problema
El problema propuesto a los alumnos indicaba el anlisis, diseo e implementacin en
C++ de una solucin, utilizando durante la actividad de diseo los patrones estudiados
durante el cursado de la asignatura, que permita a un robot, recorrer un circuito marcado
con una lnea negra, y que en el caso de que el robot en su recorrido se salga del circuito,
emita una advertencia sonora.
Es importante destacar que fu posible realizar esta experiencia educativa dado que los
alumnos de la UNRN tienen acceso al Laboratorio de Informtica Aplicada (LIA), donde
cuentan con varios robots para poder experimentar.
2.2 Resolucin del problema
2.2.1 Modelo de Dominio
El diseo de la solucin comenz con el diseo de un Modelo de Dominio. De acuerdo a
la definicin de Craig Larman [5], un modelo de dominio es una representacin de las
clases conceptuales del mundo real, no de componentes software. En el mismo se reflejan
objetos del dominio o clases conceptuales, asociaciones entre las clases conceptuales y
atributos de las clases conceptuales. A continuacin se muestra el modelo de dominio
definido para el problema planteado:
Figura 1. Modelo de Dominio
2.2.2 Diagrama de Clases de Diseo
A partir del modelo de dominio y de la identificacin de las operaciones necesarias para
dar solucin al problema, se avanz en la definicin del modelo de diseo. Se
identificaron las clases del diseo, y el modo en que los objetos se comunican y colaboran
unos con otros.
Para formalizar este conocimiento se definieron los Diagramas de Clases de Diseo [5].
Estos diagramas muestran todas las especificaciones de las clases software y sus
relaciones. En ellos podemos encontrar: clases, asociaciones y atributos; interfaces y sus
operaciones; mtodos; tipo y visibilidad de los atributos; navegabilidad; dependencias.
El siguiente es el diagrama de las clases principales derivadas del modelo de dominio,
utilizando para su construccin el lenguaje de modelado UML [6]:
Figura 2. Modelo de Clases
El problema plantea la necesidad de poder indicar al robot que emita una advertencia
sonora en caso de salirse del circuito demarcado por una lnea negra. Para ello el robot
cuenta con dos sensores infrarrojos, dos motores y un parlante.
Dado que las acciones del robot dependen de su ubicacin con respecto al circuito
demarcado se deben evaluar los valores ledos por ambos sensores. La siguiente tabla
refleja en la primera fila los casos posibles del par de sensores, en la segunda fila una
imagen representativa de los mismos y en la tercera fila como deben comportarse los
actuadores segn cada uno de los casos.
Figura 3. Tabla de los 4 casos posibles casos en los que pueden reflejar los sensores.
[Link] Diagramas de clases relacionados a los sensores
El par de sensores determinan 4 posibles estados, como se detall en la Figura 3. Esta
funcionalidad fue resuelta mediante el patrn State [7]. Los estados concretos reciben un
mensaje mediante el mtodo evaluar, de esta manera realizan una lectura de ambos
sensores y de ser necesario cambian el estado. A continuacin, la Figura 4, muestra el
Diagrama de Clases:
Figura 4. Diagrama de Clases - Sistema de Posicionamiento.
[Link] Diagramas de clases relacionados al movimiento
El robot puede realizar 4 tipos de movimientos, como se detall en la Figura 3, esta
funcionalidad fue resuelta nuevamente mediante el patrn State [7]. A continuacin, la
Figura 5, muestra el Diagrama de Clases:
Figura 5. Diagrama de Clases - Sistema de Traccin
[Link] Diagramas de clases relacionados al sonido
El robot puede emitir un sonido, como se detall en la Figura 3. Esta funcionalidad fu
resuelta mediante el patrn State [7]. Los estados concretos reciben un mensaje mediante
uno de dos mtodos que representan el estado sonando o silenciado, de esta manera, de ser
necesario el estado establece la configuracin del parlante segn lo requerido y cambia el
estado del contexto. A continuacin, la Figura 6, muestra el Diagrama de Clases:
Figura 6. Diagrama de Clases - Sistema de Sonido
[Link] Diagramas de clases de la solucin
El comportamiento de los motores y el parlante dependen del posicionamiento del robot
con respecto al circuito, por ello tanto el sistema de traccin como el de sonido deben ser
notificados de los cambios de estado del sistema de posicionamiento. Esta funcionalidad
fue resuelta mediante el patrn Observer [7]. En este el sujeto a observar ser el sistema
de posicionamiento que en cada cambio de estado notificar a los observadores (sistema
de traccin y de sonido) enviado como parmetro su propio estado para que los
observadores acten en consecuencia. A continuacin, la Figura 7, muestra el Diagrama
de Clases de la solucin:
Figura 7. Diagrama de Clases - Integracin de la Solucin
3. Conclusiones y Trabajos Futuros
La experiencia educativa mostr resultados destacables desde dos puntos de vista. Por un
lado, la implementacin de una solucin para el funcionamiento de robots permiti la
visualizacin concreta y tangible de los resultados al observar el robot en movimiento,
comportndose de acuerdo al diseo e implementacin aplicada por los alumnos, logrando
que pudieran relacionar de forma directa la interaccin del robot en el medio con los
patrones de diseos utilizados.
Experiencias previas en el dictado de la asignatura, donde no se hizo tanto hincapi en la
ejercitacin y la aplicacin de los patrones de diseo a problemas concretos, mostraron
dificultades en el aprendizaje por parte de los alumnos que se vieron reflejados en el
resultado de los exmenes parciales y finales, y posteriormente en proyectos prcticos de
otras asignaturas, en los que los alumnos no utilizaron adecuadamente los patrones de
diseo para alcanzar las mejores soluciones.
De un total de 14 alumnos que cursaron la asignatura durante el ao 2014, 13
promocionaron con excelentes calificaciones, atribuyendo el xito al fuerte componente
de ejercitacin prctica implementado entre los que se destaca la experiencia educativa
integradora de la programacin de los robots.
Por otro lado, la experiencia permiti que los alumnos pudieran descubrir los beneficios
que se pueden obtener al aplicar adecuadamente patrones de diseo en la programacin de
los robots. Lograron eficientes implementaciones, factor importante teniendo en cuenta la
escasa capacidad de almacenamiento y memoria de los robots y la necesidad de optimizar
el uso de estos recursos. Soluciones a problemas similares sin aplicar patrones de diseo
llevaban a soluciones ms complejas e ineficientes.
Como trabajos futuros se prev incorporar nuevos elementos tecnolgicos vinculados a la
robtica para el dictado de la materia. Se trabajar en el ajuste de la propuesta teniendo en
cuenta las observaciones de los estudiantes y docentes de la ctedra.
4. Referencias
1. Alexander, et al. A Pattern Language. Oxford, (1977).
2. Martin Fowler. Patterns of Enterprise Application Architecture, Addison-Wesley, (2002).
3. Anibal Lopes Guedes, Fernanda Lopes Guedes. Expiriences With Educational Robotic. CACIC
2013.[Link]
(Acceso 3 de Junio de 2014).
4. Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides. Design Patterns: Elements of
Reusable Object-Oriented Software. Addison-Wesley Professional; 1 edition (November 10, 1994).
5. Craig Larman: UML y Patrones. 2da. Edicin. Prentice Hall (November 2004).
6. Martin Fowler. UML Gota a Gota. Addison Wesley Longman (March 2000).
7. Stelting Maassen. Patrones de diseo aplicados a Java, Prentice Hall, (2003).