Utväxling (programmering)
Engagemang [1] , koppling , anslutning , konjugation [2] ( engelsk koppling ) - metoden och graden av ömsesidigt beroende mellan mjukvarumoduler [3] ; styrkan hos sammankopplingar mellan moduler [4] ; ett mått på hur beroende av varandra olika rutiner eller moduler är [3] .
Stark koppling anses vara en allvarlig nackdel, eftersom det gör det svårt att förstå logiken i moduler, modifiera dem, testa dem oberoende och även återanvända dem separat. Svag sammanhållning är å andra sidan ett tecken på ett välstrukturerat och väldesignat system, och i kombination med stark sammanhållning motsvarar det generella indikatorer på god läsbarhet och underhållbarhet.
Länk- och anslutningsmått myntades av Larry Constantine , den ursprungliga utvecklaren av strukturell design [5] , som också var en tidig förespråkare för sådana koncept (se även SSADM ).
Svag länkning är ett av Craig Larmans GRASP- mönster [6] .
Typer av utväxling
Engagemangstyper, enligt ISO/IEC/IEEE 24765, inkluderar: [3]
- gemensam miljökoppling , gemensam koppling - två mjukvarumoduler delar ett gemensamt dataområde;
- innehållskoppling - vissa eller alla mjukvarumoduler ingår i någon modul som komponenter;
- styrkoppling - en programmodul kommunicerar med en annan modul med det uttryckliga syftet att påverka dess efterföljande exekvering;
- datakoppling ( ingångs-utgångskoppling ) - utdata från en programmodul fungerar som indata för en annan modul;
- blandad koppling ( hybridkoppling ) - olika delmängder av värdena för ett visst dataelement används i flera programmoduler för olika och orelaterade ändamål;
- patologisk koppling - en mjukvarumodul beror på eller påverkar de interna implementeringsdetaljerna för en annan modul.
Metoder för att minska utväxlingen
Det finns olika metoder för frikoppling . Vanligtvis beskrivs de i form av designmönster . En nyckelteknik är inversion av kontroll , och i synnerhet beroendeinjektion .
Användningen av en applikationsarkitektur i lager, som Model-View-Controller , Model-View-Presenter , Model-View-ViewModel , etc.,
hjälper också till att minska röran .
Se även
Anteckningar
- ↑ Kravchenko A. K., Afanasyeva I. V. Inflytande av förändringar i utväxling och anslutning på kodens komplexitet och dess hastighet i mjukvaruutveckling // Radioelectronics and Informatics, 2016, nr 3, sid. 9-12.
- ↑ McConnell, 2010 .
- ↑ 1 2 3 ISO/IEC/IEEE 24765-2017 System- och mjukvaruteknik - Ordförråd . Hämtad 1 november 2021. Arkiverad från originalet 31 mars 2022. (obestämd)
- ↑ ISO/IEC TR 19759:2005, Software Engineering - Guide to the Software Engineering Body of Knowledge (SWEBOK)
- ↑ W. Stevens, G. Myers, L. Constantine, "Structured Design", IBM Systems Journal, 13(2), 115-139, 1974.
- ↑ Philip A. Laplante, Philip A. Laplante. Vad alla ingenjörer bör veta om mjukvaruteknik. - CRC Press, 2007. - S. 105-106. - ISBN 978-1-4200-0674-2 .
Litteratur
- McConnell, Steve . Perfekt kod = Code Complete. — 2:a upplagan. - M . : Ryska upplagan, 2010. - S. 139. - 896 sid. - (Mästarklass). - ISBN 978-5-7502-0064-1 .