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
Formal methods
(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!
==In software development== In [[software development]], formal methods are mathematical approaches to solving software (and hardware) problems at the requirements, specification, and design levels. Formal methods are most likely to be applied to safety-critical or security-critical software and systems, such as [[avionics software]]. Software safety assurance standards, such as [[DO-178C]] allows the usage of formal methods through supplementation, and [[Common Criteria]] mandates formal methods at the highest levels of categorization. For sequential software, examples of formal methods include the [[B-Method]], the specification languages used in [[automated theorem proving]], [[Rigorous Approach to Industrial Software Engineering|RAISE]], and the [[Z notation]]. In [[functional programming]], [[QuickCheck|property-based testing]] has allowed the mathematical specification and testing (if not exhaustive testing) of the expected behaviour of individual functions. The [[Object Constraint Language]] (and specializations such as [[Java Modeling Language]]) has allowed object-oriented systems to be formally specified, if not necessarily formally verified. For concurrent software and systems, [[Petri net]]s, [[process algebra]], and [[finite-state machine]]s (which are based on [[automata theory]]; see also [[virtual finite state machine]] or [[event driven finite state machine]]) allow executable software specification and can be used to build up and validate application behaviour. Another approach to formal methods in software development is to write a specification in some form of logic—usually a variation of [[first-order logic]]—and then to directly execute the logic as though it were a program. The [[Web Ontology Language|OWL]] language, based on [[description logic]], is an example. There is also work on mapping some version of English (or another natural language) automatically to and from logic, as well as executing the logic directly. Examples are [[Attempto Controlled English]], and Internet Business Logic, which do not seek to control the vocabulary or syntax. A feature of systems that support bidirectional English–logic mapping and direct execution of the logic is that they can be made to explain their results, in English, at the business or scientific level.{{citation needed|date=June 2016}}
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)