Kogeziya (kompyuter ilimi)

Kompyuter programmalastırıwda, **kogeziya** (ingl. *cohesion*) ‒ modul ishindegi elementlerdiń bir-birine qanshelli tiyisli ekenin ańlatadı. Bir mániste, bul klasstıń metodları menen maǵlıwmatları arasındaǵı baylanıstıń kúshin hám sol klass xızmet etetuǵın birlestiriwshi maqset yamasa koncepciyanı ólsheydi. Basqa mániste, bul klasstıń metodları menen maǵlıwmatları arasındaǵı baylanıstıń kúshin ólsheydi. 

Kogeziya - bul tártiplik ólshew túri hám ádette "joqarı kogeziya" yamasa "tómen kogeziya" dep táriyiplenedi. Joqarı kogeziyalı moduller ádette maqul kóriledi, óytkeni joqarı kogeziya bekkemlik, isenimlilik, qayta qollanıwǵa jaramlılıq hám túsiniklilik sıyaqlı bir qansha qálegen programmalıq támiynat qásiyetleri menen baylanıslı. Kerisinshe, tómen kogeziya texnikalıq xızmet kórsetiwdiń, testlewdiń, qayta qollanıwdıń yamasa túsiniwdiń qıyınlıǵı sıyaqlı qálemegen qásiyetler menen baylanıslı.

Kogeziya kóbinese baylanıs penen salıstırıladı. Joqarı kogeziya kóbinese bos baylanıs penen baylanıslı boladı, hám kerisinshe. Baylanıs hám kogeziyanıń programmalıq ólshemleri 1960-jıllardıń aqırında Larri Konstantin tárepinen Strukturalıq Dizaynnıń bir bólegi retinde oylap tabılǵan, texnikalıq xızmet kórsetiw hám ózgertiw shıǵınların azaytatuǵın "jaqsı" programmalastırıw ámeliyatlarınıń ózgesheliklerine tiykarlanǵan. Strukturalıq Dizayn, kogeziya hám baylanıs Stivens, Mayers hám Konstantinniń (1974) maqalasında hám Yordon hám Konstantinniń (1979) kitabında járiyalanǵan. Sońǵı ekewi keyin programmalıq támiynat injeneriyasında standart terminlerge aylandı.

## Joqarı kogeziya
Obektke baǵdarlanǵan programmalastırıwda, eger klasska xızmet etetuǵın metodlar kóp tárepleri boyınsha uqsas bolsa, klass joqarı kogeziyaǵa iye dep esaplanadı. Joqarı kogeziyalı sistemada, kodtıń oqıwǵa jaramlılıǵı hám qayta qollanıwǵa jaramlılıǵı artadı, al quramalılıq basqarılatuǵın dárejede saqlanadı.

Kogeziya tómendegi jaǵdaylarda artadı:

* Klassta jaylasqan, onıń metodları arqalı kiriletuǵın funkcionallıqlar kóp ulıwmalıqqa iye bolsa.
* Metodlar úlken kólemli yamasa baylanıssız maǵlıwmatlar toplamlarınan qashıp, az sanlı baylanıslı háreketlerdi orınlaydı.
* Baylanıslı metodlar bir dereklik faylda yamasa basqasha toplanǵan; mısalı, ayırım fayllarda, biraq bir qosımsha direktoriya/papkada.

Joqarı kogeziyanıń (yamasa "kúshli kogeziyanıń") artıqmashlıqları:

* Az operaciyalar menen moduldiń quramalılıǵın azaytıw.
* Sistemanıń texnikalıq xızmet kórsetiwge jaramlılıǵın arttırıw, sebebi tarawdaǵı logikalıq ózgerisler az sanlı modullerge tásir etedi, hám bir moduldegi ózgerisler basqa modullerde az ózgerislerdi talap etedi.
* Moduldiń qayta qollanıwǵa jaramlılıǵın arttırıw, sebebi baǵdarlamashılar modul tárepinen usınılǵan kogeziyalı operaciyalar toplamı arasınan ózlerine kerekli komponentti ańsatıraq tabadı.

Principte, modul tek bir ǵana atomlıq elementten ibarat bolıp - mısalı, tek bir funkciyaǵa iye bolıp - quramalı kogeziyaǵa iye bola alsa da, ámelde quramalı wazıypalardı bir ǵana ápiwayı element penen ańlatıw múmkin emes. Solay etip, bir elementli modulde wazıypanı orınlaw ushın ya júdá quramalı, yamasa júdá tar hám sonlıqtan basqa moduller menen tıǵız baylanısqan element bar. Demek, kogeziya hám blok quramalılıǵı, hám baylanıs arasında teńsalmaqlastırılǵan.

## Kogeziya túrleri
Kogeziya sapalıq ólshem bolıp, derek kodı rubrika járdeminde izertlenip, klassifikaciya anıqlanadı. Kogeziya túrleri, eń jamanınan eń jaqsısına qaray, tómendegishe:

; Tosınnan kogeziya (eń jamanı)
: Tosınnan kogeziya - moduldiń bólimleri qálegen túrde toplanǵan jaǵday. Bólimler arasındaǵı jalǵız baylanıs - olardıń birge toplanǵanı (mısalı, "Utilitalar" klassı). Mısal:
:: 
```c
/*
Toparlar: Funkciya anıqlamaları
Bólimler: Hár funkciyadaǵı terminler
*/
A Moduli {
 /*
 r(x) = 5x + 3 funkciyasınıń implementaciyası
 Funkciyalardı bul túrde toplawdıń hesh qanday ayrıqsha sebebi joq,
 sonlıqtan moduldiń Tosınnan Kogeziyaǵa iye ekenligi aytıladı.
 */
 r(x) = a(x) + b(x)
 a(x) = 2x + 1
 b(x) = 3x + 2
}
```


; Logikalıq kogeziya
: Logikalıq kogeziya - moduldiń bólimleri tábiyatı boyınsha hár túrli bolsa da, logikalıq jaqtan bir nárseni islew ushın gruppalastırılǵan jaǵday (mısalı, barlıq tıshqansha hám klaviatura kirgiziwin basqarıw proceduraların toplaw yamasa MVC úlgisinde barlıq modellerdi, kórinislerdi hám basqarıwshılardı ayırım papkalarda jámlestiriw).

; Waqıtlıq kogeziya
: Waqıtlıq kogeziya - moduldiń bólimleri olardıń qayta islenetuǵın waqtına qaray gruppalastırılǵan jaǵday. Bólimler baǵdarlama orınlanıwınıń belgili bir waqtında qayta islenedi (mısalı, qátelik júz bergennen keyin shaqırılatuǵın, ashıq fayllardı jabatuǵın, qátelik jurnalın jaratıwshı hám paydalanıwshıǵa xabar beretuǵın funkciya).

; Proceduralıq kogeziya
: Proceduralıq kogeziya - moduldiń bólimleri bárhama belgili bir orınlanıw izbe-izligin gózlegeni ushın gruppalastırılǵan jaǵday (mısalı, fayl ruqsatnamaların tekseretuǵın, sońınan fayldı ashatuǵın funkciya).

; Kommunikaciyalıq/informaciyalıq kogeziya
: Kommunikaciyalıq kogeziya - moduldiń bólimleri bir maǵlıwmat ústinde islegeni ushın gruppalastırılǵan jaǵday (mısalı, informaciyanıń bir jazbası ústinde isleytuǵın modul).

; Izbe-iz kogeziya
: Izbe-iz kogeziya - moduldiń bólimleri konveyer sıyaqlı bir bólimniń shıǵısı ekinshi bólimniń kirisine aylanǵanı ushın gruppalastırılǵan jaǵday (mısalı, fayldan maǵlıwmat oqıytuǵın hám sol maǵlıwmattı qayta isleytuǵın funkciya).

; Funkcionallıq kogeziya (eń jaqsısı)
: Funkcionallıq kogeziya - moduldiń bólimleri hámmesi moduldiń bir anıq belgilengen wazıypasın orınlawǵa úles qosqanı ushın gruppalastırılǵan jaǵday (mısalı, XML qatarınıń leksikalıq analizi). Mısalı:
:: 
```c
/*
Toparlar: Funkciya anıqlamaları
Bólimler: Hárbir funkciyadaǵı terminler
*/
A Moduli {
 /*
 Arifmetikalıq ámellerdiń ámelge asırılıwı
 Bul modul funkcionallıq kogeziyaǵa iye dep esaplanadı, sebebi 
 onda ápiwayı arifmetikalıq ámellerdi gruppalastırıw maqseti bar. 
 */
 a(x, y) = x + y
 b(x, y) = x * y
}

B Moduli {
 /*
 B Moduli: r(x) = 5x + 3 ni ámelge asıradı
 Bul modul atomlıq kogeziyaǵa iye dep aytıwǵa boladı. Pútkil
 sistema (A hám B Modulleri bólimler sıpatında) funkcionallıq
 kogeziyaǵa iye dep te aytıwǵa boladı, sebebi onıń bólimleriniń ekewi de 
 ózine tán ayrıqsha maqsetlerge iye. 
 */
 r(x) = [A Moduli].a([A Moduli].b(5, x), 3)
}
```


; Ájayıp kogeziya (atomlıq)
: Mısal.
:: 
```c
/*
Toparlar: Funkciya anıqlamaları
Bólimler: Hárbir funkciyadaǵı terminler
*/
A Moduli {
 /* 
 r(x) = 2x + 1 + 3x + 2 niń ámelge asırılıwı
 Bul ájayıp kogeziyaǵa iye dep esaplanadı, sebebi onı bunnan artıq 
 qısqartıw múmkin emes.
 */
 r(x) = 2x + 1 + 3x + 2
}
```


Kogeziya dárejelendiriw túrindegi shkala bolsa da, bul dárejeler kogeziyanıń turaqlı jaqsılanıwın kórsetpeydi. Larri Konstantin, Edvard Yordon hám Stiv Makkonnelldiń izertlewleri kórsetkenindey, kogeziyanıń birinshi eki túri tómen sapalı, kommunikaciyalıq hám izbe-iz kogeziya júdá jaqsı, al funkcionallıq kogeziya bolsa eń joqarı sapalı bolıp esaplanadı.

## Derekler