A controlled experiment on the impact of the object constraint language in UML-based development