Software analysis pattern

Last updated

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." [1]

Contents

Overview

Martin Fowler defines a pattern as an "idea that has been useful in one practical context and will probably be useful in others". [2] 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:

Figure 1: Event analysis pattern Event-analysis-pattern.svg
Figure 1: Event analysis pattern

Martin Fowler describes this pattern as one that "captures the memory of something interesting which affects the domain". [3]

Describing an analysis pattern

While doing Analysis we are trying to understand the problem. Fowler does not detail in his book [2] 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, [4] has the following structure:

See also

Related Research Articles

A design pattern is the re-usable form of a solution to a design problem. The idea was introduced by the architect Christopher Alexander and has been adapted for various other disciplines, particularly software engineering.

The facade pattern is a software-design pattern commonly used in object-oriented programming. Analogous to a facade in architecture, a facade is an object that serves as a front-facing interface masking more complex underlying or structural code. A facade can:

<span class="mw-page-title-main">Singleton pattern</span> Design pattern in object-oriented software development

In software engineering, the singleton pattern is a software design pattern that restricts the instantiation of a class to a singular instance. One of the well-known "Gang of Four" design patterns, which describe how to solve recurring problems in object-oriented software, the pattern is useful when exactly one object is needed to coordinate actions across a system.

In object-oriented programming, the iterator pattern is a design pattern in which an iterator is used to traverse a container and access the container's elements. The iterator pattern decouples algorithms from containers; in some cases, algorithms are necessarily container-specific and thus cannot be decoupled.

In computer programming, the interpreter pattern is a design pattern that specifies how to evaluate sentences in a language. The basic idea is to have a class for each symbol in a specialized computer language. The syntax tree of a sentence in the language is an instance of the composite pattern and is used to evaluate (interpret) the sentence for a client. See also Composite pattern.

The state pattern is a behavioral software design pattern that allows an object to alter its behavior when its internal state changes. This pattern is close to the concept of finite-state machines. The state pattern can be interpreted as a strategy pattern, which is able to switch a strategy through invocations of methods defined in the pattern's interface.

In computer programming, the strategy pattern is a behavioral software design pattern that enables selecting an algorithm at runtime. Instead of implementing a single algorithm directly, code receives run-time instructions as to which in a family of algorithms to use.

In software engineering, a software design pattern is a general, reusable solution to a commonly occurring problem within a given context in software design. It is not a finished design that can be transformed directly into source or machine code. Rather, it is a description or template for how to solve a problem that can be used in many different situations. Design patterns are formalized best practices that the programmer can use to solve common problems when designing an application or system.

Software design is the process by which an agent creates a specification of a software artifact intended to accomplish goals, using a set of primitive components and subject to constraints. The term is sometimes used broadly to refer to "all the activity involved in conceptualizing, framing, implementing, commissioning, and ultimately modifying" the software, or more specifically "the activity following requirements specification and before programming, as ... [in] a stylized software engineering process."

In software and systems engineering, the phrase use case is a polyseme with two senses:

  1. A usage scenario for a piece of software; often used in the plural to suggest situations where a piece of software may be useful.
  2. A potential scenario in which a system receives an external request and responds to it.

In computer programming, a software framework is an abstraction in which software, providing generic functionality, can be selectively changed by additional user-written code, thus providing application-specific software. It provides a standard way to build and deploy applications and is a universal, reusable software environment that provides particular functionality as part of a larger software platform to facilitate the development of software applications, products and solutions.

Object-oriented analysis and design (OOAD) is a technical approach for analyzing and designing an application, system, or business by applying object-oriented programming, as well as using visual modeling throughout the software development process to guide stakeholder communication and product quality.

William F. "Bill" Opdyke is an American computer scientist and enterprise architect at JPMorgan Chase, known for his early work on code refactoring.

Domain engineering, is the entire process of reusing domain knowledge in the production of new software systems. It is a key concept in systematic software reuse and product line engineering. A key idea in systematic software reuse is the domain. Most organizations work in only a few domains. They repeatedly build similar systems within a given domain with variations to meet different customer needs. Rather than building each new system variant from scratch, significant savings may be achieved by reusing portions of previous systems in the domain to build new ones.

An architectural pattern is a general, reusable resolution to a commonly occurring problem in software architecture within a given context. The architectural patterns address various issues in software engineering, such as computer hardware performance limitations, high availability and minimization of a business risk. Some architectural patterns have been implemented within software frameworks.

Object-oriented design (OOD) is the process of planning a system of interacting objects for the purpose of solving a software problem. It is one approach to software design.

Problem analysis or the problem frames approach is an approach to software requirements analysis. It was developed by British software consultant Michael A. Jackson in the 1990s.

Object-Oriented Programming (OOP) is a programming paradigm based on the concept of "objects", which can contain data and code. The data is in the form of fields, and the code is in the form of procedures.

Component-oriented database (CODB) is a way of data administration and programming DBMS's using the paradigm of the component-orientation.

In computer programming, design smells are "structures in the design that indicate violation of fundamental design principles and negatively impact design quality". The origin of the term "design smell" can be traced to the term "code smell" which was featured in the book Refactoring: Improving the Design of Existing Code by Martin Fowler.

References

  1. Purao, Sandeep; Storey, Veda C.; Han, Taedong (September 2003). "Improving Analysis Pattern Reuse" (PDF). Information Systems Research. 14 (3): 169–290. ISSN   1526-5536. Archived from the original (PDF) on 2006-09-08. Retrieved 2007-01-31.
  2. 1 2 Fowler, Martin (1996-11-27). Analysis Patterns: Reusable Object Models. Addison-Wesley. ISBN   0-201-89542-0. A pattern is an idea that has been useful in one practical context and will probably be useful in others.
  3. Fowler, Martin. "Accounting Patterns" (PDF). Analysis Pattern. Retrieved 2007-01-31.
  4. 1 2 Hahsler, Michael; Geyer-Schulz, Andreas (November 2001). "Software Engineering with Analysis Patterns". CiteSeerX   10.1.1.70.8415 . Retrieved August 26, 2023.
  5. Gamma, Erich; Richard Helm; Ralph Johnson; John Vlissides (1995). Design Patterns: Elements of Reusable Object-Oriented Software. hardcover, 395 pages. Addison-Wesley. ISBN   0-201-63361-2.
  6. Alexander, Christopher (1979). The Timeless Way of Building, volume 1 of Center for Environmental Structure Series. New York: Oxford University Press. ISBN   0-19-502402-8.

Further reading