Software patterns have been used for a decade or more to describe solutions to design and architecture problems. This paper illustrates the value of using software patterns to describe and generate specific architectures and discusses the objectives and techniques of documenting architectures using these patterns. It defines the specialized system of software patterns called a pattern language and presents example patterns and an example pattern language. Finally, it introduces a set of software patterns that represents service architectures, including service architectures for offering advanced services. © 2004 Lucent Technologies Inc.