A formal specification is a mathematical description of software or hardware that may be used to develop an implementation. It describes what the system should do, not (necessarily) how the system should do it. Given such a specification, it is possible to use formal verification techniques to demonstrate that a candidate system design is correct with respect to the specification. This has the advantage that incorrect candidate system designs can be revised before a major investment has been made in actually implementing the design. An alternative approach is to use provably correct refinement steps to transform a specification into a design, and ultimately into an actual implementation, that is correct by construction. Euclid, Greek mathematician, 3rd century BC, known today as the father of geometry; shown here in a detail of The School of Athens by Raphael. ...
Computer software (or simply software) refers to one or more computer programs and data held in the storage of a computer for some purpose. ...
Hardware is the general term that is used to describe physical artifacts of a technology. ...
In engineering and manufacturing, the term specification has the following meanings: Technical requirement A specification is a set of requirements. ...
In the context of hardware and software systems, formal verification is the act of proving or disproving the correctness of a system with respect to a certain formal specification or property, using formal methods of mathematics. ...
The word selectivity has more meanings: Selectivity, the ability to notice/distinguish small diferences. ...
It is important to note that a design (or implementation) cannot ever be declared “correct” in isolation, but only “correct with respect to a given specification”. Whether the formal specification correctly describes the problem to be solved is a separate issue. 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. However, it is possible to validate a specification by proving “challenge” theorems concerning properties that the specification is expected to exhibit. If correct, these theorems reinforce the specifiers understanding of the specification and its relationship with the underlying problem domain. If not, the specification probably needs to be changed to better reflect the domain understanding of those involved with producing (and implementing) the specification. The word validation has several related meanings: In general, validation is the process of checking if something satisfies a certain criterion. ...
A theorem is a proposition that has been or is to be proved on the basis of explicit assumptions. ...
The Z notation is an example of a leading formal specification language. Others include the VDM Specification Language (VDMSL) of the Vienna Development Method and the Abstract Machine Notation (AMN) of the BMethod. The Z notation (universally pronounced zed, named after ZermeloFrÃ¤nkel set theory) is a formal specification language used for describing and modelling computing systems. ...
A specification language is a formal language used in computer science. ...
To meet Wikipedias quality standards, this article or section may require cleanup. ...
Vienna Development Method (VDM) is a program development method based on formal specification using the VDM specification language (VDMSL), with tool support. ...
Abstract Machine Notation (AMN) is a programming language for specifying abstract machines in the BMethod, based on the mathematical theory of Generalised Substitutions. ...
B is a toolsupported formal method based around AMN (Abstract Machine Notation), used in the development of computer software. ...
See also
In computer science, formal methods refers to mathematically based techniques for the specification, development and verification of software and hardware systems. ...
Software Engineering (SE) is the design, development, and documentation of software by applying technologies and practices from computer science, project management, engineering, application domains, interface design, digital asset management and other fields. ...
A specification language is a formal language used in computer science. ...
External links  A Case for Formal Specification (Technology) by Coryoth 20050730
 Formal Specification
