# 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](https://www.iso.org/standard/38931.html) 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](https://www.iso.org/standard/54849.html)) és az IFPUG-módszer ([ISO/IEC 20926:2009](https://www.iso.org/standard/51717.html)); 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](https://cosmic-sizing.org/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:

1. **A funkcionális felhasználó** az ügyintéző, **a kiváltó esemény** az, hogy új ügyfél jelentkezik.
2. **Az adatcsoport** az Ügyfél; a négy adatelem ugyanarról a dologról szól, ezért egy csoport.
3. **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](https://www.mestersegesintelligenciakozpont.hu/hu/arazas) 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:

1. **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](https://www.mestersegesintelligenciakozpont.hu/hu/hogyan-dolgozunk)).
2. **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.
3. **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.
4. **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.
5. **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:

1. **Ugyanaz a specifikáció:** minden ajánlattevő ugyanazt a tételes leírást kapja.
2. **A méret és a folyamatlista:** kérje el, mekkora méretre és mely funkcionális folyamatokra adták az árat.
3. **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.
4. **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.
5. **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?](https://www.mestersegesintelligenciakozpont.hu/hu/tudastar/hogyan-valasszunk-szoftverfejleszto-ceget) cikkben írunk; azt pedig, hogy egyáltalán egyedi fejlesztés kell-e, az [Egyedi szoftver vagy kész megoldás?](https://www.mestersegesintelligenciakozpont.hu/hu/tudastar/egyedi-szoftver-vagy-kesz-megoldas) 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](https://www.mestersegesintelligenciakozpont.hu/hu/arazas) oldalon olvashatók.

## Hogyan segítünk?

Ha [egyedi szoftvert](https://www.mestersegesintelligenciakozpont.hu/hu/szolgaltatasok/egyedi-szoftverfejlesztes) 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](https://www.mestersegesintelligenciakozpont.hu/hu/kapcsolat) oldalon megadott elérhetőségeken.

## Források

- [COSMIC: Measurement Manual v5.0, Part 1: Principles, Definitions and Rules (PDF)](https://cosmic-sizing.org/wp-content/uploads/2020/06/Part-1-MM-Principles-Definitions-Rules-v5.0-Aug-2021.pdf)
- [COSMIC: Measurement Manual v5.0, Part 2: Guidelines (PDF)](https://cosmic-sizing.org/wp-content/uploads/2024/09/Part-2-MM-Guidelines-v5.0-Sep-2024.pdf)
- [COSMIC: A Guide to Software Size Measurement (PDF)](https://cosmic-sizing.org/wp-content/uploads/2020/08/Measuring-software-size-v1.0-August-2020-1.pdf)
- [COSMIC Measurement Manual: letöltések](https://cosmic-sizing.org/measurement-manual/)
- [ISO: ISO/IEC 19761:2011 (COSMIC: a functional size measurement method)](https://www.iso.org/standard/54849.html)
- [ISO: ISO/IEC 14143-1:2007 (Functional size measurement, Part 1: Definition of concepts)](https://www.iso.org/standard/38931.html)
- [ISO: ISO/IEC 20926:2009 (IFPUG functional size measurement method)](https://www.iso.org/standard/51717.html)
