miércoles, 18 de marzo de 2015

De unas propuestas de tesis de maestría en sistemas distribuidos.

En esta entrada planteo unas cuantas posibles vertientes de investigación que serían adecuadas para lograr una tesis de maestría en sistemas distribuidos. Los temas están enfocados en el tratamiento de cómputo distribuido, aunque no es de descartar su enfoque económico, social, de e-gobierno, o administrativo en general, aunque para ello se requiere de una co-asesoría de alguien experto en el tema lateral. Tales colaboraciones son deseables, pero no siempre posibles, al no existir tales expertos dentro del personal académico de este tipo de maestrías, orientadas a aspectos tecnológicos computacionales.

Para comenezar y de manera genérica, se tendría que adoptar un lenguaje de programación para actividades prácticas tal como Erlang (www.erlang.org). ¿Por qué? Por que es un lenguaje diseñado para tratar con concurrencia desde su diseño original, principalmente, y tiene además un esquema de trabajo basado en paso de mensajes muy limpio. Eso sí, no es un lenguaje ni muy conocido ni muy comercial. Inspeccionando en la red, en lo primero, apenas hay una docena de libros, todos de publicación reciente, que tratan de Erlang. En lo segundo, solo ocasionalmente se escucha que Erlang da vida al chat de Facebook o que Amazon lo incorpora de forma accesoria en algunos de sus servicios. Lejos de ser desventajas, la falta de popularidad de Erlang no es objeción contra la calidad de su diseño, y brinda un nicho de exploración académica en contraposición a un papel que tradicionalmente ha sido adjudicado a, por ejemplo, Java. La comparación en este momento se vuelve injusta, ya que Java tiene apoyos monetarios estratosféricos para proyectos de enorme impacto comercial, haciendo que su lado académico languidezca, al no permitirse compartir el código y ni siquiera los generales de diseño. Para esto de las aplicaciones, la comunidad de Erlang es proclive a aceptar nuevas posibles aplicaciones de Erlang como casos de estudio que muestren las bondades del lenguajes, por lo que siempre están dispuestos a ayudar y son promovedores del código fuente libre.

Para manejar la parte de complejidad conceptual de los sistemas distribuidos la idea es utilizar los conceptos plasmados en SCEL:

http://dl.acm.org/citation.cfm?id=2642710.2619998&coll=DL&dl=GUIDE&CFID=645236426&CFTOKEN=35421267

SCEL es un lenguaje de especificación de sistemas distribuidos basados en
componentes autónomos que se comunican mediante envío y recepción de mensajes. Cada componente tiene cierto grado de capacidad de procesamiento para formar parte de grupos, así como tomar decisiones básicas basadas en su "estado de salud" actual, entre otros factores.

La parte principal de este amplio esquema teórico radica en estudiar
componentes autonómicos de sistemas distribuidos basados en mensajes, pero sin restricciones que pudieran ocurrir en primera instancia. Se utilizan para ello sistemas de transición etiquetados, con una buena dosis
de cálculo pi. Una ventaja de este amplio esquema es que puede adaptarse
a un tema sencillo o específico, sirviendo así como de "almacén conceptual"
para el tratamiento adecuado de instancias distribuidas.  A la gente de SCEL
esta parte le llama mucho la atención por que conforma las "pruebas de
ácido" de su propuesta teórica, e inclusive se les puede escribir para resolver
dudas concretas (conozco personalmente a algunos de sus creadores, y son
gente sencilla y accesible ---realmente sabias).

Finalmente, antes de detallar los posibles tópicos de investigación, tenemos
el tema de los agentes. Un agente tiene un modelo muy particular de
cómputo que no sigue necesariamente aquel tradicional de resolución de  problemas
basados en máquinas de Turing (el principal proponente de este enfoque es Peter Wegner, junto con la idea de interacción: http://cs.brown.edu/~pw/).
El punto esencial de un "nodo-agente" distribuido es que siempre debe estar "atento" de lo que pasa a su alrededor o en su interior: eso incluye el tiempo, el estado de la batería, la temperatura, el buen funcionamiento del sistema, el
adecuado estado de sus llantas, o bien, atento a organizarse adecuadamente para lograr un objetivo común con otros nodos-agentes, o bien manejar con
la debida respuesta el intento de hackeo de intrusos o en general, las
perturbaciones externas al sistema. Este tipo de tareas se complementa
con aquellas llamadas "self-*" en SCEL, junto con otras tradicionales de agentes relacionadas con su inmersión en un ambiente. Los agentes son a su vez instancias de un enfoque de resolución de problemas basado en la constante interacción con el ambiente, a diferencia de una máquina de Turing que sólo toma una entrada y vuelve a interactuar con el ambiente (incluido un usuario) sino hasta brindar (posiblemente) una salida. La intermitencia de aspectos sensoriales y de guía hace que estos agentes resuelvan problemas que una máquina de Turing con su enfoque cerrado no podría.

Ahora, teniendo ya algunas cartas sobre la mesa, propongo unos tres temas como posibles tesis de maestría en sistemas distribuidos:

* El primer tema tiene que ver con construir un escenario virtual donde unos
robots deambulan, comunicándose entre sí y teniendo una noción de cooperación, y en su caso, de competencia. Con la robótica en el estado actual (microcontroladores programables, servos, y sensores), tal simulación sería trasladable a un escenario realista en principio, aunque con objetivos concretos en mente y posiblemente una inversión monetaria alta.

* El segundo tema es con respecto al tratamiento del tiempo de unos
agentes que monitorean y dan mantenimiento a un sitio virtual. Los agentes que actualmente actúan de esta forma (con algunas otras funciones más) están presentes en las redes sociales y los comercios internacionales tales como Amazon. Tal tecnología está en una etapa madura, pero todavía faltan algunos aspectos a tratar que impiden cierta flexibilidad de los agentes actuales.
 
* El tercer tema es para validar redes distribuidas mediante "model checking"
(construcción de modelos sencillos para verificar que las redes funcionan
como se debe). La ventaja de un enfoque como éste es que se puede partir de un sistema distribuido complejo y analizarlo con herramientas sencillas, o bien comenezar con una red sencilla y por capas de provisión de riqueza en servicios ir ampliándolo siempre bajo una disciplina de creación de modelos.

Cabe mencionar que esta no es una lista exhaustiva de posibles temas: más bien digo que los temas aquí presentados indican la incorporación en su desarrollo de las anteriores herramientas mencionadas. Llegado el caso, se aceptarían propuestas que involucraran al menos dos de
tres siguientes aspectos: Erlang, cálculo-pi, y  distribución de carga computacional.

A reserva de otras consideraciones metodológicas, es necesario enfatizar que
la selección de una herramienta computacional para implementar algoritmos
o simulaciones es ya un avance sustancial en el logro de un proyecto de tesis
de maestría. La misma observación en el ámbito teórico: si nos ponemos a
pensar al respecto, es enorme la variedad de "ofertas teóricas" que se
presentarían. Al delimitar algunas de ellas basadas en los criterios de pertinencia, asequibilidad, comprensibilidad y complejidad notaremos que
las herramientas teóricas mencionadas ya poseen de entrada ciertas ventajas.

Una nota importante: El manejo del tiempo entre el comienzo de una tesis
de maestría y su final es algo digno de consideración, y requiere tanta atención  como lo es el considerar la desventaja de la distancia geográfica entre los participantes en el caso de estudios a distancia. Una buena actitud de parte del estudiante es fundamental: si el estudiante solo tiene un interés mediano en el tema (o peor, ninguno), los tiempos se ampliarán como si fueran por descripción recursiva (notemos, jocosamente, que 1+1/2+1/3+1/4+.. es una serie divergente, como cuando un estudiante dice: "En un semestre haré la mitad de la tesis; en el otro semestre la mitad de la otra mitad; etc."). Tan importante como el interés en el tema, por lo tanto, es plantearse tiempos cortos de avances efectivos de tesis y tácticas para sortear el distanciamiento geográfico en comunicación. Suerte. 

No hay comentarios:

Publicar un comentario