Patterns capture the static and dynamic aspects of successful solutions to problems that arise when building software systems. A complete pattern language guides analysts, designers, and programmers to produce workable software that solves common organizational and development problems. Mature engineering disciplines have handbooks that describe successful solutions to known problems. Automobile designers don't design cars using the laws of physics, they adapt adequate solutions from the handbook known to work well enough. The extra few percent of performance available by starting from scratch typically isn't worth the cost.
Patterns can form the basis for the handbook of software engineering.
If software is to become an engineering discipline, successful practices must be systematically documented and widely disseminated. Patterns are important tools for documenting successful practices and improving software quality by addressing fundamental challenges in software system development. Challenges addressed by design patterns include communication of architectural knowledge among developers, accommodating a new design paradigm or architectural style, and avoiding development traps and pitfalls that have traditionally been learned only by experience. We are soliciting papers of a practical nature. Click here to learn more about design patterns.