Articles

Az aggodalmak szétválasztása

Internet protocol stackEdit

az aggodalmak szétválasztása kulcsfontosságú az Internet kialakítása szempontjából. Az Internet Protocol Suite-ban nagy erőfeszítéseket tettek az aggodalmak jól meghatározott rétegekre történő elkülönítésére. Ez lehetővé teszi a protokolltervezők számára, hogy az egyik rétegben az aggodalmakra összpontosítsanak, a többi réteget pedig figyelmen kívül hagyják. Az SMTP alkalmazási réteg protokoll például aggódik az e-mail munkamenet megbízható szállítási szolgáltatáson (általában TCP-n) keresztüli lebonyolításának minden részlete miatt, de a legkevésbé sem aggódik amiatt, hogy a szállítási szolgáltatás hogyan teszi megbízhatóvá ezt a szolgáltatást. Hasonlóképpen, a TCP nem aggódik az adatcsomagok útválasztása miatt, amelyet az internetes rétegben kezelnek.

A HTML, CSS, JavaScriptEdit

a HyperText Markup Language (HTML), a Cascading Style Sheets (CSS) és a JavaScript (js) a weboldalak és weboldalak fejlesztésében használt kiegészítő nyelvek. A HTML-t elsősorban a weboldal tartalmának szervezésére, a CSS-t a tartalom megjelenítési stílusának meghatározására használják, a JS pedig meghatározza, hogy a tartalom hogyan működik és viselkedik a felhasználóval. Történelmileg ez nem így volt: a CSS bevezetése előtt a HTML mind a szemantika, mind a stílus meghatározásának feladatait ellátta.

Subject-oriented programmingEdit

a Subject-oriented programming lehetővé teszi, hogy a különálló aggályokat külön szoftverkonstrukcióként kezeljük, mindegyik egyenlő alapon a többiekkel. Mindegyik konszern saját osztálystruktúrát ad, amelybe a közös objektumok szerveződnek, és állapotokat és módszereket ad az összetett eredményhez, ahol egymást vágják. A levelezési szabályok leírják, hogy a különféle aggályok osztályai és módszerei hogyan kapcsolódnak egymáshoz azokon a pontokon, ahol kölcsönhatásba lépnek, lehetővé téve a módszer összetett viselkedésének több aggályból történő levezetését. Az aggodalmak többdimenziós szétválasztása lehetővé teszi az aggodalmak elemzésének és összetételének manipulálását többdimenziós “mátrixként”, amelyben minden aggodalom olyan dimenziót biztosít, amelyben különböző választási pontokat sorolnak fel, a mátrix celláit a megfelelő szoftvertermékek foglalják el.

Aspect-oriented programmingEdit

az Aspect-oriented programozás lehetővé teszi, hogy a horizontális problémákat elsődleges problémaként kezeljék. Például a legtöbb program valamilyen biztonságot és naplózást igényel. A biztonság és a naplózás gyakran másodlagos kérdés, míg az elsődleges szempont gyakran az üzleti célok elérése. EGY program megtervezésekor azonban annak biztonságát a kezdetektől be kell építeni a tervezésbe, ahelyett, hogy másodlagos problémaként kezelnék. A biztonság utólagos alkalmazása gyakran elégtelen biztonsági modellt eredményez, amely túl sok hiányosságot hagy a jövőbeni támadásokhoz. Ezt aspektus-orientált programozással lehet megoldani. Például egy szempont írható annak érvényesítésére, hogy egy bizonyos API-hoz érkező hívások mindig naplózva legyenek, vagy hogy a hibák mindig naplózódnak, amikor kivételt dobnak, függetlenül attól, hogy a program eljárási kódja kezeli-e a kivételt, vagy terjeszti-e azt.

elemzési szintek a mesterséges intelligenciában

a kognitív tudományban és a mesterséges intelligenciában gyakori David Marr elemzési szintjeire utalni. A kutató bármikor összpontosíthat (1) az intelligencia bizonyos aspektusainak kiszámítására, (2) milyen algoritmust alkalmaz, vagy (3) hogyan valósítják meg ezt az algoritmust a hardverben. Az aggodalmak szétválasztása hasonló a szoftver-és hardverfejlesztés interfész/megvalósítás megkülönböztetéséhez.

Normalized systemsEdit

a normalizált rendszerekben az aggodalmak szétválasztása a négy vezérelv egyike. Ennek az elvnek a betartása az egyik eszköz, amely segít csökkenteni azokat a kombinatorikus hatásokat, amelyek idővel bevezetésre kerülnek a karbantartott szoftverekben. A normalizált rendszerekben az aggodalmak szétválasztását aktívan támogatják az eszközök.

SoC részosztályokon keresztülszerkesztés

az aggodalmak szétválasztása részosztályokon keresztül valósítható meg és érvényesíthető.

SoC keresztül részleges osztályok RubyEdit

bear_hunting.rb

class Bear def hunt forest.select(&:food?) endend

bear_eating.rb