Пов'язаність (згуртованість?) (англ. cohesion) в програмуванні - це міра того наскільки пов’язаним є код в одному модулі програми (наприклад через спільну семантику). Методи оцінки пов'язаності варіюються від якісних оцінок тексту програми з використанням рубрик з герменевтичним підходом до кількісних вимірювань міри пов'язаності коду програми. Пов'язаність - ординальна величина, і зазвичай в розмові виражається як "висока пов'язаність" чи "низька пов'язаність". Модулям з високою пов'язаністю віддається перевага, тому що висока пов'язаність асоціюється з кількома бажаними рисами програмного забезпечення, включаючи відмовостійкість, надійність, здатність до повторного використання, та зрозумілість, в той час, як низька пов'язаність асоціюється з небажаними рисами, такими як складність підтримки, тестування, повторного використання та розуміння.
Пов'язаність часто протиставляється зв'язності - іншому поняттю, однак висока пов'язаність часто корелює з слабкою зв'язністю. Метрики програмного забезпечення такі як пов'язаність та зв'язність винайдені і базуються на характеристиках "добрих" практик програмування, які зменшують витрати на модифікацію та підтримку.
Слабка пов'язаність
В ООП, якщо методи деякого класу як правило подібні в багатьох аспектах, то клас вважається таким що має високу пов'язаність.
Пов'язаність зменшується якщо:
- Функціонал вбудований в методи класу має мало спільного.
- Методи виконують багато різних функцій, часто над чи непов'язаними наборами даних.
Недоліками низької (слабкої) пов'язаності є:
- Ускладнення розуміння модулів.
- Ускладнення повторного використання модуля, тому що більшості програм непотрібен випадковий набір операцій що надається модулем.
Типи пов'язаності
Пов'язаність це якісна міра, тобто текст програми досліджується за рубриками, для класифікації пов'язаності. Види пов'язаності в порядку від найгіршого до найкращого:
- Випадкова пов'язаність (найгірша)
- Випадкова пов'язаність виникає тоді, коли частини модуля додаються в нього довільним чином; єдиним що їх пов'язує є те, що вони входять до одного модуля (наприклад клас "
Utilities
").
- Логічна пов'язаність
- частини модуля групуються разом тому що вони за логікою виконують одну функцію, навіть якщо вони різні за природою. Наприклад групування всіх підпрограм обробки вводу з клавіатури і миші.
- Темпоральна пов'язаність
- частини модуля групуються залежно від того в який момент часу виникає необхідність їх застосування. Наприклад функції що викликаються після виявлення помилки, які закривають відкриті файли, записують помилку в журнал, і повідомляють користувача.
- Процедурна пов'язаність
- частини модуля групуються тому що вони всі дотримуються певної послідовності дій. Наприклад функції які перевіряють дозволи для файлу, і після цього його відкривають.
- Комунікаційна пов'язаність
- частини модуля групуються тому що вони працюють з одними й тими ж даними.
- Послідовна пов'язаність
- частини модуля групуються тому, що вивід однієї частини передається на вхід іншої, як в конвеєрі. Наприклад функції що читають дані з файлу, обробляють їх, і пишуть назад.
- Функціональна пов'язаність (найкраща)
- частини модуля групуються тому, що вони разом працюють над одним, чітко означеним завданням для того модуля. Наприклад лексичний аналіз тексту чи XML.
Дослідження багатьох людей, таких як , Edward Yourdon, та показують що два перші види пов'язаності найгірші, комунікаційна та послідовна пов'язаності досить добрі і функціональна - найкраща, хоча не завжди досяжна. Бувають випадки, коли комунікаційна пов'язаність - це найкраще чого можна досягти при даних обставинах.
Див. також
Джерела
- Yourdon, E.; Constantine, L L. (1979). Structured Design: Fundamentals of a Discipline of Computer Program and Systems Design. copyright 1979 by Prentice-Hall. Yourdon Press.
- W. Stevens, G. Myers, L. Constantine, “Structured Design”, IBM Systems Journal, 13 (2), 115-139, 1974.
- Code Complete 2nd Ed.
Посилання
- Означення метрики пов'язаності (англ.)
- Метрика пов'язаності (англ.)
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Pov yazanist zgurtovanist angl cohesion v programuvanni ce mira togo naskilki pov yazanim ye kod v odnomu moduli programi napriklad cherez spilnu semantiku Metodi ocinki pov yazanosti variyuyutsya vid yakisnih ocinok tekstu programi z vikoristannyam rubrik z germenevtichnim pidhodom do kilkisnih vimiryuvan miri pov yazanosti kodu programi Pov yazanist ordinalna velichina i zazvichaj v rozmovi virazhayetsya yak visoka pov yazanist chi nizka pov yazanist Modulyam z visokoyu pov yazanistyu viddayetsya perevaga tomu sho visoka pov yazanist asociyuyetsya z kilkoma bazhanimi risami programnogo zabezpechennya vklyuchayuchi vidmovostijkist nadijnist zdatnist do povtornogo vikoristannya ta zrozumilist v toj chas yak nizka pov yazanist asociyuyetsya z nebazhanimi risami takimi yak skladnist pidtrimki testuvannya povtornogo vikoristannya ta rozuminnya Pov yazanist chasto protistavlyayetsya zv yaznosti inshomu ponyattyu odnak visoka pov yazanist chasto korelyuye z slabkoyu zv yaznistyu Metriki programnogo zabezpechennya taki yak pov yazanist ta zv yaznist vinajdeni i bazuyutsya na harakteristikah dobrih praktik programuvannya yaki zmenshuyut vitrati na modifikaciyu ta pidtrimku Slabka pov yazanistV OOP yaksho metodi deyakogo klasu yak pravilo podibni v bagatoh aspektah to klas vvazhayetsya takim sho maye visoku pov yazanist Pov yazanist zmenshuyetsya yaksho Funkcional vbudovanij v metodi klasu maye malo spilnogo Metodi vikonuyut bagato riznih funkcij chasto nad chi nepov yazanimi naborami danih Nedolikami nizkoyi slabkoyi pov yazanosti ye Uskladnennya rozuminnya moduliv Uskladnennya povtornogo vikoristannya modulya tomu sho bilshosti program nepotriben vipadkovij nabir operacij sho nadayetsya modulem Tipi pov yazanostiPov yazanist ce yakisna mira tobto tekst programi doslidzhuyetsya za rubrikami dlya klasifikaciyi pov yazanosti Vidi pov yazanosti v poryadku vid najgirshogo do najkrashogo Vipadkova pov yazanist najgirsha Vipadkova pov yazanist vinikaye todi koli chastini modulya dodayutsya v nogo dovilnim chinom yedinim sho yih pov yazuye ye te sho voni vhodyat do odnogo modulya napriklad klas Utilities Logichna pov yazanist chastini modulya grupuyutsya razom tomu sho voni za logikoyu vikonuyut odnu funkciyu navit yaksho voni rizni za prirodoyu Napriklad grupuvannya vsih pidprogram obrobki vvodu z klaviaturi i mishi Temporalna pov yazanist chastini modulya grupuyutsya zalezhno vid togo v yakij moment chasu vinikaye neobhidnist yih zastosuvannya Napriklad funkciyi sho viklikayutsya pislya viyavlennya pomilki yaki zakrivayut vidkriti fajli zapisuyut pomilku v zhurnal i povidomlyayut koristuvacha Procedurna pov yazanist chastini modulya grupuyutsya tomu sho voni vsi dotrimuyutsya pevnoyi poslidovnosti dij Napriklad funkciyi yaki pereviryayut dozvoli dlya fajlu i pislya cogo jogo vidkrivayut Komunikacijna pov yazanist chastini modulya grupuyutsya tomu sho voni pracyuyut z odnimi j timi zh danimi Poslidovna pov yazanist chastini modulya grupuyutsya tomu sho vivid odniyeyi chastini peredayetsya na vhid inshoyi yak v konveyeri Napriklad funkciyi sho chitayut dani z fajlu obroblyayut yih i pishut nazad Funkcionalna pov yazanist najkrasha chastini modulya grupuyutsya tomu sho voni razom pracyuyut nad odnim chitko oznachenim zavdannyam dlya togo modulya Napriklad leksichnij analiz tekstu chi XML Doslidzhennya bagatoh lyudej takih yak Edward Yourdon ta pokazuyut sho dva pershi vidi pov yazanosti najgirshi komunikacijna ta poslidovna pov yazanosti dosit dobri i funkcionalna najkrasha hocha ne zavzhdi dosyazhna Buvayut vipadki koli komunikacijna pov yazanist ce najkrashe chogo mozhna dosyagti pri danih obstavinah Div takozhZv yaznist programuvannya Spisok terminiv ob yektno oriyentovanogo programuvannyaDzherelaYourdon E Constantine L L 1979 Structured Design Fundamentals of a Discipline of Computer Program and Systems Design copyright 1979 by Prentice Hall Yourdon Press W Stevens G Myers L Constantine Structured Design IBM Systems Journal 13 2 115 139 1974 Code Complete 2nd Ed PosilannyaOznachennya metriki pov yazanosti angl Metrika pov yazanosti angl