Software analysis patterns or analysis patterns in software engineering are conceptual models, which capture an abstraction of a situation that can often be encountered in modelling. An analysis pattern can be represented as "a group of related, generic objects (meta-classes) with stereotypical attributes (data definitions), behaviors (method signatures), and expected interactions defined in a domain-neutral manner."
Martin Fowler defines a pattern as an "idea that has been useful in one practical context and will probably be useful in others". He further on explains the analysis pattern, which is a pattern "that reflects conceptual structures of business processes rather than actual software implementations". An example:
Martin Fowler describes this pattern as one that "captures the memory of something interesting which affects the domain".
While doing Analysis we are trying to understand the problem. Fowler does not detail in his book a formal way to write or to describe analysis patterns. Suggestions have been raised since to have a consistent and uniform format for describing them. Most of them are based on the work from Erich Gamma, Frank Buschmann and Christopher Alexander on patterns (in architecture or computer science). One of them, proposed by Hahsler, has the following structure: