Describir: Building Objects Out of Plato: Applying Philosophy, Symbolism, and Analogy to Software Design.