Software patterns have revolutionized the way developers think about how software is designed, built, and documented. This book offers a look of what patterns are, what they are not, and how to use them successfully. It attempts to develop a comprehensive language that integrates patterns from key literature. It is for developers and programmers.