Punkt funkcyjny – metryka złożoności oprogramowania podawana jako liczba bezwymiarowa określająca efektywną względną miarę wartości funkcji oferowanej przez program użytkownikowi. Najczęściej jest podstawą do oszacowania m.in. pracochłonności wytworzenia danego oprogramowania. Pojęcie to zaproponował w 1979 r. A. J. Albrecht z firmy IBMA. J. Albrecht, Measuring Application Development Productivity, Proceedings of the Joint SHARE, GUIDE, and IBM Application Development Symposium, Monterey, California, October 14–17, IBM Corporation (1979), s. 83–92..
Wstęp Metoda punktów funkcyjnych jest aktualnie jednym z popularnych sposobów szacowania miary zastosowania programów. System został stworzony przez pracownika IBM, który zdefiniował go i opracował wraz z kolegami w latach siedemdziesiątych. IBM zrzekł się wyłączności, dzięki czemu dostęp do niego został umożliwiony dla każdego. W wyniku tego działania powołano w USA organizację zwaną the International Function Point Users Group – IFPUG, która zajmuje się rozwojem, rozpowszechnianiem i standaryzacją systemu FPAEwa Magiera, “Zastosowanie metody punktów funkcyjnych – wady i zalety”, Uniwersytet Śląski.. Zasada działania metody punktów funkcyjnych polega na wydzieleniu w programie pięciu typów: wejściowego, wyjściowego, logicznego typu wejściowego, zewnętrznego typu interfejsów oraz zewnętrznego typu zapytań- następnie na przydzielaniu im złożoności oraz przypisaniu odpowiedniej liczby punktów funkcyjnych. FPA umożliwia szacowanie wartości funkcyjnej programu niezależnie od stosowanego języka oprogramowania w którym aplikacja została napisana. Pozwala to na efektywne zarządzanie projektami programistycznymi oraz związanymi z nimi kosztami. Punkty funkcyjne liczy się dla trzech różnych typów: Dla projektów w fazie planowania- wszelkich ocen dokonuje się na podstawie wymagań przedstawionych przez użytkownika. Dla zmian w istniejącym programie- uaktualnienia, nowe wersje, wszelkich modyfikacji zmieniających funkcjonalność. Dla gotowego programu.
Analiza punktów funkcyjnych Pierwszym krokiem jest ograniczenie zakresu dokonywanej analizy, czyli oszacowywanej funkcjonalności, według trzech poniższych reguł sugerowanych przez IFPUG. Granice powinien określać użytkownik w oparciu o swój punkt widzenia i zapotrzebowanie. Ograniczenia technologiczne nie powinny być brane pod uwagę podczas określania granic między współpracującymi systemami. Należy kierować się przy tym ich funkcjonalnością. Zmiana zakresu analizy nie powinna wpływać na ustalone pierwotnie granice. Zmiana taka może zachodzić jedynie z powodu dodawania lub usuwania funkcjonalności bezpośrednio wpływających na granicę.
Podstawowym założeniem metody punktów funkcyjnych jest podzielenie oprogramowania na pięć składowychM. Cotterell, B. Hughes, Software Project Management, second edition, McGraw-Hill Publishing Company, 1999.. Zewnętrzne typy wejścia to metody dokonywania zmian w wewnętrznych danych systemu. Zewnętrzne typy wyjścia to metody reprezentacji danych przechowywanych przez system. Przykładem są wydruki komputerowe. Dane wyświetlane na ekranie nie należą do tej kategorii, są kwalifikowane jako opisane poniżej zewnętrzne typy zapytań. Logiczne wewnętrzne typy plików to pliki używane wewnętrznie przez system. We współczesnej informatyce pojęcie pliku zmieniło swoje znaczenie. Składową tę możemy interpretować jako zbiór danych opisujących obiekty danego typu, na przykład tabelę w relacyjnej bazie danych. Zewnętrzne typy interfejsów plików to metody wymiany danych między innymi systemami informatycznymi. Przykładem może być interfejs umożliwiający pobieranie danych z aplikacji internetowej w formacie JSON lub pliki współdzielone między różnymi aplikacjami. Zewnętrzne typy zapytań to metody odczytu danych z systemu nie powodujące ich modyfikacji. Przykładem jest zapytanie SELECT z języka SQL.
Następnym krokiem analizy jest znalezienie wszystkich elementów analizowanego systemu informatycznego, które należą do opisanych powyżej kategorii. Następnie każdemu z nich przypisuje się stopień złożoności: łatwy, średni lub trudny. Kolejnym krokiem jest przypisanie każdemu elementowi liczby punktów odpowiadających jego kategorii i złożoności. Wartości przedstawia poniższa tabela.
Kategoria ZłożonośćniskaśredniawysokaZewnętrzne typy wejścia3 4 6Zewnętrzne typy wyjścia4 5 7Logiczne wewnętrzne typy plików7 10 15Zewnętrzne typy interfejsów plików5 7 10Zewnętrzne typy zapytań3 5 6
Suma otrzymanych wartości jest równa liczbie punktów funkcyjnych dla analizowanego systemu.
Dzięki stosowaniu tej miary można między innymi: szacować wielkość projektu informatycznego, szacować potrzebne zasoby określać wydajność produkcji oprogramowania – na przykład poprzez mierzenie liczby punktów funkcyjnych wytworzonych podczas tygodnia szacować koszty potrzebne do zmiany wprowadzanej do istniejącego systemu informatycznego porównywać oprogramowanie pod względem wielkości/złożoności.
Przykładowo można szacować, że 1 PF to około 8 godzin pracy w technologii 3GL lub 1,5 godziny w technologii 4GLBeata Czarnacka-Chrobot, Pomiar rozmiaru funkcjonalnego systemu informatycznego – sposób na „chaos permanens”, PTI, Mrągowo, 2004, dostępne w Internecie, dostęp 2008-06-25, 18:12:12. lub według innych danych – odpowiednio 17 i 11 godzinCapers Jones, Programming Languages Table, release 8.2, Software Productivity Research, Inc., 1996..
Analizę punktów funkcyjnych można również stosować jako metodę ustalania kosztu testowania systemu informatycznego. Według CapersaEstimating Software Costs – T. Capers Jones. liczba wymaganych przypadków testowych jest równa sumie punktów funkcyjnych podniesionej do potęgi 1,2.
Wady i krytyka metody Mimo że metoda jest najbardziej dopracowaną i najpopularniejszą metodą szacowania wartości funkcji ocenianego programu, to nie pozostaje ona bez wad. Jedną z nich, wskazaną już przez Albrechta, jest subiektywność wartościowania złożoności typu jako niskiej, średniej lub dużej. Istotność tej wady obecnie jest niwelowana opracowaną przez IFPUG metodyką oceny złożoności (file type complexity).
Kolejnym problemem jest czasochłonność (koszt) procesu wyliczania punktów funkcyjnych, gdyż z powodu nieznanej dokładności takich wyliczeń, nie jest stosowana automatyzacja tego procesu.
Innym mankamentem jest to, że wyniki metody w przypadku małych systemów mogą być mało dokładne.
Metoda punktów funkcyjnych nie bierze również pod uwagę złożoności implementacji algorytmów działających wewnątrz systemu.
Mark II Jest to metoda rekomendowana przez CCTA(Central Computer and Telecommunications Agency), która ustala standardy dla projektów rządowych Wielkiej Brytanii. Miała ona być lepszą wersją metody Albrechta. Jednak po udoskonaleniu i znalezieniu wielu nowych rozwiązań w metodzie Albrechta, Mark II pozostał w użyciu jedynie w Wielkiej Brytanii.
Podsumowanie Metoda punktów funkcyjnych nie jest popularna w Polsce. Jednak na świecie stosowana jest powszechnie- jest metodą sprawdzoną, skuteczną i ciągle rozwijaną. Ułatwia oszacowanie czasu i kosztów potrzebnych do realizacji projektu.
Przypisy
Linki zewnętrzne Portal organizacji non-profit International Function Point Users Group promującej stosowanie efektywnego zarządzania w procesie wytwarzania oprogramowania
Kategoria:Inżynieria oprogramowania
pt:Ponto de função