Csupasz objektumok

szoftverfejlesztési minta

A csupasz objektum (naked object) egy architekturális minta a szoftverfejlesztésben. Lényege, hogy a felhasználói felület szerkezete tükrözze az adatobjektumok rendszerét.

Definíciója szerkesztés

A csupasz objektumokat három alapelv definiálja:

  • Az üzleti logikát és az adatokat ugyanazok az objektumok tartalmazzák, az egységbe zárásnak megfelelően.
  • A felhasználói interfész közvetlenül reprezentálja a tartományobjektumokat úgy, hogy a felhasználói aktivitás objektumok létrehozására és megtalálására korlátozódjon. Ez az objektumorientált felhasználói felület speciális értelmezése.
  • A felhasználói felületet nem kell kézzel megírni, hanem csak generálni. Ez magában foglalja a forráskód generálását is. Ennek aktualizálása reflexióval támogatható.

A mintát először Richard Pawson írta le PhD*értekezésében, ami magában foglalta a különféle előzmények elemzését és az inspirációt a minta létrehozásához, például írt a Morphic felhasználói interfészről is.[1]

A csupasz objektumokat gyakran szembeállítják a modell-nézet-vezérlő mintával. Azonban Pawson dolgozatának kiadott változatához Trygve Reenskaug, a modell-nézet-vezérlő minta megalkotója írt előszót, ami azt sugallja, hogy a csupasz objektumok közelebb állnak a modell-nézet-vezérlő mintához, mint ahogy azt a minta mai formája alapján gondolhatnánk.

Előnyei szerkesztés

Pawson dolgozatában a minta négy fő előnyét említi:

  • Gyorsabb fejlesztési ciklus, mivel kevesebb réteget kell fejleszteni. Egy konvenciálisabb stílus legalább három réteget használ. Objektumadatbázis vagy objektum-relációs leképezés (ORM) használata esetén minden generálható az adat rétegből, ez azonban már nem tekinthető a minta részének. A tézis tartalmaz egy esettanulmányt is, amiben ugyanazt az alkalmazást fejlesztették hagyományos négy réteges rendszerben és csupasz objektumokkal.
  • Nagyobb agilitás, ami arra utal, hogy a program rugalmasan igazítható az aktuális üzleti körülményekhez. Ez részben abból adódik, hogy kevesebb réteget kell karban és szinkronban, naprakészen tartani. A megkövetelt 1:1 reprezentáció a felhasználói és az adatmodell között jobb minőségű objektummodellezéshez vezet, ami javítja az agilitást.
  • A felhasználói felület jobb képességnyújtása, ami az objektumorientált felhasználói felületnek (OOUI) tulajdonítható. A csupasz objektumok csak lehetővé teszik, hogy ez könnyebben jöjjön létre.
  • Könnyebb követelményelemzés, mivel a fejlesztők közös nyelvet beszélnek a felhasználóval, így ezen a nyelven egyszerűbben megbeszélhetik a követelményeket, mivel nincsenek más reprezentációk, amikről a felhasználó nem tud. A gyorsabb fejlesztési ciklussal együtt valós időben létrehozható a prototípus is.

Korlátai szerkesztés

Az automatikusan generált objektumorientált felhasználói felület megfelel az önálló alkalmazásokhoz, de beágyazott alkalmazásokhoz célszerűtlen.

Keretrendszerek szerkesztés

A mintát több keretrendszer is implementálja:

Példa szerkesztés

Írországban a Department of Employment Affairs and Social Protection (DSP) a csupasz objektumokkal alkotott magának egy programot a családi pótlék kezelésére. A fejlesztést a Service Delivery Modernisation (SDM) keretében végezték,[2] és 2002 novemberében készültek el. Ez volt a csupasz objektumok első széles körben ismert alkalmazása. Pawson dolgozatában leírja a fejlesztés tapasztalatait és a felhasználók reakcióit.[1] A későbbi tapasztalatokat a QCon London 2011 prezentációja összegezte.[3]

Az egyik legfontosabb tapasztalatként azt nevezte meg, hogy a csupasz objektumok erősen támogatták az újrafelhasználást. Egy tartományobjektum, például a Customer máshol is felhasználható volt különösebb változtatások nélkül. Kormányzati szinten fontos az újrafelhasználhatóság, mert vele megtakarítás érhető el. Általában régebbi programok szolgáltatásait hasznosítják újra, de az objektumoké is szóba jöhet.

Az architektúrát a Fujitsu alakította ki a kormányzati szerv számára.[4] Továbbfejlesztése a Naked Objects Framework, amit további fejlesztések alapjául szánnak.[5]

Kritika szerkesztés

A kritika többnyire három területre összpontosít:

  • Az üzleti metódusok beépítése a tartomány objektumokba.
  • Az objektum interfészek alkalmassága.
  • Az általános felhasználói interfészek.

A mellette és az ellene szóló érvek az objektumorientált programozásból és a tartományvezérelt tervezésből származnak. A kritériumok nem korlátozódnak a csupasz objektumokra, de mivel itt a három együtt szerepel, emiatt ezekre nagyobb figyelem jut.

Kapcsolata más módszerekkel szerkesztés

Objektumtár mechanizmusok: Az objektum-relációs leképezések, objektum adatbázisok, és az objektumperzisztencia azzal foglalkozik, hogy ne kelljen külön adathozzáférési réteget írni a tartományobjektumok alá. Potenciális kiegészítői és partnerei a csupasz objektumoknak.

Agilis szoftverfejlesztés: A csupasz objektumok fejleszthetők agilis módon, különösen a finomszemcsés iteratív fejlesztéssel. A DSP programja egyben az egyik legnagyobb agilis fejlesztésű program volt globálisan.[6]

Tartományvezérelt fejlesztés: A tartományvezérelt fejlesztésben inkább a modell alapján határozzák meg a követelményeket, mint fordítva. A közvetlen megfeleltetés a felhasználói felület és a tartománymodell között megkönnyíti az elemzést, és az előnyöket is jobban megmutatja.[7]

Modellvezérelt architektúra (MDA): Habár a csupasz objektumok nem feleltethetők meg szigorúan az MDA definíciójának, osztozik annak sok céljában. Dan Haywood amellett érvelt, hogy a csupasz objektumok hasznosabbak is ezeket a célokat tekintve.[8]

Restful objektumok: Ez szabvány ahhoz, hogy tartomány objektum modellből RESTful interfészeket lehessen létrehozni, habár a szabvány nem írja elő ezek generálását. Viszont a lehetőséget megadja.

Jegyzetek szerkesztés

  1. a b Pawson, Richard (June 2004), Naked objects, Trinity College, University of Dublin, <http://downloads.nakedobjects.net/resources/Pawson%20thesis.pdf>
  2. Department of Social and Family Affairs - Guide to the Functions & Records of the Department, DSFA website - Freedom Of Information Archiválva 2012. október 19-i dátummal a Wayback Machine-ben
  3. Case Study: Large-scale Pure OO at the Irish Government QCon London 2011
  4. Fujitsu, Case Study: The Department of Social and Family Affairs Fujitsu website Archiválva 2007. november 29-i dátummal a Wayback Machine-ben
  5. Department of Social & Family Affairs, The ongoing development of the Department's Service Delivery Modernisation programme, 2007, e-tenders website Archiválva 2012. július 24-i dátummal az Archive.is-en
  6. (2003) „Agile Development Using Naked Objects”. XP'03 Extreme Programming and Agile Processes in Software Engineering 2675: 97–103. doi:10.1007/3-540-44870-5_13. 
  7. Haywood, D., Domain-Driven Design using Naked Objects Archiválva 2017. szeptember 9-i dátummal a Wayback Machine-ben, 2009, Pragmatic Programmers
  8. Haywood, D (2004) MDA: Nice idea, shame about the...

Fordítás szerkesztés

Ez a szócikk részben vagy egészben a Naked objects című angol Wikipédia-szócikk 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.