Birlashma (kompyuter dasturlash) - Coupling (computer programming)

Yilda dasturiy ta'minot, birlashma dasturiy ta'minot modullari o'rtasidagi o'zaro bog'liqlik darajasi; ikkita muntazam yoki modulning bir-biri bilan chambarchas bog'liqligi o'lchovi;[1] modullar o'rtasidagi munosabatlarning mustahkamligi.[2]

Kaplin odatda qarama-qarshi bo'ladi hamjihatlik. Kam ulanish ko'pincha yuqori birlashma bilan o'zaro bog'liq va aksincha. Kam bog'lanish ko'pincha yaxshi tuzilganlik belgisidir kompyuter tizimi va yaxshi dizayn va yuqori uyg'unlik bilan birlashganda, yuqori o'qish va saqlashning umumiy maqsadlarini qo'llab-quvvatlaydi.[iqtibos kerak ]

Tarix

The dasturiy ta'minotning sifatli ko'rsatkichlari birlashma va hamjihatlik tomonidan ixtiro qilingan Larri Konstantin 1960 yillarning oxirida a tuzilgan dizayn, texnik xizmat ko'rsatish va modifikatsiya xarajatlarini kamaytiradigan "yaxshi" dasturlash amaliyotining xususiyatlariga asoslangan. Tarkibiy dizayn, shu jumladan birlashma va bog'lanish, maqolada chop etilgan Stivens, Myers va Konstantin (1974)[3] va kitob Yourdon & Constantine (1979),[4] ikkinchisi keyinchalik standart shartlarga aylandi.

Birlashma turlari

Birlashtirishning kontseptual modeli

Kuplaj "past" bo'lishi mumkin (shuningdek "bo'shashgan "va" zaif ") yoki" baland "(shuningdek" qattiq "va" kuchli "). Ba'zi birlashish turlari eng yuqori va eng past darajadagi birikmalar tartibida quyidagilar:

Protsessual dasturlash

Bu erda modul har qanday turdagi pastki dasturni, ya'ni ismga ega bo'lgan bir yoki bir nechta bayonotlar to'plamini va tarjixon o'zlarining o'zgaruvchan nomlarini anglatadi.

Tarkibni birlashtirish (yuqori)
Tarkibni birlashtirish bir modul boshqa modulning kodidan, masalan, filialdan foydalanganda sodir bo'ladi deyiladi. Bu ma'lumotni yashirishni buzadi - asosiy dizayn tushunchasi.
Umumiy birikma
Umumiy bog'lanish deyiladi, bir nechta modullar bir xil global ma'lumotlarga ega bo'lganda. Ammo bu o'zgarishlar kiritilganda nazoratsiz xato tarqalishiga va kutilmagan yon ta'sirga olib kelishi mumkin.
Tashqi kuplaj
Tashqi ulanish, ikkita modul tashqi o'rnatilgan ma'lumotlar formati, aloqa protokoli yoki qurilma interfeysi bilan bo'lishganda sodir bo'ladi. Bu asosan tashqi vositalar va qurilmalar bilan aloqa qilish bilan bog'liq.
Kuplajni boshqarish
Boshqarish aloqasi - bu bitta modul boshqasining oqimini boshqarishi, unga nima qilish kerakligi to'g'risida ma'lumot berish (masalan, nima qilish kerakligi bayrog'ini yuborish).
Damgalarni birlashtirish (ma'lumotlar tuzilgan birikmalar)
Pochta markasi birlashishi modullar kompozit ma'lumotlar strukturasini birgalikda ishlatganda va uning faqat ayrim qismlarini, ehtimol turli qismlarini ishlatganda (masalan, bitta yozuv maydonini talab qiladigan funktsiyaga butun yozuvni uzatishda) sodir bo'ladi.
Bunday vaziyatda modulga kerak bo'lmagan sohadagi modifikatsiya modul yozuvni o'qish usulini o'zgartirishi mumkin.
Ma'lumotlarni birlashtirish
Ma'lumotlarni birlashtirish, masalan, parametrlar orqali modullar ma'lumot almashganda paydo bo'ladi. Har bir ma'lumotlar bazasi elementar qism bo'lib, ular faqat bitta ma'lumotdir (masalan, kvadrat ildizni hisoblaydigan funktsiyaga butun sonni o'tkazish).

Ob'ektga yo'naltirilgan dasturlash

Subklass aloqasi
Bola va uning ota-onasi o'rtasidagi munosabatni tavsiflaydi. Bola ota-onasi bilan bog'liq, ammo ota-ona bolasi bilan bog'liq emas.
Vaqtinchalik bog'lanish
Ikkala xatti-harakatlar bir vaqtning o'zida sodir bo'lishi sababli bitta modulga birlashtirilganda.

So'nggi ishlarda boshqa birlashma tushunchalari o'rganilib, amalda qo'llaniladigan modullashtirishning turli tamoyillari ko'rsatkichlari sifatida ishlatilgan.[5]

Dinamik birlashma

Ushbu turdagi ulanishning maqsadi dasturiy ta'minot tizimini ish vaqtini baholashni ta'minlashdir. Statik bog'lanish ko'rsatkichlari dinamik bog'lanish yoki merosni intensiv ishlatish bilan bog'liq holda aniqlikni yo'qotadi, deb ta'kidladilar.[6] Ushbu muammoni hal qilishda dinamik ulanish choralari hisobga olingan.

Semantik birikma

Ushbu birikma, masalan, sharhlar va identifikatorlardan foydalangan holda dasturiy ta'minot sub'ektlari o'rtasidagi kontseptual o'xshashliklarni ko'rib chiqadi va shunga o'xshash usullarga tayanadi. Yashirin semantik indekslash (LSI).

Mantiqiy birikma

Mantiqiy bog'lanish (yoki evolyutsion birikma yoki o'zgarish kuplaji) modullar yoki sinflar orasida o'zgarish modellarini topish uchun dasturiy ta'minot tizimining chiqish tarixidan foydalanadi: masalan, birgalikda o'zgarishi mumkin bo'lgan ob'ektlar yoki o'zgarishlar ketma-ketligi (A sinfidagi o'zgarish har doim keyin B sinfidagi o'zgarish).

Qattiq bog'lanishning kamchiliklari

Qattiq bog'langan tizimlar quyidagi rivojlanish xususiyatlarini aks ettiradi, bu ko'pincha kamchiliklar sifatida qaraladi:

  1. Bitta modulning o'zgarishi odatda a ni majbur qiladi dalgalanma ta'siri boshqa modullardagi o'zgarishlar.
  2. Modullarni yig'ish modullararo bog'liqlikning kuchayishi sababli ko'proq kuch va / yoki vaqt talab qilishi mumkin.
  3. Muayyan modulga qiyinroq bo'lishi mumkin qayta ishlatmoq va / yoki sinov, chunki bog'liq modullarni kiritish kerak.

Ishlash muammolari

Bo'shashgan yoki mahkam bog'langan bo'ladimi, tizimning ishlashi ko'pincha xabarlar va parametrlarni yaratish, uzatish, tarjima (masalan, marshalash) va xabarlarni talqin qilish (bu satr, massiv yoki ma'lumotlar tuzilishiga havola bo'lishi mumkin) bilan kamayadi, bu esa yaratilishdan kamroq xarajatlarni talab qiladi. kabi murakkab xabar SABUN xabar. Uzunroq xabarlarni ishlab chiqarish uchun ko'proq CPU va xotira kerak. Ishlash vaqtini optimallashtirish uchun xabar uzunligini minimallashtirish va xabarning ma'nosini maksimal darajada oshirish kerak.

Xabarni uzatish ustama va ishlash
O'zining to'liq ma'nosini saqlab qolish uchun xabar to'liq uzatilishi kerakligi sababli, xabar uzatishni optimallashtirish kerak. Uzunroq xabarlarni uzatish va qabul qilish uchun ko'proq protsessor va xotira kerak. Bundan tashqari, agar kerak bo'lsa, qabul qiluvchilar xabarni to'liq qabul qilish uchun uni asl holatiga qaytarishlari kerak. Shunday qilib, ish vaqtini optimallashtirish uchun xabarning uzunligini minimallashtirish va xabarning ma'nosini maksimal darajada oshirish kerak.
Xabarni tarjima qilishning ortiqcha xarajatlari va ishlashi
Xabar protokollari va xabarlarning o'zlari ko'pincha qo'shimcha ma'lumotlarni o'z ichiga oladi (ya'ni paket, tuzilish, ta'rif va til ma'lumotlari). Shunday qilib, qabul qilgich ko'pincha qo'shimcha belgilar va tuzilish ma'lumotlarini olib tashlash va / yoki qiymatlarni bir turdan boshqasiga o'tkazish orqali xabarni yanada aniq shaklga aylantirishi kerak. Har qanday tarjima CPU va / yoki xotira xarajatlarini oshiradi. Ishlash vaqtini optimallashtirish uchun uning shakli va tarjimasini kamaytirish uchun xabar shakli va tarkibi qisqartirilishi va takomillashtirilishi kerak.
Xabarni sharhlashning umumiy qiymati va ishlashi
Barcha xabarlar qabul qilgich tomonidan talqin qilinishi kerak. Butun sonlar kabi oddiy xabarlar talqin qilinishi uchun qo'shimcha ishlov berish talab etilmasligi mumkin. Biroq, kabi murakkab xabarlar SABUN xabarlar uchun mo'ljallangan ma'nolarni namoyish qilish uchun ajralish moslamasi va simli transformator kerak. Ishlash vaqtini optimallashtirish uchun xabarlarni takomillashtirish va talqinni kamaytirish uchun kamaytirish kerak.

Yechimlar

Birlashishni kamaytirishga bitta yondashuv funktsional dizayn, bu funktsionallik bilan birga modullarning javobgarligini cheklashga intiladi. Birlashma ikki sinf o'rtasida ko'payadi A va B agar:

  • A ga tegishli bo'lgan atributga ega (turi) B.
  • A ob'ekt xizmatlariga qo'ng'iroqlar B.
  • A havola beradigan uslubga ega B (qaytish turi yoki parametr orqali).
  • A (yoki amalga oshiradigan) sinfning subklassidir B.

Kam bog'lanish bir modulning boshqa modul bilan oddiy va barqaror interfeys orqali o'zaro aloqasini anglatadi va boshqa modulning ichki bajarilishi bilan bog'liq bo'lishi shart emas (qarang. Axborotni yashirish ).

Kabi tizimlar KORBA yoki MAQOMOTI boshqa ob'ektning bajarilishi to'g'risida hech narsa bilmasdan, ob'ektlarning bir-biri bilan aloqa qilishlariga imkon berish. Ushbu ikkala tizim hatto ob'ektlarning boshqa tillarda yozilgan narsalar bilan aloqa qilishiga imkon beradi.

Birlashish bilan birlashish

Birlashma va hamjihatlik birgalikda tez-tez uchraydigan atamalardir. Birlashish modullar o'rtasidagi o'zaro bog'liqlikni anglatadi, birlashma esa bitta modul ichidagi funktsiyalarning qanday bog'liqligini tavsiflaydi. Birgalikning pastligi shuni anglatadiki, berilgan modul bir-biri bilan unchalik bog'liq bo'lmagan vazifalarni bajaradi va shuning uchun modul katta bo'lganligi sababli muammolar tug'dirishi mumkin.

Modulni ulash

Dasturiy ta'minot muhandisligi[7] ushbu kontseptsiya bilan bog'liq o'lchovlarning bir versiyasini tavsiflaydi.

Ma'lumotlar va boshqaruv oqimining ulanishi uchun:

  • dmen: kirish ma'lumotlarining parametrlari soni
  • vmen: kirishni boshqarish parametrlari soni
  • do: chiqish ma'lumotlarining parametrlari soni
  • vo: chiqishni boshqarish parametrlari soni

Global birlashma uchun:

  • gd: ma'lumotlar sifatida ishlatiladigan global o'zgaruvchilar soni
  • gv: boshqaruv sifatida ishlatiladigan global o'zgaruvchilar soni

Atrof muhitni bog'lash uchun:

  • w: chaqirilgan modullar soni (fan-out)
  • r: ko'rib chiqilayotgan modulni chaqiradigan modullar soni (fan-in)

Birlashma (C) modul qanchalik bog'langan bo'lsa, qiymatni katta qiladi. Ushbu raqam taxminan 0,67 dan (past kuplaj) 1,0 gacha (juda bog'langan)

Masalan, agar modulda faqat bitta kirish va chiqish ma'lumotlari parametri bo'lsa

Agar modulda 5 ta kirish va chiqish ma'lumotlari parametrlari, teng miqdordagi boshqaruv parametrlari mavjud bo'lsa va 10 ta global ma'lumotlarga kirish imkoni bo'lsa, 3 ta fan va 4 ta chiqish bilan,

Shuningdek qarang

Adabiyotlar

  1. ^ ISO / IEC / IEEE 24765: 2010 Tizimlar va dasturiy ta'minot muhandisligi - Lug'at
  2. ^ ISO / IEC TR 19759: 2005, dasturiy ta'minot muhandisligi - bilimlarni dasturiy ta'minot muhandisligi uchun qo'llanma (SWEBOK)
  3. ^ Stivens, Ueyn P.; Myers, Glenford J.; Konstantin, Larri LeRoy (1974 yil iyun). "Tuzilgan dizayn". IBM Systems Journal. 13 (2): 115–139. doi:10.1147 / sj.132.0115.
  4. ^ Haydon, Edvard; Konstantin, Larri LeRoy (1979) [1975]. Strukturaviy dizayn: kompyuter dasturi va tizimlarini loyihalash intizomi asoslari. Yourdon Press. Bibcode:1979sdfd.book ..... Y. ISBN  978-0-13-854471-3. ISBN  0-13-854471-9.
  5. ^ Bek, Fabian; Diehl, Stephan (2011 yil sentyabr). "Modullik va kodni birlashtirishning kelishuvi to'g'risida". 19 ACM SIGSOFT Simpoziumi va Dasturiy ta'minot muhandisligi asoslari bo'yicha 13-Evropa konferentsiyasi (SIGSOFT / FSE '11) materiallarida.. Seged, Vengriya. doi:10.1145/2025113.2025162.
  6. ^ Arisholm, Erik; Briand, Lionel S.; Fyyen, Audun (2004 yil avgust). "Ob'ektga yo'naltirilgan dasturiy ta'minot uchun dinamik ulanish o'lchovi". Dasturiy injiniring bo'yicha IEEE operatsiyalari. IEEE. 30 (8): 491–506. doi:10.1109 / TSE.2004.41. hdl:10852/9090.
  7. ^ Pressman, Rojer S. (1982). Dasturiy ta'minot muhandisligi - amaliyotchining yondashuvi (4 nashr). ISBN  0-07-052182-4.

Qo'shimcha o'qish