Promoting Confidence in Software Components: A UML Approach