# 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.

### Agile software development

**Agileagile developmentAgile Manifesto**

### Separation of concerns

**separateSeparationcompletely separate**

### 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).

### Larch family

**LarchLarch Shared Language**