Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Specification language
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{Short description|Formal language used in computer science}} {{Refimprove|date=August 2016}} 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.<ref>[[Joseph Goguen]] "One, None, A Hundred Thousand Specification Languages" Invited Paper, [[IFIP]] Congress 1986 pp 995-1004</ref> ==Overview== 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 [[algebra]]ic or [[model theory|model-theoretic]] structures that include a collection of [[set (mathematics)|sets]] of data values together with [[function (mathematics)|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 [[Common Algebraic Specification Language|CASL]]), specifications of programs consist mainly of logical [[axiom]]s, 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-based specification|model-oriented specification]] in frameworks like [[Vienna Development Method|VDM]] and [[Z notation|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 pipeline]]s, 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 [[Mathematical proof|proof]]s of [[program correctness]] (''see [[Automated theorem prover|theorem prover]]''). ==Languages== {{main article|:Category:Formal specification languages}} {{div col|content= *[[ANSI/ISO C Specification Language|ACSL]] *[[Attempto Controlled English]]<ref>{{cite book |last1=Fuchs |first1=Norbert E. |first2=Uta |last2=Schwertel |first3=Rolf |last3=Schwitter |chapter=Attempto Controlled English—not just another logic specification language |chapter-url=ftp://nozdr.ru/biblio/kolxo3/Cs/CsLn/Logic%20Programming%20Synthesis%20and%20Transformation,%208%20conf.,%20LOPSTR'98(LNCS1559,%20Springer,%201990)(ISBN%203540657657)(340s).pdf#page=10 |title=International Workshop on Logic Programming Synthesis and Transformation |publisher=Springer |series=Lecture Notes in Computer Science |volume=1559 |year=1998 |isbn=978-3-540-65765-1 |pages=1–20 |doi=10.1007/3-540-48958-4_1}}</ref> *[[Common Algebraic Specification Language|CASL]] *[[Vienna Development Method|VDM]] *[[Z notation]] *[[TLA+]] *FizzBee (Python'ish design specification language)<ref>{{cite web |url=https://fizzbee.io/ |title=Easiest-ever formal methods language for developers crafting distributed systems, microservices, and cloud applications |accessdate=May 28, 2024}}</ref> *[[Lepus3|LePUS3]] (a visual, object-oriented design description language) *[[Perfect Developer|Perfect]] *[[Alloy (specification language)|Alloy]] *[[Language Of Temporal Ordering Specification|LOTOS]] *[[E-LOTOS]] *[[MML (programming language)|MML]] *Refine Language<ref>{{cite book|last=Linden|first=Theodore|author2=Lawrence Markosian|chapter=Transformational Synthesis Using Refine |editor-first=Mark |editor-last=Richer |title=AI Tools and Techniques|date=1989|publisher=Ablex|isbn=0-89391-494-0|pages=261–286|chapter-url=https://books.google.com/books?id=iMUfTzVuasUC&q=Simkit+Intellicorp&pg=PA245|access-date=6 July 2014}}</ref> *[[SequenceL]] *[[Symbolic Model Verification|SMV]] *[[Specification and Design Language|SDL]] *[[B-Method]] }} ==See also== *[[Formal specification]] *[[Language-independent specification]] *[[Pseudocode]] *[[Specification and Description Language]] *[[Unified Modeling Language]] ==References== {{Reflist}} ==External links== *{{Commonscatinline|Specification languages}} {{Computer language}} [[Category:Specification languages| ]] [[Category:Computer languages]] [[Category:Scientific modelling]] [[Category:Formal specification]]
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:Commonscatinline
(
edit
)
Template:Computer language
(
edit
)
Template:Div col
(
edit
)
Template:Main article
(
edit
)
Template:Refimprove
(
edit
)
Template:Reflist
(
edit
)
Template:Short description
(
edit
)