an established general solution to a commonly occurring software development problem
a written document that describes a general solution to a design problem that recurs repeatedly in many projects
serve as a tool to communicate ideas, solutions, and knowledge about commonly recurring design problems.