Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
thesis [2011/03/07 21:15] – [Área SunSPOT] pleger | thesis [2013/01/14 18:17] (current) – eallende | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ~~NOTOC~~ | ||
+ | En esta pagina se encuentran los tópicos de memorias y tesis del laboratorio PLEIAD. Notar que la mayoría de los tópicos pueden ser adaptados en memorias de Ingeniera o tesis de Magíster. | ||
+ | |||
+ | Las propuestas de estudiantes son bienvenidas en el laboratorio PLEIAD. Por favor, comunicase directamente con los profesores | ||
+ | |||
+ | ===== Temas de tésis por área ===== | ||
+ | |||
+ | [[#Tópicos relacionado a AspectScript]] | ||
+ | |||
+ | [[#Área Lenguajes y Aspectos]] | ||
+ | |||
+ | [[#Área Depuración Omnisciente]] | ||
+ | |||
+ | [[#Área Visualización, | ||
+ | |||
+ | [[#Área SunSPOT]] | ||
+ | |||
+ | ---- | ||
+ | |||
+ | ==== Tópicos relacionado a AspectScript ==== | ||
+ | |||
+ | AspectScript es una extensión de JavaScript para soportar Programación Orientada a Aspecto (POA). Actualmente, | ||
+ | |||
+ | [[# Extender Firebug para depurar de aplicaciones de AspectScript]] | ||
+ | |||
+ | [[# Obtener una version de AspectScript compatible con actuales browsers]] | ||
+ | |||
+ | [[# Optimizar la eficiencia del runtime de applicaciones de AspectScript]] | ||
+ | |||
+ | |||
+ | |||
+ | ==== Área Lenguajes y Aspectos ==== | ||
+ | |||
+ | [[# | ||
+ | |||
+ | [[#Eclipse scripting plugin]] | ||
+ | |||
+ | [[#An aspect language for language definition toolkits]] | ||
+ | |||
+ | [[# | ||
+ | |||
+ | [[# | ||
+ | |||
+ | [[#Scoping of Distributed Aspects]] | ||
+ | |||
+ | [[#An Aspect Language for Ambient Actors]] | ||
+ | |||
+ | [[# | ||
+ | |||
+ | [[#Reduce redundancy in execution traces through static analysis]] | ||
+ | |||
+ | |||
+ | ==== Área Depuración Omnisciente ==== | ||
+ | |||
+ | La depuración omnisciente (omniscient debugging) es un paradigma de depuración que permite volver hacia atrás en el tiempo durante la depuración de un programa asi como inmediatamente atravesar " | ||
+ | |||
+ | [[# | ||
+ | |||
+ | [[# | ||
+ | |||
+ | [[# | ||
+ | |||
+ | ==== Área Visualización, | ||
+ | |||
+ | [[# | ||
+ | |||
+ | [[#Rich interactive application builder]] | ||
+ | |||
+ | [[# | ||
+ | |||
+ | === AspectMaps === | ||
+ | |||
+ | AspectMaps tiene su propria pagina, con algunos videos: [[research: | ||
+ | |||
+ | [[#Eclipse scripting plugin]] | ||
+ | |||
+ | === Trabajos con Moose === | ||
+ | |||
+ | Moose es una herramienta para el análisis de software. Se usa para visualizar e identificar defectos en el diseño y arquitectura de aplicaciones. Mas información al respecto de moose se puede encontrar en [[http:// | ||
+ | |||
+ | |||
+ | [[#Adding 3D Renderer to Mondrian]] | ||
+ | |||
+ | [[#Importer for your favorite language]] | ||
+ | |||
+ | [[# | ||
+ | |||
+ | Enlaces relevantes: | ||
+ | - Moose: http:// | ||
+ | - Mondrian: http:// | ||
+ | - Pharo: http:// | ||
+ | - Pharo by example: http:// | ||
+ | - Lumiere: http:// | ||
+ | - other very cool projects: | ||
+ | * Codecity: http:// | ||
+ | * Yellow Submarine: http:// | ||
+ | |||
+ | |||
+ | |||
+ | ==== Área SunSPOT ==== | ||
+ | |||
+ | The [[http:// | ||
+ | |||
+ | * [[ http:// | ||
+ | * [[ http:// | ||
+ | * [[ http:// | ||
+ | |||
+ | The following thesis topics are related to SunSPOTs: | ||
+ | |||
+ | [[#A Dedicated Language for SPOTs]] | ||
+ | |||
+ | [[# | ||
+ | |||
+ | ---- | ||
+ | |||
+ | ===== Thesis topics ===== | ||
+ | |||
+ | |||
+ | |||
+ | ==== Visualización de comportamiento de aspectos at runtime ==== | ||
+ | Type: Ingeniera/ | ||
+ | |||
+ | [[people: | ||
+ | |||
+ | Un inconveniente para el desarrollador que usa aspectos es que puede resultar difícil determinar donde y cuando se aplican los aspectos en el sistema construido. Eso dificulta la comprensión del comportamiento del sistema, la cual es necesaria, entre otras cosas, para la depuración. | ||
+ | |||
+ | Existen algunas visualizaciones que muestran en forma estática donde aspectos van a ser (o podrían ser) aplicados; El AspectJ Development Toolkit de Eclipse es un ejemplo de tal visualización. El problema con esas visualizaciones es que, por ser estáticas, no son adecuadas para mostrar lo que realmente ocurre cuando el sistema se ejecuta. Además, no pueden soportar ningún tipo de aspectos dinámicos. En consecuencia se necesita alguna visualización de los aspectos en tiempo de ejecución (runtime), incluyendo mostrar el ordenamiento y la interacción entre aspectos. | ||
+ | |||
+ | El objetivo de esta tesis es construir una semejante visualización, | ||
+ | |||
+ | [1] Scalable Omniscient Debugging, G. Pothier, E. Tanter, J. Piquer, Proceedings of ACM OOPSLA 2007.\\ | ||
+ | [2] Extending Omniscient Debugging to Support Aspect-Oriented Programming, | ||
+ | |||
+ | ==== An aspect language for language definition toolkits ==== | ||
+ | Type: Ingeniera/ | ||
+ | |||
+ | [[people: | ||
+ | |||
+ | New programming languages, especially consdering domain-specific languages, are seldomly written completly from scratch. Usually some lex/yacc like parser builder is used in conjunction with parse tree transformation tools. Let us call this conjunction ' | ||
+ | |||
+ | It is known that a number of cross-cutting concerns exist in these programs, i.e. in code defining a new programming language. However because the toolkit programming languages used are not general-purpose, | ||
+ | |||
+ | The goal of this thesis is to build 'the ultimate' | ||
+ | |||
+ | |||
+ | ==== Achieving Robust Software using Aspect-Oriented Programming ==== | ||
+ | Type: Ingeniera/ | ||
+ | |||
+ | [[people: | ||
+ | |||
+ | Unfortunately, | ||
+ | |||
+ | The objectives of this thesis are: | ||
+ | * Study the root causes of bugs that can make a system crash (I.e. null pointer exceptions, array out of bounds exceptions, ...) | ||
+ | * Study patterns of software patches such that intolerable bugs can be turned into tolerable bugs. | ||
+ | * Define and implement advices and join points such that these patterns can be woven into the program. | ||
+ | | ||
+ | [1] Rinard, M. 2003. Acceptability-oriented computing. In Companion of the 18th Annual ACM SIGPLAN Conference on Object-Oriented Programming, | ||
+ | [2] Gabriel, R. P. and Goldman, R. 2006. Conscientious software. SIGPLAN Not. 41, 10 (Oct. 2006), 433-450. DOI= http:// | ||
+ | |||
+ | |||
+ | ==== Expressive Scoping of Dynamic Aspects in Java ==== | ||
+ | Type: Ingeniera/ | ||
+ | |||
+ | [[people: | ||
+ | |||
+ | Dynamically-deploying aspects allows much greater flexibility and adaptability than all-static approaches like AspectJ. In recent work, we have explored a very expressive model for expressive scoping of dynamically-deployed aspects [1]. Scoping refers to the ability to define proper boundaries for aspect application, | ||
+ | |||
+ | [1] Expressive Scoping of Dynamically-Deployed Aspects. E. Tanter. Proceedings of ACM AOSD 2008.\\ | ||
+ | [2] A Versatile Kernel for Multi-Language Aspect-Oriented Programming. E. Tanter, J. Noyé, Proceedings of ACM GPCE 2005.\\ | ||
+ | [3] An Overview of CaesarJ, Transactions on AOSD, 2006. | ||
+ | |||
+ | |||
+ | ==== Scoping of Distributed Aspects ==== | ||
+ | Type: Ingeniera/ | ||
+ | |||
+ | [[people: | ||
+ | |||
+ | There exists a number of systems for distributed aspects in Java, such as the AWED language [1] and the ReflexD infrastructure [2]. These proposals however do not consider expressive scoping of aspects. As a result, using aspects in a distributed setting is still subject to many unforeseen issues, such as aspect propagation between hosts, class versioning errors, etc. The goal of this thesis is to study a proper scoping model for distributed aspects by extending the work of [3], and its implementation, | ||
+ | |||
+ | [1] Explicitly Distributed AOP using AWED. L.D. Benavides et al. Proceedings of AOSD 2006.\\ | ||
+ | [2] A Versatile Kernel for Distributed Aspect-Oriented Programming. E. Tanter, R. Toledo. Proceedings of DAIS 2006.\\ | ||
+ | [3] Expressive Scoping of Dynamically-Deployed Aspects. E. Tanter. To appear in AOSD 2008 (available upon request). | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ==== An Aspect Language for Ambient Actors ==== | ||
+ | Type: Ingeniera/ | ||
+ | |||
+ | [[people: | ||
+ | |||
+ | The goal of this topic is to define an aspect language for Ambient Actors in the AmbientTalk language [1], in order to address crosscutting concerns in mobile ad hoc networks at an appropriate level of abstraction. | ||
+ | |||
+ | [1] http:// | ||
+ | |||
+ | ==== Depuración Omnisciente: | ||
+ | Type: Ingeniera/ | ||
+ | |||
+ | [[people: | ||
+ | |||
+ | A pesar que las ventajas de la depuración omnisciente sobre los enfoques tradicionales parecen sumamente claras, al día de hoy no existe ningún dato empírico que lo demuestre. | ||
+ | |||
+ | El objetivo de este trabajo es llevar a cabo experimentos que demuestren el interés de este enfoque comparando el tiempo requerido para resolver un conjunto de bugs usando paradigmas de depuración tradicionales, | ||
+ | |||
+ | Para lograr este objetivo sera necesario: | ||
+ | |||
+ | - Recolectar una cantidad de casos de uso en Java, Python o AspectJ. Esto involucra buscar programas candidatos en sitios de hosting de proyectos open-source (eg. SourceForge), | ||
+ | |||
+ | - Preparar un paquete experimental que provea un plan de experimento detallado, así como todo el material que fuese necesario para llevar a cabo el experimento (código fuente, lista de bugs, etc). El paquete debería ser lo suficientemente detallado para permitir que personas externas realicen el experimento (existen posibilidades de colaboración con la Universidad de Montreal y dos universidades brasileñas). | ||
+ | |||
+ | - Llevar a cabo el experimento. Eso involucra reclutar " | ||
+ | |||
+ | ==== Extensión del compilador AspectJ ==== | ||
+ | Type: Ingeniera/ | ||
+ | |||
+ | [[people: | ||
+ | |||
+ | Para el soporte de [[http:// | ||
+ | |||
+ | El mecanismo de tagging consiste en identificar el rol de cada bytecode Java en un programa AspectJ: en un método dado algunos bytecodes corresponden al código del programa base, mientras otros han sido insertados por el compilador AspectJ para implementar la semántica de alguna funcionalidad de AspectJ, por ejemplo una verificación dinámica de condición, o la llamada a un advice. | ||
+ | |||
+ | El objetivo de este trabajo es extender el compilador ajc en colaboración con la comunidad de tal forma que (1) la extensión de tagging este integrada en versiones oficiales del compilador y (2) un estándar de tagging sea establecido que pueda también ser usado por otros compiladores AspectJ. | ||
+ | |||
+ | ==== Rich interactive application builder ==== | ||
+ | Type: Ingeniera/ | ||
+ | |||
+ | [[people: | ||
+ | |||
+ | Interactive graphical applications are notoriously tedious to develop. | ||
+ | Solutions exist that ease the task for simple, form-based | ||
+ | applications: | ||
+ | create forms with buttons, text fields, lists, etc. But even with | ||
+ | those builders, the developer must still write a lot of code to | ||
+ | provide the functionality of the interface and glue the different | ||
+ | elements together. The situation is even worse for richer, non | ||
+ | form-based interfaces (eg. a drawing program), as the developer has to | ||
+ | write everything from scratch. | ||
+ | |||
+ | Moreover, the procedural and object-oriented languages commonly used | ||
+ | to build interactive applications are not very well suited to the | ||
+ | task: some parts of the application would be best described in an | ||
+ | event-based or workflow-based languages, some components rely on | ||
+ | finite automata that the programmer must usually implement by hand, | ||
+ | some interactions could be implemented more easily using a geometric | ||
+ | constraint solving engine, etc. | ||
+ | |||
+ | We started the development of a novel interactive application builder, | ||
+ | named Uithin, with the following characteristics and goals: | ||
+ | |||
+ | - Heterogeneous components: components can be widgets (buttons, text fields, etc.) but also finite state automata, model objects, constraint solvers, scripts, etc. Essentially a component is a black box with a set of valued slots that can be connected to other slots of other components. Whenever the value of a slot changes, it is propagated to its connected slots. Composite components can be created by assembling several components. | ||
+ | |||
+ | - Graphical wiring of components: as a great part of the development of an interactive application consists in wiring different components together, this activity is performed graphically (instead of programatically setting up listeners). | ||
+ | |||
+ | - Toolkit agnostic: the interface is designed in an abstract way, independantly of the GUI toolkit used (Swing, AWT, SWT, QT/ | ||
+ | |||
+ | - Field-programmable: | ||
+ | to download the source in a separate IDE, edit the program, compile it and run it. | ||
+ | |||
+ | - Meta-circular: | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ==== Extender Firebug para depurar de aplicaciones de AspectScript ==== | ||
+ | type: Ingeniera | ||
+ | |||
+ | [[people: | ||
+ | |||
+ | The purpose of this thesis is to extend [[http:// | ||
+ | |||
+ | The challenge is that AspectScript is based on code transformation so that debugging turns out to be almost impossible if the developer has to deal with the transformed source code. In addition, debugging-related tasks such as setting breakpoints and step-by-step debugging, are also significantly more involved. | ||
+ | |||
+ | ====Optimizar la eficiencia del runtime de applicaciones de AspectScript ==== | ||
+ | type: Ingeniera | ||
+ | |||
+ | [[people: | ||
+ | |||
+ | The purpose of this thesis is to optimize the runtime performance of AspectScript applications. | ||
+ | |||
+ | AspectScript is heavily based on code transformation for dynamic weaving of aspects which introduces serious performance penalties. | ||
+ | |||
+ | ====Obtener una version de AspectScript compatible con actuales browsers==== | ||
+ | |||
+ | type: Ingeniera | ||
+ | |||
+ | [[people: | ||
+ | |||
+ | El proposito de esta tesis es obtener una versión de AspectScript compatible con los browsers Internet Explorer y Safari. | ||
+ | |||
+ | Actualmente, | ||
+ | |||
+ | ====Visualizador de tipos para languajes dínamicos==== | ||
+ | Type: Ingeniera | ||
+ | |||
+ | [[people: | ||
+ | |||
+ | El proposito de esta tesis es obtener una herramienta de visualización (usando el motor de visualización Mondrian) para tipos graduales en lenguajes con sistema de tipos dinámico, como ser Javascript, Php, Ruby, etc. | ||
+ | |||
+ | ==== Agregar una 3D visualización a Mondrian | ||
+ | Type: Ingeniera | ||
+ | |||
+ | [[people: | ||
+ | |||
+ | Mondrian es una herramienta de visualización. Con él, se puede tener una | ||
+ | representación gráfica en 2D de cualquier tipo de datos. Mondrian se usa | ||
+ | principalmente para visualizar software. Extender Mondrian con una librería | ||
+ | 3D abrirá muchas puertas a nuevos tipos de visualización. | ||
+ | Ese proyecto de ingeniero o investigación puede dar posibilidad a una | ||
+ | colaboración con Suiza y Francia. | ||
+ | |||
+ | //En ingles:// | ||
+ | Mondrian is a visualization tool. It is essentially used to give a graphical representation of software programs. It renders 2D pictures. The idea of this topic is to combine Lumiere and Mondrian to offer 3D visualization of software. | ||
+ | |||
+ | ==== Eclipse scripting plugin ==== | ||
+ | |||
+ | Type: Ingeneria/ | ||
+ | |||
+ | [[people: | ||
+ | |||
+ | Queremos mejor integración de AspectMaps con Eclipse, por ejemplo que cuando uno selecciona un método en AspectMaps el código fuente se muestra en Eclipse. Por eso necesitamos la posibilidad de hacer scripting de Eclipse, de preferencia vía una conexión en red. Ese trabajo consiste en crear un scripting plugin para Eclipse. | ||
+ | |||
+ | La versión ' | ||
+ | |||
+ | |||
+ | ==== Importer for your favorite language ==== | ||
+ | Type: Ingeniera | ||
+ | |||
+ | [[people: | ||
+ | Moose es un ambiente para analizar software. Moose es usado en varias | ||
+ | universidades y empresas en Europa y Sudamérica. En la actualidad, | ||
+ | solamente los lenguajes C, Smalltalk, Java y ADA están reconocidos desde | ||
+ | Moose. Falta Javascript y Php. Un objetivo concreto, es de analizar y medir | ||
+ | la calidad de softwares cómo Joomla y Gmail. | ||
+ | |||
+ | |||
+ | //En ingles:// Moose is an environment for analyzing software. It is currently used by a number of Universities in Europe and in South America. So far, only C, Smalltalk, Java, ADA are supported in Moose. It would be very cool to have Javascript, Php, python, ruby. One good starting point to build a new importer in moose, is to have an XML representation of your code. Using XPath you can do simple queries then to extract the information. Good case studies include assessing the quality of gmail, googlemaps, ruby on rails. | ||
+ | |||
+ | ==== Architectural components in Moose ==== | ||
+ | Type: Ingeniera | ||
+ | |||
+ | [[people: | ||
+ | Moose es un ambiente para analizar software. Moose es usado en varias | ||
+ | universidades y empresas en Europa y Sudamérica. | ||
+ | Moose tiene un meta-modelo para describir el código fuente de cualquier tipo | ||
+ | de aplicación; | ||
+ | arquitectura de la aplicación, | ||
+ | una necesidad para empresas de software que desean tener una | ||
+ | satisfactoria calidad de estos. | ||
+ | Este proyecto de ingeniería o investigación puede abrir la posibilidad de una | ||
+ | colaboración con Suiza y Francia. | ||
+ | |||
+ | |||
+ | //En ingles:// Currently, only classes, packages, methods are supported in Moose as structural elements. Doing a real case study with industrial applications require some coarser grain, such as Component or Layer. It would be cool to have a way to define architectural layers and some visualization associated to it. | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ==== A Dedicated Language for SPOTs ==== | ||
+ | Type: Ingeniera/ | ||
+ | |||
+ | [[people: | ||
+ | |||
+ | Currently developing code on SPOTs is done in Java. Not only does this mean we inherit all the problems that Java has, developing on the spot requires a edit-compile-install-reset cycle. The topic of this thesis is to develop a small language for SPOTs, that is free from the Java restrictions, | ||
+ | |||
+ | ==== Domain-Specific extensions to Java for SPOTs ==== | ||
+ | Type: Ingeniera/ | ||
+ | |||
+ | [[people: | ||
+ | |||
+ | Right now, all the special features of the SPOT are exposed to the programmer as Java abstractions. It would make sense to instead enhance Java, e.g. with some special keywords, to reify these features in the language. Resulting SPOT code would be more compact and easy to read. The topic of this thesis is to make such a Java extension using source code transformation tools such as Stratego and Metaborg[1]. | ||
+ | |||
+ | [[http:// | ||
+ | |||
+ | |||
+ | ==== Better integration of Gradualtalk in Smalltalk ==== | ||
+ | Type: Ingeniera | ||
+ | |||
+ | [[people: | ||
+ | |||
+ | Gradualtalk is a gradually typed Smalltalk. It provides tools for the programmers to type only certain sections of code. However, critical features of Smalltalk does not support it or the support is minimal. These features are Monticello, the package manager, and Nautilus, the code browser. The topic of this thesis is to make extensions to these tools to add better support for Gradualtalk. | ||
+ | |||
+ | [[http:// |