Patterns and quality of object-oriented software systems