Mi a COSMIC funkciópont, és miben más, mint az óraszám-becslés?
A Mesterséges Intelligencia Központ Kft. budapesti szoftverfejlesztő cég COSMIC funkciópontban méri a szoftver méretét: a méret így a szoftver tulajdonsága, nem a becslő érzése, ezért ellenőrizhető, újramérhető, és két ajánlat összevethető vele.
Lényeg: A COSMIC (ISO/IEC 19761) a szoftver funkcionális méretét méri: minden adatmozgás (bevitel, kivitel, olvasás, írás) 1 COSMIC funkciópontot (CFP) ér. Az óraszám-becslés azt mondja meg, mennyi munkát vár a becslő; a mért méret azt, mekkora a feladat. Ezért ellenőrizhető, újramérhető, és két ajánlat összevethető vele; a ráfordítás pedig a méretből és a tapasztalati termelékenységből vezethető le.
Mi a funkcionális méretmérés?
A szoftver méretét sokféleképpen lehet kifejezni: programsorokban, órákban, pontokban. A funkcionális méretmérés (angolul functional size measurement, FSM) azt méri, mit kell tudnia a szoftvernek a felhasználói szemszögéből, nem azt, hogyan valósítják meg. Az alapfogalmait az ISO/IEC 14143-1:2007 szabvány rögzíti; a szabvány leírása szerint a cél éppen az, hogy a mérés a megvalósítás módja helyett a felhasználó által igényelt funkciókra figyeljen.
A mérés alapja a funkcionális felhasználói követelmények (functional user requirements, FUR) köre: a felhasználói követelményeknek az a része, amely leírja, milyen feladatokat és szolgáltatásokat kell a szoftvernek elvégeznie. A teljesítmény, a biztonság vagy a választott technológia nem ide tartozik. Ezekről lent, a korlátoknál írunk.
Több szabványosított funkcionálisméret-mérési módszer létezik. A legismertebbek a COSMIC (ISO/IEC 19761:2011) és az IFPUG-módszer (ISO/IEC 20926:2009); az ISO további módszereket is szabványosított (NESMA, FiSMA, Mk II). Mindegyik a követelményekből dolgozik, de más szabályokkal és más mértékegységgel, ezért a különböző módszerekkel mért számok közvetlenül nem vethetők össze.
Mi a COSMIC?
A COSMIC a Common Software Measurement International Consortium rövidítése: nonprofit szervezet, amely a módszert gondozza és a mérők tanúsítását szervezi. A módszer a kilencvenes évek végén alakult ki a korábbi funkciópontos módszerek továbbfejlesztéseként, 2003-ban lett ISO-szabvány, a jelenleg érvényes kiadás az ISO/IEC 19761:2011. A módszer részletes leírása, a COSMIC Measurement Manual 5.0-s változata ingyenesen letölthető; az első része 2021-es, a második 2024-es kiadású.
A szabvány szerint a módszer alkalmazásszoftverek (például üzleti rendszerek), valós idejű szoftverek és ezek keverékei mérésére alkalmas, vagyis egy ERP-, CRM- vagy webshoprendszer és egy vezérlőszoftver is mérhető vele.
A COSMIC-modell fogalmai
A COSMIC a szoftvert egy egyszerű modellel írja le: a szoftver a határán keresztül cserél adatot a funkcionális felhasználóival, és a határon belül olvas a tartós tárból, illetve ír bele.
| Fogalom | Mit jelent | Példa |
|---|---|---|
| Funkcionális felhasználó | aki vagy ami adatot küld a szoftvernek vagy adatot vár tőle: ember, másik szoftver vagy eszköz | az ügyintéző, a számlázó rendszer |
| Határ | képzeletbeli felület a mért szoftver és a funkcionális felhasználói között | a webes felület és a többi rendszer felé nyitott interfész |
| Kiváltó esemény | olyan esemény, amelyre a funkcionális felhasználó elindít egy folyamatot | új ügyfél jelentkezik |
| Funkcionális folyamat | a követelmények elemi, önállóan végrehajtható egysége, adatmozgások összefüggő sora | „új ügyfél rögzítése” |
| Adatcsoport | adatelemek csoportja, amely egyetlen dologról szól, amiről a szoftvernek adatot kell kezelnie | az Ügyfél: név, cím, adószám, e-mail |
| Adatmozgás | egyetlen adatcsoport mozgatása; négy fajtája van | lásd lent |
A négy adatmozgás:
- Entry (bevitel): egy adatcsoport a funkcionális felhasználótól a határon át a folyamatba érkezik.
- Exit (kivitel): egy adatcsoport a folyamatból a határon át a funkcionális felhasználóhoz megy.
- Read (olvasás): a folyamat egy adatcsoportot olvas a tartós tárból.
- Write (írás): a folyamat egy adatcsoportot a tartós tárba ír; a törlés is írásnak számít.
A mérési szabályok közül néhány, amely a számolást meghatározza:
- Minden adatmozgás 1 CFP. Egy funkcionális folyamat mérete az adatmozgásai összege, a szoftveré a folyamatai méretének összege.
- Minden funkcionális folyamat legalább két adatmozgásból áll: egy kiváltó bevitelből és legalább egy kivitelből vagy írásból.
- Egy folyamaton belül ugyanarról az adatcsoportról egy fajta mozgás csak egyszer számít, akárhány mező van benne.
- A folyamat összes hiba- és visszaigazoló üzenete együtt egyetlen kivitel.
- A méret a fajtákon múlik, nem az előfordulásokon: hogy naponta tíz vagy tízezer ügyfelet rögzítenek, az a méreten nem változtat.
- Az adatok feldolgozását (számítást, ellenőrzést) a módszer nem méri külön: az az adott adatmozgás része.
Az eredmény arányskálán mozog, vagyis a méretek összeadhatók és összevethetők: két 40 CFP-s rész együtt 80 CFP, és a részösszeg funkciócsoportonként is kimutatható.
Kidolgozott példa: „új ügyfél rögzítése”
Vegyünk egy egyszerű követelményt: „Az ügyintéző rögzíti az új ügyfél adatait (név, cím, adószám, e-mail). A rendszer ellenőrzi, hogy az ügyfél nincs-e már nyilvántartva, elmenti, és visszajelez a sikerről vagy a hibáról.” A mérés lépései:
- A funkcionális felhasználó az ügyintéző, a kiváltó esemény az, hogy új ügyfél jelentkezik.
- Az adatcsoport az Ügyfél; a négy adatelem ugyanarról a dologról szól, ezért egy csoport.
- Az adatmozgásokat a követelmény mondataiból azonosítjuk, és mindegyiket megszámoljuk.
| Lépés | Adatmozgás | Adatcsoport | Méret |
|---|---|---|---|
| Az ügyintéző elküldi az űrlapot | Entry (bevitel) | Ügyfél | 1 CFP |
| A rendszer megnézi, létezik-e már az ügyfél | Read (olvasás) | Ügyfél | 1 CFP |
| A rendszer elmenti az új ügyfelet | Write (írás) | Ügyfél | 1 CFP |
| Visszajelzés a sikerről vagy bármely hibáról | Exit (kivitel) | hiba- és visszaigazoló üzenet | 1 CFP |
| Összesen | négy adatmozgás | egy adatcsoport | 4 CFP |
Ugyanígy épül fel a COSMIC honlapján közzétett útmutató „új munkavállaló rögzítése” példája is. A követelmény változásai így látszanak a méretben:
- Ha a rendszernek az új ügyfelet a számlázó rendszernek is át kell adnia, az egy újabb kivitel egy másik funkcionális felhasználó felé: 5 CFP.
- Ha az irányítószámot egy településtáblából kell ellenőrizni, az egy újabb olvasás, mert másik adatcsoportról szól: újabb 1 CFP.
- Ha az űrlap négy helyett tizenkét mezőt kér az ügyfélről, a méret nem változik, mert az adatcsoport ugyanaz.
- Ha egy meglévő folyamatot módosítani kell, a változás mérete a hozzáadott, módosított és törölt adatmozgások összege.
A példából az is látszik, miért ellenőrizhető a mérés: minden CFP mögött egy megnevezett követelmény, egy adatcsoport és egy szabály áll. Ha valaki vitatja, pontosan meg lehet mondani, melyik sorról van szó.
Mérés korán, finomítás később
A COSMIC-mérés a mérés céljának és terjedelmének rögzítésével indul: mit mérünk, mi tartozik bele, és mire használjuk az eredményt. A pontos méréshez olyan részletes követelmény kell, amelyből a funkcionális folyamatok és adatmozgásaik azonosíthatók. Egy projekt elején ez gyakran még nincs meg; erre az esetre a COSMIC közzétett közelítő módszereket ajánl a korai méretbecsléshez, a követelmények kidolgozása után pedig következhet a pontos mérés.
A módszer útmutatója arra is figyelmeztet, hogy sok, eredetileg nem funkcionálisnak tűnő igény (például a válaszidő vagy a kezelhetőség) a projekt során szoftverfunkcióvá alakul, és ettől a méret látszólag nő. Ez nem a mérés hibája, hanem azt mutatja meg, hogy a követelmény pontosabb lett. A gyakorlatban ezért érdemes a specifikációt tételesen megírni, a változásokat ugyanazzal a módszerrel újramérni, és a változás méretét külön kimutatni. Így a terjedelem növekedése nem csendben történik, hanem számszerűen látszik.
Összehasonlítás: óraszám, story point, IFPUG, COSMIC
| Szempont | Óraszám-becslés | Story point | IFPUG funkciópont | COSMIC funkciópont |
|---|---|---|---|---|
| Mit fejez ki | a becslő által várt munkát | a csapat relatív becslését; nem mindig világos, hogy méretet, ráfordítást vagy időt | funkcionális méretet | funkcionális méretet |
| Szabványos-e | nem | nem | igen, ISO/IEC 20926:2009 | igen, ISO/IEC 19761:2011 |
| Mitől függ | a becslő tapasztalatától, óvatosságától és csapatától | az adott csapattól; csapatonként mást jelent | a követelményektől | a követelményektől |
| Ellenőrizhető-e kívülről | csak a becslő magyarázata alapján | csapaton kívül alig | igen, nyilvános szabályok szerint | igen, nyilvános és ingyenesen elérhető szabályok szerint |
| Mértékegység | óra | a csapat saját pontja | IFPUG funkciópont | CFP, 1 CFP = 1 adatmozgás |
| Mire jó leginkább | rövid, jól ismert feladatok tervezésére | a csapat saját sprinttervezésére | méretmérésre, összehasonlításra | méretmérésre, összehasonlításra, ajánlat és ütemterv alapjául |
Az óraszám-becslés nem rossz eszköz, csak mást mér: a várható munkát, amely a feladat méretén kívül a csapat tudásán, eszközein és óvatosságán is múlik. A story point a csapaton belüli tervezésre hasznos, de a COSMIC honlapján közzétett útmutató szerint szubjektív, és a jelentése csapatonként más. Az IFPUG és a COSMIC egyaránt szabványos funkcionális méret, de eltérő szabályokkal, ezért a két módszer számai nem cserélhetők fel egymással.
Miért megbízhatóbb alap a mért méret?
A címben feltett kérdésre pontosan felelve: a COSMIC nem az órákat becsüli pontosabban, hanem a feladat nagyságát méri meg, és ebből lesz megbízhatóbb a ráfordítás becslése. Az okok:
- A követelményt méri, nem a megvalósítást. A funkcionális méret csak a követelményekből adódik, ezért független a technológiától, a folyamattól és attól, ki fejleszti a szoftvert.
- Nyilvános szabályok szerint újramérhető. A szabályok nyilvánosak, a mérés eredményét dokumentálni kell, így egy másik mérő ugyanabból a specifikációból ellenőrizheti.
- A méret és a termelékenység külön válik. A ráfordítás becslése a méretből és egy tapasztalati termelékenységből adódik (ráfordítás = méret / termelékenység). Így látszik, melyik tényező miért változik.
- A mérés javítja a követelményeket. A COSMIC útmutatója szerint a korai mérés segít felismerni a kétértelmű, ellentmondó vagy hiányzó követelményeket.
- Összevethető. Ugyanarra a specifikációra két ajánlat ugyanazt a méretet kapja, ezért az árak ugyanarra a terjedelemre vonatkoznak.
A COSMIC útmutatója több vizsgálatra hivatkozik, amelyekben a CFP-ben mért méret szorosabban együtt mozgott a tényleges ráfordítással, mint a story pointban kifejezett becslés. Ugyanez az útmutató arra is figyelmeztet, hogy a méretből becsült ráfordítás akkor megbízható, ha a fejlesztési folyamat kellően megismételhető, és a ráfordítást elsősorban a méret határozza meg. A mért méret tehát jobb kiindulópont, de a jó becsléshez a termelékenységet is ismerni kell.
Mit nem mér a COSMIC?
A COSMIC-méret a funkciókat méri, és ezt a módszer leírása nyíltan ki is mondja. Amit nem fejez ki:
- Összetett algoritmusok. A szabvány szerint a módszert nem összetett matematikai algoritmusokkal vagy különleges szabályrendszerekkel jellemezhető szoftver mérésére tervezték (például szakértői rendszer, szimuláció, önmagát tanító szoftver, időjárás-előrejelzés).
- Folytonos jelek feldolgozása. Hang- és képfeldolgozás, illetve például a számítógépes játékok ilyen részei szintén a szabvány hatókörén kívül esnek.
- Valódi nem funkcionális követelmények. A technológiai, teljesítmény- és projektkorlátokat a módszer szerint rögzíteni kell, de nem CFP-ben mérjük őket.
- Alkotó munka. A COSMIC útmutatója szerint a tisztán alkotó feladatok, például a művészeti alkotás, nem a módszer tárgyai; a grafika és az egyedi vizuális tervezés munkáját ezért a méret nem fejezi ki.
- Kész csomag bevezetése. Ha a követelményeket nagyrészt egy kész termék beállítása fedi le, a ráfordítást a csomagra jellemző módon érdemes becsülni.
Ezért egy jó ajánlat a mért méret mellett külön kimutatja, amit a méret nem fejez ki: az integrációkat, a nem funkcionális követelményeket, az egyedi felületet és grafikát, a több platformot, az adatátköltöztetést, az összetett számítást és a valós idejű működést. A mi ajánlatainkban ezek a tételek így szerepelnek; erről az Árazás oldalon írunk.
Hogyan használjuk a saját munkánkban?
A fejlesztés funkcionális méretét COSMIC funkciópontban mérjük. A méréshez saját, mesterséges intelligenciával támogatott munkafolyamatot építettünk, és az eredményt egy felülvizsgálati körben ember ellenőrzi. A lépések:
- Tételes specifikáció: a fejlesztést funkciócsoportokra bontjuk, és mindegyiket ugyanazzal a sablonnal írjuk le: cél, szereplők, adatok, funkciók, AI-funkciók, és ami nem része (lásd: Hogyan dolgozunk).
- Több, független számlálás: minden funkciócsoportot több nyelvi modell, többször számol meg; a számlálások szórása a bizonytalanságot mutatja.
- Egyeztető kör: gondoskodik arról, hogy minden funkcionális folyamat pontosan egyszer számítson, akkor is, ha több leírásban szerepel.
- Felülvizsgálat: a mérést átnézzük, a bizonytalan pontokat tisztázzuk, a gépi összevonásokat szükség esetén kézzel felülbíráljuk.
- Rögzítés: a kész mérés változtathatatlan változatként rögzíthető, és ez lesz a szerződés alapja.
Meglévő rendszer továbbfejlesztésénél a meglévő részt külön írjuk le, így a méretbe csak az új rész számít bele. A mérés azt is jelzi, amit a funkcionális méret nem fejez ki.
Hogyan lesz a méretből ajánlat és ütemterv?
Az ajánlat ára a mért méretből adódik, kiegészítve a méret által nem kifejezett tételekkel. Mivel a méretet funkciócsoportonként is látjuk, az ütemtervet is erre építjük: a szakaszok sorrendjét, a bemutatók tartalmát és a határidőket. Ha menet közben új igény születik, azt ugyanígy megmérjük, és látszik, mennyivel változik a terjedelem, és mit jelent ez az árra és az ütemezésre. Konkrét árat és határidőt ezért csak a mérés után adunk, nem egy első beszélgetés alapján.
Két ajánlat összehasonlítása méret alapján
Ha több fejlesztőtől kér ajánlatot, a méret segít eldönteni, hogy ugyanarra a feladatra érkeztek-e. Érdemes így eljárni:
- Ugyanaz a specifikáció: minden ajánlattevő ugyanazt a tételes leírást kapja.
- A méret és a folyamatlista: kérje el, mekkora méretre és mely funkcionális folyamatokra adták az árat.
- A különbségek okai: ha két ajánlat eltér, nézze meg, a méretben, a méret által nem kifejezett tételekben vagy a fajlagos árban térnek-e el.
- A külön tételek: kérdezze meg, mi szerepel külön sorban (integráció, adatátköltöztetés, üzemeltetés), és mi nincs benne az árban.
- A változások kezelése: kérdezze meg, hogyan mérik és árazzák a menet közbeni változásokat.
Ha egy ajánlattevő nem mér funkcionális méretet, attól még összevethető az ajánlata, ha ugyanarra a tételes folyamatlistára árazott. A fejlesztőválasztás többi szempontjáról a Hogyan válasszunk szoftverfejlesztő céget? cikkben írunk; azt pedig, hogy egyáltalán egyedi fejlesztés kell-e, az Egyedi szoftver vagy kész megoldás? cikk segít eldönteni.
Gyakori kérdések
Mi az a COSMIC funkciópont?
A COSMIC funkciópont (CFP) a szoftver funkcionális méretének mértékegysége az ISO/IEC 19761 szabvány szerint. Egy CFP egy adatmozgás: egy adatcsoport bevitele, kivitele, olvasása vagy írása egy funkcionális folyamatban. A szoftver mérete a folyamatai adatmozgásainak összege.
Miben más, mint az óraszám-becslés?
Az óraszám-becslés a várt munkát mondja meg, és a becslőn és a csapaton múlik. A COSMIC a feladat méretét méri a követelményekből, nyilvános szabályokkal, ezért ugyanabból a specifikációból más is ugyanarra az eredményre juthat. Az órák ezután a méretből és a tapasztalati termelékenységből vezethetők le.
Mit nem mér a COSMIC?
A szabvány szerint nem összetett matematikai algoritmusok és folytonos jelek (hang, kép) feldolgozásának mérésére készült, és a valódi nem funkcionális követelményeket, például a teljesítmény- vagy technológiai korlátokat sem CFP-ben fejezi ki. Ezeket egy jó ajánlat külön tételként mutatja ki.
Ki méri, és ellenőrizhető-e a mérés?
A mérést a módszert ismerő mérő végzi; nálunk egy AI-támogatott munkafolyamat számol, és az eredményt ember vizsgálja felül. A szabályok nyilvánosak, a mérés folyamatonként dokumentált, ezért egy másik, a módszert ismerő szakember ugyanabból a specifikációból ellenőrizheti.
Hogyan lesz a méretből ajánlat?
A mért méretből adódik az ár, kiegészítve azzal, amit a méret nem fejez ki: integrációk, nem funkcionális követelmények, egyedi grafika, több platform, adatátköltöztetés. Az ütemterv a funkciócsoportonkénti méretre épül, a változásokat pedig ugyanígy mérjük. A részletek az Árazás oldalon olvashatók.
Hogyan segítünk?
Ha egyedi szoftvert tervez, közösen megírjuk a tételes specifikációt, megmérjük a méretét COSMIC funkciópontban, és ebből adunk ajánlatot és ütemtervet. Kérésre titoktartási szerződést (NDA) kötünk, és az átadás után üzemeltetést és karbantartást is vállalunk. A forráskódról és a felhasználási jogokról a szerződés rendelkezik. Az első egyeztetés díjmentes: írjon nekünk a Kapcsolat oldalon megadott elérhetőségeken.
Források
- COSMIC: Measurement Manual v5.0, Part 1: Principles, Definitions and Rules (PDF)
- COSMIC: Measurement Manual v5.0, Part 2: Guidelines (PDF)
- COSMIC: A Guide to Software Size Measurement (PDF)
- COSMIC Measurement Manual: letöltések
- ISO: ISO/IEC 19761:2011 (COSMIC: a functional size measurement method)
- ISO: ISO/IEC 14143-1:2007 (Functional size measurement, Part 1: Definition of concepts)
- ISO: ISO/IEC 20926:2009 (IFPUG functional size measurement method)