Jakość jest najważniejszym kryterium oceny przydatności produktów dla klienta, a to właśnie klient umożliwia funkcjonowanie wytwórcy tych produktów

Podobne dokumenty
Zakład Języków Programowania Instytut Informatyki Uniwersytet Wrocławski

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

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

Wymiarowanie projektu informatycznego

Jak? Za ile? Kiedy? (plany),

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

Wytwarzanie, integracja i testowanie systemów informacyjnych

Zakład Języków Programowania Instytut Informatyki Uniwersytet Wrocławski

Zasady organizacji projektów informatycznych

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

Tematy seminariów wg Roger S. Pressman, Praktyczne podejście do oprogramowania, WNT, Zofia Kruczkiewicz

Tematy seminariów wg Roger S. Pressman, Praktyczne podejście do oprogramowania, WNT, Zofia Kruczkiewicz

Wykład 1 Inżynieria Oprogramowania

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

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

Metody wytwarzania oprogramowania. Metody wytwarzania oprogramowania 1/31

Oceny z prezentacji INKU011S. Zofia Kruczkiewicz

Etapy życia oprogramowania

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

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

Goal Question Metrics. Jarosław Kuchta Jakość Systemów Informatycznych

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

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

Michał Gadomski. Grzegorz Poręcki

Maciej Oleksy Zenon Matuszyk

PRZEWODNIK PO PRZEDMIOCIE

Modelowanie i Programowanie Obiektowe

Rozdział 5: Zarządzanie testowaniem. Pytanie 1

Usługa: Testowanie wydajności oprogramowania

Diagramy ERD. Model struktury danych jest najczęściej tworzony z wykorzystaniem diagramów pojęciowych (konceptualnych). Najpopularniejszym

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

SCENARIUSZ LEKCJI. Streszczenie. Czas realizacji. Podstawa programowa

Wprowadzenie w tematykę zarządzania projektami/przedsięwzięciami

DLA SEKTORA INFORMATYCZNEGO W POLSCE

Wstęp do zarządzania projektami

Tematy seminariów wg Roger S. Pressman, Praktyczne podejście do oprogramowania, WNT, Zofia Kruczkiewicz

Wstęp do zarządzania projektami

Faza Określania Wymagań

Aproksymacja funkcji a regresja symboliczna

Procesowa specyfikacja systemów IT

6 kroków do skutecznego planowania na postawie wskaźników KPI

Zarządzanie projektem informatycznym

KARTA MODUŁU KSZTAŁCENIA

Jarosław Żeliński analityk biznesowy, projektant systemów

INŻYNIERIA OPROGRAMOWANIA TESTOWANIE SYSTEMOWE

Łatwa czy niełatwa droga do celu? - wdrożenie COSMIC w ZUS

Jakość w procesie wytwarzania oprogramowania

Kuchta Jarosław Jakość Oprogramowania. Modele dojrzałości procesu wytwarzania oprogramowania CMM/CMMI

Darmowy fragment

Projekt Kompetencyjny - założenia

Monitoring procesów z wykorzystaniem systemu ADONIS

Web frameworks do budowy aplikacji zgodnych z J2EE

Inżynieria Programowania Zarządzanie projektem

w analizie wyników badań eksperymentalnych, w problemach modelowania zjawisk fizycznych, w analizie obserwacji statystycznych.

Technologie informacyjne - wykład 12 -

Opis merytoryczny. Cel Naukowy

ZARZĄDZANIE I INŻYNIERIA PRODUKCJI

KARTA PRZEDMIOTU. 1. Informacje ogólne. 2. Ogólna charakterystyka przedmiotu. Inżynieria oprogramowania, C12

Zagadnienia egzaminacyjne INFORMATYKA. stacjonarne. I-go stopnia. (INT) Inżynieria internetowa STOPIEŃ STUDIÓW TYP STUDIÓW SPECJALNOŚĆ

Historia modeli programowania

Metodyka projektowania komputerowych systemów sterowania

Jarosław Kuchta Dokumentacja i Jakość Oprogramowania. Wymagania jakości w Agile Programming

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

Lokalizacja Oprogramowania

INŻYNIERIA OPROGRAMOWANIA Jakość w projekcie informatycznym - normy

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

WPROWADZENIE DO UML-a

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

Optymalizacja ciągła

Część I - Załącznik nr 7 do SIWZ. Warszawa. 2011r. (dane Wykonawcy) WYKAZ OSÓB, KTÓRYMI BĘDZIE DYSPONOWAŁ WYKONAWCA DO REALIZACJI ZAMÓWIENIA

Systemy baz danych w zarządzaniu przedsiębiorstwem. W poszukiwaniu rozwiązania problemu, najbardziej pomocna jest znajomość odpowiedzi

Zakład Języków Programowania Instytut Informatyki Uniwersytet Wrocławski


Inżynieria Programowania Zarządzanie projektem. Plan wykładu. Motto. Motto 2. Notatki. Notatki. Notatki. Notatki.

SCENARIUSZ LEKCJI. TEMAT LEKCJI: Zastosowanie średnich w statystyce i matematyce. Podstawowe pojęcia statystyczne. Streszczenie.

Co to jest jest oprogramowanie? 8. Co to jest inżynieria oprogramowania? 9. Jaka jest różnica pomiędzy inżynierią oprogramowania a informatyką?

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

Systemy rachunku kosztów

1. Wprowadzenie do dokumentu Moduł polityki zarządzania

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

Egzamin / zaliczenie na ocenę*

Tradycyjne podejście do kosztów pośrednich

Wstęp do zarządzania projektami

Zaawansowane programowanie w języku C++

Efekty kształcenia dla kierunku studiów INFORMATYKA, Absolwent studiów I stopnia kierunku Informatyka WIEDZA

Opis podstawowych modułów

Dlaczego testowanie jest ważne?

SYLABUS DOTYCZY CYKLU KSZTAŁCENIA realizacja w roku akademickim 2016/17

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

Zagadnienia (1/3) Data-flow diagramy przepływów danych ERD diagramy związków encji Diagramy obiektowe w UML (ang. Unified Modeling Language)

PLAN ZARZĄDZANIA WYMAGANIAMI PROJEKT <NAZWA PROJEKTU> WERSJA <NUMER WERSJI DOKUMENTU>

SVN. 10 października Instalacja. Wchodzimy na stronę i pobieramy aplikację. Rysunek 1: Instalacja - krok 1

Wprowadzenie do systemów informacyjnych

Transformacja wiedzy w budowie i eksploatacji maszyn

Ograniczenia projektu. Zakres (co?) Czas (na kiedy?) Budżet (za ile?)

Inżynieria oprogramowania. Część 8: Metoda szacowania ryzyka - PERT

Metrologia: organizacja eksperymentu pomiarowego

Katalog rozwiązań informatycznych dla firm produkcyjnych

ZAPYTANIE OFERTOWE NR 01/04/2014

Bezpieczeństwo aplikacji i urządzeń mobilnych w kontekście wymagań normy ISO/IEC oraz BS doświadczenia audytora

Transkrypt:

Inżynieria oprogramowania Wykład 11: Zapewnienie jakości oprogramowania i metryki oprogramowania Marek Krętowski pokój 206 e-mail: m.kretowski@pb.edu.pl http://aragorn.pb.bialystok.pl/~mkret Wydział Informatyki PB Jakość oprogramowania Zapewnienie jakości jest rozumiane jako zespół działań zmierzających do wytworzenia u wszystkich zainteresowanych przekonania, że dostarczony produkt właściwie realizuje swoje funkcje i odpowiada aktualnym wymaganiom i standardom Problem jakości, oprócz mierzalnych czynników technicznych, włącza dużą liczbę niemierzalnych obiektywnie czynników psychologicznych Podstawą obiektywnych wniosków co do jakości oprogramowania są pomiary pewnych parametrów użytkowych (niezawodności, szybkości, itd.) w realnym środowisku, np. przy użyciu metod statystycznych Obiektywne pomiary cech produktów programistycznych są utrudnione lub niemożliwe Jakość gotowych produktów programistycznych jest bardzo trudna do zmierzenia ze względu na ich złożoność, wieloaspektowość oraz niską przewidywalności wszystkich aspektów ich zastosowań w długim czasie Wersja 1.26 Inżynieria oprogramowania (Wyk. 11) Slajd 2 z 30 Zakres zapewnienia jakości Trudności z oceną jakości oprogramowania Modele i miary służące ocenie kosztu i nakładu pracy Modele i miary wydajności ludzi Gromadzenie danych Modele i miary jakości Modele niezawodności Ocena i modelowanie wydajności oprogramowania Miary struktury i złożoności Ocena dojrzałości technologicznej Zarządzanie z wykorzystaniem metryk Ocena metod i narzędzi Celem ostatecznym jest poprawa jakości oprogramowania Inżynieria oprogramowania (Wyk. 11) Slajd 3 z 30 Oceny jakości najczęściej muszą być znane zanim powstanie gotowy, działający produkt, co wyklucza zastosowanie obiektywnych metod pomiarowych Wiele czynników składających się na jakość produktu jest niemierzalna Produkty programistyczne mogą działać w różnych zastosowaniach, o różnej skali, przez co pomiary jakości mogą okazać się nieadekwatne przy zmianie skali (np. zwiększonej liczbie danych lub użytkowników), w innym środowisku,... Pomiary mogą okazać się bardzo kosztowne, czasochłonne lub niewykonalne (z powodu niemożliwości stworzenia środowiska pomiarowego przed wdrożeniem); Nie ma zgody co do tego, w jaki sposób zmierzone cechy danego produktu składają się na syntetyczny wskaźnik jego jakości Oceny jakości produktów programistycznych są skazane na metody spekulacyjne, oparte na uproszczeniach oraz dodatkowych założeniach, algorytmach, wzorach i heurystykach Inżynieria oprogramowania (Wyk. 11) Slajd 4 z 30 Zarządzanie przez jakość Pomiary oprogramowania Koncepcja zarządzania przez jakość (TQM) wymyślona przez Japończyka Eiji Toyodę dla potrzeb naprawy japońskiego przemysłu motoryzacyjnego (~1950) Jakość jest najważniejszym kryterium oceny przydatności produktów dla klienta, a to właśnie klient umożliwia funkcjonowanie wytwórcy tych produktów W związku z tym, że to klient stanowi o rentowności przedsiębiorstwa, to należy tak sterować wszystkimi fazami procesu produkcyjnego wyrobu, aby klient był zadowolony z jakości tego wyrobu Wniosek: producent wytwarzający produkty kiepskie powinien wypaść z rynku TQM została sformalizowana przez Amerykanów (W.E.Deming, P.Crosby, J.M.Juran, A.V.Feigenbaum), Japończyków (E.Toyoda, M.Imai, K.Ishikawa) i Brytyjczyka J.Oaklanda Inżynieria oprogramowania (Wyk. 11) Slajd 5 z 30 Pomiar (ang. measurement) jest to proces, w którym atrybutom świata rzeczywistego przydzielane są liczby lub symbole w taki sposób, aby charakteryzować te atrybuty według jasno określonych zasad Jednostki przydzielane atrybutom nazywane są miarą danego atrybutu Pomiarom podlega: Proces: każde określone działanie w ramach projektu, wytwarzania lub eksploatacji oprogramowania. Produkt: każdy przedmiot powstały w wyniku procesu (kod źródłowy, specyfikację projektową, udokumentowaną modyfikację, plan testów, dokumentację,...) Metryka (ang. metric) jest to proponowana (postulowana) miara; nie zawsze Zasób: każdy element niezbędny charakteryzuje ona w sposób obiektywny do realizacji procesu (osoby, dany atrybut (np. ilość linii kodu jest narzędzia, metody metryką charakteryzującą atrybut długość wytwarzania,...) programu źródłowego, ale nie jest miarą ani złożoności ani rozmiaru programu (choć występuje w tej roli) Inżynieria oprogramowania (Wyk. 11) Slajd 6 z 30

Elementy pomiaru oprogramowania Modele i miary wydajności Obiekty Atrybuty bezpośrednio mierzalne Wskaźniki syntetyczne Produkty Specyfikacje rozmiar, ponowne użycie, modularność, zrozumiałość, pielęgnacyjność,... nadmiarowość, funkcjonalność,... Projekty rozmiar, ponowne użycie, modularność, spójność, funkcjonalność,... jakość, złożoność, pielęgnacyjność,... Kod rozmiar, ponowne użycie, modularność, spójność, złożoność, strukturalność,... niezawodność, używalność, pielęgnacyjność,... Dane testowe rozmiar, poziom pokrycia,... jakość,... Procesy Specyfikacja arch. czas, nakład pracy, liczba zmian wymagań,... jakość, koszt, stabilność,... Projekt szczegółowe czas, nakład pracy, liczba usterek w specyfik. koszt, opłacalność,... Testowanie czas, nakład pracy, liczba błędów kodu,... koszt, opłacalność, stabilność,... Zasoby Personel wiek, cena,... wydajność, doświadczenie, inteligencja,... Zespoły wielkość, poziom komunikacji, struktura,... wydajność, jakość,... Oprogramowanie cena, wielkość,... używalność, niezawodność,... Sprzęt cena, szybkość, wielkość pamięci niezawodność,... Biura wielkość, temperatura, oświetlenie,... wygoda, jakość,............ Inżynieria oprogramowania (Wyk. 11) Slajd 7 z 30 Czynniki wpływające na ogólną wydajność Niezawodność Wartość Wydajność Koszt Jakość Ilość Personel Zasoby Złożoność Defekty Wielkość Funkcjonalność Czas Pieniądze Sprzęt Mylące, wręcz niebezpieczne jest zastępowanie wielu miar jedną miarą, np. długością wyprodukowanego kodu Ograniczenia środowiskowe Oprogramowanie Trudność problemu Inżynieria oprogramowania (Wyk. 11) Slajd 8 z 30 Techniki szacowania nakładów pracy Modele algorytmiczne szacowania nakładów Modele algorytmiczne - opis przedsięwzięcia za pomocą charakteryzujących go atrybutów (liczbowych) i na tej bazie wyliczenie (np. prosta formuła matematyczna) nakładów Ocena przez ekspertów - bazują na własnym doświadczeniu zdobytym przy realizacji innych projektów Ocena przez analogię - przy założeniu gromadzenia informacji o uprzednio wykonanych projektach; wyszukuje się podobne systemy poprzednio zrealizowane i wykorzystuje nakłady poniesione na ich stworzenie Wycena dla wygranej (ang. pricing to win) - na podstawie oceny możliwości klienta oraz przewidywanych działań konkurencji; opiera się na prawie Parkinsona - przedsięwzięcia są wykonywane przy założonych kosztach (jakie by one nie były) Szacowanie wstępujące - dzieli się przedsięwzięcie na mniejsze zadania, które łatwiej oszacować; koszt całości jest ich sumą (ew. z narzutem na integrację) Inżynieria oprogramowania (Wyk. 11) Slajd 9 z 30 Większość modeli przyjmuje, że jednym z istotnych atrybutów jest rozmiar systemu, mierzony np. liczbą instrukcji (linii) kodu (ang. Lines Of Code - LOC), KLOC (ang. Kilo-LOC), KDSI (ang. Kilo (thousand) of Delivered Source code Instructions) Specjalizacja metryk w kierunku konkretnej klasy oprogramowania powinna dawać lepsze i bardziej adekwatne oceny niż metryki uniwersalne Najlepiej jest stosować zestawy metryk, co pozwala zmniejszyć błędy pomiaru Metryki powinny być wykorzystywane jako metody wspomagania ekspertów (stosowane formalistycznie mogą być groźne) Pomimo pochodzenia empirycznego, metryki skutecznie pomagają w szybkiej i mniej subiektywnej ocenie oprogramowania Żadna metoda przewidywania kosztów nie jest doskonała i jest oparta na szeregu arbitralnych założeń; niemniej dla celów planowania tego rodzaju metody stają się koniecznością Inżynieria oprogramowania (Wyk. 11) Slajd 10 z 30 Nauka o programach Halsteada (Halstead s software science) Halstead zdefiniowal szereg metryk złożoności w oparciu o elementy składniowe programu - kodu (operandy i operatory) W programie P mamy: n1 (n2) różnych operatorów (operandów); słownik P zawiera n=n1+n2 elementów; N1 (N2) - oznacza całkowitą liczbę wystąpień operatorów (operandów); wielkość P wynosi N=N1+N2; Wysiłek E potrzebny do wytworzenia P wynosi (elementarnych jednostek): E = (n1*n2*n*logn) / (2*n2) Czas potrzebny do wytworzenia P wynosi: T = E / 18s Liczba cyklomatyczna (McCabe s cyclomatic number) Zaproponowana przez McCabe a; odnosi się do schematu blokowego programu i jest równa liczbie niezależnych dróg w takim schemacie (liczba decyzji w programie +1) Krytykowana m.in. za nieuwzględnienie złożoności przepływów danych lub złożoności programów niestrukturalnych Program P jest reprezentowany przez graf G, gdzie: e - liczba krawędzi n - liczba węzłów d - liczba węzłów decyzyjnych v(p)=e-n+2 v(p)=d+1 v(p) - liczba niezależnych ścieżek w G Inżynieria oprogramowania (Wyk. 11) Slajd 11 z 30 Inżynieria oprogramowania (Wyk. 11) Slajd 12 z 30

Metoda COnstructive COst MOdel (COCOMO 81) Podstawowy model COCOMO Powstała w oparciu o dane z rzeczywistych projektów, realizowanych Podstawowy wzór dla oszacowania Przedsięwzięcie łatwe: tradycyjnie (np. bez narzędzi CASE) w oparciu o model kaskadowy, autor nakładów w osobomiesiącach Boehm, 1981 r. (zależność wykładnicza): Nakład = 2.4 * K 1.05 Wymaga oszacowania liczby instrukcji, z których będzie składał się system Nakład= A *K b Przedsięwzięcie pośrednie: (co może być tak samo trudne jak oszacowanie nakładów) Nakład = 3.0 * K 1.12 K oznacza rozmiar kodu źródłowego Wyróżnia się trzy klasy przedsięwzięć: mierzony w tysiącach linii (KDSI); nie Przedsięwzięcie trudne: Łatwe (ang. organic) - wykonywane przez stosunkowo małe zespoły, złożone z osób o obejmuje kodu, który nie został Nakład = 3.6 * K 1.20 podobnych wysokich kwalifikacjach; dziedzina oraz wykorzystywane metody i narzędzia wykorzystany w systemie Nakład trudne są dobrze znane Wartości stałych A i b zależą od klasy, Pośrednie (ang. semi-detached) - członkowie zespołu różnią się stopniem do której zaliczono przedsięwzięcie pośrednie zaawansowania; pewne aspekty dziedziny problemu lub wykorzystywane narzędzia nie są Dla niewielkich przedsięwzięć są to dobrze znane zależności bliskie liniowym; wzrost jest łatwe Trudne (osadzone, ang. embedded) - przedsięwzięcia realizujące systemy o bardzo szczególnie szybki dla przedsięwzięć złożonych wymaganiach; dziedzina problemu, stosowane narzędzia i metody mogą być w trudnych (duży rozmiar kodu) dużej mierze nieznane; członkowie zespołu nie mają doświadczenia w realizacji KDSI podobnych zadań Inżynieria oprogramowania (Wyk. 11) Slajd 13 z 30 Inżynieria oprogramowania (Wyk. 11) Slajd 14 z 30 Model COCOMO (2) Wady metody COCOMO Znając nakład można oszacować czas Otrzymane w ten sposób oszacowania powinny (w miesiącach) realizacji, z czego być skorygowane przy pomocy tzw. wynika przybliżona wielkość zespołu czynników modyfikujących Z obserwacji wiadomo, że dla każdego Atrybuty przedsięwzięcia brane pod uwagę: przedsięwzięcia istnieje optymalna wymagania wobec niezawodności systemu liczba członków zespołu wykonawców rozmiar bazy danych w stosunku do Zwiększenie tej liczby może nawet rozmiaru kodu wydłużyć czas realizacji złożoność systemu (złożoność struktur Przedsięwzięcie łatwe: danych i algorytmów, komunikacja z innymi systemami, stosowanie obl. równoległych) Czas = 2.5 * Nakład 0.32 wymagania co do wydajności systemu Przedsięwzięcie pośrednie: ograniczenia pamięci Czas = 2.5 * Nakład 0.35 zmienność sprzętu i oprogramowania systemowego tworzącego środowisko pracy Przedsięwzięcie trudne: systemu Czas = 2.5 * Nakład 0.38 Inżynieria oprogramowania (Wyk. 11) Slajd 15 z 30 Liczba linii kodu jest znana dokładnie dopiero wtedy, gdy system jest napisany a szacunki mogą być (i zwykle są ) obarczone bardzo poważnym błędem (niekiedy ponad 100%) Określenie linii kodu źródłowego inaczej wygląda dla każdego języka programowania (np. 1 linia w Smalltalk u jest równoważna 10-ciu linii w C; dla języków 4GL ten stosunek może być nawet 1000:1) Koncepcja oparta na liniach kodu źródłowego natomiast całkowicie nie przystaje do współczesnych narzędzi programistycznych, np. opartych o programowanie wizyjne Opiera się tylko na długości kodu i nie bierze w ogóle pod uwagę funkcjonalności ani złożoności produktu Kwalifikacja przedsięwzięcia do predefiniowanych klas oraz dobór czynników modyfikujących jest trudny, a ewentualne błędy mogą prowadzić do znacznych rozbieżności pomiędzy oczekiwanym i rzeczywistym kosztem Inżynieria oprogramowania (Wyk. 11) Slajd 16 z 30 COCOMO II COCOMO II (2) Uwspółcześniona wersja COCOMO opublikowana w 2000 r. Zakłada, że pracochłonność przedsięwzięcia zależy od wielu czynników, które ujawniają się w czasie realizacji opracowanie architektury jest kluczowym momentem Dwa różne schematy obliczeń: uproszczony model (wczesnego projektu) (ang. early design model) dokładny model (gotowej architektury) (ang. post-architecture model) Postać formuły wyliczania pracochłonności w funkcji rozmiaru jest analogiczna, różne są tylko uwzględniane czynniki Pracochłonność = A * (rozmiar) B * Korekta - współczynnik A jest stały (A=2,94) - parametr B decyduje o skalowalności B=0,91 + 0,01 * Si (i=1..5) - Korekta = iloczyn czynników: 7 w uproszczonym, 17 w pełnym modelu Inżynieria oprogramowania (Wyk. 11) Slajd 17 z 30 Współczynniki Si są ocenami następujących cech projektu : innowacyjność projektu elastyczność wymagań jakość planowania i zarządzania ryzykiem zgodność celów udziałowców projektu dojrzałość procesu wytwórczego W efekcie B może zmieniać się w zakresie od 0,91 do 1,23 Pełna wersja modelu COCOMO II jest bardzo złożona zawiera ok. 160 parametrów umożliwiających obliczanie rozmiaru programu (uwzględniając np. kod generowany automatycznie, dostosowywany z innych projektów) oraz reguły wyliczania współczynników korygujących Inżynieria oprogramowania (Wyk. 11) Slajd 18 z 30

Analiza Punktów Funkcyjnych Metoda analizy punktów funkcyjnych (ang. function points - FP), została opracowana przez Albrechta (początek lat 80-tych); łączy własności metody badającej rozmiar projektu programu z możliwościami metody badającej produkt programowy (jego funkcjonalność) Najpierw ocenia się zobiektywizowaną złożoność problemu, wynikającą ze złożoności danych i algorytmów przetwarzania realizowanych przez aplikację koncentruje się na perspektywie użytkowników; nie bierze się pod uwagę technologii implementacji liczbę pierwotnych (nieskorygowanych) punktów funkcyjnych (ang. Unadjusted FP) wylicza się korzystając z 5 kategorii elementów składowych modelu każdy zidentyfikowany element modelu przetwarzania jest oceniany w 3 stopniowej skali opisowej W drugim etapie uwzględnia się dodatkowe czynniki wpływające na złożoność przedsięwzięcia FP = UFP * VAF Inżynieria oprogramowania (Wyk. 11) Slajd 19 z 30 Kategorie elementów modelu przetwarzania Zbiory wewnętrzne modelują dane przechowywane i utrzymywane przez oceniane oprogramowanie zbiór odpowiada grupie logicznie powiązanych danych opisujących jakiś istotny aspekt przetwarzania Zbiory zewnętrzne modelują współpracę z innymi systemami zbiór reprezentuje logicznie powiązane dane otrzymywane z innego systemu Wejścia użytkownika (zewnętrzne) - modelują elementarne operacje przetwarzające dane dostarczane z zewnątrz (przez użytk. lub inne systemy) operacje opisują działania istotne z punktu widzenia użytkownika => efekt zmiana zawartości zbiorów wewnętrznych lub zmiana zachowania systemu Wyjścia użytkownika (zewnętrzne) - modelują elementarne operacje przetwarzające dane i przekazujące wyniki do otoczenia działanie musi obejmować coś więcej niż tylko proste odczytanie danych Zapytania modelują operacje prostego wyszukania i przedstawienia danych zgromadzonych w zbiorach aplikacji (brak obliczeń i zmian wartości w zbiorach) Inżynieria oprogramowania (Wyk. 11) Slajd 20 z 30 Ocena złożoności elementów modelu Pierwotne i skorygowane punkty funkcyjne Reguły oceny złożoności elementów modelu są ściśle określone; brane są pod uwagę następujące charakterystyki: liczba typów rekordu zbioru (liczba różnych encji reprezentowanych przez zbiór) liczba pól zbioru (liczba różnych atrybutów występujących w encjach zbioru; uwzględnia się też atrybuty łączące zbiory klucze obce) liczba wykorzystywanych zbiorów (zarówno wewnętrznych jak i zewnętrznych w operacji) Czynnik złożoności Wejścia użytkownika Wyjścia użytkownika Zbiory danych wewnętrzne Zbiory danych zewnętrzne Zapytania zewnętrzne Prosty 3 4 7 5 3 Średni Inżynieria oprogramowania (Wyk. 11) Slajd 21 z 30 4 5 10 7 4 Złożony Wagi przypisywane poszczególnym elementom modelu zależą od ich złożoności 6 7 15 10 6 Złożoność oprogramowania (pierwotna liczba punktów funkcyjnych) ważona suma ilości elementów modelu przetwarzania wagi wynikają ze złożoności poszczególnych elementów modelu Aby otrzymać finalną (skorygowaną) liczbę punktów funkcyjnych należy uwzględnić dodatkowe czynniki złożoności przedsięwzięcia: pod uwagę branych jest 14 czynników korygujących i przypisuje się im wagi (skala 6-stopniowa: od 0 - brak wpływu do 5 - bardzo duży wpływ ) suma ich ocen oraz odpowiednie wyskalowanie pozwalają wyliczyć współczynnik korekcyjny (ang. Value Adjustment Factor) pozwala to skorygować liczbę punktów funkcyjnych o 35% w obie strony Można pokusić się o przeliczenie otrzymanej złożoności projektu na pracochłonność albo koszt wykonania dostępne są uśrednione tabele i wykresy (np. pracochłonności) dla różnych języków należy jednak być ostrożnym; zaleca się wykorzystanie własnych danych historycznych Inżynieria oprogramowania (Wyk. 11) Slajd 22 z 30 Czynniki korygujące Wykorzystanie punktów funkcyjnych występowanie urządzeń komunikacyjnych rozproszenie przetwarzania długość czasu oczekiwania na odpowiedź systemu stopień obciążenia sprzętu istniejącego częstotliwość wykonywania dużych transakcji wprowadzanie danych w trybie bezpośrednim wydajność użytkownika końcowego aktualizacja danych w trybie bezpośrednim złożoność przetwarzania danych możliwość ponownego użycia programów w innych zastosowaniach łatwość instalacji łatwość obsługi systemu rozproszenie terytorialne łatwość wprowadzania zmian - pielęgnowania systemu Inżynieria oprogramowania (Wyk. 11) Slajd 23 z 30 Ocena złożoności realizacji systemów Audyt projektów Wybór systemów informatycznych funkcjonujących w przedsiębiorstwie do reinżynierii (wg. koszt utrzymania/fps) Szacowanie liczby testów Ocena jakości pracy i wydajności zespołów ludzkich Ocena stopnia zmian, wprowadzanych przez użytkownika na poszczególnych etapach budowy systemu informatycznego Prognozowanie kosztów pielęgnacji i rozwoju systemów Porównanie i ocena różnych ofert dostawców oprogramowania pod kątem merytorycznym i kosztowym 1 FP 125 instrukcji w C 10 FPs - typowy mały program tworzony samodzielnie przez klienta (1 m-c) 100 FPs - większość popularnych aplikacji; wartość typowa dla aplikacji tworzonych przez klienta samodzielnie (6 m-cy) 1,000 FPs - komercyjne aplikacje w MS Windows, małe aplikacje klientserwer (10 osób, ponad 12 m-cy) 10,000 FPs - systemy (100 osób, ponad 18 m-cy) 100,000 FPs - MS Windows 95, MVS, systemy militarne Inżynieria oprogramowania (Wyk. 11) Slajd 24 z 30

Punkty aplikacyjne (obiektowe) Alternatywna metoda w stosunku do punktów funkcyjnych zaproponowana na początku lat 90-tych przez Bankera i współpracowników Wykorzystywana do języków programowania baz danych, 4GL obiektowe w nazwie nie ma tutaj związku z programowaniem obiektowym Liczba punktów obiektowych jest ważoną sumą: liczby różnych formatek ekranowych (prosty ekran - 1 punkt, średnio złożony - 2 punkty, bardzo złożony - 3 punkty) liczba generowanych raportów (prosty raport - 2 punkty, średnio skomplikowany - 5 punktów, a potencjalnie najtrudniejsze do utworzenia - 8 p.) liczba modułów w językach 3GL (takich jak C++; Java), które należy utworzyć w celu uzupełnienia kodu 4GL - każdy moduł 10 punktów Zaletą punktów obiektowych w porównaniu z punktami funkcyjnymi jest to, że łatwiej je obliczyć na podstawie specyfikacji oprogramowania wysokiego poziomu Inżynieria oprogramowania (Wyk. 11) Slajd 25 z 30 Cel, Pytanie, Metryka (Goal, Question, Metric - GQM) Wiele zamierzeń związanych z metrykami oprogramowania zawiodło, gdyż cele były zwykle słabo zdefiniowane; aby temu przeciwdziałać na Uniwersytecie Maryland (Vic Basili et al.) opracowano metodę GQM Trzy podstawowe kroki: ustalenie celów w kategoriach zamiaru, perspektywy i środowiska ponowne wypowiedzenie celów w terminach odpowiedzi na łatwe do skwantyfikowania pytania określenie metryk i danych, które należy zgromadzić, aby udzielić odpowiedzi na postawione pytania Dzięki takiemu ułożeniu koncentrujemy się tylko na metrykach, które odnoszą się do interesującego nas celu Kilka pomiarów, aby odpowiedzieć na jedno pytanie; pojedynczy pomiar może mieć zastosowanie do kilku pytań Inżynieria oprogramowania (Wyk. 11) Slajd 26 z 30 Przykład wykorzystania GQM Dojrzałość procesów wytwórczych CEL: PYTANIA: METRYKI: Kto używa narzędzia X? Ocenić skuteczność narzędzia X Odsetek Doświadczenie programistów programistów: - lata pracy - miesiące stosowania X Jaka jest wydajność programisty? Wielkość kodu: - KLOC - FP -... Nakład pracy Jaka jest jakość kodu? Defekty... Niedojrzałość Improwizacja podczas procesu wytwórczego Proces jest wyspecyfikowany, ale specyfikacja nie jest stosowana Doraźne reagowanie w sytuacji kryzysów Harmonogram i budżet są przekraczane Funkcjonalność jest stopniowo okrajana Jakość produktu jest niska Brak obiektywnych kryteriów oceny Dojrzałość Zdolność do budowy oprogramowania jest cechą organizacji a nie personelu Proces jest zdefiniowany, znany i wykorzystywany Proces jest obserwowany i ulepszany Prace są planowane i monitorowane Role i odpowiedzialności są zdefiniowane Obiektywna, ilościowa ocena Inżynieria oprogramowania (Wyk. 11) Slajd 27 z 30 Inżynieria oprogramowania (Wyk. 11) Slajd 28 z 30 Model dojrzałości procesu wytwórczego Poziomy dojrzałości wytwórców Model dojrzałości procesu wytwórczego (ang. Capability Maturity Model - CMM) został opracowany w latach 80-tych przez amerykański Instytut Inżynierii Oprogramowania na zlecenie rządu USA Wykorzystywany był w procedurach oceny (klasyfikacji) potencjalnych wykonawców oprogramowania dla Departamentu Obrony Opiera się w znacznym stopniu na koncepcjach TQM (ang. Total Quality Management) Ocenia wiele różnych atrybutów wytwarzania oprogramowania, obejmujących użycie narzędzi i standardowych praktyk Model ten szybko zyskał szeroką akceptację jako wzorzec do usprawniania procesu programowania Wywarł znaczny wpływ na uświadomienie znaczenia miar i ich stosowanie, gdyż w CMM miary są uważane za ważne dla osiągnięcia wyższych poziomów usprawnienia procesu Inżynieria oprogramowania (Wyk. 11) Slajd 29 z 30 Wyróżniono 5 poziomów dojrzałości wytwórców (poczynając od p. najniższego): początkowy (1) - proces chaotyczny, nie istnieją żadne standardy, decyzje podejmowane ad hoc; może dotyczyć nawet firm o dobrym zaawansowaniu technicznym powtarzalny (2) - proces zindywidualizowany;przedsięwzięcia wykonywane w podobny sposób (standardy de facto); standardy nie są udokumentowane i nie istnieją ścisłe procedury kontroli zdefiniowany (3) - proces zinstytucjonalizowany; standardy postępowania są zdefiniowane, sformalizowane i ich stosowanie jest kontrolowane zarządzany (4) - proces nie tylko podlega kontroli ale jest również mierzony w sposób ilościowy; informacje zwrotne wykorzystywane są do sterowania procesem optymalizujący (5) - standardy są ciągle uaktualniane; informacje zwrotne wpływają na ulepszenie procesu; standardy zawierają elementy pozwalające na dostrojenie procesu do aktualnych potrzeb Początkowo niewiele firm uzyskiwało poziom 3-ci, umożliwiający dostarczanie oprogr. dla Dep. Obrony; tylko IBM w zakresie oprogr. promu kosmicznego dla NASA uzyskał poziom 5-ty Inżynieria oprogramowania (Wyk. 11) Slajd 30 z 30

Przygotowano na podstawie: Inżynieria oprogramowania w projekcie informatycznym, red. J. Górski, Mikom 2000. Wprowadzenie do inżynierii oprogramowania, K. Subieta, Wydawnictwo PJWSTK, 2002. Inżynieria oprogramowania, K. Sacha, PWN, 2010.