Enterprise Patterns and MDA: Building Better Software with Archetype Patterns and UML