PRZEGLĄD MIAR OCENY OPROGRAMOWANIA. Paweł WEICHBROTH, Cezary ORŁOWSKI

Podobne dokumenty
Jarosław Kuchta Jakość Systemów Informatycznych Jakość Oprogramowania. Pomiary w inżynierii oprogramowania

Plan. Zapewnienie jakości produktu informatycznego. Zarządzanie jakością i metryki oprogramowania. Podstawowe parametry mierzalne

<Nazwa firmy> <Nazwa projektu> Specyfikacja dodatkowa. Wersja <1.0>

Metodyka projektowania komputerowych systemów sterowania

Faza strategiczna. Synteza. Analiza. Instalacja. Faza strategiczna. Dokumentacja. kodowanie implementacja. produkt konserwacja

Praktyczne aspekty stosowania metody punktów funkcyjnych COSMIC. Jarosław Świerczek

Projektowanie oprogramowania. Wykład Weryfikacja i Zatwierdzanie Inżynieria Oprogramowania Kazimierz Michalik

Wprowadzenie do jakości systemów informatycznych

Jakość w procesie wytwarzania oprogramowania

Zasady organizacji projektów informatycznych

Wykład 8. Testowanie w JEE 5.0 (1) Autor: Zofia Kruczkiewicz. Zofia Kruczkiewicz

Kurs programowania. Wykład 12. Wojciech Macyna. 7 czerwca 2017

Wykład 1 Inżynieria Oprogramowania

Efekt kształcenia. Ma uporządkowaną, podbudowaną teoretycznie wiedzę ogólną w zakresie algorytmów i ich złożoności obliczeniowej.

Dlaczego testowanie jest ważne?

INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE

Błędy procesu tworzenia oprogramowania (Badania firmy Rational Software Corporation)

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Technologie informacyjne - wykład 12 -

PYTANIA PRÓBNE DO EGZAMINU NA CERTYFIKAT ZAAWANSOWANY REQB KLUCZ ODPOWIEDZI. Część DODATEK

Modelowanie i Programowanie Obiektowe

Kod doskonały : jak tworzyć oprogramowanie pozbawione błędów / Steve McConnell. Gliwice, cop Spis treści. Wstęp 15.

WYKŁAD. Jednostka prowadząca: Wydział Techniczny. Kierunek studiów: Elektronika i telekomunikacja. Nazwa przedmiotu: Język programowania C++

Model referencyjny doboru narzędzi Open Source dla zarządzania wymaganiami

Inżynieria oprogramowania (Software Engineering) Wykład 1

Język opisu sprzętu VHDL

The concept, models and metrics of software quality an overview

Maciej Oleksy Zenon Matuszyk

Michał Gadomski. Grzegorz Poręcki

Etapy życia oprogramowania

Przypadki użycia. Czyli jak opisywać funkcjonalność. Jerzy Nawrocki Mirosław Ochodek

Analiza współzależności zjawisk

Testowanie i walidacja oprogramowania

APLIKACJA NAPISANA W ŚRODOWISKU LABVIEW SŁUŻĄCA DO WYZNACZANIA WSPÓŁCZYNNIKA UZWOJENIA MASZYNY INDUKCYJNEJ

Tom 6 Opis oprogramowania Część 8 Narzędzie do kontroli danych elementarnych, danych wynikowych oraz kontroli obmiaru do celów fakturowania

Szkoła programisty PLC : sterowniki przemysłowe / Gilewski Tomasz. Gliwice, cop Spis treści

Wprowadzenie do metodologii modelowania systemów informacyjnych. Strategia (1) Strategia (2) Etapy Ŝycia systemu informacyjnego

Dni: 3. Opis: Adresaci szkolenia

Etapy życia oprogramowania. Modele cyklu życia projektu. Etapy życia oprogramowania. Etapy życia oprogramowania

Wykład Ćwiczenia Laboratorium Projekt Seminarium Liczba godzin zajęć zorganizowanych w

PRZEWODNIK PO PRZEDMIOCIE

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ),

PRZEWODNIK PO PRZEDMIOCIE

Nazwa wariantu modułu (opcjonalnie): Laboratorium programowania w języku C++

Projektowanie systemów informatycznych. Roman Simiński programowanie.siminskionline.pl. Cykl życia systemu informatycznego

Praktyka Programowania

Faza Określania Wymagań

INŻYNIERIA OPROGRAMOWANIA TESTOWANIE SYSTEMOWE

STRESZCZENIE. rozprawy doktorskiej pt. Zmienne jakościowe w procesie wyceny wartości rynkowej nieruchomości. Ujęcie statystyczne.

Skrócone opisy pryncypiów architektury korporacyjnej podmiotów publicznych

Architektura Systemu. Architektura systemu umożliwia kontrolowanie iteracyjnego i przyrostowego procesu tworzenia systemu.

Problemy niezawodnego przetwarzania w systemach zorientowanych na usługi

Kontrola jakości artefaktów

Programowanie komputerowe. Geodezja i Kartografia I stopień (I stopień / II stopień) akademicki (ogólno akademicki / praktyczny)

UPEDU: Testowanie (ang. Testing discipline)

Modelowanie i analiza systemów informatycznych

Testowanie oprogramowania. Piotr Ciskowski

Grzegorz Ruciński. Warszawska Wyższa Szkoła Informatyki Promotor dr inż. Paweł Figat

Spis treści. Przedmowa... XI. Rozdział 1. Pomiar: jednostki miar Rozdział 2. Pomiar: liczby i obliczenia liczbowe... 16

Jakość oprogramowania część 2 Zapewnianie jakości oprogramowania

Zaawansowane programowanie w języku C++

wbudowane October 7, 2015 KSEM WETI PG Komputery przemysłowe i systemy wbudowane Oprogramowanie systemów wbudowanych - wydajność Wydajność

Tom 6 Opis oprogramowania

Język programowania C C Programming Language. ogólnoakademicki

Programowanie komputerowe Computer programming

tel. (+48 81) tel. (+48 81) Wykład Ćwiczenia Laboratorium Projekt

1. WYMAGANIA WSTĘPNE W ZAKRESIE WIEDZY, UMIEJĘTNOŚCI I INNYCH KOMPETENCJI

Programowanie I. O czym będziemy mówili. Plan wykładu nieco dokładniej. Plan wykładu z lotu ptaka. Podstawy programowania w językach. Uwaga!

Kumulowanie się defektów jest możliwe - analiza i potwierdzenie tezy

Zamieszczanie ogłoszenia: obowiązkowe. Ogłoszenie dotyczy: zamówienia publicznego.

EFEKTY KSZTAŁCENIA DLA KIERUNKU STUDIÓW

PRZEWODNIK PO PRZEDMIOCIE

Podstawy Programowania Obiektowego

Czym jest Java? Rozumiana jako środowisko do uruchamiania programów Platforma software owa

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

Strategia testów mająca doprowadzić do osiągnięcia pożądanych celów

Wykład 7. Projektowanie kodu oprogramowania

Historia modeli programowania

Projekt przejściowy 2015/2016 BARTOSZ JABŁOŃSKI, TOMASZ JANICZEK

KARTA KURSU. Grafika komputerowa

Optymalizacja Automatycznych Testów Regresywnych

REFERAT PRACY DYPLOMOWEJ

Egzamin / zaliczenie na ocenę*

Projekt przejściowy 2016/2017 BARTOSZ JABŁOŃSKI

Programowanie komputerów

Usługa: Audyt kodu źródłowego

SCENARIUSZ LEKCJI. Streszczenie. Czas realizacji. Podstawa programowa

WPROWADZENIE DO UML-a

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

Metryki oprogramowania. Marian Jureczko

Wykład Ćwiczenia Laboratorium Projekt Seminarium

Sprzęt komputera - zespół układów wykonujących programy wprowadzone do pamięci komputera (ang. hardware) Oprogramowanie komputera - zespół programów

KARTA MODUŁU KSZTAŁCENIA

Szczegółowy opis przedmiotu umowy. 1. Środowisko SharePoint UWMD (wewnętrzne) składa się z następujących grup serwerów:

Analiza i projektowanie oprogramowania. Analiza i projektowanie oprogramowania 1/32

Parametry wydajnościowe systemów internetowych. Tomasz Rak, KIA

Wykład V. Rzut okiem na języki programowania. Studia Podyplomowe INFORMATYKA Podstawy Informatyki

Opis metodyki i procesu produkcji oprogramowania

PROJEKTOWANIE. kodowanie implementacja. PROJEKT most pomiędzy specyfikowaniem a kodowaniem

Transkrypt:

PRZEGLĄD MIAR OCENY OPROGRAMOWANIA Paweł WEICHBROTH, Cezary ORŁOWSKI 1. Wstęp Problem oceny oprogramowania istnieje od momentu pojawienia się pierwszego programu komputerowego. Historycznie miary jakości oprogramowania miały zupełnie inne przeznaczenie, gdyż skupiały się na częstotliwości defektów lub błędów oprogramowania. Błędnie bazowało to na założeniu, że jakość oprogramowania to brak błędów. Stąd też używano prostej statystyki typu liczby błędów, wykrytych w określonym przedziale czasu (np. rocznym) lub w danej wersji programu, na tysiąc wierzy kodu tzw. gęstości błędów. Oczywiste jest, iż niższe wartości tej miary oznaczały wyższą jakość programu. Jedną z pierwszych znanych miar wykorzystanych do opisu programów komputerowych był jego rozmiar [17]. Możemy stwierdzić, iż rozmiar oprogramowania (ang. software size) jest miarą objętości, długości, ilości, znaczenia i ogólnie rozmiaru programu komputerowego [5]. W połowie lat 60-tych pierwszą stosowaną miarą rozmiaru oprogramowania była liczba linii kodu LOC (ang. lines of code). Prawie dekadę później, w późnych latach 70-tych, pojawiły się bardziej wyszukane miary rozmiaru oprogramowania takie jak: liczba tokenów (ang. number of tokens), wolumin (ang. volume), liczba funkcji (ang. function count), liczba punktów funkcyjnych (ang. function points) [5]. Kolejną miarą opisującą rozmiar programu był wolumin, oparty na wielkości linii kodu w bitach, reprezentowany przez zera i jedynki [10]. Krótko potem, pojawiła się liczba funkcji, jako miara rozmiaru oprogramowania, określająca stopień modularności programu [2]. Po niej, zaproponowano liczbę punktów funkcyjnych, której ideą było oszacowanie liczby, wejść, wyjść, plików głównych, zapytań i interfejsów [1]. Jednakże rozmiar oprogramowania nie jest miarą jakości oprogramowania samą w sobie, stanowi fundament wielu miar w dzisiejszych czasach (np. liczby defektów, błędów, stosunku błędów do linii kodu, punktów funkcyjnych). Ponadto, często spotyka się opinie, iż rozmiar oprogramowania stanowi podstawową miarę oceny złożoności oprogramowania [14]. Z powyższych względów, ewolucja pomiaru jakości oprogramowania byłaby niekompletna bez wprowadzenia na temat rozmiaru oprogramowania. 2. Błędy oprogramowania W latach 50-tych XX wieku, pierwszą stosowaną miarą oceny jakości oprogramowania była liczba wykrytych błędów. Można je rozumieć jako wadliwe działania ludzkie w procesie implementacji programu. Koncepcja błędów na wyrażenie (ang. errors per statement") po raz pierwszy pojawiła się we wczesnych latach 60-tych, a jej dorobkiem jest pojęcie wystąpienia błędu (ang. error proneness). Pojęcie gęstości błędu (ang. error density) powstało w połowie lat 70-tych i odnosiło się do prostego stosunku błędów do wielkości oprogramowania [24]. Gęstość błędu była stosowana w odniesieniu do liczby anomalii powodujących błędy do wielkości oprogramowania [15]. Termin gęstości wad (ang. defect density), używany w połowie lat 80-tych, był stosunkiem liczby błędów programowych do wielkości oprogramowania [23]. Wiele różnych cech było branych pod uwagę takich jakich liczba wymagań, projekt, kodowanie, czy testowanie [5]. Na początku lat 90-tych pojawiła się koncepcja gęstości problemu (ang. problem density), która odnosiła się do liczby problemów

zgłoszonych przez klientów [14]. Praktyka liczenia błędów i wad, jako środka mierzenia jakości oprogramowania cieszyły się nieprzerwaną popularnością przez ponad pięć dekad. 3. Atrybuty oprogramowania Innym podejściem do problemu mierzenia jakości oprogramowania była praktyka określania ilości i złożoności jego atrybutów. Atrybuty oprogramowania są przyporządkowaną jakościową cechą, taką jak funkcjonalność, wydajność i użyteczność. Logicon zaprojektował model do mierzenia atrybutów oprogramowania takich jak poprawność, logiczność, sprawność, stopień optymalizacji, zrozumiałość, modyfikowalność i użyteczność [22]. Następnie, zostały zidentyfikowane atrybuty oprogramowania takie jak: przenośność, wiarygodność, efektywność, modyfikowalność, testowalność, ergonomia i zrozumiałość [3]. Wymienione prace przyczyniły się do powstania wielu modeli do mierzenia atrybutów konserwacji oprogramowania [25] i nawet projektowania bazy danych [8]. Podejście skierowane na klienta doprowadziło do wypracowania jakościowych i ilościowych metryk oprogramowania [4,6,7]. W dalszej kolejności, został wypracowany model FURPS, na który składało się pięć atrybutów: funkcjonalność (ang. functionality), użyteczność (ang. usability), wiarygodność (ang. reliability), wydajność (ang. performance) i stopień wsparcia (ang. supportability) [9]. 4. Statyczne modele błędów Jednym z najwcześniejszych podejść do przewidywania jakości oprogramowania były modele statyczne, które opierały się teorii niezawodności. Model statyczny posługuje się innymi atrybutami do oszacowania liczby błędów w oprogramowaniu - nie bierze pod uwagę współczynnika zmian [5]. Jednym z pierwszych modeli predykcji błędów były funkcja wielkości, rachunek decyzji (decision count) i liczba wywołań procedur. Zostały stworzone linowe modele do 10 wejść dla różnych typów wyrażeń w kodzie źródłowym takich jak: komentarze, dane czy instrukcje [18]. W teorii nauki o programowaniu wolumin jest wejściem w modelu i tym samym funkcją języka programu [10]. Równolegle w tym samym czasie, McCabe przedstawił topologiczną, bazującą na teorii grafów miarę złożoności cyklomatycznej, jako miarę liczby liniowo niezależnych ścieżek, które składają się na program komputerowy. Zostało rozwiniętych jeszcze wiele innych skrzyżowanych ze sobą modeli, biorących pod uwagę zasoby słów (ang. vocabulary), długość (ang. length), złożoność (ang. difficulty) i prachochłonność (ang. effort) [23]. Później firma IBM rozwinęła modele szacowania błędów i wystąpień defektów w oprogramowaniu, które zostały wykorzystane do projektowania systemów operacyjnych [14]. 5. Złożoność oprogramowania Systemy komputerowe są tworami o wysokim stopniu złożoności. Na początku lat 70-tych, badania na temat złożoności oprogramowania stały się jedną z bardziej powszechnych metod oceny jakości programów komputerowych. Złożoność oprogramowania może być rozumiana jako stopień kompozycji i dekompozycji, czyli podział na części o dobrze wyrażonej semantyce i dobrze wyspecyfikowanej wzajemnej interakcji. Powstało wiele technik obliczania lub raczej szacowania stopnia złożoności. Najprostsza z nich to LOC (ang. lines of code) lub SLOC (ang. source lines of code). Jest to syntetyczna miara dające ogólne pojęcie o skali programu, jednak nie jest wystarczająca do szczegółowych analiz. Wartość LOC jest silnie zależna od poziomu wykorzystanego języka programowania ten sam algorytm w

języku wysokiego poziomu będzie miał wielokrotnie mniej linii kodu niż w języku niskiego poziomu. W roku 1977 profesor Maurice H. Halstead zaproponował takie miary jak [12]: liczba różnych operatorów w programie (n 1 ) liczba różnych operandów w programie (n 2 ) liczba wystąpień operatora (N 1 ) liczba wystąpień operandu (N 2 ) opisu: gdzie: W kolejnym etapie wyprowadził zestaw miar pochodnych od podstawowych w celu słownika symboli (ang. Vocabulary) (n), n=n 1 +n 2 (1) długości programu (ang. Length) (N), N=N 1 +N 2 =n 1 log 2 (n 1 )+n 2 log 2 (n 2 ) (2) rozmiar (ang. Volume) (V), V=Nlog 2 (n)=nlog 2 (n 1 +n 2 ) (3) poziom (ang. Level) (L), L=V*/V=(2/n 1 )*(n 2 /N 2 ) (4) trudność (ang. Difficulty) (D), D=V/V*=(n 1 /2)*(N 2 /n 2 ) (5) pracochłonność (ang. Effort) (E), E=V/L (6) błędy (ang. Faults) (B), B=V/S* (7) V* to minimalny rozmiar reprezentowany przez wbudowaną funkcję, która może wykonywać zadanie całego programu, S* to średnia liczba umysłowych decyzji lub rozróżnień między błędami, oszacowana przez Halsteada na 3000 [12]. Wadą tego podejścia jest, iż długość programu zależy od dwóch zmiennych N 1 i N 2, których wartość jest dokładnie znana tuż przed zakończeniem pisania programu. 6. Wiarygodność oprogramowania Na początku lat 70-tych sformułowano pojęcie wiarygodności oprogramowania w celu oszacowania liczby błędów w oprogramowaniu jako metodzie mierzenia jego jakości. Można ją określić jako prawdopodobieństwo, iż oprogramowanie będzie działać w określonym przedziale czasu bez żadnego przestoju, ważone przez koszt użytkownika każdego przestoju [20]. Inne źródło [12] podaje, iż jest to stopień w jakim systemy, komponenty lub procesy producenta oprogramowania potrafią spełniać określone wymagania oraz potrzeby i oczekiwania użytkowników. Istnieje kilka modeli wiarygodności, które można sklasyfikować w trzech grupach: skończone i nieskończone [19], statyczne i dynamiczne [5], deterministyczne i probabilistyczne [21].

Modele deterministyczne są wykorzystywane do badania liczby różnych operatorów i operandów w programie, jak również do liczby błędów i liczby instrukcji maszynowych. Miary wydajności w grupie modeli dynamicznych są otrzymywane poprzez analizę struktury programu i nie biorą pod uwagę żadnych losowych zdarzeń. Dwie dobrze znane miary to metryka Halstead a i cyklomatyczna metryka McCabe a. Miarę złożoności cyklomatycznej, która bazuje na teorii grafów, McCabe przedstawił w 1976 roku [21]. Jest to liczba liniowo niezależnych ścieżek, które składają się na program komputerowy. W celu obliczenia miary M dla programu komputerowego przedstawionego w formie grafu lub diagramu przepływu należy skorzystać ze wzoru (8): gdzie: M= V(G)=e-n+2p (8) V(G) to cyklomatyczna liczba grafu G programu e to liczba krawędzi grafu n to liczba węzłów grafu p to liczba niepołączonych części grafu Istnieje prosta zależność pomiędzy miarą M i liczbą binarnych decyzji BD, gdyż zachodzi równość M=BD+1. Podobnie jak w przypadku innych wczesnych miar jakości, które koncentrują się na samych programach lub nawet ich modułach, ukryte jest źródło złożoności architektonicznej, czyli powiązania między modułami. Według Kana, oprócz długości modułu, najważniejszym predyktorem częstotliwości defektów jest ogólna liczba zmian projektowych oraz poziom złożoności, niezależnie od sposobu ich obliczania [13]. 7. Miary punktów funkcyjnych Dwa przedstawione podejścia Halstead a i McCabe a reprezentują ilościowe podejście do wymiarowania oprogramowania. Miary jakości bazujące pośrednio lub bezpośrednio na liczeniu wierszy kodu programu lub modułów są niewystarczające [12]. Miary te możemy określić jako substytuty wskaźników liczby okazji do popełnienia błędu z perspektywy implementacji kodu źródłowego programu. Metoda punktów funkcyjnych zdefiniowana przez Albrechta powstała w wyniku kilkuletnich doświadczeń przy opracowywaniu systemów informatycznych z zakresu przetwarzania danych [26]. Punkty funkcyjne możemy określić jako znaczące grupy mierzalnego kodu z perspektywy użytkownika a nie programisty. Uwzględniają one potrzeby użytkownika oraz zebraną w trakcie analizy wymagań funkcjonalność - nie są wyłącznie wskaźnikiem ukończenia go a posteriori przez programistę [12]. Zaproponowana przez Albrechta typowa miara punktów funkcyjnych (ang. function point metric) to ważona suma pięciu składników, które cechują aplikację [12,26]: 4 x liczba wejść zewnętrznych do systemu (lub typów transakcji), 5 x liczba typów lub raportów zewnętrznych, 10 x liczba wewnętrznych plików logicznych (zbiorów danych), 7 x liczba zewnętrznych plików interfejsu (zbiorów danych),

4 x liczba obsługiwanych zewnętrznych zapytań do systemu. Metoda ta szybko zdobyła dużą popularność i jest dalej rozwijana przez organizację IFPUG (ang. International Function Point Users Group), która opracowała również jej standard [11]. Wykorzystywana na przestrzeni czasu przez wytwórców oprogramowania bardzo dużych systemów informatycznych (1000 i więcej punktów funkcyjnych), metoda ta wykazuje wysoki poziom powtarzalności i przydatności [12]. 8. Miary zadowolenia użytkownika i dostępności Grupa miar prezentowana jako ostatnia swoją uwagę skupia na użytkowniku końcowym i na jego ocenie działania, niezawodności i stabilności oprogramowania w codziennym użytkowaniu. Zalecana jest tu jednak ostrożność, gdyż problemy z systemem nie koniecznie mogą wynikać z błędów w aplikacji, a wynikają z niewiedzy użytkowników. Zwykle satysfakcja klienta mierzona jest wedle pięciopunktowej skali [12]: bardzo zadowolony, zadowolony, obojętny, niezadowolony, bardzo niezadowolony. Wielowymiarowa ocena oprogramowania przez klientów odbywa się poprzez kwestionariusze. Firma IBM stosuje model CUPRIMDA w którym ocenie poddawane są: możliwości (ang. categoriescapability), łatwość użycia (ang. usability), wydajność (ang. performance), niezawodność (ang. reliability), łatwość instalacji (ang. installability), łatwość konserwacji (ang. maintainability), dokumentację (ang. documentation), dostępność (ang. availability). Z kolei firma Hewlett-Packard stosuje model FURPS w którym ocenie poddawane są: możliwości (ang. categoriesfunctionality), użyteczność (ang. usability), niezawodność (ang. reliability), wydajność (ang. performance), łatwość obsługi (ang. serviceability).

Niektórzy producenci stosują uproszczony ogólny wskaźnik zadowolenia OWZ (ang. net satisfaction index) w celu porównania różnych produktów ze sobą. Można wyróżnić w nim następujące wagi: w pełni zadowolony - 100% zadowolony - 75% obojętny - 50% niezadowolony - 25% całkowicie niezadowolony - 0% Pomimo tego, iż wskaźnik ten jest powszechnie stosowany, nie wskazuje dokładnie na źródło problemu. 9. Podsumowanie W pracy dokonano przeglądu kluczowych miar służących ocenie oprogramowania. Jest to aktualny problem biorąc pod uwagę obecne koszty zakupu i utrzymania systemów informatycznych. Obecnie często podejmowaną kwestią jest poziom na jakim powinna być dokonywana ocena. Pierwsze miary stosowane były do oceny na poziomie kodu źródłowego i koncentrowały się na liczbie błędów i defektów. Rozwój języków programowania i tym samym kompilatorów, przyniósł bogatsze biblioteki standardowych funkcji, makroinstrukcje, czy dyrektywy kompilacji. Wzbogaceniu języka, szczególnie w środowisku graficznym, udoskonalono obudowę środowiska pracy. Do kompilatora włączono edytor, konsolidator oraz debugger - w jednym zintegrowanym pakiecie umieszczono wszystkie narzędzia pracy programisty. Liczba błędów na poziomie kodu źródłowego znacznie się zmniejszyła - tym samym ocena w oparciu o takie miary okazała się być niewystarczająca. Wraz z dynamicznym postępem w dziedzinie języków programowania, towarzyszyły temu zmiany w podejściu do oceny oprogramowania. Zaproponowano podejście ilościowe, biorąc pod uwagę liczbę funkcji i tokenów, woluminu i ostatecznie liczbę punktów funkcyjnych. Profesor Halstead, uważany za ojca nauki o miarach oprogramowania, zaproponował nowatorskie jak na swoje czasy podejście. Zaproponował cztery główne miary, z których wyprowadził siedem pochodnych wzorów między takimi relacjami jak słownik, długość, rozmiar, poziom, trudność i pracochłonność. Podejście to, nie sprawdza się jako bezpośrednie miary ilościowe, gdyż uniemożliwia przewidzenie rozmiaru i jakości programu na wystarczająco wczesnych etapach jego rozwoju. Kolejną opisaną w pracy miarą jest złożoność cyklomatyczna McCabe a. Z jej stosowania wynika zalecenie, aby nie tworzyć modułów większych niż 10 niezależnych ścieżek w grafie, reprezentujących przepływ sterowania w metodzie. Podobnie jak w przypadku innych wczesnych miar jakości, położono nacisk wyłącznie na programie i jego modułach, bez badania powiązań między modułami. Nowatorskie podejście zaproponował Allan Albrecht z firmy IBM, gdyż jego miara punktów funkcyjnych jest oceną funkcjonalności dostarczonej przez oprogramowanie. Odwrócony został kierunek oceny z perspektywy implementacji programu do potrzeb użytkownika. Obecnie jest to ciągle rozwijane stanowisko, gdyż pozwala na audyt projektów,

wybór systemów funkcjonujących systemów do reinżynierii oraz porównywania i oceny różnych ofert dostawców oprogramowania. Ostatnia grupa zaprezentowanych miar zadowolenia użytkownika, skupia swoją uwagę na ocenie działania, niezawodności, funkcjonalności i stabilności oprogramowania przez użytkownika końcowego. Złożoność dzisiejszych systemów oraz wysoka wydajność sprzętu komputerowego, są przesłankami do posługiwania się syntetycznymi miarami oceny oprogramowania. Należy zwrócić uwagę, iż słowo oprogramowanie może być niewystarczające do pełnego oddania skali przedmiotu oceny. W kontekście opisu specyfikacji i wymagań używa się pojęcia technologii informatycznej, które wydaje się szerzej obejmować zagadnienia charakterystyki dzisiejszego oprogramowania. Zauważalny jest rozwój nowej nauki o miarach architektury oprogramowania. Co zaskakujące, odbywa się to w obliczu braku powszechnie przyjętych definicji takiej architektury i pojęć ściśle z nią powiązanych. W tym miejscu należy wymienić takie pojęcia jak technologia informatyczna, technologia informacyjna czy system informatyczny. Jak widać ocena oprogramowania jako niezależnych bytów zdaje się być nieaktualna, ze względu na coraz wyższą integrację różnego typu oprogramowania. Przyszłość zarządzania oprogramowaniem sprowadza się do syntetycznej oceny całych technologii informatycznych oraz zarządzania ich portfelem. Bibliografia [1] Albrecht A. J.: Measuring application development productivity. Proceedings of the IBM Applications Development Joint SHARE/GUIDE Symposium, Monterrey 1979, s. 83-92. [2] Basili V. R., Reiter R. W.: An investigation of human factors in software development. IEEE Computer, 1979 nr 12(12), s. 21-38. [3] Boehm B. W., Brown J. R., Kaspar H., Lipow, M.: Characteristics of software quality. Redondo Beach 1973, TRW Corporation (TRW-SS-73-09). [4] Cavano J. P., McCall, J. A.: A framework for the measurement of software quality. Proceedings of the Software Quality Assurance Workshop on Functional and Performance Issues, San Diego 1978, s. 133-139. [5] Conte S. D., Dunsmore H. E., Shen V. Y.: Software engineering metrics and models. Benjamin Cummings, Menlo Park 1986. [6] Dzida W., Herda S., Itzfeldt W. D.: User perceived quality of interactive systems. Proceedings of the Third International Conference on Software Engineering, Atlanta 1978, s. 188-195. [7] Gaffney J. E.: Metrics in software quality assurance. Proceedings of the ACM SIGMETRICS Workshop/Symposium on Measurement and Evaluation of Software Quality, Las Vegas 1981, Nevada, s. 126-130. [8] Gilb T.: Software metrics. Winthrop Publishers, Cambridge 1977. [9] Grady R. B., Caswell R. B.: Software metrics: Establishing a company wide program. Englewood Cliffs, Prentice Hall, New York 1987. [10] Halstead M. H.: Elements of software science. Elsevier, New York 1977. [11] http: Function Point Counting Practices Manual. Release 4.1, www.ifpug.org, 5 lipiec 2009.

[12] Jayaswal B. K., Patton P. C.: Oprogramowanie godne zaufania. Metodologia, techniki i narzędzia projektowania, Helion, Gliwice 2007. [13] Kan S. H.: Metrics and Models in Software Quality Engineering, Pearson Education, Singapur 2003. [14] Kan S. H.: Metrics and models in software quality engineering. Addison-Wesley 1995. [15] Lipow M.: Number of faults per line of code. IEEE Transactions on Software Engineering, 1982 nr 8(4), s. 437-439. [16] McCabe T. J.: A complexity measure. IEEE Transactions on Software Engineering, 1976 nr 2(4), s. 308-320. [17] McIlroy M. D.: Macro instruction extensions of compiler languages. Communications of the ACM, 1960 nr 3(4), s. 214-220. [18] Motley R. W., Brooks W. D.: Statistical prediction of programming errors. Griffis AFB, New York 1977. [19] Musa J. D.: Software reliability engineering. McGraw Hill, New York 1999. [20] Myers G. J.: Software reliability: Principles and practices. John Wiley & Sons, New York 1976. [21] Pham H.: System Software Reliability, Springer, London 2006. [22] Rubey R. J., Hartwick R. D.: Quantitative measurement of program quality. Proceedings of the 23rd ACM National Conference, Washington 1968, s. 671-677. [23] Shen V. Y., Yu T. J., Thebaut S. M., Paulsen L. R.: Identifying error prone software: An empirical study. IEEE Transactions on Software Engineering, 1985 nr 11(4), s. 317-324. [24] Shooman M. L., Bolsky M. I.: Types, distribution, and test and correction times for programming errors. Proceedings of the International Conference on Reliable Software, Los Angeles 1975, s. 347-357. [25] Swanson E. B.: The dimensions of maintenance. Proceedings of the Second International Conference on Software Engineering, San Francisco 1976, s. 492-497. [26] Szyjewski Z.: Wymiarowanie zmian w projektach informatycznych [w]: Zarządzanie wiedzą i technologiami informatycznymi. Automatyka i Informatyka nr 5. Technologie Informacyjne: Zarządzanie. Orłowski C., Kowalczuk Z., Szczerbicki E. (red.), Pomorskie Wydawnictwo Naukowo-Techniczne PWNT, Gdańsk 2009, s. 423-434. Paweł WEICHBROTH*, Cezary ORŁOWSKI** * Zakład Zarządzania Technologiami Informatycznymi, Wydział Zarządzania i Ekonomii, Politechnika Gdańska, pwi@zie.pg.gda.pl ** Zakład Zarządzania Technologiami Informatycznymi, Wydział Zarządzania i Ekonomii, Politechnika Gdańska, cor@zie.pg.gda.pl