Understanding pattern-oriented software architecture (POSA) begins with understanding the two concepts that it comprises: software architecture and software patterns.

  • Software architecture: Software architecture can mean different things, depending on your role. Developers think that it means the structure of the system being built. Testers think that it's the shape of what they need to test. For everyone, it's the high-level structure of the solution to a problem that the customer or client wants solved.

  • Software pattern: A software pattern is a solution to a software design or coding problem that has been useful at least three times. The recurrence shows that the pattern is a common solution that works over and over again. Patterns don't solve your problem for you, but they help you understand how to solve it. They explain the steps that you need to follow and explain the trade-offs you must balance to achieve a solution.

Putting these two concepts together, you get the high-level structure of a solution to a customer's or client's problem that is based on proven ideas. When you use the appropriate pattern to structure your solution, you can be confident that the basic structures of the architecture are sound, because they've been used before.