Una simulación imita o modela la evolución en el tiempo de un sistema o proceso de la vida real. Esta simulación involucra, esencialmente, la generación de una historia artificial para el modelo, y el análisis de dicha historia para sacar conclusiones útiles respecto de esa parte de la realidad. La categoría de simulación por eventos discretos es habitualmente definida en términos del modelado de la evolución en el tiempo de un sistema, por medio de una representación en la cual las variables de estado de dicho sistema cambian en forma instantánea, en puntos identificables y separados en el eje de tiempo.
En este contexto, es deseable considerar separadamente dos aspectos fundamentales: el modelo y el experimento. El modelo es una descripción funcional de los elementos físicos del sistema (máquinas, operarios) y sus interrelaciones lógicas. El experimento, a su vez, especifica las condiciones bajo las cuales el modelo es ejercitado para generar datos de salida específicos, incluyendo y/o afectando elementos tales como: condiciones iniciales, disponibilidad de recursos, tipo de datos estadísticos a ser colectados, longitud de la simulación, etc.
En este trabajo se presenta un enfoque basado en una arquitectura de software para soportar simulaciones discretas. Dicha arquitectura esta sustentada en conceptos de reflexión computacional, y se caracteriza por ser de implementación abierta, en cuanto a su modificación y extensión. La arquitectura reflexiva propuesta reifica, o torna explícitos en términos de niveles de implementación, los conceptos de modelo de la simulación y su experimento. El experimento es visto como un meta-nivel que inspecciona y/o afecta el funcionamiento de la simulación basada en el modelo. Esta separación en niveles presenta mejoras, respecto de los paradigmas de implementación tradicionales en el dominio, en cuanto a la flexibilidad y adaptabilidad del
modelo, en este caso sin modificación explícita de su código, y la reusabilidad de las componentes experimentales.