Specification language

Formal language used in computer science

This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.
Find sources: "Specification language" – news · newspapers · books · scholar · JSTOR (August 2016) (Learn how and when to remove this message)

|

A specification language is a formal language in computer science used during systems analysis, requirements analysis, and systems design to describe a system at a much higher level than a programming language, which is used to produce the executable code for a system.[1]

## Overview

[edit]

Specification languages are generally not directly executed. They are meant to describe the what, not the how. It is considered an error if a requirement specification is cluttered with unnecessary implementation detail.

A common fundamental assumption of many specification approaches is that programs are modelled as algebraic or model-theoretic structures that include a collection of sets of data values together with functions over those sets. This level of abstraction coincides with the view that the correctness of the input/output behaviour of a program takes precedence over all its other properties.

In the property-oriented approach to specification (taken e.g. by CASL), specifications of programs consist mainly of logical axioms, usually in a logical system in which equality has a prominent role, describing the properties that the functions are required to satisfy—often just by their interrelationship. This is in contrast to so-called model-oriented specification in frameworks like VDM and Z, which consist of a simple realization of the required behaviour.

Specifications must be subject to a process of refinement (the filling-in of implementation detail) before they can actually be implemented. The result of such a refinement process is an executable algorithm, which is either formulated in a programming language, or in an executable subset of the specification language at hand. For example, Hartmann pipelines, when properly applied, may be considered a dataflow specification which is directly executable. Another example is the actor model which has no specific application content and must be specialized to be executable.

An important use of specification languages is enabling the creation of proofs of program correctness (see theorem prover).

## Languages

[edit]

Main page: Category:Formal specification languages

* ACSL
* Attempto Controlled English[2]
* CASL
* VDM
* Z notation
* TLA+
* FizzBee (Python'ish design specification language)[3]
* LePUS3 (a visual, object-oriented design description language)
* Perfect
* Alloy
* LOTOS
* E-LOTOS
* MML
* Refine Language[4]
* SequenceL
* SMV
* SDL
* B-Method

## See also

[edit]

* Formal specification
* Language-independent specification
* Pseudocode
* Specification and Description Language
* Unified Modeling Language

## References

[edit]

1. ^ Joseph Goguen "One, None, A Hundred Thousand Specification Languages" Invited Paper, IFIP Congress 1986 pp 995-1004
2. ^ Fuchs, Norbert E.; Schwertel, Uta; Schwitter, Rolf (1998). "Attempto Controlled English—not just another logic specification language" (PDF). International Workshop on Logic Programming Synthesis and Transformation. Lecture Notes in Computer Science. Vol. 1559\. Springer. pp. 1–20\. doi:10.1007/3-540-48958-4_1. ISBN 978-3-540-65765-1.
3. ^ "Easiest-ever formal methods language for developers crafting distributed systems, microservices, and cloud applications". Retrieved May 28, 2024.
4. ^ Linden, Theodore; Lawrence Markosian (1989). "Transformational Synthesis Using Refine". In Richer, Mark (ed.). AI Tools and Techniques. Ablex. pp. 261–286\. ISBN 0-89391-494-0. Retrieved 6 July 2014.

## External links

[edit]

* Media related to Specification languages at Wikimedia Commons

* v
* t
* e

Types of computer language

Types|

* Architecture description
* Data exchange
* Hardware description
* Knowledge representation
* Markup
* Modeling
* Programming language
* Query
* Shading
* Specification
* Stylesheet
* Transformation

See also|

* Category:Lists of computer languages
* Category:Lists of programming languages
* List of programming languages by type

*[v]: View this template
*[t]: Discuss this template
*[e]: Edit this template