Software Analysis Pattern
   HOME

TheInfoList



OR:

Software analysis patterns or analysis patterns in
software engineering Software engineering is a systematic engineering approach to software development. A software engineer is a person who applies the principles of software engineering to design, develop, maintain, test, and evaluate computer software. The term '' ...
are
conceptual models Conceptual may refer to: Philosophy and Humanities *Concept *Conceptualism * Philosophical analysis (Conceptual analysis) *Theoretical definition (Conceptual definition) *Thinking about Consciousness (Conceptual dualism) *Pragmatism (Conceptual p ...
, 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."


Overview

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 A business process, business method or business function is a collection of related, structured activities or tasks by people or equipment in which a specific sequence produces a service or product (serves a particular business goal) for a parti ...
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".


Describing an analysis pattern

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 Christopher Wolfgang John Alexander (4 October 1936 – 17 March 2022) was an Austrian-born British-American architect and design theorist. He was an emeritus professor at the University of California, Berkeley. His theories about the nature o ...
on patterns (in architecture or computer science). One of them, proposed by Hahsler, has the following structure: * Pattern name: a pattern name should really reflect the meaning of what it is abstracting. It should be simple so that one can refer to it during analysis. * Intent: the intent aims to describe the goal the pattern is trying to achieve. It should also describe the problem it tries to solve. * Motivation: "A scenario that illustrates the problem and how the analysis pattern contributes to the solution in the concrete scenario" * Forces and context: "Discussion of forces and tensions which should be resolved by the analysis pattern" * Solution: "Description of solution and of the balance of forces achieved by the analysis pattern in the scenario in the motivation section. Includes all relevant structural and behavioural aspects of the analysis pattern." * Consequences: this should emphasise how the goal is achieved by the analysis pattern with its limitation. * Design: Suggestions of design implementations of this pattern. * Known uses: Real-world examples of this pattern usage.


See also

* Design pattern (computer science) * Object-oriented analysis and design * Problem frames approach is another approach to software requirements analysis. * Role class model an example of analysis pattern applied to the role concept. * Requirements analysis


References


Further reading

* This paper on pattern language for analysis pattern was presented at PLoP 2002. * {{cite book , first = Frank , last = Buschmann , author2=Regine Meunier , author3=Hans Rohnert , author4=Peter Sommerlad , author5=Michael Stal , year = 1996 , title = Pattern-oriented Software Architecture, Volume 1: A System of Patterns , publisher = John Wiley & Sons , isbn = 0-471-95869-7 Software analysis patterns Software architecture Unified Modeling Language