CINXE.COM
Coupling (computer programming) - 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>Coupling (computer programming) - 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":"1b2b6111-3e03-4a89-ae34-189a29a4d1f7","wgCanonicalNamespace":"","wgCanonicalSpecialPageName":false,"wgNamespaceNumber":0,"wgPageName":"Coupling_(computer_programming)","wgTitle":"Coupling (computer programming)","wgCurRevisionId":1258340686,"wgRevisionId":1258340686,"wgArticleId":1425449,"wgIsArticle":true,"wgIsRedirect":false,"wgAction":"view","wgUserName":null,"wgUserGroups":["*"],"wgCategories":["CS1 maint: location missing publisher","Articles with short description","Short description is different from Wikidata","All articles with unsourced statements","Articles with unsourced statements from October 2013","Webarchive template wayback links","Programming principles","Object-oriented programming","Software architecture","Software metrics"],"wgPageViewLanguage":"en","wgPageContentLanguage":"en","wgPageContentModel":"wikitext", "wgRelevantPageName":"Coupling_(computer_programming)","wgRelevantArticleId":1425449,"wgIsProbablyEditable":true,"wgRelevantPageIsProbablyEditable":true,"wgRestrictionEdit":[],"wgRestrictionMove":[],"wgRedirectedFrom":"Coupling_(computer_science)","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,"wgInternalRedirectTargetUrl":"/wiki/Coupling_(computer_programming)","wgRelatedArticlesCompat":[],"wgCentralAuthMobileDomain":false,"wgEditSubmitButtonLabelPublish":true,"wgULSPosition":"interlanguage","wgULSisCompactLinksEnabled":false,"wgVector2022LanguageInHeader":true, "wgULSisLanguageSelectorEmpty":false,"wgWikibaseItemId":"Q253448","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","ext.math.styles":"ready","skins.vector.search.codex.styles":"ready","skins.vector.styles":"ready","skins.vector.icons":"ready","ext.wikimediamessages.styles":"ready","ext.visualEditor.desktopArticleTarget.noscript":"ready","ext.uls.interlanguage":"ready","wikibase.client.init":"ready","ext.wikimediaBadges":"ready"};RLPAGEMODULES=["mediawiki.action.view.redirect","ext.cite.ux-enhancements","mediawiki.page.media","site", "mediawiki.page.ready","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.math.styles%7Cext.uls.interlanguage%7Cext.visualEditor.desktopArticleTarget.noscript%7Cext.wikimediaBadges%7Cext.wikimediamessages.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/0/09/CouplingVsCohesion.svg/1200px-CouplingVsCohesion.svg.png"> <meta property="og:image:width" content="1200"> <meta property="og:image:height" content="1045"> <meta property="og:image" content="https://upload.wikimedia.org/wikipedia/commons/thumb/0/09/CouplingVsCohesion.svg/800px-CouplingVsCohesion.svg.png"> <meta property="og:image:width" content="800"> <meta property="og:image:height" content="697"> <meta property="og:image" content="https://upload.wikimedia.org/wikipedia/commons/thumb/0/09/CouplingVsCohesion.svg/640px-CouplingVsCohesion.svg.png"> <meta property="og:image:width" content="640"> <meta property="og:image:height" content="557"> <meta name="viewport" content="width=1120"> <meta property="og:title" content="Coupling (computer programming) - 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/Coupling_(computer_programming)"> <link rel="alternate" type="application/x-wiki" title="Edit this page" href="/w/index.php?title=Coupling_(computer_programming)&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/Coupling_(computer_programming)"> <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-Coupling_computer_programming rootpage-Coupling_computer_programming 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=Coupling+%28computer+programming%29" 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=Coupling+%28computer+programming%29" 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=Coupling+%28computer+programming%29" 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=Coupling+%28computer+programming%29" 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-Types_of_coupling" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Types_of_coupling"> <div class="vector-toc-text"> <span class="vector-toc-numb">2</span> <span>Types of coupling</span> </div> </a> <button aria-controls="toc-Types_of_coupling-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 Types of coupling subsection</span> </button> <ul id="toc-Types_of_coupling-sublist" class="vector-toc-list"> <li id="toc-Procedural_programming" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Procedural_programming"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.1</span> <span>Procedural programming</span> </div> </a> <ul id="toc-Procedural_programming-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Object-oriented_programming" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Object-oriented_programming"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.2</span> <span>Object-oriented programming</span> </div> </a> <ul id="toc-Object-oriented_programming-sublist" class="vector-toc-list"> <li id="toc-Dynamic_coupling" class="vector-toc-list-item vector-toc-level-3"> <a class="vector-toc-link" href="#Dynamic_coupling"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.2.1</span> <span>Dynamic coupling</span> </div> </a> <ul id="toc-Dynamic_coupling-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Semantic_coupling" class="vector-toc-list-item vector-toc-level-3"> <a class="vector-toc-link" href="#Semantic_coupling"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.2.2</span> <span>Semantic coupling</span> </div> </a> <ul id="toc-Semantic_coupling-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Logical_coupling" class="vector-toc-list-item vector-toc-level-3"> <a class="vector-toc-link" href="#Logical_coupling"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.2.3</span> <span>Logical coupling</span> </div> </a> <ul id="toc-Logical_coupling-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> </ul> </li> <li id="toc-Dimensions_of_coupling" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Dimensions_of_coupling"> <div class="vector-toc-text"> <span class="vector-toc-numb">3</span> <span>Dimensions of coupling</span> </div> </a> <ul id="toc-Dimensions_of_coupling-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Disadvantages_of_tight_coupling" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Disadvantages_of_tight_coupling"> <div class="vector-toc-text"> <span class="vector-toc-numb">4</span> <span>Disadvantages of tight coupling</span> </div> </a> <ul id="toc-Disadvantages_of_tight_coupling-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Performance_issues" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Performance_issues"> <div class="vector-toc-text"> <span class="vector-toc-numb">5</span> <span>Performance issues</span> </div> </a> <ul id="toc-Performance_issues-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Solutions" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Solutions"> <div class="vector-toc-text"> <span class="vector-toc-numb">6</span> <span>Solutions</span> </div> </a> <ul id="toc-Solutions-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Coupling_versus_cohesion" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Coupling_versus_cohesion"> <div class="vector-toc-text"> <span class="vector-toc-numb">7</span> <span>Coupling versus cohesion</span> </div> </a> <ul id="toc-Coupling_versus_cohesion-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Module_coupling" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Module_coupling"> <div class="vector-toc-text"> <span class="vector-toc-numb">8</span> <span>Module coupling</span> </div> </a> <ul id="toc-Module_coupling-sublist" class="vector-toc-list"> </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">9</span> <span>See also</span> </div> </a> <ul id="toc-See_also-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-References" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#References"> <div class="vector-toc-text"> <span class="vector-toc-numb">10</span> <span>References</span> </div> </a> <ul id="toc-References-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Further_reading" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Further_reading"> <div class="vector-toc-text"> <span class="vector-toc-numb">11</span> <span>Further reading</span> </div> </a> <ul id="toc-Further_reading-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">Coupling (computer programming)</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 21 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-21" 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">21 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%A7%D9%82%D8%AA%D8%B1%D8%A7%D9%86_(%D8%AD%D8%A7%D8%B3%D9%88%D8%A8)" 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-bg mw-list-item"><a href="https://bg.wikipedia.org/wiki/%D0%A1%D0%B2%D1%8A%D1%80%D0%B7%D0%B0%D0%BD%D0%BE%D1%81%D1%82_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%B8%D1%80%D0%B0%D0%BD%D0%B5)" title="Свързаност (програмиране) – Bulgarian" lang="bg" hreflang="bg" data-title="Свързаност (програмиране)" data-language-autonym="Български" data-language-local-name="Bulgarian" class="interlanguage-link-target"><span>Български</span></a></li><li class="interlanguage-link interwiki-ca mw-list-item"><a href="https://ca.wikipedia.org/wiki/Acoblament_(inform%C3%A0tica)" title="Acoblament (informàtica) – Catalan" lang="ca" hreflang="ca" data-title="Acoblament (informàtica)" data-language-autonym="Català" data-language-local-name="Catalan" class="interlanguage-link-target"><span>Català</span></a></li><li class="interlanguage-link interwiki-cs mw-list-item"><a href="https://cs.wikipedia.org/wiki/Prov%C3%A1zanost" title="Provázanost – Czech" lang="cs" hreflang="cs" data-title="Provázanost" 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-de mw-list-item"><a href="https://de.wikipedia.org/wiki/Kopplung_(Softwareentwicklung)" title="Kopplung (Softwareentwicklung) – German" lang="de" hreflang="de" data-title="Kopplung (Softwareentwicklung)" data-language-autonym="Deutsch" data-language-local-name="German" class="interlanguage-link-target"><span>Deutsch</span></a></li><li class="interlanguage-link interwiki-et mw-list-item"><a href="https://et.wikipedia.org/wiki/Sidestus" title="Sidestus – Estonian" lang="et" hreflang="et" data-title="Sidestus" data-language-autonym="Eesti" data-language-local-name="Estonian" class="interlanguage-link-target"><span>Eesti</span></a></li><li class="interlanguage-link interwiki-es mw-list-item"><a href="https://es.wikipedia.org/wiki/Acoplamiento_(inform%C3%A1tica)" title="Acoplamiento (informática) – Spanish" lang="es" hreflang="es" data-title="Acoplamiento (informática)" 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-fa mw-list-item"><a href="https://fa.wikipedia.org/wiki/%D8%AC%D9%81%D8%AA%DA%AF%D8%B1%DB%8C_(%D8%AF%D8%A7%D9%86%D8%B4_%D8%B1%D8%A7%DB%8C%D8%A7%D9%86%D9%87)" title="جفتگری (دانش رایانه) – Persian" lang="fa" hreflang="fa" data-title="جفتگری (دانش رایانه)" data-language-autonym="فارسی" data-language-local-name="Persian" class="interlanguage-link-target"><span>فارسی</span></a></li><li class="interlanguage-link interwiki-fr mw-list-item"><a href="https://fr.wikipedia.org/wiki/Couplage_(informatique)" title="Couplage (informatique) – French" lang="fr" hreflang="fr" data-title="Couplage (informatique)" 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%B2%B0%ED%95%A9%EB%8F%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/Accoppiamento_(informatica)" title="Accoppiamento (informatica) – Italian" lang="it" hreflang="it" data-title="Accoppiamento (informatica)" 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%A6%D7%99%D7%9E%D7%95%D7%93_(%D7%AA%D7%95%D7%9B%D7%A0%D7%94)" 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/Csatolts%C3%A1g_(sz%C3%A1m%C3%ADt%C3%B3g%C3%A9pes_programoz%C3%A1s)" title="Csatoltság (számítógépes programozás) – Hungarian" lang="hu" hreflang="hu" data-title="Csatoltság (számítógépes 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-mt mw-list-item"><a href="https://mt.wikipedia.org/wiki/Dipendenza_(Informatika)" title="Dipendenza (Informatika) – Maltese" lang="mt" hreflang="mt" data-title="Dipendenza (Informatika)" data-language-autonym="Malti" data-language-local-name="Maltese" class="interlanguage-link-target"><span>Malti</span></a></li><li class="interlanguage-link interwiki-ja mw-list-item"><a href="https://ja.wikipedia.org/wiki/%E7%B5%90%E5%90%88%E5%BA%A6" 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-no mw-list-item"><a href="https://no.wikipedia.org/wiki/Programvareavhengigheter" title="Programvareavhengigheter – Norwegian Bokmål" lang="nb" hreflang="nb" data-title="Programvareavhengigheter" data-language-autonym="Norsk bokmål" data-language-local-name="Norwegian Bokmål" class="interlanguage-link-target"><span>Norsk bokmål</span></a></li><li class="interlanguage-link interwiki-pl mw-list-item"><a href="https://pl.wikipedia.org/wiki/Zale%C5%BCno%C5%9B%C4%87_oprogramowania" title="Zależność oprogramowania – Polish" lang="pl" hreflang="pl" data-title="Zależność oprogramowania" 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/Acoplamento_(programa%C3%A7%C3%A3o_de_computadores)" title="Acoplamento (programação de computadores) – Portuguese" lang="pt" hreflang="pt" data-title="Acoplamento (programação de computadores)" 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%97%D0%B0%D1%86%D0%B5%D0%BF%D0%BB%D0%B5%D0%BD%D0%B8%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-uk mw-list-item"><a href="https://uk.wikipedia.org/wiki/%D0%97%D0%B2%27%D1%8F%D0%B7%D0%BD%D1%96%D1%81%D1%82%D1%8C_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D1%83%D0%B2%D0%B0%D0%BD%D0%BD%D1%8F)" 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/%E8%80%A6%E5%90%88%E6%80%A7_(%E8%A8%88%E7%AE%97%E6%A9%9F%E7%A7%91%E5%AD%B8)" 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/Q253448#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/Coupling_(computer_programming)" 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:Coupling_(computer_programming)" 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/Coupling_(computer_programming)"><span>Read</span></a></li><li id="ca-edit" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=Coupling_(computer_programming)&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=Coupling_(computer_programming)&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/Coupling_(computer_programming)"><span>Read</span></a></li><li id="ca-more-edit" class="vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=Coupling_(computer_programming)&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=Coupling_(computer_programming)&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/Coupling_(computer_programming)" 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/Coupling_(computer_programming)" 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=Coupling_(computer_programming)&oldid=1258340686" 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=Coupling_(computer_programming)&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=Coupling_%28computer_programming%29&id=1258340686&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%2FCoupling_%28computer_programming%29"><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%2FCoupling_%28computer_programming%29"><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=Coupling_%28computer_programming%29&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=Coupling_(computer_programming)&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/Q253448" 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"><span class="mw-redirectedfrom">(Redirected from <a href="/w/index.php?title=Coupling_(computer_science)&redirect=no" class="mw-redirect" title="Coupling (computer science)">Coupling (computer science)</a>)</span></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">Degree of interdependence between software modules</div> <p>In <a href="/wiki/Software_engineering" title="Software engineering">software engineering</a>, <b>coupling</b> is the degree of interdependence between software <a href="/wiki/Modular_programming" title="Modular programming">modules</a>, a measure of how closely connected two routines or modules are,<sup id="cite_ref-ISO_24765_1-0" class="reference"><a href="#cite_note-ISO_24765-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup> and the strength of the relationships between modules.<sup id="cite_ref-ISOIECTR19759_2005_2-0" class="reference"><a href="#cite_note-ISOIECTR19759_2005-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup> Coupling is not binary but multi-dimensional. <sup id="cite_ref-:0_3-0" class="reference"><a href="#cite_note-:0-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup> </p> <figure class="mw-default-size" typeof="mw:File/Thumb"><a href="/wiki/File:CouplingVsCohesion.svg" class="mw-file-description"><img src="//upload.wikimedia.org/wikipedia/commons/thumb/0/09/CouplingVsCohesion.svg/220px-CouplingVsCohesion.svg.png" decoding="async" width="220" height="192" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/0/09/CouplingVsCohesion.svg/330px-CouplingVsCohesion.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/0/09/CouplingVsCohesion.svg/440px-CouplingVsCohesion.svg.png 2x" data-file-width="604" data-file-height="526" /></a><figcaption>Coupling and <a href="/wiki/Cohesion_(computer_science)" title="Cohesion (computer science)">cohesion</a></figcaption></figure> <p>Coupling is usually contrasted with <a href="/wiki/Cohesion_(computer_science)" title="Cohesion (computer science)">cohesion</a>. <a href="/wiki/Loose_coupling" title="Loose coupling">Low coupling</a> often correlates with high cohesion, and vice versa. Low coupling is often thought to be a sign of a well-structured <a href="/wiki/Computer_system" class="mw-redirect" title="Computer system">computer system</a> and a good design, and when combined with high cohesion, supports the general goals of high <a href="/wiki/Computer_programming#Readability_of_source_code" title="Computer programming">readability</a> and <a href="/wiki/Maintainability" title="Maintainability">maintainability</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. (October 2013)">citation needed</span></a></i>]</sup> </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=Coupling_(computer_programming)&action=edit&section=1" title="Edit section: History"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>The <a href="/wiki/Software_metric" title="Software metric">software quality metrics</a> of coupling and cohesion were invented by <a href="/wiki/Larry_Constantine" title="Larry Constantine">Larry Constantine</a> in the late 1960s as part of a <a href="/wiki/Structured_design" class="mw-redirect" title="Structured design">structured design</a>, based on characteristics of “good” programming practices that reduced maintenance and modification costs. Structured design, including cohesion and coupling, were published in the article <i>Stevens, Myers & Constantine</i> (1974)<sup id="cite_ref-Stevens_1974_4-0" class="reference"><a href="#cite_note-Stevens_1974-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup> and the book <i>Yourdon & Constantine</i> (1979),<sup id="cite_ref-Yourdon_1979_5-0" class="reference"><a href="#cite_note-Yourdon_1979-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup> and the latter subsequently became standard terms. </p> <div class="mw-heading mw-heading2"><h2 id="Types_of_coupling">Types of coupling</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Coupling_(computer_programming)&action=edit&section=2" title="Edit section: Types of coupling"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p><span class="anchor" id="Tramp_coupling"></span><span class="anchor" id="Pathological_coupling"></span><span class="anchor" id="Content_coupling"></span><span class="anchor" id="Common-environment_coupling"></span><span class="anchor" id="Hybrid_coupling"></span><span class="anchor" id="Structural_coupling"></span><span class="anchor" id="Temporal_coupling"></span><span class="anchor" id="Data_type_coupling"></span><span class="anchor" id="Hardware_coupling"></span> </p> <figure class="mw-halign-right" typeof="mw:File/Thumb"><a href="/wiki/File:Coupling_sketches_cropped_1.svg" class="mw-file-description"><img src="//upload.wikimedia.org/wikipedia/commons/thumb/9/9c/Coupling_sketches_cropped_1.svg/300px-Coupling_sketches_cropped_1.svg.png" decoding="async" width="300" height="225" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/9/9c/Coupling_sketches_cropped_1.svg/450px-Coupling_sketches_cropped_1.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/9/9c/Coupling_sketches_cropped_1.svg/600px-Coupling_sketches_cropped_1.svg.png 2x" data-file-width="400" data-file-height="300" /></a><figcaption>Conceptual model of coupling</figcaption></figure> <p>Coupling can be "low" (also "<a href="/wiki/Loose_coupling" title="Loose coupling">loose</a>" and "weak") or "high" (also "tight" and "strong"). Some types of coupling, in order of highest to lowest coupling, are as follows: </p> <div class="mw-heading mw-heading3"><h3 id="Procedural_programming">Procedural programming</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Coupling_(computer_programming)&action=edit&section=3" title="Edit section: Procedural programming"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>A module here refers to a subroutine of any kind, i.e. a set of one or more statements having a name and preferably its own set of variable names. </p> <dl><dt><span class="anchor" id="Content_coupling"></span>Content coupling (high)</dt> <dd>Content coupling is said to occur when one module uses the code of another module, for instance a branch. This violates <a href="/wiki/Information_hiding" title="Information hiding">information hiding</a> – a basic software design concept.</dd> <dt><span class="anchor" id="Common_coupling"></span>Common coupling</dt> <dd>Common coupling is said to occur when several modules have access to the same global data. But it can lead to uncontrolled error propagation and unforeseen side-effects when changes are made.</dd> <dt><span class="anchor" id="External_coupling"></span>External coupling</dt> <dd>External coupling occurs when two modules share an externally imposed data format, communication protocol, or device interface. This is basically related to the communication to external tools and devices.</dd> <dt><span class="anchor" id="Control_coupling"></span>Control coupling</dt> <dd>Control coupling is one module controlling the flow of another, by passing it information on what to do (e.g., passing a what-to-do flag).</dd> <dt><span class="anchor" id="Stamp_coupling"></span><span class="anchor" id="data-structured_coupling"></span>Stamp coupling (data-structured coupling)</dt> <dd>Stamp coupling occurs when modules share a composite data structure and use only parts of it, possibly different parts (e.g., passing a whole record to a function that needs only one field of it).</dd> <dd>In this situation, a modification in a field that a module does not need may lead to changing the way the module reads the record. To illustrate the concept of stamp coupling, consider a scenario involving a <code>UserProfile</code> <a href="/wiki/Software_component" title="Software component">component</a>. This component is designed to return the entire user profile information in response to <a href="/wiki/HTTP" title="HTTP">requests</a>, even when <a href="/wiki/User_agent" title="User agent">consumers</a> only require a specific <a href="/wiki/Attribute_(computing)" title="Attribute (computing)">attribute</a>. This practice exemplifies stamp coupling, which can lead to significant <a href="/wiki/Bandwidth_(computing)" title="Bandwidth (computing)">bandwidth</a> issues, especially at scale. When any attribute within the <code>UserProfile</code> component changes, all consumers that interact with it may need to undergo <a href="/wiki/Software_testing" title="Software testing">testing</a>, even if they do not utilize the modified attribute. <sup id="cite_ref-6" class="reference"><a href="#cite_note-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup></dd> <dt><span class="anchor" id="Data_coupling"></span>Data coupling</dt> <dd>Data coupling occurs when modules share data through, for example, parameters. Each datum is an elementary piece, and these are the only data shared (e.g., passing an integer to a function that computes a square root).</dd></dl> <div class="mw-heading mw-heading3"><h3 id="Object-oriented_programming">Object-oriented programming</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Coupling_(computer_programming)&action=edit&section=4" title="Edit section: Object-oriented programming"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <dl><dt><span class="anchor" id="Subclass_coupling"></span>Subclass coupling</dt> <dd>Describes the relationship between a child and its parent. The child is connected to its parent, but the parent is not connected to the child.</dd></dl> <dl><dt><span class="anchor" id="Temporal_coupling"></span>Temporal coupling</dt> <dd>It is when two actions are bundled together into one module just because they happen to occur at the same time.</dd></dl> <p>In recent work various other coupling concepts have been investigated and used as indicators for different modularization principles used in practice.<sup id="cite_ref-Beck_2011_7-0" class="reference"><a href="#cite_note-Beck_2011-7"><span class="cite-bracket">[</span>7<span class="cite-bracket">]</span></a></sup> </p> <div class="mw-heading mw-heading4"><h4 id="Dynamic_coupling">Dynamic coupling</h4><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Coupling_(computer_programming)&action=edit&section=5" title="Edit section: Dynamic coupling"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>The goal of defining and measuring this type of coupling is to provide a run-time evaluation of a software system. It has been argued that static coupling metrics lose precision when dealing with an intensive use of dynamic binding or inheritance.<sup id="cite_ref-Arisholm_2004_8-0" class="reference"><a href="#cite_note-Arisholm_2004-8"><span class="cite-bracket">[</span>8<span class="cite-bracket">]</span></a></sup> In the attempt to solve this issue, dynamic coupling measures have been taken into account. </p> <div class="mw-heading mw-heading4"><h4 id="Semantic_coupling">Semantic coupling</h4><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Coupling_(computer_programming)&action=edit&section=6" title="Edit section: Semantic coupling"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>This kind of a coupling metric considers the conceptual similarities between software entities using, for example, comments and identifiers and relying on techniques such as <a href="/wiki/Latent_semantic_indexing" class="mw-redirect" title="Latent semantic indexing">latent semantic indexing</a> (LSI). </p> <div class="mw-heading mw-heading4"><h4 id="Logical_coupling">Logical coupling</h4><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Coupling_(computer_programming)&action=edit&section=7" title="Edit section: Logical coupling"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p><span class="anchor" id="evolutionary_coupling"></span><span class="anchor" id="Change_coupling"></span>Logical coupling (or evolutionary coupling or change coupling) analysis exploits the release history of a software system to find change patterns among modules or classes: e.g., entities that are likely to be changed together or sequences of changes (a change in a class A is always followed by a change in a class B). </p> <div class="mw-heading mw-heading2"><h2 id="Dimensions_of_coupling">Dimensions of coupling</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Coupling_(computer_programming)&action=edit&section=8" title="Edit section: Dimensions of coupling"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>According to Gregor Hohpe, coupling is multi-dimensional:<sup id="cite_ref-:0_3-1" class="reference"><a href="#cite_note-:0-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup> </p> <ul><li>Technology Dependency</li> <li>Location Dependency</li> <li>Topology Dependency</li> <li>Data Format & Type Dependency</li> <li>Semantic Dependency</li> <li>Conversation Dependency</li> <li>Order Dependency</li> <li>Temporal Dependency</li></ul> <div class="mw-heading mw-heading2"><h2 id="Disadvantages_of_tight_coupling">Disadvantages of tight coupling</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Coupling_(computer_programming)&action=edit&section=9" title="Edit section: Disadvantages of tight coupling"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Tightly coupled systems tend to exhibit the following developmental characteristics, which are often seen as disadvantages: </p> <ol><li>A change in one module usually forces a <a href="/wiki/Ripple_effect" title="Ripple effect">ripple effect</a> of changes in other modules.</li> <li>Assembly of modules might require more effort and/or time due to the increased inter-module dependency.</li> <li>A particular module might be harder to <a href="/wiki/Code_reuse" title="Code reuse">reuse</a> and/or test because dependent modules must be included.</li></ol> <div class="mw-heading mw-heading2"><h2 id="Performance_issues">Performance issues</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Coupling_(computer_programming)&action=edit&section=10" title="Edit section: Performance issues"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Whether loosely or tightly coupled, a system's performance is often reduced by message and parameter creation, transmission, translation (e.g. marshaling) and message interpretation (which might be a reference to a string, array or data structure), which require less overhead than creating a complicated message such as a <a href="/wiki/SOAP" title="SOAP">SOAP</a> message. Longer messages require more CPU and memory to produce. To optimize runtime performance, message length must be minimized and message meaning must be maximized. </p> <dl><dt>Message Transmission Overhead and Performance</dt> <dd>Since a message must be transmitted in full to retain its complete meaning, message transmission must be optimized. Longer messages require more CPU and memory to transmit and receive. Also, when necessary, receivers must reassemble a message into its original state to completely receive it. Hence, to optimize runtime performance, message length must be minimized and message meaning must be maximized.</dd></dl> <dl><dt>Message Translation Overhead and Performance</dt> <dd>Message protocols and messages themselves often contain extra information (i.e., packet, structure, definition and language information). Hence, the receiver often needs to translate a message into a more refined form by removing extra characters and structure information and/or by converting values from one type to another. Any sort of translation increases CPU and/or memory overhead. To optimize runtime performance, message form and content must be reduced and refined to maximize its meaning and reduce translation.</dd></dl> <dl><dt>Message Interpretation Overhead and Performance</dt> <dd>All messages must be interpreted by the receiver. Simple messages such as integers might not require additional processing to be interpreted. However, complex messages such as <a href="/wiki/SOAP" title="SOAP">SOAP</a> messages require a parser and a string transformer for them to exhibit intended meanings. To optimize runtime performance, messages must be refined and reduced to minimize interpretation overhead.</dd></dl> <div class="mw-heading mw-heading2"><h2 id="Solutions">Solutions</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Coupling_(computer_programming)&action=edit&section=11" title="Edit section: Solutions"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>One approach to decreasing coupling is <a href="/wiki/Functional_design" title="Functional design">functional design</a>, which seeks to limit the responsibilities of modules along functionality. Coupling increases between two classes <i><b>A</b></i> and <i><b>B</b></i> if: </p> <ul><li><i><b>A</b></i> has an attribute that refers to (is of type) <i><b>B</b></i>.</li> <li><i><b>A</b></i> calls on services of an object <i><b>B</b></i>.</li> <li><i><b>A</b></i> has a method that references <i><b>B</b></i> (via return type or parameter).</li> <li><i><b>A</b></i> is a subclass of (or implements) class <i><b>B</b></i>.</li></ul> <p>Low coupling refers to a relationship in which one module interacts with another module through a simple and stable interface and does not need to be concerned with the other module's internal implementation (see <a href="/wiki/Information_Hiding" class="mw-redirect" title="Information Hiding">Information Hiding</a>). </p><p>Systems such as <a href="/wiki/CORBA" class="mw-redirect" title="CORBA">CORBA</a> or <a href="/wiki/Component_Object_Model" title="Component Object Model">COM</a> allow objects to communicate with each other without having to know anything about the other object's implementation. Both of these systems even allow for objects to communicate with objects written in other languages. </p> <div class="mw-heading mw-heading2"><h2 id="Coupling_versus_cohesion">Coupling versus cohesion</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Coupling_(computer_programming)&action=edit&section=12" title="Edit section: Coupling versus cohesion"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Coupling and <a href="/wiki/Cohesion_(computer_science)" title="Cohesion (computer science)">cohesion</a> are terms which occur together very frequently. Coupling refers to the interdependencies between modules, while cohesion describes how related the functions within a single module are. Low cohesion implies that a given module performs tasks which are not very related to each other and hence can create problems as the module becomes large. </p> <div class="mw-heading mw-heading2"><h2 id="Module_coupling">Module coupling</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Coupling_(computer_programming)&action=edit&section=13" title="Edit section: Module coupling"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Coupling in Software Engineering<sup id="cite_ref-Pressman_1982_9-0" class="reference"><a href="#cite_note-Pressman_1982-9"><span class="cite-bracket">[</span>9<span class="cite-bracket">]</span></a></sup> describes a version of metrics associated with this concept. </p><p>For data and control flow coupling: </p> <ul><li><b>d<sub>i</sub></b>: number of input data parameters</li> <li><b>c<sub>i</sub></b>: number of input control parameters</li> <li><b>d<sub>o</sub></b>: number of output data parameters</li> <li><b>c<sub>o</sub></b>: number of output control parameters</li></ul> <p>For global coupling: </p> <ul><li><b>g<sub>d</sub></b>: number of global variables used as data</li> <li><b>g<sub>c</sub></b>: number of global variables used as control</li></ul> <p>For environmental coupling: </p> <ul><li><b>w</b>: number of modules called (fan-out)</li> <li><b>r</b>: number of modules calling the module under consideration (fan-in)</li></ul> <p><span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \mathrm {Coupling} (C)=1-{\frac {1}{d_{i}+2\times c_{i}+d_{o}+2\times c_{o}+g_{d}+2\times g_{c}+w+r}}}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mrow class="MJX-TeXAtom-ORD"> <mi mathvariant="normal">C</mi> <mi mathvariant="normal">o</mi> <mi mathvariant="normal">u</mi> <mi mathvariant="normal">p</mi> <mi mathvariant="normal">l</mi> <mi mathvariant="normal">i</mi> <mi mathvariant="normal">n</mi> <mi mathvariant="normal">g</mi> </mrow> <mo stretchy="false">(</mo> <mi>C</mi> <mo stretchy="false">)</mo> <mo>=</mo> <mn>1</mn> <mo>−<!-- − --></mo> <mrow class="MJX-TeXAtom-ORD"> <mfrac> <mn>1</mn> <mrow> <msub> <mi>d</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>i</mi> </mrow> </msub> <mo>+</mo> <mn>2</mn> <mo>×<!-- × --></mo> <msub> <mi>c</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>i</mi> </mrow> </msub> <mo>+</mo> <msub> <mi>d</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>o</mi> </mrow> </msub> <mo>+</mo> <mn>2</mn> <mo>×<!-- × --></mo> <msub> <mi>c</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>o</mi> </mrow> </msub> <mo>+</mo> <msub> <mi>g</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>d</mi> </mrow> </msub> <mo>+</mo> <mn>2</mn> <mo>×<!-- × --></mo> <msub> <mi>g</mi> <mrow class="MJX-TeXAtom-ORD"> <mi>c</mi> </mrow> </msub> <mo>+</mo> <mi>w</mi> <mo>+</mo> <mi>r</mi> </mrow> </mfrac> </mrow> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle \mathrm {Coupling} (C)=1-{\frac {1}{d_{i}+2\times c_{i}+d_{o}+2\times c_{o}+g_{d}+2\times g_{c}+w+r}}}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/7972c57de19863495a63d39a3a03d028ba3070ab" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -2.338ex; width:67.636ex; height:5.676ex;" alt="{\displaystyle \mathrm {Coupling} (C)=1-{\frac {1}{d_{i}+2\times c_{i}+d_{o}+2\times c_{o}+g_{d}+2\times g_{c}+w+r}}}"></span> </p><p><code>Coupling(C)</code> makes the value larger the more coupled the module is. This number ranges from approximately 0.67 (low coupling) to 1.0 (highly coupled) </p><p>For example, if a module has only a single input and output data parameter </p><p><span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle C=1-{\frac {1}{1+0+1+0+0+0+1+0}}=1-{\frac {1}{3}}=0.67}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>C</mi> <mo>=</mo> <mn>1</mn> <mo>−<!-- − --></mo> <mrow class="MJX-TeXAtom-ORD"> <mfrac> <mn>1</mn> <mrow> <mn>1</mn> <mo>+</mo> <mn>0</mn> <mo>+</mo> <mn>1</mn> <mo>+</mo> <mn>0</mn> <mo>+</mo> <mn>0</mn> <mo>+</mo> <mn>0</mn> <mo>+</mo> <mn>1</mn> <mo>+</mo> <mn>0</mn> </mrow> </mfrac> </mrow> <mo>=</mo> <mn>1</mn> <mo>−<!-- − --></mo> <mrow class="MJX-TeXAtom-ORD"> <mfrac> <mn>1</mn> <mn>3</mn> </mfrac> </mrow> <mo>=</mo> <mn>0.67</mn> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle C=1-{\frac {1}{1+0+1+0+0+0+1+0}}=1-{\frac {1}{3}}=0.67}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/dbc88b78f3adb05ad566574219038fcf17ae3bd9" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -2.005ex; width:55.219ex; height:5.343ex;" alt="{\displaystyle C=1-{\frac {1}{1+0+1+0+0+0+1+0}}=1-{\frac {1}{3}}=0.67}"></span> </p><p>If a module has 5 input and output data parameters, an equal number of control parameters, and accesses 10 items of global data, with a fan-in of 3 and a fan-out of 4, </p><p><span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle C=1-{\frac {1}{5+2\times 5+5+2\times 5+10+0+3+4}}=0.98}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>C</mi> <mo>=</mo> <mn>1</mn> <mo>−<!-- − --></mo> <mrow class="MJX-TeXAtom-ORD"> <mfrac> <mn>1</mn> <mrow> <mn>5</mn> <mo>+</mo> <mn>2</mn> <mo>×<!-- × --></mo> <mn>5</mn> <mo>+</mo> <mn>5</mn> <mo>+</mo> <mn>2</mn> <mo>×<!-- × --></mo> <mn>5</mn> <mo>+</mo> <mn>10</mn> <mo>+</mo> <mn>0</mn> <mo>+</mo> <mn>3</mn> <mo>+</mo> <mn>4</mn> </mrow> </mfrac> </mrow> <mo>=</mo> <mn>0.98</mn> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle C=1-{\frac {1}{5+2\times 5+5+2\times 5+10+0+3+4}}=0.98}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/86f12badf6ce5c6523900dc9a3562afeeb993664" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -2.005ex; width:55.287ex; height:5.343ex;" alt="{\displaystyle C=1-{\frac {1}{5+2\times 5+5+2\times 5+10+0+3+4}}=0.98}"></span> </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=Coupling_(computer_programming)&action=edit&section=14" title="Edit section: See also"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <ul><li><a href="/wiki/Cohesion_(computer_science)" title="Cohesion (computer science)">Cohesion (computer science)</a></li> <li><a href="/wiki/Connascence_(computer_science)" class="mw-redirect" title="Connascence (computer science)">Connascence (computer science)</a></li> <li><a href="/wiki/Coupling_(physics)" title="Coupling (physics)">Coupling (physics)</a></li> <li><a href="/wiki/Dead_code_elimination" class="mw-redirect" title="Dead code elimination">Dead code elimination</a></li> <li><a href="/wiki/Dependency_hell" title="Dependency hell">Dependency hell</a></li> <li><a href="/wiki/Efferent_coupling" title="Efferent coupling">Efferent coupling</a></li> <li><a href="/wiki/Inversion_of_control" title="Inversion of control">Inversion of control</a></li> <li><a href="/wiki/List_of_object-oriented_programming_terms" class="mw-redirect" title="List of object-oriented programming terms">List of object-oriented programming terms</a></li> <li><a href="/wiki/Loose_coupling" title="Loose coupling">Loose coupling</a></li> <li><a href="/wiki/Make_(software)" title="Make (software)">Make (software)</a></li> <li><a href="/wiki/Static_code_analysis" class="mw-redirect" title="Static code analysis">Static code analysis</a></li></ul> <div class="mw-heading mw-heading2"><h2 id="References">References</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Coupling_(computer_programming)&action=edit&section=15" title="Edit section: References"><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"><ol class="references"> <li id="cite_note-ISO_24765-1"><span class="mw-cite-backlink"><b><a href="#cite_ref-ISO_24765_1-0">^</a></b></span> <span class="reference-text">ISO/IEC/IEEE 24765:2010 Systems and software engineering — Vocabulary</span> </li> <li id="cite_note-ISOIECTR19759_2005-2"><span class="mw-cite-backlink"><b><a href="#cite_ref-ISOIECTR19759_2005_2-0">^</a></b></span> <span class="reference-text">ISO/IEC TR 19759:2005, Software Engineering — Guide to the Software Engineering Body of Knowledge (SWEBOK)</span> </li> <li id="cite_note-:0-3"><span class="mw-cite-backlink">^ <a href="#cite_ref-:0_3-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-:0_3-1"><sup><i><b>b</b></i></sup></a></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 id="CITEREFHohpe" class="citation book cs1">Hohpe, Gregor. <i>Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions</i>. Addison-Wesley Professional. <a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/978-0321200686" title="Special:BookSources/978-0321200686"><bdi>978-0321200686</bdi></a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=book&rft.btitle=Enterprise+Integration+Patterns%3A+Designing%2C+Building%2C+and+Deploying+Messaging+Solutions&rft.pub=Addison-Wesley+Professional&rft.isbn=978-0321200686&rft.aulast=Hohpe&rft.aufirst=Gregor&rfr_id=info%3Asid%2Fen.wikipedia.org%3ACoupling+%28computer+programming%29" class="Z3988"></span></span> </li> <li id="cite_note-Stevens_1974-4"><span class="mw-cite-backlink"><b><a href="#cite_ref-Stevens_1974_4-0">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFStevensMyersConstantine1974" class="citation journal cs1"><a href="/wiki/Wayne_Stevens_(software_engineer)" title="Wayne Stevens (software engineer)">Stevens, Wayne P.</a>; <a href="/wiki/Glenford_J._Myers" class="mw-redirect" title="Glenford J. Myers">Myers, Glenford J.</a>; <a href="/wiki/Larry_LeRoy_Constantine" class="mw-redirect" title="Larry LeRoy Constantine">Constantine, Larry LeRoy</a> (June 1974). "Structured design". <i><a href="/wiki/IBM_Systems_Journal" class="mw-redirect" title="IBM Systems Journal">IBM Systems Journal</a></i>. <b>13</b> (2): 115–139. <a href="/wiki/Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1147%2Fsj.132.0115">10.1147/sj.132.0115</a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft.jtitle=IBM+Systems+Journal&rft.atitle=Structured+design&rft.volume=13&rft.issue=2&rft.pages=115-139&rft.date=1974-06&rft_id=info%3Adoi%2F10.1147%2Fsj.132.0115&rft.aulast=Stevens&rft.aufirst=Wayne+P.&rft.au=Myers%2C+Glenford+J.&rft.au=Constantine%2C+Larry+LeRoy&rfr_id=info%3Asid%2Fen.wikipedia.org%3ACoupling+%28computer+programming%29" class="Z3988"></span></span> </li> <li id="cite_note-Yourdon_1979-5"><span class="mw-cite-backlink"><b><a href="#cite_ref-Yourdon_1979_5-0">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFYourdonConstantine1979" class="citation book cs1"><a href="/wiki/Edward_Yourdon" title="Edward Yourdon">Yourdon, Edward</a>; <a href="/wiki/Larry_LeRoy_Constantine" class="mw-redirect" title="Larry LeRoy Constantine">Constantine, Larry LeRoy</a> (1979) [1975]. <i>Structured Design: Fundamentals of a Discipline of Computer Program and Systems Design</i>. Yourdon Press. <a href="/wiki/Bibcode_(identifier)" class="mw-redirect" title="Bibcode (identifier)">Bibcode</a>:<a rel="nofollow" class="external text" href="https://ui.adsabs.harvard.edu/abs/1979sdfd.book.....Y">1979sdfd.book.....Y</a>. <a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/978-0-13-854471-3" title="Special:BookSources/978-0-13-854471-3"><bdi>978-0-13-854471-3</bdi></a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=book&rft.btitle=Structured+Design%3A+Fundamentals+of+a+Discipline+of+Computer+Program+and+Systems+Design&rft.pub=Yourdon+Press&rft.date=1979&rft_id=info%3Abibcode%2F1979sdfd.book.....Y&rft.isbn=978-0-13-854471-3&rft.aulast=Yourdon&rft.aufirst=Edward&rft.au=Constantine%2C+Larry+LeRoy&rfr_id=info%3Asid%2Fen.wikipedia.org%3ACoupling+%28computer+programming%29" class="Z3988"></span></span> </li> <li id="cite_note-6"><span class="mw-cite-backlink"><b><a href="#cite_ref-6">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFRichards" class="citation book cs1">Richards, Mark. <i>Fundamentals of Software Architecture: An Engineering Approach</i>. O'Reilly Media. <a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/978-1492043454" title="Special:BookSources/978-1492043454"><bdi>978-1492043454</bdi></a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=book&rft.btitle=Fundamentals+of+Software+Architecture%3A+An+Engineering+Approach&rft.pub=O%27Reilly+Media&rft.isbn=978-1492043454&rft.aulast=Richards&rft.aufirst=Mark&rfr_id=info%3Asid%2Fen.wikipedia.org%3ACoupling+%28computer+programming%29" class="Z3988"></span></span> </li> <li id="cite_note-Beck_2011-7"><span class="mw-cite-backlink"><b><a href="#cite_ref-Beck_2011_7-0">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFBeckDiehl2011" class="citation book cs1">Beck, Fabian; Diehl, Stephan (September 2011). "On the Congruence of Modularity and Code Coupling". <i>In Proceedings of the 19th ACM SIGSOFT Symposium and the 13th European Conference on Foundations of Software Engineering (SIGSOFT/FSE '11)</i>. Szeged, Hungary. p. 354. <a href="/wiki/Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1145%2F2025113.2025162">10.1145/2025113.2025162</a>. <a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/9781450304436" title="Special:BookSources/9781450304436"><bdi>9781450304436</bdi></a>. <a href="/wiki/S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a> <a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:2413103">2413103</a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=bookitem&rft.atitle=On+the+Congruence+of+Modularity+and+Code+Coupling&rft.btitle=In+Proceedings+of+the+19th+ACM+SIGSOFT+Symposium+and+the+13th+European+Conference+on+Foundations+of+Software+Engineering+%28SIGSOFT%2FFSE+%2711%29&rft.place=Szeged%2C+Hungary&rft.pages=354&rft.date=2011-09&rft_id=https%3A%2F%2Fapi.semanticscholar.org%2FCorpusID%3A2413103%23id-name%3DS2CID&rft_id=info%3Adoi%2F10.1145%2F2025113.2025162&rft.isbn=9781450304436&rft.aulast=Beck&rft.aufirst=Fabian&rft.au=Diehl%2C+Stephan&rfr_id=info%3Asid%2Fen.wikipedia.org%3ACoupling+%28computer+programming%29" class="Z3988"></span><span class="cs1-maint citation-comment"><code class="cs1-code">{{<a href="/wiki/Template:Cite_book" title="Template:Cite book">cite book</a>}}</code>: CS1 maint: location missing publisher (<a href="/wiki/Category:CS1_maint:_location_missing_publisher" title="Category:CS1 maint: location missing publisher">link</a>)</span></span> </li> <li id="cite_note-Arisholm_2004-8"><span class="mw-cite-backlink"><b><a href="#cite_ref-Arisholm_2004_8-0">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFArisholmBriandFøyen2004" class="citation journal cs1">Arisholm, Erik; <a href="/wiki/Lionel_C._Briand" class="mw-redirect" title="Lionel C. Briand">Briand, Lionel C.</a>; Føyen, Audun (August 2004). "Dynamic coupling measurement for object-oriented software". <i><a href="/wiki/IEEE_Transactions_on_Software_Engineering" title="IEEE Transactions on Software Engineering">IEEE Transactions on Software Engineering</a></i>. <b>30</b> (8). <a href="/wiki/IEEE" class="mw-redirect" title="IEEE">IEEE</a>: 491–506. <a href="/wiki/Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1109%2FTSE.2004.41">10.1109/TSE.2004.41</a>. <a href="/wiki/Hdl_(identifier)" class="mw-redirect" title="Hdl (identifier)">hdl</a>:<span class="id-lock-free" title="Freely accessible"><a rel="nofollow" class="external text" href="https://hdl.handle.net/10852%2F9090">10852/9090</a></span>. <a href="/wiki/S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a> <a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:3074827">3074827</a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft.jtitle=IEEE+Transactions+on+Software+Engineering&rft.atitle=Dynamic+coupling+measurement+for+object-oriented+software&rft.volume=30&rft.issue=8&rft.pages=491-506&rft.date=2004-08&rft_id=info%3Ahdl%2F10852%2F9090&rft_id=https%3A%2F%2Fapi.semanticscholar.org%2FCorpusID%3A3074827%23id-name%3DS2CID&rft_id=info%3Adoi%2F10.1109%2FTSE.2004.41&rft.aulast=Arisholm&rft.aufirst=Erik&rft.au=Briand%2C+Lionel+C.&rft.au=F%C3%B8yen%2C+Audun&rfr_id=info%3Asid%2Fen.wikipedia.org%3ACoupling+%28computer+programming%29" class="Z3988"></span></span> </li> <li id="cite_note-Pressman_1982-9"><span class="mw-cite-backlink"><b><a href="#cite_ref-Pressman_1982_9-0">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFPressman1982" class="citation book cs1"><a href="/wiki/Roger_S._Pressman" title="Roger S. Pressman">Pressman, Roger S.</a> (1982). <span class="id-lock-registration" title="Free registration required"><a rel="nofollow" class="external text" href="https://archive.org/details/softwareengineer00pres_0"><i>Software Engineering - A Practitioner's Approach</i></a></span> (4 ed.). McGraw-Hill. <a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/0-07-052182-4" title="Special:BookSources/0-07-052182-4"><bdi>0-07-052182-4</bdi></a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=book&rft.btitle=Software+Engineering+-+A+Practitioner%27s+Approach&rft.edition=4&rft.pub=McGraw-Hill&rft.date=1982&rft.isbn=0-07-052182-4&rft.aulast=Pressman&rft.aufirst=Roger+S.&rft_id=https%3A%2F%2Farchive.org%2Fdetails%2Fsoftwareengineer00pres_0&rfr_id=info%3Asid%2Fen.wikipedia.org%3ACoupling+%28computer+programming%29" class="Z3988"></span></span> </li> </ol></div></div> <div class="mw-heading mw-heading2"><h2 id="Further_reading">Further reading</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Coupling_(computer_programming)&action=edit&section=16" title="Edit section: Further reading"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <ul><li><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFMyers1974" class="citation book cs1"><a href="/wiki/Glenford_J._Myers" class="mw-redirect" title="Glenford J. Myers">Myers, Glenford J.</a> (1974). <i>Reliable Software through Composite Design</i>. New York: Mason and Lipscomb Publishers.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=book&rft.btitle=Reliable+Software+through+Composite+Design&rft.place=New+York&rft.pub=Mason+and+Lipscomb+Publishers&rft.date=1974&rft.aulast=Myers&rft.aufirst=Glenford+J.&rfr_id=info%3Asid%2Fen.wikipedia.org%3ACoupling+%28computer+programming%29" class="Z3988"></span></li> <li><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFOffuttHarroldKolte1993" class="citation journal cs1">Offutt, A. Jefferson; <a href="/wiki/Mary_Jean_Harrold" title="Mary Jean Harrold">Harrold, Mary Jean</a>; Kolte, Priyadarshan (March 1993). "A Software Metric System for Module Coupling". <i><a href="/wiki/Journal_of_Systems_and_Software" title="Journal of Systems and Software">Journal of Systems and Software</a></i>. <b>20</b> (3): 295–308. <a href="/wiki/Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1016%2F0164-1212%2893%2990072-6">10.1016/0164-1212(93)90072-6</a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft.jtitle=Journal+of+Systems+and+Software&rft.atitle=A+Software+Metric+System+for+Module+Coupling&rft.volume=20&rft.issue=3&rft.pages=295-308&rft.date=1993-03&rft_id=info%3Adoi%2F10.1016%2F0164-1212%2893%2990072-6&rft.aulast=Offutt&rft.aufirst=A.+Jefferson&rft.au=Harrold%2C+Mary+Jean&rft.au=Kolte%2C+Priyadarshan&rfr_id=info%3Asid%2Fen.wikipedia.org%3ACoupling+%28computer+programming%29" class="Z3988"></span></li> <li><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFPage-Jones1980" class="citation book cs1">Page-Jones, Meilir (1980). <i>The Practical Guide to Structured Systems Design</i>. New York: Yourdon Press. <a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/978-8-12031482-5" title="Special:BookSources/978-8-12031482-5"><bdi>978-8-12031482-5</bdi></a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=book&rft.btitle=The+Practical+Guide+to+Structured+Systems+Design&rft.place=New+York&rft.pub=Yourdon+Press&rft.date=1980&rft.isbn=978-8-12031482-5&rft.aulast=Page-Jones&rft.aufirst=Meilir&rfr_id=info%3Asid%2Fen.wikipedia.org%3ACoupling+%28computer+programming%29" class="Z3988"></span></li> <li><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation book cs1"><i>Standard Glossary of Software Engineering Terminology</i>. New York: <a href="/wiki/IEEE" class="mw-redirect" title="IEEE">IEEE</a>. 1990. <a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/0-7381-0391-8" title="Special:BookSources/0-7381-0391-8"><bdi>0-7381-0391-8</bdi></a>. 610.12_1990.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=book&rft.btitle=Standard+Glossary+of+Software+Engineering+Terminology&rft.place=New+York&rft.pub=IEEE&rft.date=1990&rft.isbn=0-7381-0391-8&rfr_id=info%3Asid%2Fen.wikipedia.org%3ACoupling+%28computer+programming%29" class="Z3988"></span></li> <li><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/20170329132933/http://www.isaqb.org/wp-content/uploads/2015/05/isaqb-Curriculum-foundation-v3-MAY-2015-EN.pdf">"Curriculum for Certified Professional for Software Architecture (CPSA) - Foundation Level"</a> <span class="cs1-format">(PDF)</span>. 3.01. International Software Architecture Qualification Board e.V. (ISAQB). 2015-05-15 [2009]. Archived from <a rel="nofollow" class="external text" href="https://www.isaqb.org/wp-content/uploads/2015/05/isaqb-Curriculum-foundation-v3-MAY-2015-EN.pdf">the original</a> <span class="cs1-format">(PDF)</span> on 2017-03-29<span class="reference-accessdate">. Retrieved <span class="nowrap">2019-06-23</span></span>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=Curriculum+for+Certified+Professional+for+Software+Architecture+%28CPSA%29+-+Foundation+Level&rft.series=3.01&rft.pub=International+Software+Architecture+Qualification+Board+e.V.+%28ISAQB%29&rft.date=2015-05-15&rft_id=https%3A%2F%2Fwww.isaqb.org%2Fwp-content%2Fuploads%2F2015%2F05%2Fisaqb-Curriculum-foundation-v3-MAY-2015-EN.pdf&rfr_id=info%3Asid%2Fen.wikipedia.org%3ACoupling+%28computer+programming%29" class="Z3988"></span> <a rel="nofollow" class="external autonumber" href="http://www.isaqb.org/wp-content/uploads/2015/05/isaqb-Lehrplan-foundation-v3-MAI-2015-DE.pdf">[1]</a> <a rel="nofollow" class="external text" href="https://web.archive.org/web/20160222052330/http://www.isaqb.org/wp-content/uploads/2015/05/isaqb-Lehrplan-foundation-v3-MAI-2015-DE.pdf">Archived</a> 2016-02-22 at the <a href="/wiki/Wayback_Machine" title="Wayback Machine">Wayback Machine</a></li></ul> <!-- NewPP limit report Parsed by mw‐web.codfw.main‐f69cdc8f6‐6kzj2 Cached time: 20241122141842 Cache expiry: 2592000 Reduced expiry: false Complications: [vary‐revision‐sha1, show‐toc] CPU time usage: 0.302 seconds Real time usage: 0.411 seconds Preprocessor visited node count: 1180/1000000 Post‐expand include size: 28684/2097152 bytes Template argument size: 1488/2097152 bytes Highest expansion depth: 12/100 Expensive parser function count: 2/500 Unstrip recursion depth: 1/20 Unstrip post‐expand size: 38704/5000000 bytes Lua time usage: 0.175/10.000 seconds Lua memory usage: 5375034/52428800 bytes Number of Wikibase entities loaded: 0/400 --> <!-- Transclusion expansion time report (%,ms,calls,template) 100.00% 326.492 1 -total 50.32% 164.299 1 Template:Reflist 38.20% 124.705 8 Template:Cite_book 24.40% 79.665 1 Template:Short_description 16.54% 54.008 2 Template:Pagetype 9.40% 30.693 1 Template:Citation_needed 8.07% 26.334 1 Template:Fix 6.59% 21.510 3 Template:Cite_journal 5.59% 18.264 2 Template:Category_handler 4.82% 15.726 4 Template:Main_other --> <!-- Saved in parser cache with key enwiki:pcache:idhash:1425449-0!canonical and timestamp 20241122141842 and revision id 1258340686. 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=Coupling_(computer_programming)&oldid=1258340686">https://en.wikipedia.org/w/index.php?title=Coupling_(computer_programming)&oldid=1258340686</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:Programming_principles" title="Category:Programming principles">Programming principles</a></li><li><a href="/wiki/Category:Object-oriented_programming" title="Category:Object-oriented programming">Object-oriented programming</a></li><li><a href="/wiki/Category:Software_architecture" title="Category:Software architecture">Software architecture</a></li><li><a href="/wiki/Category:Software_metrics" title="Category:Software metrics">Software metrics</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:CS1_maint:_location_missing_publisher" title="Category:CS1 maint: location missing publisher">CS1 maint: location missing publisher</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_October_2013" title="Category:Articles with unsourced statements from October 2013">Articles with unsourced statements from October 2013</a></li><li><a href="/wiki/Category:Webarchive_template_wayback_links" title="Category:Webarchive template wayback links">Webarchive template wayback links</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 19 November 2024, at 04:23<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=Coupling_(computer_programming)&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-9m94g","wgBackendResponseTime":176,"wgPageParseReport":{"limitreport":{"cputime":"0.302","walltime":"0.411","ppvisitednodes":{"value":1180,"limit":1000000},"postexpandincludesize":{"value":28684,"limit":2097152},"templateargumentsize":{"value":1488,"limit":2097152},"expansiondepth":{"value":12,"limit":100},"expensivefunctioncount":{"value":2,"limit":500},"unstrip-depth":{"value":1,"limit":20},"unstrip-size":{"value":38704,"limit":5000000},"entityaccesscount":{"value":0,"limit":400},"timingprofile":["100.00% 326.492 1 -total"," 50.32% 164.299 1 Template:Reflist"," 38.20% 124.705 8 Template:Cite_book"," 24.40% 79.665 1 Template:Short_description"," 16.54% 54.008 2 Template:Pagetype"," 9.40% 30.693 1 Template:Citation_needed"," 8.07% 26.334 1 Template:Fix"," 6.59% 21.510 3 Template:Cite_journal"," 5.59% 18.264 2 Template:Category_handler"," 4.82% 15.726 4 Template:Main_other"]},"scribunto":{"limitreport-timeusage":{"value":"0.175","limit":"10.000"},"limitreport-memusage":{"value":5375034,"limit":52428800}},"cachereport":{"origin":"mw-web.codfw.main-f69cdc8f6-6kzj2","timestamp":"20241122141842","ttl":2592000,"transientcontent":false}}});});</script> <script type="application/ld+json">{"@context":"https:\/\/schema.org","@type":"Article","name":"Coupling (computer programming)","url":"https:\/\/en.wikipedia.org\/wiki\/Coupling_(computer_programming)","sameAs":"http:\/\/www.wikidata.org\/entity\/Q253448","mainEntity":"http:\/\/www.wikidata.org\/entity\/Q253448","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":"2005-01-24T02:26:04Z","dateModified":"2024-11-19T04:23:04Z","image":"https:\/\/upload.wikimedia.org\/wikipedia\/commons\/0\/09\/CouplingVsCohesion.svg","headline":"in programming, the degree of interdependence between software modules"}</script> </body> </html>