Czym jest punkt funkcyjny COSMIC i czym różni się od szacowania godzin?

Mesterséges Intelligencia Központ Kft., firma programistyczna z Budapesztu, mierzy rozmiar oprogramowania w punktach funkcyjnych COSMIC: rozmiar jest wtedy cechą oprogramowania, a nie odczuciem szacującego, dlatego można go sprawdzić, zmierzyć ponownie i porównać za jego pomocą dwie oferty.

W skrócie: COSMIC (ISO/IEC 19761) mierzy rozmiar funkcjonalny oprogramowania: każde przemieszczenie danych (wejście, wyjście, odczyt, zapis) jest warte 1 punkt funkcyjny COSMIC (CFP). Szacunek w godzinach mówi, ile pracy spodziewa się szacujący, a zmierzony rozmiar mówi, jak duże jest zadanie. Dlatego można go sprawdzić, zmierzyć ponownie i porównać za jego pomocą dwie oferty, a nakład pracy można wyprowadzić z rozmiaru i z produktywności ustalonej na podstawie doświadczenia.

Czym jest pomiar rozmiaru funkcjonalnego?

Rozmiar oprogramowania można wyrażać na wiele sposobów: w wierszach kodu, w godzinach, w punktach. Pomiar rozmiaru funkcjonalnego (ang. functional size measurement, FSM) mierzy, co oprogramowanie ma robić z punktu widzenia użytkowników, a nie to, jak zostanie zrealizowane. Jego podstawowe pojęcia określa norma ISO/IEC 14143-1:2007; według opisu normy celem jest właśnie to, aby pomiar skupiał się na funkcjach wymaganych przez użytkownika zamiast na sposobie realizacji.

Podstawą pomiaru jest zakres funkcjonalnych wymagań użytkownika (ang. functional user requirements, FUR): ta część wymagań użytkownika, która opisuje, jakie zadania i usługi ma wykonywać oprogramowanie. Wydajność, bezpieczeństwo czy wybrana technologia do niej nie należą; piszemy o nich niżej, przy ograniczeniach.

Istnieje kilka znormalizowanych metod pomiaru rozmiaru funkcjonalnego. Najbardziej znane to COSMIC (ISO/IEC 19761:2011) i metoda IFPUG (ISO/IEC 20926:2009); ISO znormalizowała również inne metody (NESMA, FiSMA, Mk II). Wszystkie wychodzą od wymagań, ale stosują inne reguły i inne jednostki, dlatego liczb zmierzonych różnymi metodami nie można bezpośrednio porównywać.

Czym jest COSMIC?

COSMIC to skrót od Common Software Measurement International Consortium: organizacji non-profit, która rozwija metodę i organizuje certyfikację osób wykonujących pomiary. Metoda powstała pod koniec lat dziewięćdziesiątych jako rozwinięcie wcześniejszych metod punktów funkcyjnych, w 2003 r. stała się normą ISO, a obecnie obowiązującym wydaniem jest ISO/IEC 19761:2011. Szczegółowy opis metody, COSMIC Measurement Manual w wersji 5.0, można pobrać bezpłatnie; jego pierwsza część została wydana w 2021 r., a druga w 2024 r.

Zgodnie z normą metoda nadaje się do pomiaru oprogramowania aplikacyjnego (na przykład systemów biznesowych), oprogramowania czasu rzeczywistego oraz ich połączeń. Można nią więc zmierzyć zarówno system ERP, CRM czy sklep internetowy, jak i oprogramowanie sterujące.

Pojęcia modelu COSMIC

COSMIC opisuje oprogramowanie prostym modelem: oprogramowanie wymienia dane ze swoimi użytkownikami funkcjonalnymi przez swoją granicę, a wewnątrz granicy odczytuje dane z pamięci trwałej i zapisuje je w niej.

PojęcieCo oznaczaPrzykład
Użytkownik funkcjonalnyktoś lub coś, co wysyła dane do oprogramowania albo oczekuje od niego danych: człowiek, inne oprogramowanie lub urządzeniereferent, system do fakturowania
Granicaumowna płaszczyzna między mierzonym oprogramowaniem a jego użytkownikami funkcjonalnymiinterfejs webowy i interfejs udostępniony innym systemom
Zdarzenie wyzwalającezdarzenie, w reakcji na które użytkownik funkcjonalny uruchamia proceszgłasza się nowy klient
Proces funkcjonalnyelementarna, samodzielnie wykonywalna jednostka wymagań, spójny ciąg przemieszczeń danych„rejestracja nowego klienta”
Grupa danychzbiór atrybutów danych dotyczących jednej rzeczy, o której oprogramowanie musi przetwarzać daneKlient: nazwa, adres, numer podatkowy, e-mail
Przemieszczenie danychprzemieszczenie jednej grupy danych; istnieją cztery jego rodzajezob. niżej

Cztery rodzaje przemieszczeń danych:

Kilka reguł pomiaru, które decydują o wyniku liczenia:

Wynik jest wyrażony na skali ilorazowej, co oznacza, że rozmiary można sumować i porównywać: dwie części po 40 CFP dają razem 80 CFP, a sumy częściowe można pokazać także w podziale na grupy funkcji.

Przykład krok po kroku: „rejestracja nowego klienta”

Weźmy proste wymaganie: „Referent wprowadza dane nowego klienta (nazwa, adres, numer podatkowy, e-mail). System sprawdza, czy klient nie jest już zarejestrowany, zapisuje dane i informuje o powodzeniu lub o błędzie.” Kroki pomiaru:

  1. Użytkownikiem funkcjonalnym jest referent, a zdarzeniem wyzwalającym jest zgłoszenie się nowego klienta.
  2. Grupą danych jest Klient; cztery atrybuty dotyczą tej samej rzeczy, więc tworzą jedną grupę.
  3. Przemieszczenia danych identyfikujemy na podstawie zdań wymagania i liczymy każde z nich.
KrokPrzemieszczenie danychGrupa danychRozmiar
Referent wysyła formularzEntry (wejście)Klient1 CFP
System sprawdza, czy klient już istniejeRead (odczyt)Klient1 CFP
System zapisuje nowego klientaWrite (zapis)Klient1 CFP
Informacja o powodzeniu lub dowolnym błędzieExit (wyjście)komunikat o błędzie i potwierdzenie1 CFP
Razemcztery przemieszczenia danychjedna grupa danych4 CFP

Tak samo zbudowany jest przykład „rejestracja nowego pracownika” z przewodnika opublikowanego na stronie COSMIC. Zmiany wymagania widać w rozmiarze w następujący sposób:

Przykład pokazuje też, dlaczego pomiar można sprawdzić: za każdym CFP stoją nazwane wymaganie, grupa danych i reguła. Jeśli ktoś go kwestionuje, można dokładnie wskazać, o który wiersz chodzi.

Pomiar wcześnie, doprecyzowanie później

Pomiar COSMIC zaczyna się od ustalenia celu i zakresu pomiaru: co mierzymy, co do niego należy i do czego wykorzystamy wynik. Dokładny pomiar wymaga wymagań na tyle szczegółowych, aby można było zidentyfikować procesy funkcjonalne i ich przemieszczenia danych. Na początku projektu często ich jeszcze nie ma; na taki przypadek COSMIC publikuje metody przybliżone do wczesnego szacowania rozmiaru, a po opracowaniu wymagań może nastąpić dokładny pomiar.

Wytyczne metody ostrzegają też, że wiele wymagań, które początkowo wydają się niefunkcjonalne (na przykład czas odpowiedzi albo łatwość obsługi), w trakcie projektu przekształca się w funkcje oprogramowania, przez co rozmiar pozornie rośnie. Nie jest to błąd pomiaru, lecz znak, że wymaganie stało się dokładniejsze. W praktyce warto więc spisywać specyfikację pozycja po pozycji, mierzyć zmiany ponownie tą samą metodą i wykazywać rozmiar zmiany osobno. Dzięki temu wzrost zakresu nie następuje po cichu, lecz jest widoczny w liczbach.

Porównanie: godziny, story pointy, IFPUG, COSMIC

KryteriumSzacunek w godzinachStory pointyPunkty funkcyjne IFPUGPunkty funkcyjne COSMIC
Co wyrażapracę, której spodziewa się szacującywzględny szacunek zespołu; nie zawsze jest jasne, czy rozmiaru, nakładu pracy, czy czasurozmiar funkcjonalnyrozmiar funkcjonalny
Czy jest znormalizowanynienietak, ISO/IEC 20926:2009tak, ISO/IEC 19761:2011
Od czego zależyod doświadczenia, ostrożności i zespołu szacującegood danego zespołu; w każdym zespole oznacza co innegood wymagańod wymagań
Czy można go sprawdzić z zewnątrztylko na podstawie wyjaśnień szacującegopoza zespołem praktycznie nietak, według publicznych regułtak, według publicznych i bezpłatnie dostępnych reguł
Jednostkagodzinawłasny punkt zespołupunkt funkcyjny IFPUGCFP, 1 CFP = 1 przemieszczenie danych
Do czego najlepiej się nadajedo planowania krótkich, dobrze znanych zadańdo planowania sprintów przez sam zespółdo pomiaru rozmiaru, porównańdo pomiaru rozmiaru, porównań, jako podstawa oferty i harmonogramu

Szacunek w godzinach nie jest złym narzędziem, po prostu mierzy coś innego: oczekiwaną pracę, która poza rozmiarem zadania zależy również od wiedzy, narzędzi i ostrożności zespołu. Story pointy przydają się do planowania wewnątrz zespołu, ale według przewodnika opublikowanego na stronie COSMIC są subiektywne, a ich znaczenie różni się w zależności od zespołu. Zarówno IFPUG, jak i COSMIC dają znormalizowany rozmiar funkcjonalny, ale według odmiennych reguł, dlatego liczb z tych dwóch metod nie można stosować zamiennie.

Dlaczego zmierzony rozmiar jest bardziej wiarygodną podstawą?

Odpowiadając dokładnie na pytanie z tytułu: COSMIC nie szacuje dokładniej godzin, lecz mierzy wielkość zadania, a dzięki temu szacunek nakładu pracy staje się bardziej wiarygodny. Powody:

Przewodnik COSMIC powołuje się na kilka badań, w których rozmiar mierzony w CFP był ściślej powiązany z rzeczywistym nakładem pracy niż szacunki wyrażone w story pointach. Ten sam przewodnik ostrzega też, że nakład pracy oszacowany na podstawie rozmiaru jest wiarygodny wtedy, gdy proces wytwarzania jest wystarczająco powtarzalny, a nakład pracy zależy przede wszystkim od rozmiaru. Zmierzony rozmiar jest więc lepszym punktem wyjścia, ale do dobrego szacunku trzeba znać także produktywność.

Czego COSMIC nie mierzy?

Rozmiar COSMIC mierzy funkcje, a opis metody mówi to otwarcie. Czego nie wyraża:

Dlatego dobra oferta obok zmierzonego rozmiaru wykazuje osobno to, czego rozmiar nie wyraża: integracje, wymagania niefunkcjonalne, niestandardowy interfejs i grafikę, wiele platform, migrację danych, złożone obliczenia i działanie w czasie rzeczywistym. W naszych ofertach te pozycje są przedstawione właśnie w ten sposób. Więcej na ten temat na stronie Wycena.

Jak wykorzystujemy go we własnej pracy?

Rozmiar funkcjonalny realizacji mierzymy w punktach funkcyjnych COSMIC. Do pomiaru zbudowaliśmy własny proces pracy wspomagany sztuczną inteligencją, a wynik sprawdza człowiek w rundzie weryfikacji. Kroki:

  1. Specyfikacja pozycja po pozycji: dzielimy realizację na grupy funkcji i każdą opisujemy według tego samego szablonu: cel, aktorzy, dane, funkcje, funkcje AI oraz to, co nie wchodzi w zakres (zob. Jak pracujemy).
  2. Kilka niezależnych zliczeń: każdą grupę funkcji kilka modeli językowych liczy kilkakrotnie; rozrzut wyników zliczeń pokazuje niepewność.
  3. Runda uzgadniająca: zapewnia, że każdy proces funkcjonalny liczy się dokładnie raz, nawet jeśli występuje w kilku opisach.
  4. Weryfikacja: przeglądamy pomiar, wyjaśniamy niepewne punkty, a w razie potrzeby ręcznie korygujemy automatyczne scalenia.
  5. Utrwalenie: gotowy pomiar można zapisać jako niezmienną wersję, która staje się podstawą umowy.

Przy rozbudowie istniejącego systemu istniejącą część opisujemy osobno, dzięki czemu do rozmiaru wlicza się tylko nowa część. Pomiar sygnalizuje też to, czego rozmiar funkcjonalny nie wyraża.

Jak z rozmiaru powstają oferta i harmonogram?

Cena oferty wynika ze zmierzonego rozmiaru, uzupełnionego o pozycje, których rozmiar nie wyraża. Ponieważ rozmiar widzimy także w podziale na grupy funkcji, opieramy na nim również harmonogram: kolejność etapów, zawartość prezentacji i terminy. Jeśli w trakcie prac pojawi się nowe wymaganie, mierzymy je w ten sam sposób i widać, o ile zmienia się zakres oraz co to oznacza dla ceny i harmonogramu. Dlatego konkretną cenę i termin podajemy dopiero po pomiarze, a nie na podstawie pierwszej rozmowy.

Porównanie dwóch ofert na podstawie rozmiaru

Jeśli proszą Państwo o ofertę kilku wykonawców, rozmiar pomaga ocenić, czy dotyczą one tego samego zadania. Warto postępować tak:

  1. Ta sama specyfikacja: każdy oferent otrzymuje ten sam opis pozycja po pozycji.
  2. Rozmiar i lista procesów: proszę zapytać, dla jakiego rozmiaru i których procesów funkcjonalnych podano cenę.
  3. Przyczyny różnic: jeśli dwie oferty się różnią, proszę sprawdzić, czy różnią się rozmiarem, pozycjami, których rozmiar nie wyraża, czy ceną jednostkową.
  4. Pozycje osobne: proszę zapytać, co jest wykazane w osobnych wierszach (integracja, migracja danych, eksploatacja) i czego cena nie obejmuje.
  5. Obsługa zmian: proszę zapytać, jak mierzone i wyceniane są zmiany wprowadzane w trakcie prac.

Jeśli oferent nie mierzy rozmiaru funkcjonalnego, jego ofertę i tak można porównać, o ile wycenił tę samą listę procesów, spisaną pozycja po pozycji. O pozostałych kryteriach wyboru wykonawcy piszemy w artykule Jak wybrać firmę programistyczną?, a w ocenie, czy w ogóle potrzebne jest rozwiązanie na zamówienie, pomaga artykuł Oprogramowanie na zamówienie czy gotowe rozwiązanie?.

Częste pytania

Czym jest punkt funkcyjny COSMIC?

Punkt funkcyjny COSMIC (CFP) jest jednostką rozmiaru funkcjonalnego oprogramowania zgodnie z normą ISO/IEC 19761. Jeden CFP to jedno przemieszczenie danych: wejście, wyjście, odczyt lub zapis grupy danych w procesie funkcjonalnym. Rozmiar oprogramowania jest sumą przemieszczeń danych jego procesów.

Czym różni się od szacunku w godzinach?

Szacunek w godzinach określa oczekiwaną pracę i zależy od szacującego oraz od zespołu. COSMIC mierzy rozmiar zadania na podstawie wymagań, według publicznych reguł, dlatego ktoś inny może dojść do tego samego wyniku na podstawie tej samej specyfikacji. Godziny można następnie wyprowadzić z rozmiaru i z produktywności ustalonej na podstawie doświadczenia.

Czego COSMIC nie mierzy?

Zgodnie z normą metoda nie została opracowana do pomiaru złożonych algorytmów matematycznych ani przetwarzania sygnałów ciągłych (dźwięku, obrazu), a rzeczywistych wymagań niefunkcjonalnych, na przykład ograniczeń wydajnościowych lub technologicznych, również nie wyraża w CFP. Dobra oferta wykazuje je jako osobne pozycje.

Kto wykonuje pomiar i czy można go sprawdzić?

Pomiar wykonuje osoba znająca metodę; u nas liczy proces pracy wspomagany AI, a wynik weryfikuje człowiek. Reguły są publiczne, a pomiar jest udokumentowany dla każdego procesu, dlatego inny specjalista znający metodę może go sprawdzić na podstawie tej samej specyfikacji.

Jak z rozmiaru powstaje oferta?

Cena wynika ze zmierzonego rozmiaru, uzupełnionego o to, czego rozmiar nie wyraża: integracje, wymagania niefunkcjonalne, indywidualną grafikę, wiele platform, migrację danych. Harmonogram opiera się na rozmiarze w podziale na grupy funkcji, a zmiany mierzymy w ten sam sposób. Szczegóły można znaleźć na stronie Wycena.

Jak możemy pomóc?

Jeśli planują Państwo oprogramowanie na zamówienie, wspólnie spiszemy specyfikację pozycja po pozycji, zmierzymy jej rozmiar w punktach funkcyjnych COSMIC i na tej podstawie przygotujemy ofertę oraz harmonogram. Na życzenie zawieramy umowę o zachowaniu poufności (NDA), a po przekazaniu zapewniamy również eksploatację i utrzymanie. Kwestie kodu źródłowego i praw do korzystania reguluje umowa. Pierwsza konsultacja jest bezpłatna: prosimy do nas napisać, korzystając z danych kontaktowych podanych na stronie Kontakt.

Źródła