Describir: Concurrency and Refinement in the Unified Modeling Language