Kohézió (számítástechnika)

A számítógépes programozásban a kohézió azt mutatja, hogy a modulon belüli elemek mennyire tartoznak össze. Bizonyos értelemben ez egy osztály metódusai és adatai, valamint az osztály által szolgált egyesítő cél vagy fogalom közötti kapcsolat erősségének mérőszáma. Más értelemben az osztály módszerei és adatai közötti kapcsolat erősségének mérőszáma.

A kohézió egy ordinális típusú mérés, és általában a "nagy kohézió" vagy az "alacsony kohézió" jelzővel írják le. A magas kohézióval rendelkező modulok általában előnyösebbek, mivel a magas kohézió a szoftver számos kívánatos tulajdonságával jár együtt, beleértve a robusztusságot, a megbízhatóságot, az újrafelhasználhatóságot és az érthetőséget. Ezzel szemben az alacsony kohézió olyan nemkívánatos tulajdonságokkal jár együtt, mint a nehezen karbantartható, tesztelhető, újrafelhasználható vagy akár érthető.

A kohéziót gyakran szembeállítják a csatolással, amely egy másik fogalom. A nagy kohézió gyakran korrelál a laza csatolással, és fordítva. A csatolás és a kohézió szoftveres mérőszámait Larry Constantine találta ki az 1960-as évek végén a strukturált tervezés részeként, a karbantartási és módosítási költségeket csökkentő "jó" programozási gyakorlatok jellemzői alapján. A strukturált tervezés, a kohézió és a csatolás a Stevens, Myers & Constantine (1974) című cikkben és a Yourdon & Constantine (1979) című könyvben jelent meg; az utóbbi két kifejezés később a szoftverfejlesztés standard fogalmaivá vált.

Nagy kohézió

Az objektumorientált programozásban, ha egy osztályt kiszolgáló metódusok sok szempontból hasonlóak, akkor az osztályról azt mondjuk, hogy magas kohézióval rendelkezik. Egy nagy kohéziójú rendszerben a kód olvashatósága és újrafelhasználhatósága megnő, miközben a komplexitás kezelhető marad.

Kohézió

A kohézió fokozódik, ha:

  • Az osztályokba ágyazott funkciók, amelyekhez a metódusokon keresztül férhetünk hozzá, sok közös vonást mutatnak.
  • A metódusok kisszámú, egymással összefüggő tevékenységet végeznek, elkerülve a durva szemcsés vagy egymástól független adathalmazokat.
  • A kapcsolódó metódusok ugyanabban a forrásfájlban vagy más módon csoportosítva vannak; például különálló fájlokban, de ugyanabban az alkönyvtárban/mappában.

A nagy kohézió (vagy "erős kohézió") előnyei a következők:

  • Csökkentett modulkomplexitás (egyszerűbbek, kevesebb műveletük van).
  • A rendszer karbantarthatóságának növekedése, mivel a tartományban bekövetkező logikai változások kevesebb modult érintenek, és mivel az egyik modulban bekövetkező változások kevesebb módosítást igényelnek más modulokban.
  • Fokozott modul-újrafelhasználhatóság, mivel az alkalmazásfejlesztők könnyebben megtalálják a modul által biztosított műveletek összefüggő halmaza között a szükséges komponenst.

Míg elvileg egy modul tökéletes kohézióval rendelkezhet, ha csak egyetlen atomikus elemből áll - például egyetlen funkcióval rendelkezik -, a gyakorlatban az összetett feladatok nem fejezhetők ki egyetlen egyszerű elemmel. Így egy egyelemű modulnak van olyan eleme, amely vagy túl bonyolult ahhoz, hogy egy feladatot teljesítsen, vagy túl szűk, és így szorosan kapcsolódik más modulokhoz. Így a kohézió egyensúlyban van mind az egység összetettségével, mind a csatolással.

A kohézió típusai

A kohézió minőségi mérés, ami azt jelenti, hogy a mérendő forráskódot egy rubrika segítségével vizsgálják meg a besorolás meghatározásához. A kohéziós típusok a legrosszabbtól a legjobbig a következők:

Véletlenszerű kohézió (legrosszabb)
Véletlenszerű kohézióról akkor beszélünk, amikor egy modul részei találomra vannak csoportosítva; a részek közötti egyetlen kapcsolat az, hogy egy csoportba lettek csoportosítva (pl. egy "Utilities" osztály). Példa:
/*
Groups: The function definitions
Parts: The terms on each function
*/
Module A{
 /*
 Implementation of r(x) = 5x + 3
 There is no particular reason to group functions in this way,
 so the module is said to have Coincidental Cohesion.
 */ 
 r(x) = a(x) + b(x) 
 a(x) = 2x + 1
 b(x) = 3x + 2
}
Logikai kohézió

A logikai kohézió az, amikor egy modul részei azért vannak csoportosítva, mert logikailag ugyanazt a feladatot látják el, még ha természetüknél fogva különböznek is (pl. az egér- és billentyűzetbeviteli rutinok csoportosítása).

Időbeli kohézió

Időbeli kohézióról akkor beszélünk, ha egy modul részeit a feldolgozásuk időpontja szerint csoportosítjuk - a részek a programvégrehajtás egy adott időpontjában kerülnek feldolgozásra (pl. egy függvény, amelyet egy kivétel elkapása után hívunk meg, amely lezárja a nyitott fájlokat, hibanaplót készít, és értesíti a felhasználót).

Eljárási kohézió
Procedurális kohézióról akkor beszélünk, ha egy modul részei azért vannak csoportosítva, mert mindig egy bizonyos végrehajtási sorrendet követnek (pl. egy függvény, amely ellenőrzi a fájljogosultságokat, majd megnyitja a fájlt).
Kommunikációs / információs kohézió
Kommunikációs kohézióról akkor beszélünk, ha egy modul részei azért vannak csoportosítva, mert ugyanazokkal az adatokkal dolgoznak (pl. egy modul, amely ugyanazon az információs rekordon dolgozik).
Szekvenciális kohézió
A szekvenciális kohézió az, amikor egy modul részei azért vannak csoportosítva, mert az egyik rész kimenete egy másik rész bemenete, mint egy futószalag (pl. egy függvény, amely adatokat olvas be egy fájlból és feldolgozza az adatokat).
Funkcionális kohézió (legjobb)
Funkcionális kohézióról akkor beszélünk, ha egy modul részei azért vannak csoportosítva, mert mindannyian hozzájárulnak a modul egyetlen jól meghatározott feladatához (pl. egy XML-szöveg lexikális elemzése). Példa:
/*
Groups: The function definitions
Parts: The terms on each function
*/
Module A {
 /*
 Implementation of arithmetic operations
 This module is said to have functional cohesion because 
 there is an intention to group simple arithmetic operations
 on it. 
 */
 a(x, y) = x + y
 b(x, y) = x * y
}

Module B {
 /*
 Module B: Implements r(x) = 5x + 3
 This module can be said to have atomic cohesion. The whole
 system (with Modules A and B as parts) can also be said to have functional
 cohesion, because its parts both have specific separate purposes. 
 */
 r(x) = [Module A].a([Module A].b(5, x), 3)
}
Tökéletes kohézió (atom)
Példa.
/*
Groups: The function definitions
Parts: The terms on each function
*/
Module A {
 /* 
 Implementation of r(x) = 2x + 1 + 3x + 2
 It's said to have perfect cohesion because it cannot be reduced any more than that.
 */
 r(x) = 5x + 3
}

Bár a kohézió egy ordinális típusú skála, a rangsorok nem jelzik a kohézió javulásának folyamatos előrehaladását. Különböző személyek, köztük Larry Constantine, Edward Yourdon és Steve McConnell tanulmányai azt mutatják, hogy a kohézió első két típusa gyengébb, a kommunikációs és a szekvenciális kohézió nagyon jó, a funkcionális kohézió pedig jobb.

Bár a funkcionális kohéziót tartják a szoftvermodulok legkívánatosabb kohéziótípusának, ez nem feltétlenül érhető el. Vannak olyan esetek, amikor a kommunikációs kohézió a legmagasabb szintű kohézió, amely az adott körülmények között elérhető.

Fordítás

Ez a szócikk részben vagy egészben a Cohesion (computer science) című angol Wikipédia-szócikk ezen változatának fordításán alapul. Az eredeti cikk szerkesztőit annak laptörténete sorolja fel. Ez a jelzés csupán a megfogalmazás eredetét és a szerzői jogokat jelzi, nem szolgál a cikkben szereplő információk forrásmegjelöléseként.

Kapcsolódó szócikkek

Read other articles:

Mason Greenwood Mason GreenwoodInformasi pribadiNama lengkap Mason Jhon Will GreenwoodTanggal lahir 1 Oktober 2001 (umur 22)Tempat lahir Wibsey, Bradford, InggrisTinggi 181 cm (5 ft 11 in)Posisi bermain PenyerangInformasi klubKlub saat ini GetafeNomor 12Karier junior2007 Idle Juniors FC2007–2019 Manchester UnitedKarier senior*Tahun Tim Tampil (Gol)2019– Manchester United 121 (57)2023–2024 → Getafe (pinjaman) 9 (3)Tim nasional‡2015 Inggris U-15 1 (0)2017–2018 I...

 

Koordinat: 1°21′03″N 103°37′59″E / 1.35085°N 103.633132°E / 1.35085; 103.633132 Jembatan Malaysia–SingapuraLaluan Kedua Malaysia–SingapuraKoordinat1°21′03″N 103°37′59″E / 1.35085°N 103.633132°E / 1.35085; 103.633132Moda transportasiKendaraan bermotorMelintasiSelat JohorLokalMalaysia Second Link ExpresswaySingapuraAyer Rajah ExpresswayNama resmiMalaysia–Singapore Second LinkPengelolaMalaysiaPLUS Malaysia BerhadProjek...

 

Запрос «Пугачёва» перенаправляется сюда; см. также другие значения. Алла Пугачёва На фестивале «Славянский базар в Витебске», 2016 год Основная информация Полное имя Алла Борисовна Пугачёва Дата рождения 15 апреля 1949(1949-04-15) (75 лет) Место рождения Москва, СССР[1]...

Clemson-class destroyer For other ships with the same name, see USS McCook and HMCS St. Croix. USS McCook History United States NameUSS McCook NamesakeRoderick S. McCook BuilderBethlehem Shipbuilding Corporation, Fore River Shipyard, Quincy Laid down10 September 1918 Launched31 January 1919 Commissioned30 April 1919 Decommissioned24 September 1940 Stricken8 January 1941 IdentificationDD-252 FateTransferred to the United Kingdom then Canada, 24 September 1940 Canada NameHMCS St. Croix Namesake...

 

贝内德托·贝蒂诺·克拉克西Bettino Craxi第45任意大利总理任期1983年8月4日—1987年4月17日总统亚历山德罗·佩尔蒂尼 弗朗切斯科·科西加副职阿纳尔多·福拉尼前任阿明托雷·范范尼继任阿明托雷·范范尼 个人资料出生(1934-02-24)1934年2月24日伦巴第米兰逝世2000年1月19日(2000歲—01—19)(65歲)突尼斯哈马麦特国籍意大利政党意大利社会党儿女Bobo、Stefania 克拉克西在突尼斯的墓地。 �...

 

2008 video gameLet's TapDeveloper(s)PropePublisher(s)SegaDirector(s)Shunsuke KawarazukaTetsuo ShinyuProducer(s)Yuji NakaHiroyuki MiyazakiArtist(s)Hiroyuki YamamotoComposer(s)Ayako SasoNaofumi HatayaShinji HosoeAzusa ChibaMasaharu IwataMitsuhiro KanedaNoriyuki KamikuraPlatform(s)Wii, iOSReleaseJP: December 18, 2008NA: June 16, 2009PAL: June 19, 2009Genre(s)Rhythm, MinigamesMode(s)Single player, multiplayer Let's Tap is a video game developed by Yuji Naka's studio Prope and published by Sega f...

Crucial WWII air battle fought between German and British air forces For other uses, see Battle of Britain (disambiguation). Battle of BritainPart of the Western Front of the Second World WarA German Luftwaffe Heinkel He 111 bomber flying over Wapping and the Isle of Dogs in the East End of London at the start of the Luftwaffe's evening raids of 7 September 1940.Date10 July – 31 October 1940[nb 1](3 months and 3 weeks)LocationBritish airspace, English ChannelResult British...

 

Social network of individuals who interact through specific social media For other uses, see Virtual community (disambiguation). This article is written like a personal reflection, personal essay, or argumentative essay that states a Wikipedia editor's personal feelings or presents an original argument about a topic. Please help improve it by rewriting it in an encyclopedic style. (March 2011) (Learn how and when to remove this message) A virtual community is a social work of individuals who ...

 

Swiss ice hockey player Ice hockey player Alina Müller Müller with PWHL Boston in 2024Born (1998-03-12) 12 March 1998 (age 26)Lengnau, SwitzerlandHeight 1.67 m (5 ft 6 in)Weight 63 kg (139 lb; 9 st 13 lb)Position ForwardShoots LeftPWHL teamFormer teams PWHL BostonZSC LionsNational team   SwitzerlandPlaying career 2013–present Medal record Olympic Games 2014 Sochi Team Alina Müller (born 12 March 1998) is a Swiss ice hockey forward for...

Dalam nama Tionghoa ini, nama keluarganya adalah Li. Li YifengLahir04 Mei 1987 (umur 37)Chengdu, Sichuan, TiongkokNama lainEvan LiAlmamaterUniversitas Normal SichuanPekerjaan Pemeran Penyanyi Tahun aktif2007–kiniAgenBravo Stars Li Yifeng Hanzi sederhana: 李易峰 Alih aksara Mandarin - Hanyu Pinyin: Lǐ Yìfēng Karier musikGenreMandopop Li Yifeng (Hanzi: 李易峰, lahir 4 Mei 1987) juga dikenal sebagai Evan Li, adalah seorang pemeran dan penyanyi Tiongkok, yang meraih ...

 

محمد بن أحمد العروسي معلومات شخصية مكان الميلاد القاهرة،  مصر الوفاة 1245 هـالقاهرة،  مصر الديانة الإسلام المذهب الفقهي الشافعي العقيدة أهل السنة والجماعة الأولاد مصطفى العروسي  الأب أحمد بن موسى العروسي  عائلة العروسي مناصب شيخ الأزهر (14 )   في المنصب1817  �...

 

Boxing competitions Boxingat the Games of the XXVI OlympiadDates20 July-4 August 1996Competitors355 from 97 nations← 19922000 → Boxing at the1996 Summer OlympicsLight flyweightFlyweightBantamweightFeatherweightLightweightLight welterweightWelterweightLight middleweightMiddleweightLight heavyweightHeavyweightSuper heavyweightvte Boxing at the 1996 Summer Olympics took place in the Alexander Memorial Coliseum in Atlanta. The boxing schedule began on 20 July and e...

orange ジャンル SF、青春、恋愛漫画、学園漫画少女漫画、青年漫画 漫画 作者 高野苺 出版社 集英社 / 双葉社 掲載誌 別冊マーガレット月刊アクション レーベル マーガレットコミックスACTION COMICS 発表号 別冊マーガレット:2012年4月号[1] - 12月号月刊アクション:2014年2月号[2] - 2015年10月号[3](本編)2016年4月号[4](番外編) 発表期間 2012年3月13日 -...

 

高千穂大学 高千穂大学 新1号館 大学設置 1950年創立 1903年学校種別 私立設置者 学校法人高千穂学園本部所在地 東京都杉並区大宮2-19-1北緯35度40分57秒 東経139度38分16秒 / 北緯35.68250度 東経139.63778度 / 35.68250; 139.63778座標: 北緯35度40分57秒 東経139度38分16秒 / 北緯35.68250度 東経139.63778度 / 35.68250; 139.63778学部 商学部経営学部人間科学部研究�...

 

X-45 X-45A вид снизу, открыт оружейный отсек Тип БПЛА Разработчик Boeing Phantom Works Производитель Boeing Defense, Space & Security[вд] Первый полёт 22 мая 2002 года Конец эксплуатации 2005 год Единиц произведено 2 Базовая модель Boeing Bird of Prey Варианты Boeing Phantom Ray  Медиафайлы на Викискладе X-45 — эксп�...

Art movement Postmodern artData.Tron [8K Enhanced Version] by Ryoji Ikeda on show in transmediale 10. History of art Periods and movements Prehistoric Ancient Medieval Pre-Romanesque Romanesque Gothic Renaissance Mannerism Baroque Rococo Neoclassicism Revivalism Romanticism Realism Pre-Raphaelites Modern Impressionism Symbolism Decorative Post-Impressionism Art Nouveau Fauvism Expressionism Cubism Contemporary Postmodern Conceptualism Pop Minimalism RegionsArt of the Middle East Mesopotamian ...

 

1880s Requiem Mass by Gabriel Fauré Page from the manuscript of the Requiem: In paradisum, m. 413, Bibliothèque Nationale, Paris Gabriel Fauré composed his Requiem in D minor, Op. 48, between 1887 and 1890. The choral-orchestral setting of the shortened Catholic Mass for the Dead in Latin is the best-known of his large works. Its focus is on eternal rest and consolation. Fauré's reasons for composing the work are unclear, but do not appear to have had anything to do with the death of his ...

 

Cet article est une ébauche concernant une chanteuse danoise et le Concours Eurovision de la chanson. Vous pouvez partager vos connaissances en l’améliorant (comment ?) selon les recommandations des projets correspondants. Pour les articles homonymes, voir Leonora. LeonoraLeonora au Dansk Melodi Grand Prix 2019.BiographieNaissance 3 octobre 1998 (26 ans)HellerupNationalité danoiseActivités Chanteuse, patineuse artistique, danseuse sur glacePériode d'activité Depuis 2018Frat...

Ancient Greek city in Crete This article is about the ancient city. For the modern municipality, see Faistos. For the comic book character, see Phastos. For other uses, see Phaistos (disambiguation). PhaistosΦαιστόςPa-i-to[1]{{{1}}}Map of Minoan CreteAlternative namePhaestusLocationFaistos, Heraklion, Crete, GreeceRegionThe eastern point of a ridge overlooking Messara Plain to the eastCoordinates35°03′05″N 24°48′49″E / 35.05139°N 24.81361°Eþ...

 

Pain due to bodily tubes contracting to force an obstruction out Cholic redirects here. For the acid, see Cholic acid. This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: Colic – news · newspapers · books · scholar · JSTOR (May 2021) (Learn how and when to remove this message) Medical conditionColicThe cholic (1...