In computer science, reflective programming or reflection is the ability of a process to examine, introspect, and modify its own structure and behavior.[1]