Reflexión en el desarrollo de Software

Introducción

De acuerdo con la Real Academia de la Lengua Española, reflexión(1) es la "Acción y efecto de reflexionar", en tanto que reflexionar(2) es: "Considerar nueva o detenidamente algo".

Wikipedia menciona la reflexión en informática(3) como "la capacidad que tiene un programa de ordenador para observar y opcionalmente modificar su estructura de alto nivel".

Definición

En mis propios términos:

La reflexión en la programación de Software es la característica de un lenguaje que permite conocer su estructura de manera dinámica (en tiempo de ejecución).

Ejemplo:

A continuación se muestra un ejemplo que tiene la siguiente funcionalidad:

1. Crear una clase del tipo que se proporcione en el primer parámetro.
2. Crear un objeto a partir de la clase creada en el punto anterior.
3. Obtener el valor de la propiedad indicada en el segundo parámetro.
4. Modificar el valor de la propiedad que se obtuvo en el punto anterior con el valor del tercer parámetro.

Ver la versión completa en mi blog:

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de ezamudio

Introspección

Creo que introspección es un término más adecuado para el software que puede ver su propia estructura de manera dinámica en tiempo de ejecución. Pero pues ya lleva mucho tiempo que se usa reflexión, aunque en inglés es Reflection, haciendo referencia más bien al efecto de la luz sobre un espejo (porque el software puede verse a sí mismo) que a un proceso psicológico humano.

Imagen de Shadonwk

:o :o, jeje apenas estoy

:o :o, jeje apenas estoy viendo ejemplos de este termino hasta ahora un poco nuevo para mi

Imagen de paranoid_android

Refletion en tiempo de ejecución...

Es verdad con reflection una herramienta que haga ingeniería inversa en UML puede obtener un diagrama de clases, una cosa más compleja es obtener un diagrama de secuencias.

1. ¿Alguien conoce algún plugin de eclipse open source que lo haga?
2. ¿Alguien conoce de alguna herramienta que trabaje directamente a nivel del código fuente?

Una aplicación de reflection.
La librería xstream de codehause usa reflection para transformar una clase o entidad compuesta (varias clases) para mapearla a json o xml

Imagen de josuemb

Estoy de acuerdo con tu

Estoy de acuerdo con tu comentario, sin embargo, utilizo el término "reflexión" en alusión directa al término anglosajón "reflection" a fin de poder relacionarlo fácilmente, aunque, en efecto, el término "introspección" sería más adecuado.

Imagen de josuemb

Yo no conozco una

Yo no conozco una herramienta. plugin o similar que te permita hacer un diagrama de suecuencias, aunque, si lo hubiera creo que el resultado no sería muy útil, porque las personas cuando hacemos ese proceso, no hacemos generalmente un mapeo 1 a 1 de cada instrucción.