A good pattern is a named and well-known problem/solution pair that can be applied in new contexts, with advice on how to apply it in novel situations and discussion of its trade-offs, implementations, variations, and so forth.
A popular way of thinking about the design of software objects and also larger-scale components is in terms of responsibilities, roles, and collaborations. This is part of a larger approach called responsibility-driven design or RDD.
o Use case text o Supplementary Specification o System sequence diagrams o Glossary o Operation contracts
General Responsibility Assignment Software Patterns or Principles are :