Formal specification

specificationsoftware specificationspecificationsformalprogram specificationformal specificationsformalizationformally specifyingspecifying and verifying
In computer science, formal specifications are mathematically based techniques whose purpose are to help with the implementation of systems and software.wikipedia
120 Related Articles

Formal verification

program verificationverificationautomated verification
Given such a specification, it is possible to use formal verification techniques to demonstrate that a system design is correct with respect to its specification.
In the context of hardware and software systems, formal verification is the act of proving or disproving the correctness of intended algorithms underlying a system with respect to a certain formal specification or property, using formal methods of mathematics.

Correctness (computer science)

correctnessprogram correctnesscorrect
Given such a specification, it is possible to use formal verification techniques to demonstrate that a system design is correct with respect to its specification.
In theoretical computer science, correctness of an algorithm is asserted when it is said that the algorithm is correct with respect to a specification.

Refinement (computing)

refinementProgram refinementrefine
Another approach is to use probably correct refinement steps to transform a specification into a design, which is ultimately transformed into an implementation that is correct by construction.
In formal methods, program refinement is the verifiable transformation of an abstract (high-level) formal specification into a concrete (low-level) executable program.

Computer science

computer scientistcomputer sciencescomputer scientists
In computer science, formal specifications are mathematically based techniques whose purpose are to help with the implementation of systems and software.
Formal methods are a particular kind of mathematically based technique for the specification, development and verification of software and hardware systems.

Z notation

ZZ formal notationZ formal specification notation
The Z notation is an example of a leading formal specification language.
The Z notation is a formal specification language used for describing and modelling computing systems.

B-Method

BB methodEvent-B
Others include the Specification Language (VDM-SL) of the Vienna Development Method and the Abstract Machine Notation (AMN) of the B-Method.
It has robust, commercially available tool support for specification, design, proof and code generation.

TLA+

TLA + TLA+ specification language
TLA + (pronounced as tee ell a plus, ) is a formal specification language developed by Leslie Lamport.

Communicating sequential processes

CSPCommunicating Sequential Processes (CSP)channel
CSP has been practically applied in industry as a tool for specifying and verifying the concurrent aspects of a variety of different systems, such as the T9000 Transputer, as well as a secure ecommerce system.

Algebraic specification

constructorsspecifications
Algebraic specification, is a software engineering technique for formally specifying system behavior.

Formal methods

formal methodformalformal analysis
In computer science, specifically software engineering and hardware engineering, formal methods are a particular kind of mathematically based techniques for the specification, development and verification of software and hardware systems.

Model-based specification

model-oriented specificationprogram's specification
Model-based specification is an approach to formal specification where the system specification is expressed as a system state model.

Vienna Development Method

VDMVDM-SLVienna Definition Language
Others include the Specification Language (VDM-SL) of the Vienna Development Method and the Abstract Machine Notation (AMN) of the B-Method.

Specification language

specificationdescription languagesformal specification language
The Z notation is an example of a leading formal specification language.

Specification (technical standard)

specificationspecificationstechnical specifications
Given such a specification, it is possible to use formal verification techniques to demonstrate that a system design is correct with respect to its specification.
It can be informal, in which case it can be considered as a user manual from a developer point of view, or formal, in which case it has a definite meaning defined in mathematical or programmatic terms.

Implementation

implementedimplementimplementing
It is important to note that a formal specification is not an implementation, but rather it may be used to develop an implementation.

Problem domain

domainproblem spaceapplication domain
It is also a difficult issue to address, since it ultimately concerns the problem constructing abstracted formal representations of an informal concrete problem domain, and such an abstraction step is not amenable to formal proof.

Verification and validation

verificationvalidationverified
However, it is possible to validate a specification by proving “challenge” theorems concerning properties that the specification is expected to exhibit.

Theorem

theoremspropositionconverse
However, it is possible to validate a specification by proving “challenge” theorems concerning properties that the specification is expected to exhibit.

Divide-and-conquer algorithm

divide and conquer algorithmdivide and conquerdivide-and-conquer
They do so by applying a divide-and-conquer approach.

Web service

web servicesserviceservices
In the Web services area, formal specification is often used to describe non-functional properties (Web services Quality of Service).

Quality of service

QoSquality-of-serviceQuality of Service (QoS)
In the Web services area, formal specification is often used to describe non-functional properties (Web services Quality of Service).