Az UML-eszköz egy olyan szoftver, amely támogatja a Unified Modeling Language (UML)-hez tartozó legtöbb jelölést. Ez az eszköz a szoftverfejlesztésben egy általános célú szabványos modellező nyelv.
Az UML eszközök széles körben használtak olyan alkalmazásoknál is, amelyek nem kizárólag az UML-re fókuszálnak, de támogatják az Unified Modeling Language egyes funkcióit, akár kiegészítőként, akár egy komponens (alkotóelem) formájában vagy a teljes funkcionalitás egy részeként.
Az UML eszközök a következő funkcionalitásokat támogatják:
A diagram ebben a szövegkörnyezetben UML diagramok létrehozását és szerkesztését jelenti, azaz olyan diagramok, amelyek az Unified Modeling Language grafikus jelöléseit követik.
Az UML-diagramok használata általánosan elfogadott a szoftverfejlesztők által, főleg objektumorientált szoftverek diagramjainak rajzolására. Amikor a fejlesztetők UML ábrákat rajzolnak fel objektumorientált szoftverekhez, akkor rendszerint az UML jelöléseit követik. Másrészt gyakran vitatják, hogy szükség van-e ezekre a diagramokra, illetve, hogy a szoftverfejlesztési folyamat mely szakaszaiban kell őket használni, és hogyan tartsák ezeket naprakészen (ha egyáltalán lehetséges). A szoftverkód elsőbbsége gyakran a diagramok elavulásához vezet.
Az oda-vissza/kör fejlesztés arra az UML eszközök nyújtotta lehetőségre utal, hogy képes kódgenerálást végezni modellekből, és modellgenerálást végezni kódból, miközben a modellt és a kódot szemantikailag egységes állapotban tartjuk egymással. A kódgenerálást és a fordított fejlesztést, az alábbiakban részletesebben ismertetjük.
A kódgenerálás ebben a szövegkörnyezetben annyit jelent, hogy a felhasználó létrehoz egy UML diagramot, aminek van néhány kapcsolódó modelladata, és az UML tool levezeti a forráskódokat a diagramokból és a modelladatokból. Néhány eszközben a felhasználó biztosíthat egy "vázat" a forráskódnak, egy forráskód sablon formájában, ahol az előre definiált szimbólumok ki lesznek cserélve a program forráskódjára a kódgenerálási folyamat során.
A szoftverfejlesztők között vita folyik arról, hogy mennyire hasznos a kódgenerálás. Ez határozottan az adott problémától és attól függ, hogy a kód generálását milyen mértékben kell alkalmazni. Vannak olyan jól ismert területek, ahol a kód generálása bevált gyakorlat, és nem korlátozódik az UML területére.
A fejlesztők meglehetősen vitatják azt a gondolatot, hogy a „kódszintet” teljesen elhagyják, és a „programozást” közvetlenül az UML diagramszinten (azaz a tervezési szinten) kezdjék el. Ez a modellvezérelt architektúra (MDA) jövőképe. Ez az ötlet nem olyan széles körben elterjedt, mint más szoftverfejlesztő eszközök, például fordítóprogramok vagy szoftverkonfiguráció-kezelő rendszerek.
Egy gyakran idézett kritika, hogy az UML diagramokból hiányoznak olyan részletek amelyek szükségesek ahhoz, hogy ugyanazt az információt fedjék le, mint maga a forráskód. Jack W. Reeves[1] állította, hogy a végső megtestesülése a dizájn-nak a forráskódban rejlik. (A gyakran idézett állítását, miszerint a "a kód maga a dizájn" félreértelmezték, annyira, hogy nincs szükség közép- és magas szintű szoftver-tervezési műalkotásokra, például UML-diagramokra vagy szoftver-követelmények dokumentumaira).
A fordított fejlesztés ebben a szövegkörnyezetben azt jelenti, hogy az UML tool beolvassa a program forráskódját input-ként, és abból levezeti a modell adatait és a hozzá kapcsolódó grafikus UML ábrákat.
A fordított programozás kihívásai:
XML metaadatcsere (XMI) egy formátuma az UML modellcserének. XMI nem támogatja az UML diagram cserét, ami lehetővé teszi egy UML diagram importálását egyik modellről a másikra.
A modellorientált architektúrához kapcsolódó kulcsfogalom az a képesség, hogy egy modellt egy másik modellre alakítsanak. Előfordulhat például, hogy egy platformfüggetlen domain-modellt Java-platform-specifikus modellre kell alakítani. Az UML modellek refaktorálása is lehetővé teszi tömörebb és jól kialakított UML modellek előállítását. Lehetséges az is, hogy UML modelleket előállítsunk más modellezési jelölésekből is, mint például a BPMN, amely önmagában egy UML profil. Az ezt támogató szabványt QVT-nek hívják, ami a Queries/Views/Transformations rövidítéséből áll össze. A nyílt forráskódú QVT-megoldás egyik példája az INRIA által készített ATL nyelv.