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
(section)
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!
==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]]'').
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)