The flexibility provided by design patterns is usually achieved by introducing new classes into the design. Developers often don't write sufficient documentation, therefore the mapping between classes and design patterns is lost.
Moreover, some design patterns could be misunderstood and implemented incorrectly. The complexity of design patterns oriented software development can easily overtake the advantages of design patterns usage, which might lead to software bugs or even complete failure of the development.
In this paper we present the Patterns4Net project that targets the .NET platform. With Patterns4Net, developers can annotate their classes using special attributes that document the usage of design patterns in a standardized way.
This documentation is then used by Pattern Enforcer, a tool that verifies correctness of design patterns implementation, and Architecture Explorer, which uses information about implemented design patterns to generate interactive UML-like class diagrams.