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 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.
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 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 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 A mintát több keretrendszer is implementálja: Apache Isis BlueJ Domain Object Explorer dotObjects Entities gengui JMatter Naked Objects Framework NoWicket Sanssouci Trails
Példa Í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,Department of Social and Family Affairs - Guide to the Functions & Records of the Department, DSFA website - Freedom Of Information é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. A későbbi tapasztalatokat a QCon London 2011 prezentációja összegezte.Case Study: Large-scale Pure OO at the Irish Government QCon London 2011
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.Fujitsu, Case Study: The Department of Social and Family Affairs Fujitsu website Továbbfejlesztése a Naked Objects Framework, amit további fejlesztések alapjául szánnak.Department of Social & Family Affairs, The ongoing development of the Department's Service Delivery Modernisation programme, 2007, e-tenders website
Kritika 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 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.
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.Haywood, D., Domain-Driven Design using Naked Objects , 2009, Pragmatic Programmers
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.Haywood, D (2004) MDA: Nice idea, shame about the...
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
Fordítás
Kategória:Programtervezési minták