Describir: Component-Based Software Engineering