Specification language

Short description: Formal language used in computer science

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]

## Contents

* 1 Overview
* 2 Languages
* 3 See also
* 4 References
* 5 External links

## Overview

Specification languages are generally not directly executed. They are meant to describe the what, not the how.[2] 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 the Z notation, 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.[citation needed]

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

## Languages

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

## See also

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

## References

1. ↑ Joseph Goguen, "One, None, A Hundred Thousand Specification Languages" Invited Paper, IFIP Congress 1986, pp. 995–1004.
2. ↑ Hayes, I.J.; Jones, C.B. (November 1989). "Specifications are not (necessarily) executable". Software Engineering Journal 4 (6). doi:10.1049/sej.1989.0045. https://www.researchgate.net/publication/2632227.
3. ↑ Fuchs, Norbert E.; Schwertel, Uta; Schwitter, Rolf (1998). "Attempto Controlled English—not just another logic specification language". International Workshop on Logic Programming Synthesis and Transformation. Lecture Notes in Computer Science. 1559. Springer. pp. 1–20. doi:10.1007/3-540-48958-4_1. ISBN 978-3-540-65765-1. ftp://nozdr.ru/biblio/kolxo3/Cs/CsLn/Logic Programming Synthesis and Transformation, 8 conf., LOPSTR'98(LNCS1559, Springer, 1990)(ISBN 3540657657)(340s).pdf#page=10.
4. ↑ "Easiest-ever formal methods language for developers crafting distributed systems, microservices, and cloud applications". https://fizzbee.io/. Retrieved May 28, 2024.
5. ↑ Linden, Theodore; Lawrence Markosian (1989). "Transformational Synthesis Using Refine". in Richer, Mark. AI Tools and Techniques. Ablex. pp. 261–286. ISBN 0-89391-494-0. https://books.google.com/books?id=iMUfTzVuasUC&q=Simkit+Intellicorp&pg=PA245. Retrieved 6 July 2014.

## External links

* v
* t
* e

Types of сomputer 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

0.00

(0 votes)

Original source: https://en.wikipedia.org/wiki/Specification language. Read more

|

Retrieved from "https://handwiki.org/wiki/index.php?title=Specification_language&oldid=4568593"
*[v]: View this template
*[t]: Discuss this template
*[e]: Edit this template