Cognitive patterns: problem-solving frameworks for object technology