CINXE.COM
Design by contract - Wikipedia
<!DOCTYPE html> <html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-sticky-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-feature-night-mode-enabled skin-theme-clientpref-day vector-toc-available" lang="en" dir="ltr"> <head> <meta charset="UTF-8"> <title>Design by contract - Wikipedia</title> <script>(function(){var className="client-js vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-sticky-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-feature-night-mode-enabled skin-theme-clientpref-day vector-toc-available";var cookie=document.cookie.match(/(?:^|; )enwikimwclientpreferences=([^;]+)/);if(cookie){cookie[1].split('%2C').forEach(function(pref){className=className.replace(new RegExp('(^| )'+pref.replace(/-clientpref-\w+$|[^\w-]+/g,'')+'-clientpref-\\w+( |$)'),'$1'+pref+'$2');});}document.documentElement.className=className;}());RLCONF={"wgBreakFrames":false,"wgSeparatorTransformTable":["",""],"wgDigitTransformTable":["",""],"wgDefaultDateFormat":"dmy", "wgMonthNames":["","January","February","March","April","May","June","July","August","September","October","November","December"],"wgRequestId":"5843b462-2671-47da-9247-6afa3f46dbb7","wgCanonicalNamespace":"","wgCanonicalSpecialPageName":false,"wgNamespaceNumber":0,"wgPageName":"Design_by_contract","wgTitle":"Design by contract","wgCurRevisionId":1258581473,"wgRevisionId":1258581473,"wgArticleId":39289,"wgIsArticle":true,"wgIsRedirect":false,"wgAction":"view","wgUserName":null,"wgUserGroups":["*"],"wgCategories":["All articles with dead external links","Articles with dead external links from February 2024","Articles with short description","Short description is different from Wikidata","All articles with unsourced statements","Articles with unsourced statements from June 2019","Articles with unsourced statements from September 2012","Software design","Programming paradigms"],"wgPageViewLanguage":"en","wgPageContentLanguage":"en","wgPageContentModel":"wikitext","wgRelevantPageName": "Design_by_contract","wgRelevantArticleId":39289,"wgIsProbablyEditable":true,"wgRelevantPageIsProbablyEditable":true,"wgRestrictionEdit":[],"wgRestrictionMove":[],"wgNoticeProject":"wikipedia","wgCiteReferencePreviewsActive":false,"wgFlaggedRevsParams":{"tags":{"status":{"levels":1}}},"wgMediaViewerOnClick":true,"wgMediaViewerEnabledByDefault":true,"wgPopupsFlags":0,"wgVisualEditor":{"pageLanguageCode":"en","pageLanguageDir":"ltr","pageVariantFallbacks":"en"},"wgMFDisplayWikibaseDescriptions":{"search":true,"watchlist":true,"tagline":false,"nearby":true},"wgWMESchemaEditAttemptStepOversample":false,"wgWMEPageLength":20000,"wgRelatedArticlesCompat":[],"wgCentralAuthMobileDomain":false,"wgEditSubmitButtonLabelPublish":true,"wgULSPosition":"interlanguage","wgULSisCompactLinksEnabled":false,"wgVector2022LanguageInHeader":true,"wgULSisLanguageSelectorEmpty":false,"wgWikibaseItemId":"Q1200691","wgCheckUserClientHintsHeadersJsApi":["brands","architecture","bitness","fullVersionList","mobile", "model","platform","platformVersion"],"GEHomepageSuggestedEditsEnableTopics":true,"wgGETopicsMatchModeEnabled":false,"wgGEStructuredTaskRejectionReasonTextInputEnabled":false,"wgGELevelingUpEnabledForUser":false};RLSTATE={"ext.globalCssJs.user.styles":"ready","site.styles":"ready","user.styles":"ready","ext.globalCssJs.user":"ready","user":"ready","user.options":"loading","ext.cite.styles":"ready","skins.vector.search.codex.styles":"ready","skins.vector.styles":"ready","skins.vector.icons":"ready","jquery.makeCollapsible.styles":"ready","ext.wikimediamessages.styles":"ready","ext.visualEditor.desktopArticleTarget.noscript":"ready","ext.uls.interlanguage":"ready","wikibase.client.init":"ready","ext.wikimediaBadges":"ready"};RLPAGEMODULES=["ext.cite.ux-enhancements","mediawiki.page.media","site","mediawiki.page.ready","jquery.makeCollapsible","mediawiki.toc","skins.vector.js","ext.centralNotice.geoIP","ext.centralNotice.startUp","ext.gadget.ReferenceTooltips","ext.gadget.switcher", "ext.urlShortener.toolbar","ext.centralauth.centralautologin","mmv.bootstrap","ext.popups","ext.visualEditor.desktopArticleTarget.init","ext.visualEditor.targetLoader","ext.echo.centralauth","ext.eventLogging","ext.wikimediaEvents","ext.navigationTiming","ext.uls.interface","ext.cx.eventlogging.campaigns","ext.cx.uls.quick.actions","wikibase.client.vector-2022","ext.checkUser.clientHints","ext.growthExperiments.SuggestedEditSession","wikibase.sidebar.tracking"];</script> <script>(RLQ=window.RLQ||[]).push(function(){mw.loader.impl(function(){return["user.options@12s5i",function($,jQuery,require,module){mw.user.tokens.set({"patrolToken":"+\\","watchToken":"+\\","csrfToken":"+\\"}); }];});});</script> <link rel="stylesheet" href="/w/load.php?lang=en&modules=ext.cite.styles%7Cext.uls.interlanguage%7Cext.visualEditor.desktopArticleTarget.noscript%7Cext.wikimediaBadges%7Cext.wikimediamessages.styles%7Cjquery.makeCollapsible.styles%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles%7Cwikibase.client.init&only=styles&skin=vector-2022"> <script async="" src="/w/load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector-2022"></script> <meta name="ResourceLoaderDynamicStyles" content=""> <link rel="stylesheet" href="/w/load.php?lang=en&modules=site.styles&only=styles&skin=vector-2022"> <meta name="generator" content="MediaWiki 1.44.0-wmf.4"> <meta name="referrer" content="origin"> <meta name="referrer" content="origin-when-cross-origin"> <meta name="robots" content="max-image-preview:standard"> <meta name="format-detection" content="telephone=no"> <meta property="og:image" content="https://upload.wikimedia.org/wikipedia/commons/thumb/e/ea/Design_by_contract.svg/1200px-Design_by_contract.svg.png"> <meta property="og:image:width" content="1200"> <meta property="og:image:height" content="1177"> <meta property="og:image" content="https://upload.wikimedia.org/wikipedia/commons/thumb/e/ea/Design_by_contract.svg/800px-Design_by_contract.svg.png"> <meta property="og:image:width" content="800"> <meta property="og:image:height" content="784"> <meta property="og:image" content="https://upload.wikimedia.org/wikipedia/commons/thumb/e/ea/Design_by_contract.svg/640px-Design_by_contract.svg.png"> <meta property="og:image:width" content="640"> <meta property="og:image:height" content="628"> <meta name="viewport" content="width=1120"> <meta property="og:title" content="Design by contract - Wikipedia"> <meta property="og:type" content="website"> <link rel="preconnect" href="//upload.wikimedia.org"> <link rel="alternate" media="only screen and (max-width: 640px)" href="//en.m.wikipedia.org/wiki/Design_by_contract"> <link rel="alternate" type="application/x-wiki" title="Edit this page" href="/w/index.php?title=Design_by_contract&action=edit"> <link rel="apple-touch-icon" href="/static/apple-touch/wikipedia.png"> <link rel="icon" href="/static/favicon/wikipedia.ico"> <link rel="search" type="application/opensearchdescription+xml" href="/w/rest.php/v1/search" title="Wikipedia (en)"> <link rel="EditURI" type="application/rsd+xml" href="//en.wikipedia.org/w/api.php?action=rsd"> <link rel="canonical" href="https://en.wikipedia.org/wiki/Design_by_contract"> <link rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en"> <link rel="alternate" type="application/atom+xml" title="Wikipedia Atom feed" href="/w/index.php?title=Special:RecentChanges&feed=atom"> <link rel="dns-prefetch" href="//meta.wikimedia.org" /> <link rel="dns-prefetch" href="//login.wikimedia.org"> </head> <body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject mw-editable page-Design_by_contract rootpage-Design_by_contract skin-vector-2022 action-view"><a class="mw-jump-link" href="#bodyContent">Jump to content</a> <div class="vector-header-container"> <header class="vector-header mw-header"> <div class="vector-header-start"> <nav class="vector-main-menu-landmark" aria-label="Site"> <div id="vector-main-menu-dropdown" class="vector-dropdown vector-main-menu-dropdown vector-button-flush-left vector-button-flush-right" > <input type="checkbox" id="vector-main-menu-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-main-menu-dropdown" class="vector-dropdown-checkbox " aria-label="Main menu" > <label id="vector-main-menu-dropdown-label" for="vector-main-menu-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-menu mw-ui-icon-wikimedia-menu"></span> <span class="vector-dropdown-label-text">Main menu</span> </label> <div class="vector-dropdown-content"> <div id="vector-main-menu-unpinned-container" class="vector-unpinned-container"> <div id="vector-main-menu" class="vector-main-menu vector-pinnable-element"> <div class="vector-pinnable-header vector-main-menu-pinnable-header vector-pinnable-header-unpinned" data-feature-name="main-menu-pinned" data-pinnable-element-id="vector-main-menu" data-pinned-container-id="vector-main-menu-pinned-container" data-unpinned-container-id="vector-main-menu-unpinned-container" > <div class="vector-pinnable-header-label">Main menu</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-main-menu.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-main-menu.unpin">hide</button> </div> <div id="p-navigation" class="vector-menu mw-portlet mw-portlet-navigation" > <div class="vector-menu-heading"> Navigation </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-mainpage-description" class="mw-list-item"><a href="/wiki/Main_Page" title="Visit the main page [z]" accesskey="z"><span>Main page</span></a></li><li id="n-contents" class="mw-list-item"><a href="/wiki/Wikipedia:Contents" title="Guides to browsing Wikipedia"><span>Contents</span></a></li><li id="n-currentevents" class="mw-list-item"><a href="/wiki/Portal:Current_events" title="Articles related to current events"><span>Current events</span></a></li><li id="n-randompage" class="mw-list-item"><a href="/wiki/Special:Random" title="Visit a randomly selected article [x]" accesskey="x"><span>Random article</span></a></li><li id="n-aboutsite" class="mw-list-item"><a href="/wiki/Wikipedia:About" title="Learn about Wikipedia and how it works"><span>About Wikipedia</span></a></li><li id="n-contactpage" class="mw-list-item"><a href="//en.wikipedia.org/wiki/Wikipedia:Contact_us" title="How to contact Wikipedia"><span>Contact us</span></a></li> </ul> </div> </div> <div id="p-interaction" class="vector-menu mw-portlet mw-portlet-interaction" > <div class="vector-menu-heading"> Contribute </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-help" class="mw-list-item"><a href="/wiki/Help:Contents" title="Guidance on how to use and edit Wikipedia"><span>Help</span></a></li><li id="n-introduction" class="mw-list-item"><a href="/wiki/Help:Introduction" title="Learn how to edit Wikipedia"><span>Learn to edit</span></a></li><li id="n-portal" class="mw-list-item"><a href="/wiki/Wikipedia:Community_portal" title="The hub for editors"><span>Community portal</span></a></li><li id="n-recentchanges" class="mw-list-item"><a href="/wiki/Special:RecentChanges" title="A list of recent changes to Wikipedia [r]" accesskey="r"><span>Recent changes</span></a></li><li id="n-upload" class="mw-list-item"><a href="/wiki/Wikipedia:File_upload_wizard" title="Add images or other media for use on Wikipedia"><span>Upload file</span></a></li> </ul> </div> </div> </div> </div> </div> </div> </nav> <a href="/wiki/Main_Page" class="mw-logo"> <img class="mw-logo-icon" src="/static/images/icons/wikipedia.png" alt="" aria-hidden="true" height="50" width="50"> <span class="mw-logo-container skin-invert"> <img class="mw-logo-wordmark" alt="Wikipedia" src="/static/images/mobile/copyright/wikipedia-wordmark-en.svg" style="width: 7.5em; height: 1.125em;"> <img class="mw-logo-tagline" alt="The Free Encyclopedia" src="/static/images/mobile/copyright/wikipedia-tagline-en.svg" width="117" height="13" style="width: 7.3125em; height: 0.8125em;"> </span> </a> </div> <div class="vector-header-end"> <div id="p-search" role="search" class="vector-search-box-vue vector-search-box-collapses vector-search-box-show-thumbnail vector-search-box-auto-expand-width vector-search-box"> <a href="/wiki/Special:Search" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only search-toggle" title="Search Wikipedia [f]" accesskey="f"><span class="vector-icon mw-ui-icon-search mw-ui-icon-wikimedia-search"></span> <span>Search</span> </a> <div class="vector-typeahead-search-container"> <div class="cdx-typeahead-search cdx-typeahead-search--show-thumbnail cdx-typeahead-search--auto-expand-width"> <form action="/w/index.php" id="searchform" class="cdx-search-input cdx-search-input--has-end-button"> <div id="simpleSearch" class="cdx-search-input__input-wrapper" data-search-loc="header-moved"> <div class="cdx-text-input cdx-text-input--has-start-icon"> <input class="cdx-text-input__input" type="search" name="search" placeholder="Search Wikipedia" aria-label="Search Wikipedia" autocapitalize="sentences" title="Search Wikipedia [f]" accesskey="f" id="searchInput" > <span class="cdx-text-input__icon cdx-text-input__start-icon"></span> </div> <input type="hidden" name="title" value="Special:Search"> </div> <button class="cdx-button cdx-search-input__end-button">Search</button> </form> </div> </div> </div> <nav class="vector-user-links vector-user-links-wide" aria-label="Personal tools"> <div class="vector-user-links-main"> <div id="p-vector-user-menu-preferences" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <div id="p-vector-user-menu-userpage" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <nav class="vector-appearance-landmark" aria-label="Appearance"> <div id="vector-appearance-dropdown" class="vector-dropdown " title="Change the appearance of the page's font size, width, and color" > <input type="checkbox" id="vector-appearance-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-appearance-dropdown" class="vector-dropdown-checkbox " aria-label="Appearance" > <label id="vector-appearance-dropdown-label" for="vector-appearance-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-appearance mw-ui-icon-wikimedia-appearance"></span> <span class="vector-dropdown-label-text">Appearance</span> </label> <div class="vector-dropdown-content"> <div id="vector-appearance-unpinned-container" class="vector-unpinned-container"> </div> </div> </div> </nav> <div id="p-vector-user-menu-notifications" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <div id="p-vector-user-menu-overflow" class="vector-menu mw-portlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-sitesupport-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="https://donate.wikimedia.org/wiki/Special:FundraiserRedirector?utm_source=donate&utm_medium=sidebar&utm_campaign=C13_en.wikipedia.org&uselang=en" class=""><span>Donate</span></a> </li> <li id="pt-createaccount-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="/w/index.php?title=Special:CreateAccount&returnto=Design+by+contract" title="You are encouraged to create an account and log in; however, it is not mandatory" class=""><span>Create account</span></a> </li> <li id="pt-login-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="/w/index.php?title=Special:UserLogin&returnto=Design+by+contract" title="You're encouraged to log in; however, it's not mandatory. [o]" accesskey="o" class=""><span>Log in</span></a> </li> </ul> </div> </div> </div> <div id="vector-user-links-dropdown" class="vector-dropdown vector-user-menu vector-button-flush-right vector-user-menu-logged-out" title="Log in and more options" > <input type="checkbox" id="vector-user-links-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-user-links-dropdown" class="vector-dropdown-checkbox " aria-label="Personal tools" > <label id="vector-user-links-dropdown-label" for="vector-user-links-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-ellipsis mw-ui-icon-wikimedia-ellipsis"></span> <span class="vector-dropdown-label-text">Personal tools</span> </label> <div class="vector-dropdown-content"> <div id="p-personal" class="vector-menu mw-portlet mw-portlet-personal user-links-collapsible-item" title="User menu" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-sitesupport" class="user-links-collapsible-item mw-list-item"><a href="https://donate.wikimedia.org/wiki/Special:FundraiserRedirector?utm_source=donate&utm_medium=sidebar&utm_campaign=C13_en.wikipedia.org&uselang=en"><span>Donate</span></a></li><li id="pt-createaccount" class="user-links-collapsible-item mw-list-item"><a href="/w/index.php?title=Special:CreateAccount&returnto=Design+by+contract" title="You are encouraged to create an account and log in; however, it is not mandatory"><span class="vector-icon mw-ui-icon-userAdd mw-ui-icon-wikimedia-userAdd"></span> <span>Create account</span></a></li><li id="pt-login" class="user-links-collapsible-item mw-list-item"><a href="/w/index.php?title=Special:UserLogin&returnto=Design+by+contract" title="You're encouraged to log in; however, it's not mandatory. [o]" accesskey="o"><span class="vector-icon mw-ui-icon-logIn mw-ui-icon-wikimedia-logIn"></span> <span>Log in</span></a></li> </ul> </div> </div> <div id="p-user-menu-anon-editor" class="vector-menu mw-portlet mw-portlet-user-menu-anon-editor" > <div class="vector-menu-heading"> Pages for logged out editors <a href="/wiki/Help:Introduction" aria-label="Learn more about editing"><span>learn more</span></a> </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-anoncontribs" class="mw-list-item"><a href="/wiki/Special:MyContributions" title="A list of edits made from this IP address [y]" accesskey="y"><span>Contributions</span></a></li><li id="pt-anontalk" class="mw-list-item"><a href="/wiki/Special:MyTalk" title="Discussion about edits from this IP address [n]" accesskey="n"><span>Talk</span></a></li> </ul> </div> </div> </div> </div> </nav> </div> </header> </div> <div class="mw-page-container"> <div class="mw-page-container-inner"> <div class="vector-sitenotice-container"> <div id="siteNotice"><!-- CentralNotice --></div> </div> <div class="vector-column-start"> <div class="vector-main-menu-container"> <div id="mw-navigation"> <nav id="mw-panel" class="vector-main-menu-landmark" aria-label="Site"> <div id="vector-main-menu-pinned-container" class="vector-pinned-container"> </div> </nav> </div> </div> <div class="vector-sticky-pinned-container"> <nav id="mw-panel-toc" aria-label="Contents" data-event-name="ui.sidebar-toc" class="mw-table-of-contents-container vector-toc-landmark"> <div id="vector-toc-pinned-container" class="vector-pinned-container"> <div id="vector-toc" class="vector-toc vector-pinnable-element"> <div class="vector-pinnable-header vector-toc-pinnable-header vector-pinnable-header-pinned" data-feature-name="toc-pinned" data-pinnable-element-id="vector-toc" > <h2 class="vector-pinnable-header-label">Contents</h2> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-toc.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-toc.unpin">hide</button> </div> <ul class="vector-toc-contents" id="mw-panel-toc-list"> <li id="toc-mw-content-text" class="vector-toc-list-item vector-toc-level-1"> <a href="#" class="vector-toc-link"> <div class="vector-toc-text">(Top)</div> </a> </li> <li id="toc-History" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#History"> <div class="vector-toc-text"> <span class="vector-toc-numb">1</span> <span>History</span> </div> </a> <ul id="toc-History-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Description" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Description"> <div class="vector-toc-text"> <span class="vector-toc-numb">2</span> <span>Description</span> </div> </a> <ul id="toc-Description-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Performance_implications" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Performance_implications"> <div class="vector-toc-text"> <span class="vector-toc-numb">3</span> <span>Performance implications</span> </div> </a> <ul id="toc-Performance_implications-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Relationship_to_software_testing" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Relationship_to_software_testing"> <div class="vector-toc-text"> <span class="vector-toc-numb">4</span> <span>Relationship to software testing</span> </div> </a> <ul id="toc-Relationship_to_software_testing-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Language_support" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Language_support"> <div class="vector-toc-text"> <span class="vector-toc-numb">5</span> <span>Language support</span> </div> </a> <button aria-controls="toc-Language_support-sublist" class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-toc-toggle"> <span class="vector-icon mw-ui-icon-wikimedia-expand"></span> <span>Toggle Language support subsection</span> </button> <ul id="toc-Language_support-sublist" class="vector-toc-list"> <li id="toc-Languages_with_native_support" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Languages_with_native_support"> <div class="vector-toc-text"> <span class="vector-toc-numb">5.1</span> <span>Languages with native support</span> </div> </a> <ul id="toc-Languages_with_native_support-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-See_also" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#See_also"> <div class="vector-toc-text"> <span class="vector-toc-numb">6</span> <span>See also</span> </div> </a> <ul id="toc-See_also-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Notes" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Notes"> <div class="vector-toc-text"> <span class="vector-toc-numb">7</span> <span>Notes</span> </div> </a> <ul id="toc-Notes-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Bibliography" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Bibliography"> <div class="vector-toc-text"> <span class="vector-toc-numb">8</span> <span>Bibliography</span> </div> </a> <ul id="toc-Bibliography-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-External_links" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#External_links"> <div class="vector-toc-text"> <span class="vector-toc-numb">9</span> <span>External links</span> </div> </a> <ul id="toc-External_links-sublist" class="vector-toc-list"> </ul> </li> </ul> </div> </div> </nav> </div> </div> <div class="mw-content-container"> <main id="content" class="mw-body"> <header class="mw-body-header vector-page-titlebar"> <nav aria-label="Contents" class="vector-toc-landmark"> <div id="vector-page-titlebar-toc" class="vector-dropdown vector-page-titlebar-toc vector-button-flush-left" > <input type="checkbox" id="vector-page-titlebar-toc-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-page-titlebar-toc" class="vector-dropdown-checkbox " aria-label="Toggle the table of contents" > <label id="vector-page-titlebar-toc-label" for="vector-page-titlebar-toc-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-listBullet mw-ui-icon-wikimedia-listBullet"></span> <span class="vector-dropdown-label-text">Toggle the table of contents</span> </label> <div class="vector-dropdown-content"> <div id="vector-page-titlebar-toc-unpinned-container" class="vector-unpinned-container"> </div> </div> </div> </nav> <h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">Design by contract</span></h1> <div id="p-lang-btn" class="vector-dropdown mw-portlet mw-portlet-lang" > <input type="checkbox" id="p-lang-btn-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-p-lang-btn" class="vector-dropdown-checkbox mw-interlanguage-selector" aria-label="Go to an article in another language. Available in 19 languages" > <label id="p-lang-btn-label" for="p-lang-btn-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--action-progressive mw-portlet-lang-heading-19" aria-hidden="true" ><span class="vector-icon mw-ui-icon-language-progressive mw-ui-icon-wikimedia-language-progressive"></span> <span class="vector-dropdown-label-text">19 languages</span> </label> <div class="vector-dropdown-content"> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li class="interlanguage-link interwiki-ar mw-list-item"><a href="https://ar.wikipedia.org/wiki/%D8%AA%D8%B5%D9%85%D9%8A%D9%85_%D8%A8%D8%A7%D9%84%D8%B9%D9%82%D9%88%D8%AF" title="تصميم بالعقود – Arabic" lang="ar" hreflang="ar" data-title="تصميم بالعقود" data-language-autonym="العربية" data-language-local-name="Arabic" class="interlanguage-link-target"><span>العربية</span></a></li><li class="interlanguage-link interwiki-cs mw-list-item"><a href="https://cs.wikipedia.org/wiki/N%C3%A1vrh_podle_kontraktu" title="Návrh podle kontraktu – Czech" lang="cs" hreflang="cs" data-title="Návrh podle kontraktu" data-language-autonym="Čeština" data-language-local-name="Czech" class="interlanguage-link-target"><span>Čeština</span></a></li><li class="interlanguage-link interwiki-da mw-list-item"><a href="https://da.wikipedia.org/wiki/Kontraktbaseret_programmering" title="Kontraktbaseret programmering – Danish" lang="da" hreflang="da" data-title="Kontraktbaseret programmering" data-language-autonym="Dansk" data-language-local-name="Danish" class="interlanguage-link-target"><span>Dansk</span></a></li><li class="interlanguage-link interwiki-de mw-list-item"><a href="https://de.wikipedia.org/wiki/Design_by_Contract" title="Design by Contract – German" lang="de" hreflang="de" data-title="Design by Contract" data-language-autonym="Deutsch" data-language-local-name="German" class="interlanguage-link-target"><span>Deutsch</span></a></li><li class="interlanguage-link interwiki-es mw-list-item"><a href="https://es.wikipedia.org/wiki/Dise%C3%B1o_por_contrato" title="Diseño por contrato – Spanish" lang="es" hreflang="es" data-title="Diseño por contrato" data-language-autonym="Español" data-language-local-name="Spanish" class="interlanguage-link-target"><span>Español</span></a></li><li class="interlanguage-link interwiki-eo mw-list-item"><a href="https://eo.wikipedia.org/wiki/Perkontrakta_programado" title="Perkontrakta programado – Esperanto" lang="eo" hreflang="eo" data-title="Perkontrakta programado" data-language-autonym="Esperanto" data-language-local-name="Esperanto" class="interlanguage-link-target"><span>Esperanto</span></a></li><li class="interlanguage-link interwiki-fr mw-list-item"><a href="https://fr.wikipedia.org/wiki/Programmation_par_contrat" title="Programmation par contrat – French" lang="fr" hreflang="fr" data-title="Programmation par contrat" data-language-autonym="Français" data-language-local-name="French" class="interlanguage-link-target"><span>Français</span></a></li><li class="interlanguage-link interwiki-ko mw-list-item"><a href="https://ko.wikipedia.org/wiki/%EA%B3%84%EC%95%BD%EC%97%90_%EC%9D%98%ED%95%9C_%EC%84%A4%EA%B3%84" title="계약에 의한 설계 – Korean" lang="ko" hreflang="ko" data-title="계약에 의한 설계" data-language-autonym="한국어" data-language-local-name="Korean" class="interlanguage-link-target"><span>한국어</span></a></li><li class="interlanguage-link interwiki-it mw-list-item"><a href="https://it.wikipedia.org/wiki/Design_by_contract" title="Design by contract – Italian" lang="it" hreflang="it" data-title="Design by contract" data-language-autonym="Italiano" data-language-local-name="Italian" class="interlanguage-link-target"><span>Italiano</span></a></li><li class="interlanguage-link interwiki-he mw-list-item"><a href="https://he.wikipedia.org/wiki/%D7%97%D7%95%D7%96%D7%94_(%D7%AA%D7%9B%D7%A0%D7%95%D7%AA)" title="חוזה (תכנות) – Hebrew" lang="he" hreflang="he" data-title="חוזה (תכנות)" data-language-autonym="עברית" data-language-local-name="Hebrew" class="interlanguage-link-target"><span>עברית</span></a></li><li class="interlanguage-link interwiki-hu mw-list-item"><a href="https://hu.wikipedia.org/wiki/Szerz%C5%91d%C3%A9salap%C3%BA_programoz%C3%A1s" title="Szerződésalapú programozás – Hungarian" lang="hu" hreflang="hu" data-title="Szerződésalapú programozás" data-language-autonym="Magyar" data-language-local-name="Hungarian" class="interlanguage-link-target"><span>Magyar</span></a></li><li class="interlanguage-link interwiki-ja mw-list-item"><a href="https://ja.wikipedia.org/wiki/%E5%A5%91%E7%B4%84%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0" title="契約プログラミング – Japanese" lang="ja" hreflang="ja" data-title="契約プログラミング" data-language-autonym="日本語" data-language-local-name="Japanese" class="interlanguage-link-target"><span>日本語</span></a></li><li class="interlanguage-link interwiki-pl mw-list-item"><a href="https://pl.wikipedia.org/wiki/Programowanie_kontraktowe" title="Programowanie kontraktowe – Polish" lang="pl" hreflang="pl" data-title="Programowanie kontraktowe" data-language-autonym="Polski" data-language-local-name="Polish" class="interlanguage-link-target"><span>Polski</span></a></li><li class="interlanguage-link interwiki-pt mw-list-item"><a href="https://pt.wikipedia.org/wiki/Programa%C3%A7%C3%A3o_por_contrato" title="Programação por contrato – Portuguese" lang="pt" hreflang="pt" data-title="Programação por contrato" data-language-autonym="Português" data-language-local-name="Portuguese" class="interlanguage-link-target"><span>Português</span></a></li><li class="interlanguage-link interwiki-ru mw-list-item"><a href="https://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D0%BD%D1%82%D1%80%D0%B0%D0%BA%D1%82%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5" title="Контрактное программирование – Russian" lang="ru" hreflang="ru" data-title="Контрактное программирование" data-language-autonym="Русский" data-language-local-name="Russian" class="interlanguage-link-target"><span>Русский</span></a></li><li class="interlanguage-link interwiki-sk mw-list-item"><a href="https://sk.wikipedia.org/wiki/Design_by_contract" title="Design by contract – Slovak" lang="sk" hreflang="sk" data-title="Design by contract" data-language-autonym="Slovenčina" data-language-local-name="Slovak" class="interlanguage-link-target"><span>Slovenčina</span></a></li><li class="interlanguage-link interwiki-fi mw-list-item"><a href="https://fi.wikipedia.org/wiki/Sopimuspohjainen_ohjelmointi" title="Sopimuspohjainen ohjelmointi – Finnish" lang="fi" hreflang="fi" data-title="Sopimuspohjainen ohjelmointi" data-language-autonym="Suomi" data-language-local-name="Finnish" class="interlanguage-link-target"><span>Suomi</span></a></li><li class="interlanguage-link interwiki-uk mw-list-item"><a href="https://uk.wikipedia.org/wiki/%D0%9F%D1%80%D0%BE%D1%94%D0%BA%D1%82%D1%83%D0%B2%D0%B0%D0%BD%D0%BD%D1%8F_%D0%B7%D0%B0_%D0%BA%D0%BE%D0%BD%D1%82%D1%80%D0%B0%D0%BA%D1%82%D0%BE%D0%BC" title="Проєктування за контрактом – Ukrainian" lang="uk" hreflang="uk" data-title="Проєктування за контрактом" data-language-autonym="Українська" data-language-local-name="Ukrainian" class="interlanguage-link-target"><span>Українська</span></a></li><li class="interlanguage-link interwiki-zh mw-list-item"><a href="https://zh.wikipedia.org/wiki/%E5%A5%91%E7%BA%A6%E5%BC%8F%E8%AE%BE%E8%AE%A1" title="契约式设计 – Chinese" lang="zh" hreflang="zh" data-title="契约式设计" data-language-autonym="中文" data-language-local-name="Chinese" class="interlanguage-link-target"><span>中文</span></a></li> </ul> <div class="after-portlet after-portlet-lang"><span class="wb-langlinks-edit wb-langlinks-link"><a href="https://www.wikidata.org/wiki/Special:EntityPage/Q1200691#sitelinks-wikipedia" title="Edit interlanguage links" class="wbc-editpage">Edit links</a></span></div> </div> </div> </div> </header> <div class="vector-page-toolbar"> <div class="vector-page-toolbar-container"> <div id="left-navigation"> <nav aria-label="Namespaces"> <div id="p-associated-pages" class="vector-menu vector-menu-tabs mw-portlet mw-portlet-associated-pages" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-nstab-main" class="selected vector-tab-noicon mw-list-item"><a href="/wiki/Design_by_contract" title="View the content page [c]" accesskey="c"><span>Article</span></a></li><li id="ca-talk" class="vector-tab-noicon mw-list-item"><a href="/wiki/Talk:Design_by_contract" rel="discussion" title="Discuss improvements to the content page [t]" accesskey="t"><span>Talk</span></a></li> </ul> </div> </div> <div id="vector-variants-dropdown" class="vector-dropdown emptyPortlet" > <input type="checkbox" id="vector-variants-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-variants-dropdown" class="vector-dropdown-checkbox " aria-label="Change language variant" > <label id="vector-variants-dropdown-label" for="vector-variants-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet" aria-hidden="true" ><span class="vector-dropdown-label-text">English</span> </label> <div class="vector-dropdown-content"> <div id="p-variants" class="vector-menu mw-portlet mw-portlet-variants emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> </div> </div> </nav> </div> <div id="right-navigation" class="vector-collapsible"> <nav aria-label="Views"> <div id="p-views" class="vector-menu vector-menu-tabs mw-portlet mw-portlet-views" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-view" class="selected vector-tab-noicon mw-list-item"><a href="/wiki/Design_by_contract"><span>Read</span></a></li><li id="ca-edit" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=Design_by_contract&action=edit" title="Edit this page [e]" accesskey="e"><span>Edit</span></a></li><li id="ca-history" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=Design_by_contract&action=history" title="Past revisions of this page [h]" accesskey="h"><span>View history</span></a></li> </ul> </div> </div> </nav> <nav class="vector-page-tools-landmark" aria-label="Page tools"> <div id="vector-page-tools-dropdown" class="vector-dropdown vector-page-tools-dropdown" > <input type="checkbox" id="vector-page-tools-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-page-tools-dropdown" class="vector-dropdown-checkbox " aria-label="Tools" > <label id="vector-page-tools-dropdown-label" for="vector-page-tools-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet" aria-hidden="true" ><span class="vector-dropdown-label-text">Tools</span> </label> <div class="vector-dropdown-content"> <div id="vector-page-tools-unpinned-container" class="vector-unpinned-container"> <div id="vector-page-tools" class="vector-page-tools vector-pinnable-element"> <div class="vector-pinnable-header vector-page-tools-pinnable-header vector-pinnable-header-unpinned" data-feature-name="page-tools-pinned" data-pinnable-element-id="vector-page-tools" data-pinned-container-id="vector-page-tools-pinned-container" data-unpinned-container-id="vector-page-tools-unpinned-container" > <div class="vector-pinnable-header-label">Tools</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-page-tools.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-page-tools.unpin">hide</button> </div> <div id="p-cactions" class="vector-menu mw-portlet mw-portlet-cactions emptyPortlet vector-has-collapsible-items" title="More options" > <div class="vector-menu-heading"> Actions </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-more-view" class="selected vector-more-collapsible-item mw-list-item"><a href="/wiki/Design_by_contract"><span>Read</span></a></li><li id="ca-more-edit" class="vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=Design_by_contract&action=edit" title="Edit this page [e]" accesskey="e"><span>Edit</span></a></li><li id="ca-more-history" class="vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=Design_by_contract&action=history"><span>View history</span></a></li> </ul> </div> </div> <div id="p-tb" class="vector-menu mw-portlet mw-portlet-tb" > <div class="vector-menu-heading"> General </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="t-whatlinkshere" class="mw-list-item"><a href="/wiki/Special:WhatLinksHere/Design_by_contract" title="List of all English Wikipedia pages containing links to this page [j]" accesskey="j"><span>What links here</span></a></li><li id="t-recentchangeslinked" class="mw-list-item"><a href="/wiki/Special:RecentChangesLinked/Design_by_contract" rel="nofollow" title="Recent changes in pages linked from this page [k]" accesskey="k"><span>Related changes</span></a></li><li id="t-upload" class="mw-list-item"><a href="/wiki/Wikipedia:File_Upload_Wizard" title="Upload files [u]" accesskey="u"><span>Upload file</span></a></li><li id="t-specialpages" class="mw-list-item"><a href="/wiki/Special:SpecialPages" title="A list of all special pages [q]" accesskey="q"><span>Special pages</span></a></li><li id="t-permalink" class="mw-list-item"><a href="/w/index.php?title=Design_by_contract&oldid=1258581473" title="Permanent link to this revision of this page"><span>Permanent link</span></a></li><li id="t-info" class="mw-list-item"><a href="/w/index.php?title=Design_by_contract&action=info" title="More information about this page"><span>Page information</span></a></li><li id="t-cite" class="mw-list-item"><a href="/w/index.php?title=Special:CiteThisPage&page=Design_by_contract&id=1258581473&wpFormIdentifier=titleform" title="Information on how to cite this page"><span>Cite this page</span></a></li><li id="t-urlshortener" class="mw-list-item"><a href="/w/index.php?title=Special:UrlShortener&url=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FDesign_by_contract"><span>Get shortened URL</span></a></li><li id="t-urlshortener-qrcode" class="mw-list-item"><a href="/w/index.php?title=Special:QrCode&url=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FDesign_by_contract"><span>Download QR code</span></a></li> </ul> </div> </div> <div id="p-coll-print_export" class="vector-menu mw-portlet mw-portlet-coll-print_export" > <div class="vector-menu-heading"> Print/export </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="coll-download-as-rl" class="mw-list-item"><a href="/w/index.php?title=Special:DownloadAsPdf&page=Design_by_contract&action=show-download-screen" title="Download this page as a PDF file"><span>Download as PDF</span></a></li><li id="t-print" class="mw-list-item"><a href="/w/index.php?title=Design_by_contract&printable=yes" title="Printable version of this page [p]" accesskey="p"><span>Printable version</span></a></li> </ul> </div> </div> <div id="p-wikibase-otherprojects" class="vector-menu mw-portlet mw-portlet-wikibase-otherprojects" > <div class="vector-menu-heading"> In other projects </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="t-wikibase" class="wb-otherproject-link wb-otherproject-wikibase-dataitem mw-list-item"><a href="https://www.wikidata.org/wiki/Special:EntityPage/Q1200691" title="Structured data on this page hosted by Wikidata [g]" accesskey="g"><span>Wikidata item</span></a></li> </ul> </div> </div> </div> </div> </div> </div> </nav> </div> </div> </div> <div class="vector-column-end"> <div class="vector-sticky-pinned-container"> <nav class="vector-page-tools-landmark" aria-label="Page tools"> <div id="vector-page-tools-pinned-container" class="vector-pinned-container"> </div> </nav> <nav class="vector-appearance-landmark" aria-label="Appearance"> <div id="vector-appearance-pinned-container" class="vector-pinned-container"> <div id="vector-appearance" class="vector-appearance vector-pinnable-element"> <div class="vector-pinnable-header vector-appearance-pinnable-header vector-pinnable-header-pinned" data-feature-name="appearance-pinned" data-pinnable-element-id="vector-appearance" data-pinned-container-id="vector-appearance-pinned-container" data-unpinned-container-id="vector-appearance-unpinned-container" > <div class="vector-pinnable-header-label">Appearance</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-appearance.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-appearance.unpin">hide</button> </div> </div> </div> </nav> </div> </div> <div id="bodyContent" class="vector-body" aria-labelledby="firstHeading" data-mw-ve-target-container> <div class="vector-body-before-content"> <div class="mw-indicators"> </div> <div id="siteSub" class="noprint">From Wikipedia, the free encyclopedia</div> </div> <div id="contentSub"><div id="mw-content-subtitle"></div></div> <div id="mw-content-text" class="mw-body-content"><div class="mw-content-ltr mw-parser-output" lang="en" dir="ltr"><div class="shortdescription nomobile noexcerpt noprint searchaux" style="display:none">Approach for designing software</div> <figure class="mw-default-size" typeof="mw:File/Thumb"><a href="/wiki/File:Design_by_contract.svg" class="mw-file-description"><img src="//upload.wikimedia.org/wikipedia/commons/thumb/e/ea/Design_by_contract.svg/220px-Design_by_contract.svg.png" decoding="async" width="220" height="216" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/e/ea/Design_by_contract.svg/330px-Design_by_contract.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/e/ea/Design_by_contract.svg/440px-Design_by_contract.svg.png 2x" data-file-width="512" data-file-height="502" /></a><figcaption>A design by contract scheme</figcaption></figure> <p><b>Design by contract</b> (<b>DbC</b>), also known as <b>contract programming</b>, <b>programming by contract</b> and <b>design-by-contract programming</b>, is an approach for <a href="/wiki/Software_design" title="Software design">designing software</a>. </p><p>It prescribes that software designers should define <a href="/wiki/Formal_methods" title="Formal methods">formal</a>, precise and verifiable interface specifications for <a href="/wiki/Component-based_software_engineering#Software_component" title="Component-based software engineering">software components</a>, which extend the ordinary definition of <a href="/wiki/Abstract_data_type" title="Abstract data type">abstract data types</a> with <a href="/wiki/Precondition" title="Precondition">preconditions</a>, <a href="/wiki/Postcondition" title="Postcondition">postconditions</a> and <a href="/wiki/Invariant_(computer_science)" class="mw-redirect" title="Invariant (computer science)">invariants</a>. These specifications are referred to as "contracts", in accordance with a <a href="/wiki/Conceptual_metaphor" title="Conceptual metaphor">conceptual metaphor</a> with the conditions and obligations of business contracts. </p><p>The DbC approach <a href="/wiki/Offensive_programming" title="Offensive programming">assumes</a> all <i>client components</i> that invoke an operation on a <i>server component</i> will meet the preconditions specified as required for that operation. </p><p>Where this assumption is considered too risky (as in multi-channel or <a href="/wiki/Distributed_computing" title="Distributed computing">distributed computing</a>), the <a href="/wiki/Defensive_programming" title="Defensive programming">inverse approach</a> is taken, meaning that the <i>server component</i> tests that all relevant preconditions hold true (before, or while, processing the <i>client component'</i>s request) and replies with a suitable error message if not. </p> <meta property="mw:PageProp/toc" /> <div class="mw-heading mw-heading2"><h2 id="History">History</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Design_by_contract&action=edit&section=1" title="Edit section: History"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>The term was coined by <a href="/wiki/Bertrand_Meyer" title="Bertrand Meyer">Bertrand Meyer</a> in connection with his design of the <a href="/wiki/Eiffel_(programming_language)" title="Eiffel (programming language)">Eiffel programming language</a> and first described in various articles starting in 1986<sup id="cite_ref-1" class="reference"><a href="#cite_note-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-2" class="reference"><a href="#cite_note-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-3" class="reference"><a href="#cite_note-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup> and the two successive editions (1988, 1997) of his book <i><a href="/wiki/Object-Oriented_Software_Construction" title="Object-Oriented Software Construction">Object-Oriented Software Construction</a></i>. Eiffel Software applied for trademark registration for <i>Design by Contract</i> in December 2003, and it was granted in December 2004.<sup id="cite_ref-DbC_tm_words_4-0" class="reference"><a href="#cite_note-DbC_tm_words-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-DbC_tm_design_5-0" class="reference"><a href="#cite_note-DbC_tm_design-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup> The current owner of this trademark is Eiffel Software.<sup id="cite_ref-DbC_tm_words2_6-0" class="reference"><a href="#cite_note-DbC_tm_words2-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-DbC_tm_design2_7-0" class="reference"><a href="#cite_note-DbC_tm_design2-7"><span class="cite-bracket">[</span>7<span class="cite-bracket">]</span></a></sup> </p><p>Design by contract has its roots in work on <a href="/wiki/Formal_verification" title="Formal verification">formal verification</a>, <a href="/wiki/Formal_specification" title="Formal specification">formal specification</a> and <a href="/wiki/Hoare_logic" title="Hoare logic">Hoare logic</a>. The original contributions include: </p> <ul><li>A clear metaphor to guide the design process</li> <li>The application to <a href="/wiki/Inheritance_(object-oriented_programming)" title="Inheritance (object-oriented programming)">inheritance</a>, in particular a formalism for redefinition and <a href="/wiki/Dynamic_binding_(computer_science)" class="mw-redirect" title="Dynamic binding (computer science)">dynamic binding</a></li> <li>The application to <a href="/wiki/Exception_(computer_science)" class="mw-redirect" title="Exception (computer science)">exception handling</a></li> <li>The connection with automatic <a href="/wiki/Software_documentation" title="Software documentation">software documentation</a></li></ul> <div class="mw-heading mw-heading2"><h2 id="Description">Description</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Design_by_contract&action=edit&section=2" title="Edit section: Description"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>The central idea of DbC is a metaphor on how elements of a software system collaborate with each other on the basis of mutual <i>obligations</i> and <i>benefits</i>. The metaphor comes from business life, where a "client" and a "supplier" agree on a "contract" that defines, for example, that: </p> <ul><li>The supplier must provide a certain product (obligation) and is entitled to expect that the client has paid its fee (benefit).</li> <li>The client must pay the fee (obligation) and is entitled to get the product (benefit).</li> <li>Both parties must satisfy certain obligations, such as laws and regulations, applying to all contracts.</li></ul> <p>Similarly, if the <a href="/wiki/Method_(computer_science)" class="mw-redirect" title="Method (computer science)">method</a> of a <a href="/wiki/Class_(computer_programming)" title="Class (computer programming)">class</a> in <a href="/wiki/Object-oriented_programming" title="Object-oriented programming">object-oriented programming</a> provides a certain functionality, it may: </p> <ul><li>Expect a certain condition to be guaranteed on entry by any client module that calls it: the method's <a href="/wiki/Precondition" title="Precondition">precondition</a>—an obligation for the client, and a benefit for the supplier (the method itself), as it frees it from having to handle cases outside of the precondition.</li> <li>Guarantee a certain property on exit: the method's <a href="/wiki/Postcondition" title="Postcondition">postcondition</a>—an obligation for the supplier, and obviously a benefit (the main benefit of calling the method) for the client.</li> <li>Maintain a certain property, assumed on entry and guaranteed on exit: the <a href="/wiki/Class_invariant" title="Class invariant">class invariant</a>.</li></ul> <p>The contract is semantically equivalent to a <a href="/wiki/Hoare_triple" class="mw-redirect" title="Hoare triple">Hoare triple</a> which formalises the obligations. This can be summarised by the "three questions" that the designer must repeatedly answer in the contract: </p> <ul><li>What does the contract expect?</li> <li>What does the contract guarantee?</li> <li>What does the contract maintain?</li></ul> <p>Many <a href="/wiki/Programming_language" title="Programming language">programming languages</a> have facilities to make <a href="/wiki/Assertion_(software_development)" title="Assertion (software development)">assertions</a> like these. However, DbC considers these contracts to be so crucial to <a href="/wiki/Correctness_(computer_science)" title="Correctness (computer science)">software correctness</a> that they should be part of the design process. In effect, DbC advocates <a href="/wiki/Test-driven_development" title="Test-driven development">writing the assertions first</a>.<sup class="noprint Inline-Template Template-Fact" style="white-space:nowrap;">[<i><a href="/wiki/Wikipedia:Citation_needed" title="Wikipedia:Citation needed"><span title="This claim needs references to reliable sources. (June 2019)">citation needed</span></a></i>]</sup> Contracts can be written by <a href="/wiki/Comment_(computer_programming)" title="Comment (computer programming)">code comments</a>, enforced by a <a href="/wiki/Test_suite" title="Test suite">test suite</a>, or both, even if there is no special language support for contracts. </p><p>The notion of a contract extends down to the method/procedure level; the contract for each method will normally contain the following pieces of information:<sup class="noprint Inline-Template Template-Fact" style="white-space:nowrap;">[<i><a href="/wiki/Wikipedia:Citation_needed" title="Wikipedia:Citation needed"><span title="reliable source needed for the following list (September 2012)">citation needed</span></a></i>]</sup> </p> <ul><li>Acceptable and unacceptable input values or types, and their meanings</li> <li>Return values or types, and their meanings</li> <li>Error and <a href="/wiki/Exception_handling" title="Exception handling">exception</a> condition values or types that can occur, and their meanings</li> <li><a href="/wiki/Side_effect_(computer_science)" title="Side effect (computer science)">Side effects</a></li> <li><a href="/wiki/Precondition" title="Precondition">Preconditions</a></li> <li><a href="/wiki/Postcondition" title="Postcondition">Postconditions</a></li> <li><a href="/wiki/Invariant_(computer_science)" class="mw-redirect" title="Invariant (computer science)">Invariants</a></li> <li>(more rarely) Performance guarantees, e.g. for time or space used</li></ul> <p>Subclasses in an <a href="/wiki/Inheritance_(object-oriented_programming)" title="Inheritance (object-oriented programming)">inheritance hierarchy</a> are allowed to weaken preconditions (but not strengthen them) and strengthen postconditions and invariants (but not weaken them). These rules approximate <a href="/wiki/Liskov_substitution_principle" title="Liskov substitution principle">behavioural subtyping</a>. </p><p>All class relationships are between client classes and supplier classes. A client class is obliged to make calls to supplier features where the resulting state of the supplier is not violated by the client call. Subsequently, the supplier is obliged to provide a return state and data that does not violate the state requirements of the client. </p><p>For instance, a supplier data buffer may require that data is present in the buffer when a delete feature is called. Subsequently, the supplier guarantees to the client that when a delete feature finishes its work, the data item will, indeed, be deleted from the buffer. Other design contracts are concepts of <a href="/wiki/Class_invariant" title="Class invariant">class invariant</a>. The class invariant guarantees (for the local class) that the state of the class will be maintained within specified tolerances at the end of each feature execution. </p><p>When using contracts, a supplier should not try to verify that the contract conditions are satisfied—a practice known as <a href="/wiki/Offensive_programming" title="Offensive programming">offensive programming</a>—the general idea being that code should "fail hard", with contract verification being the safety net. </p><p>DbC's "fail hard" property simplifies the debugging of contract behavior, as the intended behaviour of each method is clearly specified. </p><p>This approach differs substantially from that of <a href="/wiki/Defensive_programming" title="Defensive programming">defensive programming</a>, where the supplier is responsible for figuring out what to do when a precondition is broken. More often than not, the supplier throws an exception to inform the client that the precondition has been broken, and in both cases—DbC and defensive programming alike—the client must figure out how to respond to that. In such cases, DbC makes the supplier's job easier. </p><p>Design by contract also defines criteria for correctness for a software module: </p> <ul><li>If the class invariant AND precondition are true before a supplier is called by a client, then the invariant AND the postcondition will be true after the service has been completed.</li> <li>When making calls to a supplier, a software module should not violate the supplier's preconditions.</li></ul> <p>Design by contract can also facilitate code reuse, since the contract for each piece of code is fully documented. The contracts for a module can be regarded as a form of <a href="/wiki/Software_documentation" title="Software documentation">software documentation</a> for the behavior of that module. </p> <div class="mw-heading mw-heading2"><h2 id="Performance_implications">Performance implications</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Design_by_contract&action=edit&section=3" title="Edit section: Performance implications"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Contract conditions should never be violated during execution of a bug-free program. Contracts are therefore typically only checked in debug mode during software development. Later at release, the contract checks are disabled to maximize performance. </p><p>In many programming languages, contracts are implemented with <a href="/wiki/Assertion_(software_development)" title="Assertion (software development)">assert</a>. Asserts are by default compiled away in release mode in C/C++, and similarly deactivated in C#<sup id="cite_ref-8" class="reference"><a href="#cite_note-8"><span class="cite-bracket">[</span>8<span class="cite-bracket">]</span></a></sup> and Java. </p><p>Launching the Python interpreter with "-O" (for "optimize") as an argument will likewise cause the Python code generator to not emit any bytecode for asserts.<sup id="cite_ref-9" class="reference"><a href="#cite_note-9"><span class="cite-bracket">[</span>9<span class="cite-bracket">]</span></a></sup> </p><p>This effectively eliminates the run-time costs of asserts in production code—irrespective of the number and computational expense of asserts used in development—as no such instructions will be included in production by the compiler. </p> <div class="mw-heading mw-heading2"><h2 id="Relationship_to_software_testing">Relationship to software testing</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Design_by_contract&action=edit&section=4" title="Edit section: Relationship to software testing"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Design by contract does not replace regular testing strategies, such as <a href="/wiki/Unit_testing" title="Unit testing">unit testing</a>, <a href="/wiki/Integration_testing" title="Integration testing">integration testing</a> and <a href="/wiki/System_testing" title="System testing">system testing</a>. Rather, it complements external testing with internal self-tests that can be activated both for isolated tests and in production code during a test-phase. </p><p>The advantage of internal self-tests is that they can detect errors before they manifest themselves as invalid results observed by the client. This leads to earlier and more specific error detection. </p><p>The use of assertions can be considered to be a form of <a href="/wiki/Test_oracle" title="Test oracle">test oracle</a>, a way of testing the design by contract implementation. </p> <div class="mw-heading mw-heading2"><h2 id="Language_support">Language support</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Design_by_contract&action=edit&section=5" title="Edit section: Language support"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <div class="mw-heading mw-heading3"><h3 id="Languages_with_native_support">Languages with native support</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Design_by_contract&action=edit&section=6" title="Edit section: Languages with native support"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Languages that implement most DbC features natively include: </p> <ul><li><a href="/wiki/Ada_programming_language" class="mw-redirect" title="Ada programming language">Ada 2012</a></li> <li><a href="/wiki/Ciao_(programming_language)" title="Ciao (programming language)">Ciao</a></li> <li><a href="/wiki/Clojure" title="Clojure">Clojure</a></li> <li><a href="/wiki/Cobra_(programming_language)" title="Cobra (programming language)">Cobra</a></li> <li><a href="/wiki/D_(programming_language)" title="D (programming language)">D</a><sup id="cite_ref-d-contract-programming_10-0" class="reference"><a href="#cite_note-d-contract-programming-10"><span class="cite-bracket">[</span>10<span class="cite-bracket">]</span></a></sup></li> <li><a href="/wiki/Dafny_(programming_language)" class="mw-redirect" title="Dafny (programming language)">Dafny</a></li> <li><a href="/wiki/Eiffel_(programming_language)" title="Eiffel (programming language)">Eiffel</a></li> <li><a href="/wiki/Fortress_(programming_language)" title="Fortress (programming language)">Fortress</a></li> <li><a href="/wiki/Kotlin_(programming_language)" title="Kotlin (programming language)">Kotlin</a></li> <li><a href="/wiki/Mercury_(programming_language)" title="Mercury (programming language)">Mercury</a></li> <li><a href="/wiki/Oxygene_(programming_language)" title="Oxygene (programming language)">Oxygene</a> (formerly Chrome and Delphi Prism<sup id="cite_ref-11" class="reference"><a href="#cite_note-11"><span class="cite-bracket">[</span>11<span class="cite-bracket">]</span></a></sup>)</li> <li><a href="/wiki/Racket_(programming_language)" title="Racket (programming language)">Racket</a> (including higher order contracts, and emphasizing that contract violations must blame the guilty party and must do so with an accurate explanation<sup id="cite_ref-12" class="reference"><a href="#cite_note-12"><span class="cite-bracket">[</span>12<span class="cite-bracket">]</span></a></sup>)</li> <li><a href="/wiki/Sather" title="Sather">Sather</a></li> <li><a href="/wiki/Scala_(programming_language)" title="Scala (programming language)">Scala</a><sup id="cite_ref-scala-assertions-dbc_13-0" class="reference"><a href="#cite_note-scala-assertions-dbc-13"><span class="cite-bracket">[</span>13<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-14" class="reference"><a href="#cite_note-14"><span class="cite-bracket">[</span>14<span class="cite-bracket">]</span></a></sup></li> <li><a href="/wiki/SPARK_(programming_language)" title="SPARK (programming language)">SPARK</a> (via <a href="/wiki/Static_code_analysis" class="mw-redirect" title="Static code analysis">static analysis</a> of <a href="/wiki/Ada_(programming_language)" title="Ada (programming language)">Ada</a> programs)</li> <li><a href="/wiki/Vala_(programming_language)" title="Vala (programming language)">Vala</a></li> <li><a href="/wiki/VDM_specification_language" class="mw-redirect" title="VDM specification language">VDM</a></li></ul> <p>Additionally, the standard method combination in the <a href="/wiki/Common_Lisp_Object_System" title="Common Lisp Object System">Common Lisp Object System</a> has the method qualifiers <code>:before</code>, <code>:after</code> and <code>:around</code> that allow writing contracts as auxiliary methods, among other uses. </p> <div class="mw-heading mw-heading2"><h2 id="See_also">See also</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Design_by_contract&action=edit&section=7" title="Edit section: See also"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <ul><li><a href="/wiki/Component-based_software_engineering" title="Component-based software engineering">Component-based software engineering</a></li> <li><a href="/wiki/Correctness_(computer_science)" title="Correctness (computer science)">Correctness (computer science)</a></li> <li><a href="/wiki/Defensive_programming" title="Defensive programming">Defensive programming</a></li> <li><a href="/wiki/Fail-fast_system" title="Fail-fast system">Fail-fast system</a></li> <li><a href="/wiki/Formal_methods" title="Formal methods">Formal methods</a></li> <li><a href="/wiki/Hoare_logic" title="Hoare logic">Hoare logic</a></li> <li><a href="/wiki/Modular_programming" title="Modular programming">Modular programming</a></li> <li><a href="/wiki/Program_derivation" title="Program derivation">Program derivation</a></li> <li><a href="/wiki/Program_refinement" class="mw-redirect" title="Program refinement">Program refinement</a></li> <li><a href="/wiki/Strong_and_weak_typing" title="Strong and weak typing">Strong typing</a></li> <li><a href="/wiki/Test-driven_development" title="Test-driven development">Test-driven development</a></li> <li><a href="/wiki/Typestate_analysis" title="Typestate analysis">Typestate analysis</a></li></ul> <div class="mw-heading mw-heading2"><h2 id="Notes">Notes</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Design_by_contract&action=edit&section=8" title="Edit section: Notes"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <style data-mw-deduplicate="TemplateStyles:r1239543626">.mw-parser-output .reflist{margin-bottom:0.5em;list-style-type:decimal}@media screen{.mw-parser-output .reflist{font-size:90%}}.mw-parser-output .reflist .references{font-size:100%;margin-bottom:0;list-style-type:inherit}.mw-parser-output .reflist-columns-2{column-width:30em}.mw-parser-output .reflist-columns-3{column-width:25em}.mw-parser-output .reflist-columns{margin-top:0.3em}.mw-parser-output .reflist-columns ol{margin-top:0}.mw-parser-output .reflist-columns li{page-break-inside:avoid;break-inside:avoid-column}.mw-parser-output .reflist-upper-alpha{list-style-type:upper-alpha}.mw-parser-output .reflist-upper-roman{list-style-type:upper-roman}.mw-parser-output .reflist-lower-alpha{list-style-type:lower-alpha}.mw-parser-output .reflist-lower-greek{list-style-type:lower-greek}.mw-parser-output .reflist-lower-roman{list-style-type:lower-roman}</style><div class="reflist"> <div class="mw-references-wrap mw-references-columns"><ol class="references"> <li id="cite_note-1"><span class="mw-cite-backlink"><b><a href="#cite_ref-1">^</a></b></span> <span class="reference-text">Meyer, Bertrand: <i>Design by Contract</i>, Technical Report TR-EI-12/CO, Interactive Software Engineering Inc., 1986</span> </li> <li id="cite_note-2"><span class="mw-cite-backlink"><b><a href="#cite_ref-2">^</a></b></span> <span class="reference-text">Meyer, Bertrand: <i>Design by Contract</i>, in <i>Advances in Object-Oriented Software Engineering</i>, eds. D. Mandrioli and B. Meyer, Prentice Hall, 1991, pp. 1–50</span> </li> <li id="cite_note-3"><span class="mw-cite-backlink"><b><a href="#cite_ref-3">^</a></b></span> <span class="reference-text">Meyer, Bertrand: "<a rel="nofollow" class="external text" href="http://se.ethz.ch/~meyer/publications/computer/contract.pdf">Applying "Design by Contract"</a>", in <i>Computer</i> (IEEE), 25, 10, October 1992, pp. 40–51.</span> </li> <li id="cite_note-DbC_tm_words-4"><span class="mw-cite-backlink"><b><a href="#cite_ref-DbC_tm_words_4-0">^</a></b></span> <span class="reference-text"><style data-mw-deduplicate="TemplateStyles:r1238218222">.mw-parser-output cite.citation{font-style:inherit;word-wrap:break-word}.mw-parser-output .citation q{quotes:"\"""\"""'""'"}.mw-parser-output .citation:target{background-color:rgba(0,127,255,0.133)}.mw-parser-output .id-lock-free.id-lock-free a{background:url("//upload.wikimedia.org/wikipedia/commons/6/65/Lock-green.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-limited.id-lock-limited a,.mw-parser-output .id-lock-registration.id-lock-registration a{background:url("//upload.wikimedia.org/wikipedia/commons/d/d6/Lock-gray-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-subscription.id-lock-subscription a{background:url("//upload.wikimedia.org/wikipedia/commons/a/aa/Lock-red-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .cs1-ws-icon a{background:url("//upload.wikimedia.org/wikipedia/commons/4/4c/Wikisource-logo.svg")right 0.1em center/12px no-repeat}body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-free a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-limited a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-registration a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-subscription a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .cs1-ws-icon a{background-size:contain;padding:0 1em 0 0}.mw-parser-output .cs1-code{color:inherit;background:inherit;border:none;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;color:var(--color-error,#d33)}.mw-parser-output .cs1-visible-error{color:var(--color-error,#d33)}.mw-parser-output .cs1-maint{display:none;color:#085;margin-left:0.3em}.mw-parser-output .cs1-kern-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right{padding-right:0.2em}.mw-parser-output .citation .mw-selflink{font-weight:inherit}@media screen{.mw-parser-output .cs1-format{font-size:95%}html.skin-theme-clientpref-night .mw-parser-output .cs1-maint{color:#18911f}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .cs1-maint{color:#18911f}}</style><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://web.archive.org/web/20161221062729/http://tess2.uspto.gov/bin/showfield?f=doc&state=4010:lsqmmo.2.2">"United States Patent and Trademark Office registration for "DESIGN BY CONTRACT"<span class="cs1-kern-right"></span>"</a>. Archived from <a rel="nofollow" class="external text" href="http://tess2.uspto.gov/bin/showfield?f=doc&state=4010:lsqmmo.2.2">the original</a> on 2016-12-21<span class="reference-accessdate">. Retrieved <span class="nowrap">2009-06-22</span></span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=United+States+Patent+and+Trademark+Office+registration+for+%22DESIGN+BY+CONTRACT%22&rft_id=http%3A%2F%2Ftess2.uspto.gov%2Fbin%2Fshowfield%3Ff%3Ddoc%26state%3D4010%3Alsqmmo.2.2&rfr_id=info%3Asid%2Fen.wikipedia.org%3ADesign+by+contract" class="Z3988"></span><sup class="noprint Inline-Template"><span style="white-space: nowrap;">[<i><a href="/wiki/Wikipedia:Link_rot" title="Wikipedia:Link rot"><span title=" Dead link tagged February 2024">dead link</span></a></i><span style="visibility:hidden; color:transparent; padding-left:2px">‍</span>]</span></sup></span> </li> <li id="cite_note-DbC_tm_design-5"><span class="mw-cite-backlink"><b><a href="#cite_ref-DbC_tm_design_5-0">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://web.archive.org/web/20161221062436/http://tess2.uspto.gov/bin/showfield?f=doc&state=4010:lsqmmo.2.1">"United States Patent and Trademark Office registration for the graphic design with words "Design by Contract"<span class="cs1-kern-right"></span>"</a>. Archived from <a rel="nofollow" class="external text" href="http://tess2.uspto.gov/bin/showfield?f=doc&state=4010:lsqmmo.2.1">the original</a> on 2016-12-21<span class="reference-accessdate">. Retrieved <span class="nowrap">2009-06-22</span></span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=United+States+Patent+and+Trademark+Office+registration+for+the+graphic+design+with+words+%22Design+by+Contract%22&rft_id=http%3A%2F%2Ftess2.uspto.gov%2Fbin%2Fshowfield%3Ff%3Ddoc%26state%3D4010%3Alsqmmo.2.1&rfr_id=info%3Asid%2Fen.wikipedia.org%3ADesign+by+contract" class="Z3988"></span><sup class="noprint Inline-Template"><span style="white-space: nowrap;">[<i><a href="/wiki/Wikipedia:Link_rot" title="Wikipedia:Link rot"><span title=" Dead link tagged February 2024">dead link</span></a></i><span style="visibility:hidden; color:transparent; padding-left:2px">‍</span>]</span></sup></span> </li> <li id="cite_note-DbC_tm_words2-6"><span class="mw-cite-backlink"><b><a href="#cite_ref-DbC_tm_words2_6-0">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://tarr.uspto.gov/servlet/tarr?regser=serial&entry=78342277">"Trademark Status & Document Retrieval - 78342277"</a>. <i>USPTO Trademark Application and Registration Retrieval</i>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=USPTO+Trademark+Application+and+Registration+Retrieval&rft.atitle=Trademark+Status+%26+Document+Retrieval+-+78342277&rft_id=http%3A%2F%2Ftarr.uspto.gov%2Fservlet%2Ftarr%3Fregser%3Dserial%26entry%3D78342277&rfr_id=info%3Asid%2Fen.wikipedia.org%3ADesign+by+contract" class="Z3988"></span></span> </li> <li id="cite_note-DbC_tm_design2-7"><span class="mw-cite-backlink"><b><a href="#cite_ref-DbC_tm_design2_7-0">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://tarr.uspto.gov/servlet/tarr?regser=serial&entry=78342308">"Trademark Status & Document Retrieval - 78342308"</a>. <i>USPTO Trademark Application and Registration Retrieval</i>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=USPTO+Trademark+Application+and+Registration+Retrieval&rft.atitle=Trademark+Status+%26+Document+Retrieval+-+78342308&rft_id=http%3A%2F%2Ftarr.uspto.gov%2Fservlet%2Ftarr%3Fregser%3Dserial%26entry%3D78342308&rfr_id=info%3Asid%2Fen.wikipedia.org%3ADesign+by+contract" class="Z3988"></span></span> </li> <li id="cite_note-8"><span class="mw-cite-backlink"><b><a href="#cite_ref-8">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://msdn.microsoft.com/en-us/library/ttcc4x86.aspx">"Assertions in Managed Code"</a>. <i>Microsoft Developer Network</i>. 15 November 2016. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20180822105637/https://msdn.microsoft.com/en-us/library/ttcc4x86.aspx">Archived</a> from the original on Aug 22, 2018.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=Microsoft+Developer+Network&rft.atitle=Assertions+in+Managed+Code&rft.date=2016-11-15&rft_id=https%3A%2F%2Fmsdn.microsoft.com%2Fen-us%2Flibrary%2Fttcc4x86.aspx&rfr_id=info%3Asid%2Fen.wikipedia.org%3ADesign+by+contract" class="Z3988"></span></span> </li> <li id="cite_note-9"><span class="mw-cite-backlink"><b><a href="#cite_ref-9">^</a></b></span> <span class="reference-text"><a rel="nofollow" class="external text" href="https://docs.python.org/3/reference/simple_stmts.html#grammar-token-assert-stmt">Official Python Docs, <i>assert statement</i></a></span> </li> <li id="cite_note-d-contract-programming-10"><span class="mw-cite-backlink"><b><a href="#cite_ref-d-contract-programming_10-0">^</a></b></span> <span class="reference-text"> <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFBright2014" class="citation web cs1">Bright, Walter (2014-11-01). <a rel="nofollow" class="external text" href="http://dlang.org/contracts.html">"D Programming Language, Contract Programming"</a>. Digital Mars<span class="reference-accessdate">. Retrieved <span class="nowrap">2014-11-10</span></span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=D+Programming+Language%2C+Contract+Programming&rft.pub=Digital+Mars&rft.date=2014-11-01&rft.aulast=Bright&rft.aufirst=Walter&rft_id=http%3A%2F%2Fdlang.org%2Fcontracts.html&rfr_id=info%3Asid%2Fen.wikipedia.org%3ADesign+by+contract" class="Z3988"></span></span> </li> <li id="cite_note-11"><span class="mw-cite-backlink"><b><a href="#cite_ref-11">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFHodges,_Nick" class="citation web cs1">Hodges, Nick. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20210426163433/https://edn.embarcadero.com/article/39398">"Write Cleaner, Higher Quality Code with Class Contracts in Delphi Prism"</a>. Embarcadero Technologies. Archived from <a rel="nofollow" class="external text" href="http://edn.embarcadero.com/article/39398">the original</a> on 26 April 2021<span class="reference-accessdate">. Retrieved <span class="nowrap">20 January</span> 2016</span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=Write+Cleaner%2C+Higher+Quality+Code+with+Class+Contracts+in+Delphi+Prism&rft.pub=Embarcadero+Technologies&rft.au=Hodges%2C+Nick&rft_id=http%3A%2F%2Fedn.embarcadero.com%2Farticle%2F39398&rfr_id=info%3Asid%2Fen.wikipedia.org%3ADesign+by+contract" class="Z3988"></span></span> </li> <li id="cite_note-12"><span class="mw-cite-backlink"><b><a href="#cite_ref-12">^</a></b></span> <span class="reference-text">Findler, Felleisen <a rel="nofollow" class="external text" href="http://www.eecs.northwestern.edu/~robby/pubs/papers/ho-contracts-icfp2002.pdf">Contracts for Higher-Order Functions</a></span> </li> <li id="cite_note-scala-assertions-dbc-13"><span class="mw-cite-backlink"><b><a href="#cite_ref-scala-assertions-dbc_13-0">^</a></b></span> <span class="reference-text"> <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://www.scala-lang.org/api/current/scala/Predef$.html">"Scala Standard Library Docs - Assertions"</a>. EPFL<span class="reference-accessdate">. Retrieved <span class="nowrap">2019-05-24</span></span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=Scala+Standard+Library+Docs+-+Assertions&rft.pub=EPFL&rft_id=https%3A%2F%2Fwww.scala-lang.org%2Fapi%2Fcurrent%2Fscala%2FPredef%24.html&rfr_id=info%3Asid%2Fen.wikipedia.org%3ADesign+by+contract" class="Z3988"></span></span> </li> <li id="cite_note-14"><span class="mw-cite-backlink"><b><a href="#cite_ref-14">^</a></b></span> <span class="reference-text"><a href="/wiki/Strong_typing" class="mw-redirect" title="Strong typing">Strong typing</a> as another "contract enforcing" in Scala, see discussion at <a rel="nofollow" class="external text" href="https://www.scala-lang.org/old/node/6958">scala-lang.org/</a>.</span> </li> </ol></div></div> <div class="mw-heading mw-heading2"><h2 id="Bibliography">Bibliography</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Design_by_contract&action=edit&section=9" title="Edit section: Bibliography"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <style data-mw-deduplicate="TemplateStyles:r1239549316">.mw-parser-output .refbegin{margin-bottom:0.5em}.mw-parser-output .refbegin-hanging-indents>ul{margin-left:0}.mw-parser-output .refbegin-hanging-indents>ul>li{margin-left:0;padding-left:3.2em;text-indent:-3.2em}.mw-parser-output .refbegin-hanging-indents ul,.mw-parser-output .refbegin-hanging-indents ul li{list-style:none}@media(max-width:720px){.mw-parser-output .refbegin-hanging-indents>ul>li{padding-left:1.6em;text-indent:-1.6em}}.mw-parser-output .refbegin-columns{margin-top:0.3em}.mw-parser-output .refbegin-columns ul{margin-top:0}.mw-parser-output .refbegin-columns li{page-break-inside:avoid;break-inside:avoid-column}@media screen{.mw-parser-output .refbegin{font-size:90%}}</style><div class="refbegin" style=""> <ul><li>Mitchell, Richard, and McKim, Jim: <i>Design by Contract: by example</i>, Addison-Wesley, 2002</li> <li>A <a href="https://en.wikibooks.org/wiki/Computer_Programming/Design_by_Contract" class="extiw" title="b:Computer Programming/Design by Contract">wikibook</a> describing DBC closely to the original model.</li> <li>McNeile, Ashley: <a rel="nofollow" class="external text" href="https://dx.doi.org/10.1145/1811147.1811150"><i>A framework for the semantics of behavioral contracts</i></a>. Proceedings of the Second International Workshop on Behaviour Modelling: Foundation and Applications (BM-FA '10). ACM, New York, NY, USA, 2010. This paper discusses generalized notions of <b>Contract</b> and <b>Substitutability</b>.</li></ul> </div> <div class="mw-heading mw-heading2"><h2 id="External_links">External links</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Design_by_contract&action=edit&section=10" title="Edit section: External links"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <ul><li><a rel="nofollow" class="external text" href="https://www.eiffel.com/values/design-by-contract/">The Power of Design by Contract(TM)</a> A top-level description of DbC, with links to additional resources.</li> <li><a rel="nofollow" class="external text" href="http://archive.eiffel.com/doc/manuals/technology/contract/">Building bug-free O-O software: An introduction to Design by Contract(TM)</a> Older material on DbC.</li> <li><a rel="nofollow" class="external text" href="http://www.rps-obix.com/docs/manuals/design_by_contract_contract_programming.html">Benefits and drawbacks; implementation in RPS-Obix</a></li> <li><a rel="nofollow" class="external text" href="http://buksbaum.us/2011/04/20/using-code-contracts-for-safer-code/">Using Code Contracts for Safer Code</a></li></ul> <div class="navbox-styles"><style data-mw-deduplicate="TemplateStyles:r1129693374">.mw-parser-output .hlist dl,.mw-parser-output .hlist ol,.mw-parser-output .hlist ul{margin:0;padding:0}.mw-parser-output .hlist dd,.mw-parser-output .hlist dt,.mw-parser-output .hlist li{margin:0;display:inline}.mw-parser-output .hlist.inline,.mw-parser-output .hlist.inline dl,.mw-parser-output .hlist.inline ol,.mw-parser-output .hlist.inline ul,.mw-parser-output .hlist dl dl,.mw-parser-output .hlist dl ol,.mw-parser-output .hlist dl ul,.mw-parser-output .hlist ol dl,.mw-parser-output .hlist ol ol,.mw-parser-output .hlist ol ul,.mw-parser-output .hlist ul dl,.mw-parser-output .hlist ul ol,.mw-parser-output .hlist ul ul{display:inline}.mw-parser-output .hlist .mw-empty-li{display:none}.mw-parser-output .hlist dt::after{content:": "}.mw-parser-output .hlist dd::after,.mw-parser-output .hlist li::after{content:" · ";font-weight:bold}.mw-parser-output .hlist dd:last-child::after,.mw-parser-output .hlist dt:last-child::after,.mw-parser-output .hlist li:last-child::after{content:none}.mw-parser-output .hlist dd dd:first-child::before,.mw-parser-output .hlist dd dt:first-child::before,.mw-parser-output .hlist dd li:first-child::before,.mw-parser-output .hlist dt dd:first-child::before,.mw-parser-output .hlist dt dt:first-child::before,.mw-parser-output .hlist dt li:first-child::before,.mw-parser-output .hlist li dd:first-child::before,.mw-parser-output .hlist li dt:first-child::before,.mw-parser-output .hlist li li:first-child::before{content:" (";font-weight:normal}.mw-parser-output .hlist dd dd:last-child::after,.mw-parser-output .hlist dd dt:last-child::after,.mw-parser-output .hlist dd li:last-child::after,.mw-parser-output .hlist dt dd:last-child::after,.mw-parser-output .hlist dt dt:last-child::after,.mw-parser-output .hlist dt li:last-child::after,.mw-parser-output .hlist li dd:last-child::after,.mw-parser-output .hlist li dt:last-child::after,.mw-parser-output .hlist li li:last-child::after{content:")";font-weight:normal}.mw-parser-output .hlist ol{counter-reset:listitem}.mw-parser-output .hlist ol>li{counter-increment:listitem}.mw-parser-output .hlist ol>li::before{content:" "counter(listitem)"\a0 "}.mw-parser-output .hlist dd ol>li:first-child::before,.mw-parser-output .hlist dt ol>li:first-child::before,.mw-parser-output .hlist li ol>li:first-child::before{content:" ("counter(listitem)"\a0 "}</style><style data-mw-deduplicate="TemplateStyles:r1236075235">.mw-parser-output .navbox{box-sizing:border-box;border:1px solid #a2a9b1;width:100%;clear:both;font-size:88%;text-align:center;padding:1px;margin:1em auto 0}.mw-parser-output .navbox .navbox{margin-top:0}.mw-parser-output .navbox+.navbox,.mw-parser-output .navbox+.navbox-styles+.navbox{margin-top:-1px}.mw-parser-output .navbox-inner,.mw-parser-output .navbox-subgroup{width:100%}.mw-parser-output .navbox-group,.mw-parser-output .navbox-title,.mw-parser-output .navbox-abovebelow{padding:0.25em 1em;line-height:1.5em;text-align:center}.mw-parser-output .navbox-group{white-space:nowrap;text-align:right}.mw-parser-output .navbox,.mw-parser-output .navbox-subgroup{background-color:#fdfdfd}.mw-parser-output .navbox-list{line-height:1.5em;border-color:#fdfdfd}.mw-parser-output .navbox-list-with-group{text-align:left;border-left-width:2px;border-left-style:solid}.mw-parser-output tr+tr>.navbox-abovebelow,.mw-parser-output tr+tr>.navbox-group,.mw-parser-output tr+tr>.navbox-image,.mw-parser-output tr+tr>.navbox-list{border-top:2px solid #fdfdfd}.mw-parser-output .navbox-title{background-color:#ccf}.mw-parser-output .navbox-abovebelow,.mw-parser-output .navbox-group,.mw-parser-output .navbox-subgroup .navbox-title{background-color:#ddf}.mw-parser-output .navbox-subgroup .navbox-group,.mw-parser-output .navbox-subgroup .navbox-abovebelow{background-color:#e6e6ff}.mw-parser-output .navbox-even{background-color:#f7f7f7}.mw-parser-output .navbox-odd{background-color:transparent}.mw-parser-output .navbox .hlist td dl,.mw-parser-output .navbox .hlist td ol,.mw-parser-output .navbox .hlist td ul,.mw-parser-output .navbox td.hlist dl,.mw-parser-output .navbox td.hlist ol,.mw-parser-output .navbox td.hlist ul{padding:0.125em 0}.mw-parser-output .navbox .navbar{display:block;font-size:100%}.mw-parser-output .navbox-title .navbar{float:left;text-align:left;margin-right:0.5em}body.skin--responsive .mw-parser-output .navbox-image img{max-width:none!important}@media print{body.ns-0 .mw-parser-output .navbox{display:none!important}}</style><style data-mw-deduplicate="TemplateStyles:r1239334494">@media screen{html.skin-theme-clientpref-night .mw-parser-output div:not(.notheme)>.tmp-color,html.skin-theme-clientpref-night .mw-parser-output p>.tmp-color,html.skin-theme-clientpref-night .mw-parser-output table:not(.notheme) .tmp-color{color:inherit!important}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output div:not(.notheme)>.tmp-color,html.skin-theme-clientpref-os .mw-parser-output p>.tmp-color,html.skin-theme-clientpref-os .mw-parser-output table:not(.notheme) .tmp-color{color:inherit!important}}</style><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1239334494"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1239334494"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1239334494"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1239334494"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1239334494"></div><div role="navigation" class="navbox" aria-labelledby="Design" style="padding:3px"><table class="nowraplinks hlist mw-collapsible mw-collapsed navbox-inner" style="border-spacing:0;background:transparent;color:inherit"><tbody><tr><th scope="col" class="navbox-title" colspan="2"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1129693374"><style data-mw-deduplicate="TemplateStyles:r1239400231">.mw-parser-output .navbar{display:inline;font-size:88%;font-weight:normal}.mw-parser-output .navbar-collapse{float:left;text-align:left}.mw-parser-output .navbar-boxtext{word-spacing:0}.mw-parser-output .navbar ul{display:inline-block;white-space:nowrap;line-height:inherit}.mw-parser-output .navbar-brackets::before{margin-right:-0.125em;content:"[ "}.mw-parser-output .navbar-brackets::after{margin-left:-0.125em;content:" ]"}.mw-parser-output .navbar li{word-spacing:-0.125em}.mw-parser-output .navbar a>span,.mw-parser-output .navbar a>abbr{text-decoration:inherit}.mw-parser-output .navbar-mini abbr{font-variant:small-caps;border-bottom:none;text-decoration:none;cursor:inherit}.mw-parser-output .navbar-ct-full{font-size:114%;margin:0 7em}.mw-parser-output .navbar-ct-mini{font-size:114%;margin:0 4em}html.skin-theme-clientpref-night .mw-parser-output .navbar li a abbr{color:var(--color-base)!important}@media(prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .navbar li a abbr{color:var(--color-base)!important}}@media print{.mw-parser-output .navbar{display:none!important}}</style><div class="navbar plainlinks hlist navbar-mini"><ul><li class="nv-view"><a href="/wiki/Template:Design" title="Template:Design"><abbr title="View this template">v</abbr></a></li><li class="nv-talk"><a href="/wiki/Template_talk:Design" title="Template talk:Design"><abbr title="Discuss this template">t</abbr></a></li><li class="nv-edit"><a href="/wiki/Special:EditPage/Template:Design" title="Special:EditPage/Template:Design"><abbr title="Edit this template">e</abbr></a></li></ul></div><div id="Design" style="font-size:114%;margin:0 4em"><a href="/wiki/Design" title="Design">Design</a></div></th></tr><tr><td class="navbox-abovebelow hlist" colspan="2"><div> <ul><li><a href="/wiki/Outline_of_design" title="Outline of design">Outline</a></li> <li><a href="/wiki/Designer" title="Designer">Designer</a></li></ul> </div></td></tr><tr><td colspan="2" class="navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"></div><table class="nowraplinks mw-collapsible mw-collapsed navbox-subgroup" style="border-spacing:0"><tbody><tr><th scope="col" class="navbox-title" colspan="2"><div id="Disciplines" style="font-size:114%;margin:0 4em">Disciplines</div></th></tr><tr><td colspan="2" class="navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"></div><table class="nowraplinks navbox-subgroup" style="border-spacing:0"><tbody><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Communication_design" title="Communication design">Communication<br />design</a></th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Advertising" title="Advertising">Advertising</a></li> <li><a href="/wiki/Book_design" title="Book design">Book design</a></li> <li><a href="/wiki/Brand" title="Brand">Brand design</a></li> <li><a href="/wiki/Exhibit_design" title="Exhibit design">Exhibit design</a></li> <li><a href="/wiki/Film_title_design" title="Film title design">Film title design</a></li> <li><a href="/wiki/Graphic_design" title="Graphic design">Graphic design</a> <ul><li><a href="/wiki/Motion_graphic_design" title="Motion graphic design">Motion</a></li> <li><a href="/wiki/Postage_stamp_design" title="Postage stamp design">Postage stamp design</a></li> <li><a href="/wiki/Print_design" title="Print design">Print design</a></li></ul></li> <li><a href="/wiki/Illustration" title="Illustration">Illustration</a></li> <li><a href="/wiki/Information_design" title="Information design">Information design</a></li> <li><a href="/wiki/Instructional_design" title="Instructional design">Instructional design</a></li> <li><a href="/wiki/News_design" title="News design">News design</a></li> <li><a href="/wiki/Photography" title="Photography">Photography</a></li> <li><a href="/wiki/Retail_design" title="Retail design">Retail design</a></li> <li><a href="/wiki/Signage" title="Signage">Signage</a> / <a href="/wiki/Traffic_sign_design" title="Traffic sign design">Traffic sign design</a></li> <li><a href="/wiki/Typography" title="Typography">Typography</a> / <a href="/wiki/Type_design" title="Type design">Type design</a></li> <li><a href="/wiki/Video_design" title="Video design">Video design</a></li> <li><a href="/wiki/Visual_merchandising" title="Visual merchandising">Visual merchandising</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Environmental_design" title="Environmental design">Environmental<br />design</a></th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Architecture" title="Architecture">Architecture</a></li> <li><a href="/wiki/Architectural_lighting_design" title="Architectural lighting design">Architectural lighting design</a></li> <li><a href="/wiki/Building_design" title="Building design">Building design</a> <ul><li><a href="/wiki/Passive_solar_building_design" title="Passive solar building design">Passive solar</a></li></ul></li> <li><a href="/wiki/Ecological_design" title="Ecological design">Ecological design</a></li> <li><a href="/wiki/Environmental_impact_design" title="Environmental impact design">Environmental impact design</a></li> <li><a href="/wiki/Garden_design" title="Garden design">Garden design</a> <ul><li><a href="/wiki/Computer-aided_garden_design" title="Computer-aided garden design">Computer-aided</a></li></ul></li> <li><a href="/wiki/Healthy_community_design" title="Healthy community design">Healthy community design</a></li> <li><a href="/wiki/Hotel_design" title="Hotel design">Hotel design</a></li> <li><a href="/wiki/Interior_architecture" title="Interior architecture">Interior architecture</a></li> <li><a href="/wiki/Interior_design" title="Interior design">Interior design</a> <ul><li><a href="/wiki/Experiential_interior_design" title="Experiential interior design">EID</a></li></ul></li> <li><a href="/wiki/Keyline_design" title="Keyline design">Keyline design</a></li> <li><a href="/wiki/Landscape_architecture" title="Landscape architecture">Landscape architecture</a> <ul><li><a href="/wiki/Sustainable_landscape_architecture" title="Sustainable landscape architecture">Sustainable</a></li></ul></li> <li><a href="/wiki/Landscape_design" title="Landscape design">Landscape design</a></li> <li><a href="/wiki/Spatial_design" title="Spatial design">Spatial design</a></li> <li><a href="/wiki/Urban_design" title="Urban design">Urban design</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Industrial_design" title="Industrial design">Industrial<br />design</a></th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Automotive_design" title="Automotive design">Automotive design</a></li> <li><a href="/wiki/Automotive_suspension_design_process" title="Automotive suspension design process">Automotive suspension design</a></li> <li><a href="/wiki/CMF_design" title="CMF design">CMF design</a></li> <li><a href="/wiki/Corrugated_box_design" title="Corrugated box design">Corrugated box design</a></li> <li><a href="/wiki/Electric_guitar_design" title="Electric guitar design">Electric guitar design</a></li> <li><a href="/wiki/Furniture" title="Furniture">Furniture design</a> <ul><li><a href="/wiki/Sustainable_furniture_design" title="Sustainable furniture design">Sustainable</a></li></ul></li> <li><a href="/wiki/Hardware_interface_design" title="Hardware interface design">Hardware interface design</a></li> <li><a href="/wiki/Motorcycle_design" title="Motorcycle design">Motorcycle design</a></li> <li><a href="/wiki/Packaging_and_labeling" class="mw-redirect" title="Packaging and labeling">Packaging and labeling</a></li> <li><a href="/wiki/Photographic_lens_design" title="Photographic lens design">Photographic lens design</a></li> <li><a href="/wiki/Product_design" title="Product design">Product design</a></li> <li><a href="/wiki/Production_designer" title="Production designer">Production design</a></li> <li><a href="/wiki/Sensory_design" title="Sensory design">Sensory design</a></li> <li><a href="/wiki/Service_design" title="Service design">Service design</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Interaction_design" title="Interaction design">Interaction<br />design</a></th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Experience_design" class="mw-redirect" title="Experience design">Experience design</a> <ul><li><a href="/wiki/Employee_experience_design" title="Employee experience design">EED</a></li></ul></li> <li><a href="/wiki/Game_design" title="Game design">Game design</a> <ul><li><a href="/wiki/Level_(video_games)" title="Level (video games)">Level design</a></li> <li><a href="/wiki/Video_game_design" title="Video game design">Video game design</a></li></ul></li> <li><a href="/wiki/Hardware_interface_design" title="Hardware interface design">Hardware interface design</a></li> <li><a href="/wiki/Icon_design" title="Icon design">Icon design</a></li> <li><a href="/wiki/Immersive_design" title="Immersive design">Immersive design</a></li> <li><a href="/wiki/Information_design" title="Information design">Information design</a></li> <li><a href="/wiki/Sonic_interaction_design" title="Sonic interaction design">Sonic interaction design</a></li> <li><a href="/wiki/User_experience_design" title="User experience design">User experience design</a></li> <li><a href="/wiki/User_interface_design" title="User interface design">User interface design</a></li> <li><a href="/wiki/Web_design" title="Web design">Web design</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Other<br /><a href="/wiki/Applied_arts" title="Applied arts">applied arts</a></th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Public_art" title="Public art">Public art design</a></li> <li><a href="/wiki/Ceramic_art" title="Ceramic art">Ceramic</a> / <a href="/wiki/Glass_art" title="Glass art">glass design</a></li> <li><a href="/wiki/Fashion_design" title="Fashion design">Fashion design</a> <ul><li><a href="/wiki/Costume_design" title="Costume design">Costume design</a></li> <li><a href="/wiki/Jewellery_design" title="Jewellery design">Jewellery design</a></li></ul></li> <li><a href="/wiki/Floral_design" title="Floral design">Floral design</a></li> <li><a href="/wiki/Game_art_design" title="Game art design">Game art design</a></li> <li><a href="/wiki/Property_designer" class="mw-redirect" title="Property designer">Property design</a></li> <li><a href="/wiki/Scenic_design" title="Scenic design">Scenic design</a></li> <li><a href="/wiki/Sound_design" title="Sound design">Sound design</a></li> <li><a href="/wiki/Lighting_design" title="Lighting design">Stage/set lighting design</a></li> <li><a href="/wiki/Textile_design" title="Textile design">Textile design</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Other<br />design<br />& <a href="/wiki/Engineering" title="Engineering">engineering</a></th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Algorithm_design" class="mw-redirect" title="Algorithm design">Algorithm design</a></li> <li><a href="/wiki/Behavioural_design" title="Behavioural design">Behavioural design</a></li> <li><a href="/wiki/Boiler_design" title="Boiler design">Boiler design</a></li> <li><a href="/wiki/Database_design" title="Database design">Database design</a></li> <li><a href="/wiki/Drug_design" title="Drug design">Drug design</a></li> <li><a href="/wiki/Electrical_system_design" title="Electrical system design">Electrical system design</a></li> <li><a href="/wiki/Design_of_experiments" title="Design of experiments">Experimental design</a></li> <li><a href="/wiki/Filter_design" title="Filter design">Filter design</a></li> <li><a href="/wiki/Geometric_design" title="Geometric design">Geometric design</a></li> <li><a href="/wiki/Work_design" title="Work design">Work design</a></li> <li><a href="/wiki/Integrated_circuit_design" title="Integrated circuit design">Integrated circuit design</a> <ul><li><a href="/wiki/Circuit_design" title="Circuit design">Circuit design</a></li> <li><a href="/wiki/Physical_design_(electronics)" title="Physical design (electronics)">Physical design</a></li> <li><a href="/wiki/Power_network_design_(IC)" title="Power network design (IC)">Power network design</a></li></ul></li> <li><a href="/wiki/Mechanism_design" title="Mechanism design">Mechanism design</a></li> <li><a href="/wiki/Nuclear_weapon_design" title="Nuclear weapon design">Nuclear weapon design</a></li> <li><a href="/wiki/Nucleic_acid_design" title="Nucleic acid design">Nucleic acid design</a></li> <li><a href="/wiki/Organizational_architecture" title="Organizational architecture">Organization design</a></li> <li><a href="/wiki/Process_design" title="Process design">Process design</a></li> <li><a href="/wiki/Processor_design" title="Processor design">Processor design</a></li> <li><a href="/wiki/Protein_design" title="Protein design">Protein design</a></li> <li><a href="/wiki/Research_design" title="Research design">Research design</a></li> <li><a href="/wiki/Social_design" title="Social design">Social design</a></li> <li><a href="/wiki/Software_design" title="Software design">Software design</a></li> <li><a href="/wiki/Spacecraft_design" title="Spacecraft design">Spacecraft design</a></li> <li><a href="/wiki/Strategic_design" title="Strategic design">Strategic design</a></li> <li><a href="/wiki/Systems_design" title="Systems design">Systems design</a></li></ul> </div></td></tr></tbody></table><div></div></td></tr></tbody></table><div></div></td></tr><tr><td colspan="2" class="navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"></div><table class="nowraplinks mw-collapsible mw-collapsed navbox-subgroup" style="border-spacing:0"><tbody><tr><th scope="col" class="navbox-title" colspan="2"><div id="Approaches" style="font-size:114%;margin:0 4em">Approaches</div></th></tr><tr><td colspan="2" class="navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Activity-centered_design" title="Activity-centered design">Activity-centered</a></li> <li><a href="/wiki/Adaptive_web_design" title="Adaptive web design">Adaptive web</a></li> <li><a href="/wiki/Affective_design" title="Affective design">Affective</a></li> <li><a href="/wiki/Brainstorming" title="Brainstorming">Brainstorming</a></li> <li><a href="/wiki/Design_by_committee" title="Design by committee">By committee</a></li> <li><a class="mw-selflink selflink">By contract</a></li> <li><a href="/wiki/C-K_theory" title="C-K theory">C-K theory</a></li> <li><a href="/wiki/Design_closure" title="Design closure">Closure</a></li> <li><a href="/wiki/Participatory_design" title="Participatory design">Co-design</a></li> <li><a href="/w/index.php?title=Concept-oriented_design&action=edit&redlink=1" class="new" title="Concept-oriented design (page does not exist)">Concept-oriented</a></li> <li><a href="/wiki/Configuration_design" title="Configuration design">Configuration</a></li> <li><a href="/wiki/Contextual_design" title="Contextual design">Contextual</a></li> <li><a href="/wiki/Continuous_design" title="Continuous design">Continuous</a></li> <li><a href="/wiki/Cradle-to-cradle_design" title="Cradle-to-cradle design">Cradle-to-cradle</a></li> <li><a href="/wiki/Creative_problem-solving" title="Creative problem-solving">Creative problem-solving</a></li> <li><a href="/wiki/Creativity_techniques" title="Creativity techniques">Creativity techniques</a></li> <li><a href="/wiki/Critical_design" title="Critical design">Critical</a> <ul><li><a href="/wiki/Design_fiction" title="Design fiction">Design fiction</a></li></ul></li> <li><a href="/wiki/Defensive_design" title="Defensive design">Defensive</a></li> <li><a href="/wiki/Design%E2%80%93bid%E2%80%93build" title="Design–bid–build">Design–bid–build</a></li> <li><a href="/wiki/Design%E2%80%93build" title="Design–build">Design–build</a> <ul><li><a href="/wiki/Architect-led_design%E2%80%93build" class="mw-redirect" title="Architect-led design–build">architect-led</a></li></ul></li> <li><a href="/wiki/Diffuse_design" title="Diffuse design">Diffuse</a></li> <li><a href="/wiki/Domain-driven_design" title="Domain-driven design">Domain-driven</a></li> <li><a href="/wiki/Ecological_design" title="Ecological design">Ecological design</a></li> <li><a href="/wiki/Energy_neutral_design" title="Energy neutral design">Energy neutral</a></li> <li><a href="/wiki/Engineering_design_process" title="Engineering design process">Engineering design process</a> <ul><li><a href="/wiki/Probabilistic_design" title="Probabilistic design">Probabilistic design</a></li></ul></li> <li><a href="/wiki/Error-tolerant_design" title="Error-tolerant design">Error-tolerant</a></li> <li><a href="/wiki/Fault-tolerant_design" class="mw-redirect" title="Fault-tolerant design">Fault-tolerant</a></li> <li><a href="/wiki/Framework-oriented_design" title="Framework-oriented design">Framework-oriented</a></li> <li><a href="/wiki/Design_for_assembly" title="Design for assembly">For assembly</a></li> <li><a href="/wiki/Behavioural_design" title="Behavioural design">For behaviour change</a></li> <li><a href="/wiki/Design_for_manufacturability" title="Design for manufacturability">For manufacturability</a></li> <li><a href="/wiki/Design_for_Six_Sigma" title="Design for Six Sigma">For Six Sigma</a></li> <li><a href="/wiki/Design_for_testing" title="Design for testing">For testing</a></li> <li><a href="/wiki/Design_for_X" title="Design for X">For X</a></li> <li><a href="/wiki/Functional_design" title="Functional design">Functional</a></li> <li><a href="/wiki/Generative_design" title="Generative design">Generative</a></li> <li><a href="/wiki/Geodesign" title="Geodesign">Geodesign</a></li> <li><a href="/wiki/Human-centered_design" title="Human-centered design">HCD</a></li> <li><a href="/wiki/High-level_design" title="High-level design">High-level</a></li> <li><a href="/wiki/Inclusive_design" title="Inclusive design">Inclusive</a></li> <li><a href="/wiki/Integrated_design" title="Integrated design">Integrated</a></li> <li><a href="/wiki/Integrated_topside_design" title="Integrated topside design">Integrated topside</a></li> <li><a href="/wiki/Intelligence-based_design" title="Intelligence-based design">Intelligence-based</a></li> <li><a href="/wiki/Iterative_design" title="Iterative design">Iterative</a></li> <li><a href="/wiki/KISS_principle" title="KISS principle">KISS principle</a></li> <li><a href="/wiki/Low-level_design" title="Low-level design">Low-level</a></li> <li><a href="/wiki/Metadesign" title="Metadesign">Metadesign</a></li> <li><a href="/wiki/Mind_map" title="Mind map">Mind mapping</a></li> <li><a href="/wiki/Modular_design" title="Modular design">Modular</a></li> <li><a href="/wiki/New_Wave_(design)" title="New Wave (design)">New Wave</a></li> <li><a href="/wiki/Object-oriented_design" class="mw-redirect" title="Object-oriented design">Object-oriented</a></li> <li><a href="/wiki/Open-design_movement" title="Open-design movement">Open</a></li> <li><a href="/wiki/Parametric_design" title="Parametric design">Parametric</a></li> <li><a href="/wiki/Participatory_design" title="Participatory design">Participatory</a></li> <li><a href="/wiki/Platform-based_design" title="Platform-based design">Platform-based</a></li> <li><a href="/wiki/Policy-based_design" class="mw-redirect" title="Policy-based design">Policy-based</a></li> <li><a href="/wiki/Process-centered_design" title="Process-centered design">Process-centered</a></li> <li><a href="/wiki/Public_interest_design" title="Public interest design">Public interest</a></li> <li><a href="/wiki/Rational_design" title="Rational design">Rational</a></li> <li><a href="/wiki/Regenerative_design" title="Regenerative design">Regenerative</a></li> <li><a href="/wiki/Reliability_engineering" title="Reliability engineering">Reliability engineering</a></li> <li><a href="/wiki/Research-based_design" title="Research-based design">Research-based</a></li> <li><a href="/wiki/Responsibility-driven_design" title="Responsibility-driven design">Responsibility-driven</a></li> <li><a href="/wiki/Responsive_web_design" title="Responsive web design">RWD</a></li> <li><a href="/wiki/Safe-life_design" title="Safe-life design">Safe-life</a></li> <li><a href="/wiki/Sustainable_design" title="Sustainable design">Sustainable</a></li> <li><a href="/wiki/Systemic_design" title="Systemic design">Systemic</a> <ul><li><a href="/wiki/Systems-oriented_design" title="Systems-oriented design">SOD</a></li></ul></li> <li><a href="/wiki/Tableless_web_design" title="Tableless web design">Tableless web</a></li> <li><a href="/wiki/Theory_of_constraints" title="Theory of constraints">Theory of constraints</a></li> <li><a href="/wiki/Top-down_and_bottom-up_design" class="mw-redirect" title="Top-down and bottom-up design">Top-down and bottom-up</a></li> <li><a href="/wiki/Transformation_design" title="Transformation design">Transformation</a></li> <li><a href="/wiki/Transgenerational_design" title="Transgenerational design">Transgenerational</a></li> <li><a href="/wiki/TRIZ" title="TRIZ">TRIZ</a></li> <li><a href="/wiki/Universal_design" title="Universal design">Universal</a> <ul><li><a href="/wiki/Design_for_All_(in_ICT)" title="Design for All (in ICT)">Design for All</a></li></ul></li> <li><a href="/wiki/Usage-centered_design" title="Usage-centered design">Usage-centered</a></li> <li><a href="/wiki/Use-centered_design" title="Use-centered design">Use-centered</a></li> <li><a href="/wiki/User-centered_design" title="User-centered design">User-centered</a> <ul><li><a href="/wiki/Empathic_design" title="Empathic design">Empathic</a></li></ul></li> <li><a href="/wiki/User_innovation" title="User innovation">User innovation</a></li> <li><a href="/wiki/Value-driven_design" title="Value-driven design">Value-driven</a></li> <li><a href="/wiki/Value_sensitive_design" title="Value sensitive design">Value sensitive</a> <ul><li><a href="/wiki/Privacy_by_design" title="Privacy by design">Privacy by</a></li></ul></li></ul> <ul><li>Design <a href="/wiki/Design_choice" title="Design choice">choice</a></li> <li><a href="/wiki/Design_computing" title="Design computing">computing</a></li> <li><a href="/wiki/Design_controls" title="Design controls">controls</a></li> <li><a href="/wiki/Design_culture" title="Design culture">culture</a></li> <li><a href="/wiki/Design_flow_(EDA)" title="Design flow (EDA)">flow</a></li> <li><a href="/wiki/Design_leadership" title="Design leadership">leadership</a></li> <li><a href="/wiki/Design_management" title="Design management">management</a></li> <li><a href="/wiki/Design_marker" title="Design marker">marker</a></li> <li><a href="/wiki/Design_methods" title="Design methods">methods</a></li> <li><a href="/wiki/Design_pattern" title="Design pattern">pattern</a></li> <li><a href="/wiki/Design_research" title="Design research">research</a></li> <li><a href="/wiki/Design_science" title="Design science">science</a></li> <li><a href="/wiki/Design_sprint" title="Design sprint">sprint</a></li> <li><a href="/wiki/Design_strategy" class="mw-redirect" title="Design strategy">strategy</a></li> <li><a href="/wiki/Design_theory" title="Design theory">theory</a></li> <li><a href="/wiki/Design_thinking" title="Design thinking">thinking</a></li></ul> </div></td></tr></tbody></table><div></div></td></tr><tr><td colspan="2" class="navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"></div><table class="nowraplinks mw-collapsible mw-collapsed navbox-subgroup" style="border-spacing:0"><tbody><tr><th scope="col" class="navbox-title" colspan="2"><div id="ToolsIntellectual_propertyOrganizationsAwards" style="font-size:114%;margin:0 4em"><div class="hlist"><ul><li>Tools</li><li>Intellectual property</li><li>Organizations</li><li>Awards</li></ul></div></div></th></tr><tr><td colspan="2" class="navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"></div><table class="nowraplinks navbox-subgroup" style="border-spacing:0"><tbody><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Design_tool" title="Design tool">Tools</a></th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Algorithms-Aided_Design" title="Algorithms-Aided Design">AAD</a></li> <li><a href="/wiki/Architectural_model" title="Architectural model">Architectural model</a></li> <li><a href="/wiki/Blueprint" title="Blueprint">Blueprint</a></li> <li><a href="/wiki/Comprehensive_layout" title="Comprehensive layout">Comprehensive layout</a></li> <li><a href="/wiki/Computer-aided_design" title="Computer-aided design">CAD</a> <ul><li><a href="/wiki/Computer-aided_industrial_design" title="Computer-aided industrial design">CAID</a></li> <li><a href="/wiki/Virtual_home_design_software" title="Virtual home design software">Virtual home design software</a></li></ul></li> <li><a href="/wiki/Computer-automated_design" title="Computer-automated design">CAutoD</a></li> <li><a href="/wiki/Design_quality_indicator" title="Design quality indicator">Design quality indicator</a></li> <li><a href="/wiki/Electronic_design_automation" title="Electronic design automation">Electronic design automation</a></li> <li><a href="/wiki/Flowchart" title="Flowchart">Flowchart</a></li> <li><a href="/wiki/Mockup" title="Mockup">Mockup</a></li> <li><a href="/wiki/Design_specification" title="Design specification">Design specification</a></li> <li><a href="/wiki/Prototype" title="Prototype">Prototype</a></li> <li><a href="/wiki/Sketch_(drawing)" title="Sketch (drawing)">Sketch</a></li> <li><a href="/wiki/Storyboard" title="Storyboard">Storyboard</a></li> <li><a href="/wiki/Technical_drawing" title="Technical drawing">Technical drawing</a></li> <li><a href="/wiki/HTML_editor" title="HTML editor">HTML editor</a></li> <li><a href="/wiki/Website_wireframe" title="Website wireframe">Website wireframe</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Intellectual<br />property</th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Community_design" title="Community design">Community design</a></li> <li><a href="/wiki/Design_around" title="Design around">Design around</a></li> <li><a href="/wiki/Design_infringement" title="Design infringement">Design infringement</a></li> <li><a href="/wiki/Design_patent" title="Design patent">Design patent</a></li> <li><a href="/wiki/Fashion_design_copyright" title="Fashion design copyright">Fashion design copyright</a></li> <li><i><a href="/wiki/Geschmacksmuster" title="Geschmacksmuster">Geschmacksmuster</a></i></li> <li><a href="/wiki/Industrial_design_right" title="Industrial design right">Industrial design rights</a> <ul><li><a href="/wiki/Industrial_design_rights_in_the_European_Union" title="Industrial design rights in the European Union">European Union</a></li></ul></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Organizations</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/American_Institute_of_Graphic_Arts" title="American Institute of Graphic Arts">American Institute of Graphic Arts</a></li> <li><a href="/wiki/Chartered_Society_of_Designers" title="Chartered Society of Designers">Chartered Society of Designers</a></li> <li><a href="/wiki/Design_and_Industries_Association" title="Design and Industries Association">Design and Industries Association</a></li> <li><a href="/wiki/Design_Council" title="Design Council">Design Council</a></li> <li><a href="/wiki/International_Forum_Design" title="International Forum Design">International Forum Design</a></li> <li><a href="/wiki/Design_Research_Society" title="Design Research Society">Design Research Society</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Awards</th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/European_Design_Award" class="mw-redirect" title="European Design Award">European Design Award</a></li> <li><a href="/wiki/German_Design_Award" title="German Design Award">German Design Award</a></li> <li><a href="/wiki/Good_Design_Award_(Museum_of_Modern_Art)" title="Good Design Award (Museum of Modern Art)">Good Design Award (Museum of Modern Art)</a></li> <li><a href="/wiki/Good_Design_Award_(Chicago_Athenaeum)" class="mw-redirect" title="Good Design Award (Chicago Athenaeum)">Good Design Award (Chicago Athenaeum)</a></li> <li><a href="/wiki/Graphex" class="mw-redirect" title="Graphex">Graphex</a></li> <li><a href="/wiki/IF_Product_Design_Award" title="IF Product Design Award">IF Product Design Award</a></li> <li><a href="/wiki/James_Dyson_Award" title="James Dyson Award">James Dyson Award</a></li> <li><a href="/wiki/Prince_Philip_Designers_Prize" title="Prince Philip Designers Prize">Prince Philip Designers Prize</a></li></ul> </div></td></tr></tbody></table><div></div></td></tr></tbody></table><div></div></td></tr><tr><td colspan="2" class="navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"></div><table class="nowraplinks mw-collapsible mw-collapsed navbox-subgroup" style="border-spacing:0"><tbody><tr><th scope="col" class="navbox-title" colspan="2"><div id="Related_topics" style="font-size:114%;margin:0 4em">Related topics</div></th></tr><tr><td colspan="2" class="navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Agile_software_development" title="Agile software development">Agile</a></li> <li><a href="/wiki/Concept_art" title="Concept art">Concept art</a></li> <li><a href="/wiki/Conceptual_design" title="Conceptual design">Conceptual design</a></li> <li><a href="/wiki/Creative_industries" title="Creative industries">Creative industries</a></li> <li><a href="/wiki/Cultural_icon" title="Cultural icon">Cultural icon</a></li> <li><a href="/wiki/.design" title=".design">.design</a></li> <li><a href="/wiki/Enterprise_architecture" title="Enterprise architecture">Enterprise architecture</a></li> <li><a href="/wiki/Form_factor_(design)" title="Form factor (design)">Form factor</a></li> <li><a href="/wiki/Futures_studies" title="Futures studies">Futures studies</a></li> <li><a href="/wiki/Indie_design" title="Indie design">Indie design</a></li> <li><a href="/wiki/Innovation_management" title="Innovation management">Innovation management</a></li> <li><a href="/wiki/Intelligent_design" title="Intelligent design">Intelligent design</a></li> <li><a href="/wiki/Lean_startup" title="Lean startup">Lean startup</a></li> <li><a href="/wiki/New_product_development" title="New product development">New product development</a></li> <li><a href="/wiki/OODA_loop" title="OODA loop">OODA loop</a></li> <li><a href="/wiki/Philosophy_of_design" title="Philosophy of design">Philosophy of design</a></li> <li><a href="/wiki/Process_simulation" title="Process simulation">Process simulation</a></li> <li><a href="/wiki/Slow_design" class="mw-redirect" title="Slow design">Slow design</a></li> <li><a href="/wiki/STEAM_fields" class="mw-redirect" title="STEAM fields">STEAM fields</a></li> <li><a href="/wiki/Argument_from_poor_design" title="Argument from poor design">Unintelligent design</a></li> <li><a href="/wiki/Visualization_(graphics)" title="Visualization (graphics)">Visualization</a></li> <li><a href="/wiki/Wicked_problem" title="Wicked problem">Wicked problem</a></li></ul> <ul><li>Design <a href="/wiki/Design_brief" title="Design brief">brief</a></li> <li><a href="/wiki/Design_change" title="Design change">change</a></li> <li><a href="/wiki/Design_classic" title="Design classic">classic</a></li> <li><a href="/wiki/Design_competition" title="Design competition">competition</a> <ul><li><a href="/wiki/Architectural_design_competition" title="Architectural design competition">architectural</a></li> <li><a href="/wiki/Student_design_competition" title="Student design competition">student</a></li></ul></li> <li><a href="/wiki/Design_director" title="Design director">director</a></li> <li><a href="/wiki/Design_education" title="Design education">education</a></li> <li><a href="/wiki/Design_elements" title="Design elements">elements</a></li> <li><a href="/wiki/Design_engineer" title="Design engineer">engineer</a></li> <li><a href="/wiki/Design_firm" class="mw-redirect" title="Design firm">firm</a></li> <li><a href="/wiki/Design_history" title="Design history">history</a></li> <li><a href="/wiki/Design_knowledge" title="Design knowledge">knowledge</a></li> <li><a href="/wiki/Design_language" title="Design language">language</a></li> <li><a href="/wiki/Design_life" title="Design life">life</a></li> <li><a href="/wiki/Design_load" title="Design load">load</a></li> <li><a href="/wiki/Design_museum" title="Design museum">museum</a></li> <li><a href="/wiki/Design_paradigm" title="Design paradigm">paradigm</a></li> <li><a href="/wiki/Design_principles" title="Design principles">principles</a></li> <li><a href="/wiki/Design_rationale" title="Design rationale">rationale</a></li> <li><a href="/wiki/Design_review" title="Design review">review</a></li> <li><a href="/wiki/Design_specification" title="Design specification">specification</a></li> <li><a href="/wiki/Design_studies" title="Design studies">studies</a></li> <li><a href="/wiki/Design_studio" class="mw-redirect" title="Design studio">studio</a></li> <li><a href="/wiki/Design_technology" title="Design technology">technology</a></li></ul> </div></td></tr></tbody></table><div></div></td></tr><tr><td class="navbox-abovebelow" colspan="2"><div> <ul><li><a href="https://commons.wikimedia.org/wiki/category:Design" class="extiw" title="commons:category:Design"> <span class="tmp-color" style="color:#002bb8">Commons</span> </a></li> <li><a href="https://en.wikibooks.org/wiki/Design" class="extiw" title="wikibooks:Design"> <span class="tmp-color" style="color:#002bb8">Wikibooks</span> </a></li> <li><a href="https://en.wikinews.org/wiki/Special:Search/Design" class="extiw" title="wikinews:Special:Search/Design"> <span class="tmp-color" style="color:#002bb8">Wikinews</span> </a></li> <li><a href="https://en.wikiquote.org/wiki/Design" class="extiw" title="wikiquote:Design"> <span class="tmp-color" style="color:#002bb8">Wikiquote</span> </a></li> <li><a href="https://en.wikisource.org/wiki/Category:Design" class="extiw" title="wikisource:Category:Design"> <span class="tmp-color" style="color:#002bb8">Wikisource</span> </a></li> <li><a href="https://en.wiktionary.org/wiki/Design" class="extiw" title="wiktionary:Design"> <span class="tmp-color" style="color:#002bb8">Wiktionary</span> </a></li></ul> </div></td></tr></tbody></table></div> <!-- NewPP limit report Parsed by mw‐web.codfw.main‐f69cdc8f6‐vkl22 Cached time: 20241122140419 Cache expiry: 2592000 Reduced expiry: false Complications: [vary‐revision‐sha1, show‐toc] CPU time usage: 0.361 seconds Real time usage: 0.486 seconds Preprocessor visited node count: 1787/1000000 Post‐expand include size: 85199/2097152 bytes Template argument size: 3577/2097152 bytes Highest expansion depth: 17/100 Expensive parser function count: 4/500 Unstrip recursion depth: 1/20 Unstrip post‐expand size: 44401/5000000 bytes Lua time usage: 0.193/10.000 seconds Lua memory usage: 5507696/52428800 bytes Number of Wikibase entities loaded: 0/400 --> <!-- Transclusion expansion time report (%,ms,calls,template) 100.00% 368.221 1 -total 34.44% 126.826 1 Template:Reflist 33.56% 123.563 1 Template:Design 32.97% 121.419 1 Template:Navbox_with_collapsible_groups 26.08% 96.029 8 Template:Cite_web 16.39% 60.355 1 Template:Short_description 11.67% 42.964 4 Template:Fix 9.41% 34.666 2 Template:Pagetype 8.98% 33.055 1 Template:Cn 7.53% 27.736 1 Template:Hlist --> <!-- Saved in parser cache with key enwiki:pcache:idhash:39289-0!canonical and timestamp 20241122140419 and revision id 1258581473. Rendering was triggered because: page-view --> </div><!--esi <esi:include src="/esitest-fa8a495983347898/content" /> --><noscript><img src="https://login.wikimedia.org/wiki/Special:CentralAutoLogin/start?type=1x1" alt="" width="1" height="1" style="border: none; position: absolute;"></noscript> <div class="printfooter" data-nosnippet="">Retrieved from "<a dir="ltr" href="https://en.wikipedia.org/w/index.php?title=Design_by_contract&oldid=1258581473">https://en.wikipedia.org/w/index.php?title=Design_by_contract&oldid=1258581473</a>"</div></div> <div id="catlinks" class="catlinks" data-mw="interface"><div id="mw-normal-catlinks" class="mw-normal-catlinks"><a href="/wiki/Help:Category" title="Help:Category">Categories</a>: <ul><li><a href="/wiki/Category:Software_design" title="Category:Software design">Software design</a></li><li><a href="/wiki/Category:Programming_paradigms" title="Category:Programming paradigms">Programming paradigms</a></li></ul></div><div id="mw-hidden-catlinks" class="mw-hidden-catlinks mw-hidden-cats-hidden">Hidden categories: <ul><li><a href="/wiki/Category:All_articles_with_dead_external_links" title="Category:All articles with dead external links">All articles with dead external links</a></li><li><a href="/wiki/Category:Articles_with_dead_external_links_from_February_2024" title="Category:Articles with dead external links from February 2024">Articles with dead external links from February 2024</a></li><li><a href="/wiki/Category:Articles_with_short_description" title="Category:Articles with short description">Articles with short description</a></li><li><a href="/wiki/Category:Short_description_is_different_from_Wikidata" title="Category:Short description is different from Wikidata">Short description is different from Wikidata</a></li><li><a href="/wiki/Category:All_articles_with_unsourced_statements" title="Category:All articles with unsourced statements">All articles with unsourced statements</a></li><li><a href="/wiki/Category:Articles_with_unsourced_statements_from_June_2019" title="Category:Articles with unsourced statements from June 2019">Articles with unsourced statements from June 2019</a></li><li><a href="/wiki/Category:Articles_with_unsourced_statements_from_September_2012" title="Category:Articles with unsourced statements from September 2012">Articles with unsourced statements from September 2012</a></li></ul></div></div> </div> </main> </div> <div class="mw-footer-container"> <footer id="footer" class="mw-footer" > <ul id="footer-info"> <li id="footer-info-lastmod"> This page was last edited on 20 November 2024, at 14:10<span class="anonymous-show"> (UTC)</span>.</li> <li id="footer-info-copyright">Text is available under the <a href="/wiki/Wikipedia:Text_of_the_Creative_Commons_Attribution-ShareAlike_4.0_International_License" title="Wikipedia:Text of the Creative Commons Attribution-ShareAlike 4.0 International License">Creative Commons Attribution-ShareAlike 4.0 License</a>; additional terms may apply. By using this site, you agree to the <a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Terms_of_Use" class="extiw" title="foundation:Special:MyLanguage/Policy:Terms of Use">Terms of Use</a> and <a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Privacy_policy" class="extiw" title="foundation:Special:MyLanguage/Policy:Privacy policy">Privacy Policy</a>. Wikipedia® is a registered trademark of the <a rel="nofollow" class="external text" href="https://wikimediafoundation.org/">Wikimedia Foundation, Inc.</a>, a non-profit organization.</li> </ul> <ul id="footer-places"> <li id="footer-places-privacy"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Privacy_policy">Privacy policy</a></li> <li id="footer-places-about"><a href="/wiki/Wikipedia:About">About Wikipedia</a></li> <li id="footer-places-disclaimers"><a href="/wiki/Wikipedia:General_disclaimer">Disclaimers</a></li> <li id="footer-places-contact"><a href="//en.wikipedia.org/wiki/Wikipedia:Contact_us">Contact Wikipedia</a></li> <li id="footer-places-wm-codeofconduct"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Universal_Code_of_Conduct">Code of Conduct</a></li> <li id="footer-places-developers"><a href="https://developer.wikimedia.org">Developers</a></li> <li id="footer-places-statslink"><a href="https://stats.wikimedia.org/#/en.wikipedia.org">Statistics</a></li> <li id="footer-places-cookiestatement"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Cookie_statement">Cookie statement</a></li> <li id="footer-places-mobileview"><a href="//en.m.wikipedia.org/w/index.php?title=Design_by_contract&mobileaction=toggle_view_mobile" class="noprint stopMobileRedirectToggle">Mobile view</a></li> </ul> <ul id="footer-icons" class="noprint"> <li id="footer-copyrightico"><a href="https://wikimediafoundation.org/" class="cdx-button cdx-button--fake-button cdx-button--size-large cdx-button--fake-button--enabled"><img src="/static/images/footer/wikimedia-button.svg" width="84" height="29" alt="Wikimedia Foundation" loading="lazy"></a></li> <li id="footer-poweredbyico"><a href="https://www.mediawiki.org/" class="cdx-button cdx-button--fake-button cdx-button--size-large cdx-button--fake-button--enabled"><img src="/w/resources/assets/poweredby_mediawiki.svg" alt="Powered by MediaWiki" width="88" height="31" loading="lazy"></a></li> </ul> </footer> </div> </div> </div> <div class="vector-settings" id="p-dock-bottom"> <ul></ul> </div><script>(RLQ=window.RLQ||[]).push(function(){mw.config.set({"wgHostname":"mw-web.codfw.main-f69cdc8f6-wdqp9","wgBackendResponseTime":125,"wgPageParseReport":{"limitreport":{"cputime":"0.361","walltime":"0.486","ppvisitednodes":{"value":1787,"limit":1000000},"postexpandincludesize":{"value":85199,"limit":2097152},"templateargumentsize":{"value":3577,"limit":2097152},"expansiondepth":{"value":17,"limit":100},"expensivefunctioncount":{"value":4,"limit":500},"unstrip-depth":{"value":1,"limit":20},"unstrip-size":{"value":44401,"limit":5000000},"entityaccesscount":{"value":0,"limit":400},"timingprofile":["100.00% 368.221 1 -total"," 34.44% 126.826 1 Template:Reflist"," 33.56% 123.563 1 Template:Design"," 32.97% 121.419 1 Template:Navbox_with_collapsible_groups"," 26.08% 96.029 8 Template:Cite_web"," 16.39% 60.355 1 Template:Short_description"," 11.67% 42.964 4 Template:Fix"," 9.41% 34.666 2 Template:Pagetype"," 8.98% 33.055 1 Template:Cn"," 7.53% 27.736 1 Template:Hlist"]},"scribunto":{"limitreport-timeusage":{"value":"0.193","limit":"10.000"},"limitreport-memusage":{"value":5507696,"limit":52428800}},"cachereport":{"origin":"mw-web.codfw.main-f69cdc8f6-vkl22","timestamp":"20241122140419","ttl":2592000,"transientcontent":false}}});});</script> <script type="application/ld+json">{"@context":"https:\/\/schema.org","@type":"Article","name":"Design by contract","url":"https:\/\/en.wikipedia.org\/wiki\/Design_by_contract","sameAs":"http:\/\/www.wikidata.org\/entity\/Q1200691","mainEntity":"http:\/\/www.wikidata.org\/entity\/Q1200691","author":{"@type":"Organization","name":"Contributors to Wikimedia projects"},"publisher":{"@type":"Organization","name":"Wikimedia Foundation, Inc.","logo":{"@type":"ImageObject","url":"https:\/\/www.wikimedia.org\/static\/images\/wmf-hor-googpub.png"}},"datePublished":"2002-02-15T18:17:20Z","dateModified":"2024-11-20T14:10:56Z","image":"https:\/\/upload.wikimedia.org\/wikipedia\/commons\/e\/ea\/Design_by_contract.svg","headline":"design of software based on formal, precise and verifiable interface specifications for software components"}</script> </body> </html>