• No results found

S TUDY 3: P ERCEPTIONS OF A LTERNATIVE L OAN A PPLICATION D ATA I TEMS 1 A IMS

Con respecto a los datos de posicionamiento, la arquitectura de PLUS no permite el uso de m´as de una entrada de datos de manera simult´anea. En particular, las condiciones materiales en que se desarroll´o este trabajo indicaron que se requer´ıa congeniar la recepci´on de datos de posicionamiento, expresados a trav´es de transformaciones homog´eneas, desde una fuente de software comunicada con PLUS a trav´es del protocolo OpenIGTLink y desde el dispositivo de hardware trakSTAR™.

La biblioteca PLUS incluye, en su implementaci´on original, clases que gestionan la recepci´on de datos desde ambas fuentes. Aunque ambas son clases “hermanas”, con una clase padre com´un, est´an pensadas para utilizarse de forma excluyente entre s´ı - de hecho, las partes de PLUS que utilizan instancias de estas clases asumen que solo existe un objeto de cualquiera de las clases hermanas disponibles: intentar instanciar otro objeto de esta familia (por ejemplo, indicando la configuraci´on inicial de dos receptores de datos en un archivo de configuraci´on XML) implica la destrucci´on del ya existente (en este caso, la instanciaci´on del segundo objeto especificado en el archivo de configuraci´on implicar´ıa la destrucci´on del primero).

La decisi´on de dise˜no de utilizar un ´unico objeto para recibir los datos de posicionamiento no se refleja en un ´unico punto de la implementaci´on de la biblioteca. Por el contrario, permea toda la arquitectura de PLUS y, a nivel de c´odigo, se observa en m´ultiples clases y puntos del desarrollo de las l´ogicas de ejecuci´on: adem´as de los datos de configuraci´on propios de cada tipo soportado, la clase que implementa el manejo de una fuente de datos de posicionamiento contiene la definici´on de un flujo de datos y, dentro de este, de varios “canales” que representan la informaci´on de una entidad en particular dentro de la escena de la simulaci´on - un objeto tridimensional o el “observador”, por ejemplo. Dada la arquitectura interna de PLUS en este punto, las alternativas para dar soporte al uso simult´aneo de varias fuentes de datos eran dos:

CAP´ITULO 4. DESARROLLO DE LA APLICACI ´ON

1. Introducir la posibilidad de instanciar varias fuentes de datos y que estas env´ıen informaci´on a un mismo flujo de datos.

2. Dentro del marco definido por la arquitectura de PLUS, generar una clase que encapsulara la l´ogica de recepci´on de datos desde, espec´ıficamente en este caso, una conexi´on OpenIGTLink y un dispositivo trakSTAR™.

La primera opci´on requerir´ıa la modificaci´on de varios niveles en el dise˜no interno de PLUS, pues corresponder´ıa m´as a una modificaci´on de la arquitectura que al cambio del funcionamiento interno de una clase (o familia de clases). La segunda alternativa, si bien corresponder´ıa a una implementaci´on

ad hoc a las condiciones materiales de este desarrollo, no tan f´acilmente generalizable a otros casos

de uso, no necesitar´ıa de modificaciones fuera de la implementaci´on de la nueva clase. Por lo anterior, se opt´o por crear una nueva clase que “aglutinara” las l´ogicas de recepci´on y tratamiento de datos provenientes de una fuente de tipo OpenIGTLink y del dispositivo trakSTAR™; en l´ıneas generales, se copi´o la l´ogica de las clases respectivas dentro de la nueva y se realizaron las adecuaciones necesarias para que todo quedara consistente.

La implementaci´on de esta nueva clase signific´o, en particular, la fusi´on de las l´ogicas de confi- guraci´on interna de las dos clases originales, de manera que, a partir de un mismo elemento dentro del archivo de configuraci´on XML de una simulaci´on, se instanciaran los distintos canales del flujo de datos utilizando la l´ogica que corresponde a la fuente de donde provienen. Como, independiente de los datos y c´odigos de configuraci´on inicial utilizados, todos los canales de datos corresponden a objetos de una misma clase, los objetos ya instanciados pueden agregarse a un ´unico flujo de datos; dicho de otro modo, la diferenciaci´on de configuraci´on se encapsula dentro de la clase y, para el resto de PLUS, solo existe el flujo de datos y no se hace distinci´on entre las fuentes externas de datos (la interfaz usuaria, a trav´es de OpenIGTLink, y el magnet´ometro). Asimismo, se consolidaron las l´ogicas de actualizaci´on de los datos de la fuente de datos, de forma que una misma llamada a la funci´on respectiva actualice todos los canales de acuerdo a la l´ogica correspondiente con su fuente de datos. En este punto, la implementaci´on se concentr´o en la eliminaci´on de redundancias e inconsistencias en la consolidaci´on de las l´ogicas de las clases originales.

Como esta nueva clase contiene la l´ogica de recepci´on de datos a trav´es de OpenIGTLink, tambi´en corresponde a la clase cuya creaci´on se menciona en la secci´on anterior de este cap´ıtulo; en otras palabras, la implementaci´on realizada para cumplir el requerimiento de variaci´on de par´ametros en tiempo de ejecuci´on y el de recepci´on de datos de posicionamiento desde m´ultiples fuentes simult´aneas se realiz´o en una ´unica clase. Las modificaciones hechas dentro de PLUS para que la aplicaci´on utilice

esta nueva clase fueron explicadas en la secci´on anterior.