Jump to content
Main menu
Main menu
move to sidebar
hide
Navigation
Main page
Recent changes
Random page
Help about MediaWiki
Special pages
Niidae Wiki
Search
Search
Appearance
Create account
Log in
Personal tools
Create account
Log in
Pages for logged out editors
learn more
Contributions
Talk
Editing
Specification language
Page
Discussion
English
Read
Edit
View history
Tools
Tools
move to sidebar
hide
Actions
Read
Edit
View history
General
What links here
Related changes
Page information
Appearance
move to sidebar
hide
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]]
Summary:
Please note that all contributions to Niidae Wiki may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
Encyclopedia:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Templates used on this page:
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
)
Search
Search
Editing
Specification language
Add topic