Software analysis pattern

Software analysis pattern

Software analysis patterns or "simply 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" say Purao, Storey and Hancite journal | last = Purao | first = Sandeep | coauthors = Storey, Veda C., and Han, Taedong | title = Improving Analysis Pattern Reuse | publisher = Information Systems Research, Vol. 14, No. 3 | pages = pp. 169–290 | year = 2003 | month = September | url = http://purao.ist.psu.edu/journal-papers/ISR-Purao-Storey-Han-2003.pdf | format = PDF | accessdate = 2007-01-31 | id = ISSN: 1526-5536 ] .

Overview

Martin Fowler defines a pattern as an "idea that has been useful in one practical context and will probably be useful in others"cite book | last = Fowler | first = Martin | authorlink = Martin Fowler | title = Analysis Patterns: Reusable Object Models | publisher = Addison-Wesley | date = 1996-11-27 | isbn = 0201895420 | quote = A pattern is 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"cite web | last = Fowler | first = Martin | authorlink = Martin Fowler | title = Accounting Patterns | work = Analysis Pattern | url = http://www.martinfowler.com/apsupp/accounting.pdf | format = PDF | accessdate = 2007-01-31 ] .

Describing an Analysis Pattern

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 Hahslercite web | last = Hahsler| first = Michael | coauthors = Geyer-Schulz, Andreas | title = Software Engineering with Analysis Patterns | url = http://wwwai.wu-wien.ac.at/~hahsler/research/virlib_working2001/virlib/ | year = 2001 | month = November | accessdate = 2007-02-01 ] , 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"cite book | first = Erich | last = Gamma | authorlink = Erich Gamma | coauthors = Richard Helm, Ralph Johnson, and John Vlissides | year = 1995 | title = | others = hardcover, 395 pages | publisher = Addison-Wesley | id = ISBN 0-201-63361-2 ]
* Forces and context: "Discussion of forces and tensions which should be resolved by the analysis pattern"cite book | first = Christopher | last = Alexander | authorlink = Christopher Alexander | year = 1979 | title = The Timeless Way of Building, volume 1 of Center for Environmental Structure Series | location = New York | publisher = Oxford University Press | id = ISBN 0195024028 ]
* 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

* cite paper
author = Haitham, Hamza and Fayad, Mohamed E.
title = A Pattern Language for Building Stable Analysis Patterns
publisher = Computer Science and Engineering Dept., University of Nebraska-Lincoln
date = 2002
url = http://hillside.net/plop/plop2002/final/PLoP02-A%20Pattern%20Language%20for%20Building%20Stable%20Analysis%20Pattern.fnl.pdf
format = PDF
accessdate = 2007-01-31
This paper on pattern language for analysis pattern was presented at the PLoP 2002 ("Pattern Languages Of Programs" annual conference)
* cite book
first = Frank
last = Buschmann
coauthors = Regine Meunier, Hans Rohnert, Peter Sommerlad, and Michael Stal
year = 1996
title = Pattern-oriented Software Architecture, Volume 1: A System of Patterns
publisher = John Wiley & Sons
id = ISBN 0-471-95869-7

External links

* [http://www.cmcrossroads.com/bradapp/docs/patterns-intro.html Patterns and Software: Essential Concepts and Terminology]
* [http://www.martinfowler.com/articles.html#id2251582 A list of analysis pattern examples by Martin Fowler]


Wikimedia Foundation. 2010.

Игры ⚽ Поможем сделать НИР

Look at other dictionaries:

  • Software design pattern — In software engineering, a design pattern is a general reusable solution to a commonly occurring problem within a given context in software design. A design pattern is not a finished design that can be transformed directly into code. It is a… …   Wikipedia

  • Pattern playback — The Pattern playback [http://www.haskins.yale.edu/featured/patplay.html] [http://www.ling.su.se/staff/hartmut/kemplne.htm] is an early talking device that was built by Dr. Franklin S. Cooper and his colleagues, including John M. Borst and Caryl… …   Wikipedia

  • Software architecture — The software architecture of a program or computing system is the structure or structures of the system, which comprise software components, the externally visible properties of those components, and the relationships between them. The term also… …   Wikipedia

  • Pattern recognition — is a sub topic of machine learning. It is the act of taking in raw data and taking an action based on the category of the data .citation needed|date=September 2008 Most research in pattern recognition is about methods for supervised learning and… …   Wikipedia

  • Software design — is a process of problem solving and planning for a software solution. After the purpose and specifications of software are determined, software developers will design or employ designers to develop a plan for a solution. It includes low level… …   Wikipedia

  • Object-oriented analysis and design — (OOAD) is a software engineering approach that models a system as a group of interacting objects. Each object represents some entity of interest in the system being modeled, and is characterised by its class, its state (data elements), and its… …   Wikipedia

  • Software modernization — is the process of understanding and evolving existing software assets. [cite book| author=Object management Group| title=Why do we need standards for the modernization of existing systems| url= http://www.kdmanalytics.com/kdm/ADM… …   Wikipedia

  • Software quality — Contents 1 Motivation for Defining Software Quality 2 Definition 3 Alternative Approaches to Software Quality Defin …   Wikipedia

  • Analysis paralysis — The term analysis paralysis or paralysis of analysis refers to over analyzing (or over thinking) a situation, so that a decision or action is never taken, in effect paralyzing the outcome. A decision can be treated as over complicated, with too… …   Wikipedia

  • Software bug — To report a MediaWiki error on Wikipedia, see Wikipedia:Bug reports. A software bug is the common term used to describe an error, flaw, mistake, failure, or fault in a computer program or system that produces an incorrect or unexpected result, or …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”