Zarządzanie jakością Omówienie zarządzania jakością oprogramowania i opisanie specyficznych czynności zarządzania jakością ©Ian Sommerville 2000 Inżynieria oprogramowania, Rozdział 24 Slide 1 Cele Poznać proces zarządzania jakością oraz główne czynności procesów zapewnienia jakości, planowania jakości i kontroli jakości. Dowiedzieć się, jak ważne są standardy procesu zarządzania jakością. Poznać pojęcie miary oprogramowania i różnice między miarami produkcyjnymi i kontrolnymi. Dowiedzieć, w jaki sposób pomiary mogą pomóc w oszacowaniu pewnych atrybutów jakości i poznać obecne ograniczenia miernictwa oprogramowania. ©Ian Sommerville 2000 Inżynieria oprogramowania, Rozdział 24 Slide 2 Zawartość Zapewnienie jakości i standardy Planowanie jakości Kontrolowanie jakości Miernictwo oprogramowania i miary ©Ian Sommerville 2000 Inżynieria oprogramowania, Rozdział 24 Slide 3 Jakość oprogramowania Jest złożonym pojęciem, którego nie da się zdefiniować w prosty sposób. W klasycznym ujęciu jakość oznacza, że produkt spełnia swoja specyfikację. utworzony W idealnej rzeczywistości ta definicja powinna dotyczyć wszystkich produktów. ©Ian Sommerville 2000 Inżynieria oprogramowania, Rozdział 24 Slide 4 Pewne uwagi dotyczące jakości Specyfikacja powinna być poświęcona właściwościom produktu, których klient oczekuje. Firma produkująca może mieć dodatkowe wymagania (np. wymagania stawiane zdatności do pielęgnacji), których nie umieszcza się w specyfikacji. Nie wiemy, jak specyfikować pewne jakościowe cechy (np. zdatność do pielęgnacji) w sposób jednoznaczny. Napisanie kompletnej specyfikacji oprogramowania jest bardzo trudne. Bywa tak, że chociaż oprogramowanie jest zgodne ze swoją specyfikacją, użytkownicy nie muszą uważać go za produkt wysokiej jakości. ©Ian Sommerville 2000 Inżynieria oprogramowania, Rozdział 24 Slide 5 Zarządzania jakością oprogramowania Zapewnienie jakości. Ustalenie zrębu firmowych procedur i standardów, które umożliwiają utworzenie oprogramowania wysokiej jakości. Planowanie jakości. Wybór odpowiednich procedur i standardów z tego zrębu i dostosowanie ich do konkretnego przedsięwzięcia informatycznego. Kontrola jakości. Definiowanie i wdrażanie procesów, które sprawiają, że zespół budujący oprogramowanie przestrzega standardów i procedur jakości przedsięwzięcia. ©Ian Sommerville 2000 Inżynieria oprogramowania, Rozdział 24 Slide 6 Zarządzanie jakością i tworzenie oprogramowania Proces tworzenia oprogramowania W1 W2 W3 W4 W5 Proces zarządzania jakością Standardy Plan i procedury jakości ©Ian Sommerville 2000 Raporty z kontroli jakości Inżynieria oprogramowania, Rozdział 24 Slide 7 Standardy Międzynarodowy standard, który można wykorzystać przy opracowywaniu systemu zarządzania jakością we wszystkich gałęziach przemysłu, nosi nazwę ISO 9000. Jest to zbiór standardów, które można zastosować do wielu firm, m.in. fabryk i przedsiębiorstw usługowych. ISO 9001 to najbardziej ogólny z tych standardów. Dotyczy firm zajmujących się procesem jakości w przedsiębiorstwach, które produkują, tworzą i pielęgnują produkty. ©Ian Sommerville 2000 Inżynieria oprogramowania, Rozdział 24 Slide 8 ISO 9001 ISO 9001 jest ogólnym modelem procesu jakości. Uwzględniono w nim rozmaite aspekty tego procesu oraz określono standardy i procedury, które muszą istnieć w firmie. Nie zależą od gałęzi przemysłu, nie są więc szczegółowo zdefiniowane. W ramach konkretnego przedsiębiorstwa należy zdefiniować i udokumentować zbiór odpowiednich procesów jakości w postaci firmowego podręcznika jakości. ©Ian Sommerville 2000 Inżynieria oprogramowania, Rozdział 24 Slide 9 Zagadnienia uwzględnione w modelu zapewnienia jakości ISO 9001 Zadanie kierownictwa Kontrola niezgodnych produktów System jakości Kontrola projektów Obsługa, składowanie, pakowanie i dostarczenie Zakupy Produkty dostarczane przez sprzedawców Identyfikacja i śledzenie produktów Kontrola procesu Inspekcja i testowanie Osprzęt do testowania i kontroli Stan kontroli i testów Przegląd umowy Czynności poprawiające Kontrola dokumentów Rejestry jakości Wewnętrzne kontrole jakości Szkolenie Realizacja usług Metody statystyczne ©Ian Sommerville 2000 Inżynieria oprogramowania, Rozdział 24 Slide 10 ISO 9000 i zarządzanie jakością Model jakości ISO 9000 jego egzemplarzem jest dokumentuje Firmowy podręcznik jakości jego egzemplarzem jest jest używany przy opracowaniu Plan jakości przedsięwzięcia 1 ©Ian Sommerville 2000 Plan jakości przedsięwzięcia 2 Firmowy proces jakości Plan jakości przedsięwzięcia 3 Wspomaga Inżynieria oprogramowania, Rozdział 24 Zarządzanie jakością przedsięwzięć Slide 11 Zapewnienie jakości i standardy Czynności zapewnienia jakości (Quality Assurance, QA) prowadzą do określenia zrębu osiągania jakości oprogramowania. Proces QA obejmuje definiowanie i wybór standardów, które dotyczą procesu tworzenia oprogramowania i produktu programowego. Te standardy można zawrzeć w procedurach lub procesach, które są stosowane w trakcie tworzenia. Procesy mogą być wspomagane przez narzędzia, w które wbudowano wiedzę o standardach jakości. ©Ian Sommerville 2000 Inżynieria oprogramowania, Rozdział 24 Slide 12 Typy standardów Standardy produktowe. Są to standardy, które dotyczą tworzenia produktu. Obejmują standardy dokumentów, takie jak struktura dokumentacji wymagań, standardy dokumentowania, takie jak standardowy komentarz w nagłówku definicji klasy obiektów, i standardy kodowania. Standardy procesowe. Są to standardy, w których określa się procesy do przestrzegania w czasie tworzenia oprogramowania. Mogą to być definicje procesów specyfikowania, projektowania i zatwierdzania oraz opisy dokumentów, które powinny powstać w trakcie tych procesów. ©Ian Sommerville 2000 Inżynieria oprogramowania, Rozdział 24 Slide 13 Przyczyny ważności standardów oprogramowania Stanowią obudowę najlepszych albo co najmniej najodpowiedniejszych praktyk. Tę wiedzę często można zdobyć jedynie przez ogromna liczbę prób i błędów. Stanowią zrąb, wokół którego można zaimplementować zapewniania jakości. Przy założeniu, że standardy są obudową najlepszych praktyk, kontrola jakości może polegać jedynie na upewnieniu się, że starannie przestrzegano standardów. Pomagają w utrzymaniu ciągłości pracy wykonywanej przez jedną osobę i podjętej przez inną. Standardy sprawiają, że wszyscy inżynierowie firmy postępują w podobny sposób. ©Ian Sommerville 2000 Inżynieria oprogramowania, Rozdział 24 Slide 14 Standardy produktowe i procesowe Standardy produktowe Standardy procesowe Formularz przeglądu projektu Przebieg przeglądu projektu Struktura dokumentacji wymagań Zgłaszanie dokumentów Format nagłówka procedury Proces rozpowszechniania wersji Styl programowania w Javie Proces akceptacji planu przedsięwzięcia Format planu przedsięwzięcia Proces panowania nad zmianami Formularz żądania zmiany Proces rejestrowania testów ©Ian Sommerville 2000 Inżynieria oprogramowania, Rozdział 24 Slide 15 Standardy a biurokracja Inżynierowie oprogramowania czasem uważają, że standardy są biurokratyczne i nieistotne dla technicznych czynności w trakcie budowania oprogramowania. Jest to szczególnie prawdopodobne wówczas, gdy standardy wymagają wypełniania nudnych formularzy i rejestrowania pracy. Chociaż inżynierowie ogólnie zgadzają się z koniecznością przestrzegania standardów, często znajdują dobre uzasadnienia nieodpowiedniości standardów do przedsięwzięcia, które realizują. ©Ian Sommerville 2000 Inżynieria oprogramowania, Rozdział 24 Slide 16 Standardy dokumentowania Standardy dokumentowania są szczególnie ważne w przedsięwzięciu informatycznym, ponieważ dokumenty są jedynym namacalnym sposobem przedstawiania oprogramowania i procesu tworzenia oprogramowania. Standaryzowane dokumenty maja podobny wygląd, strukturę i jakość. Ich czytanie i rozumienie powinno być więc łatwiejsze. ©Ian Sommerville 2000 Inżynieria oprogramowania, Rozdział 24 Slide 17 Typy standardów dokumentowania Standardy procesu dokumentowania. W takich standardach definiuje się proces, którego należy przestrzegać przy opracowywaniu dokumentów. Standardy dokumentów. Są to standardy określające strukturę i postać dokumentów. Standardy wymiany dokumentów. Są to standardy, które umożliwiają upewnienie się, że wszystkie elektroniczne kopie dokumentów są ze sobą zgodne. ©Ian Sommerville 2000 Inżynieria oprogramowania, Rozdział 24 Slide 18 Proces tworzenia dokumentów z uwzględnieniem kontroli jakości Utwórz wstępny projekt Etap 1: Tworzenie Wykonaj korektę Etap 2: Dopracowywanie Złóż test Zrecenzuj projekt Uwzględnij komentarze recenzenta Utwórz wstępny projekt Zaakceptowany dokument Opracuj ostateczny projekt Sprawdź ostateczny projekt Zaakceptowany dokument Przejrzyj skład Utwórz matrycę Drukuj egzemplarze Etap 3: Druk ©Ian Sommerville 2000 Inżynieria oprogramowania, Rozdział 24 Slide 19 Jakość procesu i produktu Podstawowym założeniem zarządzania jakością jest to, że jakość procesu tworzenia oprogramowania ma bezpośredni wpływ na jakość dostarczonych produktów. To założenie pochodzi z systemów produkcji, w których jakość produktu jest ściśle związana z procesem produkcyjnym. W systemach automatycznej produkcji masowej po osiągnięciu poziomu jakości procesu, jakość produktu jest naturalnie zagwarantowana. ©Ian Sommerville 2000 Inżynieria oprogramowania, Rozdział 24 Slide 20 Jakość na podstawie procesu Zdefiniuj proces Oceń jakość produktu Utwórz produkt Nie Ulepsz proces ©Ian Sommerville 2000 Odpowiednia Tak Opracuj standard procesu jakość ? Inżynieria oprogramowania, Rozdział 24 Slide 21 Jakość tworzenia oprogramowania • Jakość procesu jest szczególnie ważna przy tworzeniu oprogramowania. Przyczyną tego jest to, że np. trudno jest ocenić zdatność do pielęgnacji, bez użytkowania tego oprogramowania przez dłuższy okres. • Poprawa jakości polega na znalezieniu produktów dobrej jakości, zbadaniu procesów użytych do stworzenia tych produktów i następnie uogólnieniu tych procesów tak, aby można było je stosować w wielu rozmaitych przedsięwzięciach. • Ze względu na złożoność przedsięwzięć zmiana procesu nie zawsze musi prowadzić do poprawy jakości produktu. ©Ian Sommerville 2000 Inżynieria oprogramowania, Rozdział 24 Slide 22 Proces zarządzania jakością obejmuje: Definiowanie standardów procesów, takich jak sposób przeprowadzania przeglądów, czas ich wykonywania itd. Monitorowanie procesu tworzenia w celu zapewnienia postrzegania standardów. Przekazywanie kierownictwu przedsięwzięcia i podmiotowi kupującemu oprogramowanie informacji o procesie budowania oprogramowania. ©Ian Sommerville 2000 Inżynieria oprogramowania, Rozdział 24 Slide 23 Planowanie jakości Planowanie jakości należy rozpocząć we wczesnej fazie procesu budowania oprogramowania. W planie jakości należy ustalić pożądaną jakość produktu i sposób jej oceny. W planie wskazuje się więc, co faktycznie oznacza „wysoka jakość” oprogramowania. Bez takich definicji różni inżynierowie mogą działać w odwrotnych kierunkach. W planie jakości należy ustalić wybór standardów firmowych, które są odpowiednie dla konkretnego produktu i procesu tworzenia. ©Ian Sommerville 2000 Inżynieria oprogramowania, Rozdział 24 Slide 24 Składowe struktury planu jakości Określenie produktu Plany dotyczące produkcji Opisy procesu Cele jakościowe Ryzyko i zarządzanie ryzykiem ©Ian Sommerville 2000 Inżynieria oprogramowania, Rozdział 24 Slide 25 Atrybuty jakościowe oprogramowania Bezpieczeństwo Zrozumiałość Przenośność Zabezpieczenie Zdatność do testowania Wygoda użytkowania Niezawodność Zdatność do adaptacji Odporność Łatwość nauczenia się Modularność Efektywność Solidność Złożoność Zdatność do użycia wielokrotnego ©Ian Sommerville 2000 Inżynieria oprogramowania, Rozdział 24 Slide 26 Kontrolowanie jakości Kontrola jakości polega na badaniu procesu budowania oprogramowania w celu upewnienia się, że procedury zapewniania jakości i standardy są przestrzegane. W ramach procesu kontroli jakości wyniki procesu tworzenia oprogramowania sprawdza się względem zdefiniowanych standardów przedsięwzięcia. Proces kontroli jakości obejmuje oddzielny zbiór procedur i raportów, które należy stosować w takcie budowania oprogramowania. Te procedury powinny być proste i łatwe do zrozumienia dla inżynierów budujących oprogramowanie. ©Ian Sommerville 2000 Inżynieria oprogramowania, Rozdział 24 Slide 27 Podejścia do kontroli jakości Przeglądy jakości, w trakcie których grupa osób recenzuje oprogramowanie, jego dokumentacje i proces użyty do jego utworzenia. Ich zadaniem jest sprawdzenie, czy przestrzegano standardów przedsięwzięcia oraz czy oprogramowanie i dokumenty są zgodne z tymi standardami. Automatyczna ocena oprogramowania, w trakcie której pewne programy przetwarzają wyprodukowane oprogramowanie i dokumenty oraz porównują je ze standardami dotyczącymi konkretnego przedsięwzięcia. ©Ian Sommerville 2000 Inżynieria oprogramowania, Rozdział 24 Slide 28 Przeglądy jakości Przeglądy są najczęściej stosowaną metodą zatwierdzania jakości procesu i produktu. Bierze w nich udział grupa osób badających część lub całość procesu tworzenia oprogramowania, system lub związana z nim dokumentację w poszukiwaniu potencjalnych komplikacji. Wyniki przeglądu są formalnie spisywane i przekazywane autorowi lub komuś odpowiedzialnemu za usunięcie wykrytych usterek. ©Ian Sommerville 2000 Inżynieria oprogramowania, Rozdział 24 Slide 29 Rodzaje przeglądów Rodzaje przeglądów Zasadniczy cel Kontrola programu lub projektu Wykrycie szczegółowych błędów w wymaganiach, projekcie lub kodzie. Taki przegląd należy przeprowadzić na podstawie listy kontrolnej z potencjalnymi błędami. Przeglądy postępu Przekazanie kierownictwu informacji o całkowitym postępie przedsięwzięcia. Jest to przegląd zarówno procesu, jak i produktu. Dotyczy kosztów, planów i harmonogramów. Przegląd jakości Przeprowadzanie technicznej analizy komponentów produktu lub dokumentacji w celu znalezienia niezgodności między specyfikacją, projektem, kodem i dokumentacją komponentu oraz upewnienia się, że przestrzegano zdefiniowanych standardów jakości. ©Ian Sommerville 2000 Inżynieria oprogramowania, Rozdział 24 Slide 30 Miernictwo oprogramowania i miary Miernictwo oprogramowania polega na wyznaczaniu wartości pewnych atrybutów produktu programowego lub procesu budowania oprogramowania. Porównując te wartości między sobą oraz ze standardami stosowanymi w całej firmie, można wyciągnąć wnioski o jakości oprogramowania lub procesu tworzenia oprogramowania. ©Ian Sommerville 2000 Inżynieria oprogramowania, Rozdział 24 Slide 31 Przykład Przypuśćmy na przykład, że przedsiębiorstwo zamierza wprowadzić nowe narzędzie programowe do testowania. Przed wdrożeniem tego narzędzia można rejestrować liczbę defektów oprogramowania wykrytych w ustalonym czasie. Po wdrożeniu proces ten powtarza się. Jeśli po wdrożeniu narzędzia w okresie o tej samej długości wykryje się więcej defektów, to można wywnioskować, że to narzędzie skutecznie wspiera proces zatwierdzania oprogramowania. ©Ian Sommerville 2000 Inżynieria oprogramowania, Rozdział 24 Slide 32 Związki między atrybutami zewnętrznymi I i wewnętrznymi oprogramowania Liczba parametrów procedur Zdatność do pielęgnacji Złożoność cykliczna Niezawodność Wielkość programu w wierszach kodu Przenośność Liczba komunikatów o błędach Wielkość podręcznika użytkownika Wygoda użytkownika ©Ian Sommerville 2000 Inżynieria oprogramowania, Rozdział 24 Slide 34 Główne etapy procesu pomiaru produktu Wybierz pomiary do wykonania Wybierz komponenty do oceny Zmierz właściwości komponentu Zidentyfikuj anomalie w pomiarach Zanalizuj komponenty z anomaliami ©Ian Sommerville 2000 Inżynieria oprogramowania, Rozdział 24 Slide 36 Miary produktowe Miary produktowe dotyczą właściwości samego oprogramowania. Atrybuty oprogramowania, które można łatwo zmierzyć, takie jak rozmiar i złożoność cykliczna, nie są w jasny i uniwersalny sposób związane z atrybutami jakościowymi, takimi jak zrozumiałość i zdatność do pielęgnacji. Firmy zainteresowane pomiarami musza zgromadzić historyczne dane w bazie danych. Można jej użyć do odkrywania związków atrybutami produktu programowego i aspektami jakości ważnymi dla firmy. ©Ian Sommerville 2000 Inżynieria oprogramowania, Rozdział 24 Slide 37 Klasy miar produktywności Miary dynamiczne, które gromadzi się przez pomiary wykonującego się programu. Miary statyczne, które gromadzi się przez pomiary reprezentacji systemu, takich jak projekt, program i dokumentacja. ©Ian Sommerville 2000 Inżynieria oprogramowania, Rozdział 24 Slide 38 Miary produktów programowych Miara oprogramowania Opis Obciążenie Obciążenie wejściowe to liczba funkcji, które wywołują pewną inną funkcję wejściowe (nazwijmy ją X). Obciążenie wejściowe to liczba funkcji wywoływanych przez i wyjściowe funkcję X. Duża wartość obciążenia wejściowego oznacza, że funkcja X jest silnie powiązana z resztą projektu, więc zmiany w funkcji X będą miały intensywne kaskadowe efekty. Dużą wartość obciążenia wejściowego oznacza, że ogólna złożoność funkcji X jest duża z powodu logiki sterowania niezbędnego do koordynacji wywoływanych komponentów. Długość kodu To miara wielkości programu. Na ogół im większy jest rozmiar kodu komponentu programu, tym jest on bardziej złożony i prawdopodobnie zawiera więcej błędów. Złożoność cykliczna To miara złożoności sterowania programu. Złożoność sterowania można powiązać ze zrozumiałością programu. Długość To wynik pomiaru średniej długości różnych identyfikatorów w programie. Im identyfikatorów dłuższe są identyfikatory, tym większe jest prawdopodobieństwo, że są znaczące, a to oznacza większą zrozumiałość programu. Głębokość To wynik pomiaru głębokości zagnieżdżenia instrukcji warunkowych w zagnieżdżenia programie. Głęboko zagnieżdżone instrukcje if są trudne do zrozumienia i warunkowego prawdopodobnie zwierają błędy. Indeks Foga To wynik pomiaru średniej długości słów i zdań w dokumentach. Im większa jest wartość indeksu Foga, tym trudniej jest zrozumieć dokument. ©Ian Sommerville 2000 Inżynieria oprogramowania, Rozdział 24 Slide 39 Miary obiektowe Miara obiektowa Wysokość drzewa dziedziczenia Obciążenie wejściowe i wyjściowe metod Waga metod w klasie Liczba unieważnianych operacji ©Ian Sommerville 2000 Opis Jest liczbą poziomów drzewa dziedziczenia, w którym podklasy dziedziczą atrybuty i operacje (metody) po nadklasach. Im wyższe jest drzewo dziedziczenia, tym projekt jest bardziej skomplikowany, ponieważ żeby zrozumieć klasy obiektów będące liśćmi tego drzewa, trzeba potencjalnie zrozumieć wiele innych klas obiektów. Są pośrednio związane z obciążeniami wejściowymi i wyjściowymi opisanymi na rysunku. W zasadzie oznaczają to samo. Czasem warto jednak odróżnić wywołania z innych metod w ramach tego samego obiektu od wywołań z metod zewnętrznych. Jest to liczba w klasie ważona złożonością każdej metody. Prosta metoda ma złożoność 1. Wielka i złożona metoda może mieć tę wartość znacznie większą im jest większa wartość tej miary, tym klasy obiektów są bardziej złożone. Złożone obiekty będą prawdopodobnie mało zrozumiałe. Mogą nie być logicznie spójne, nie będzie więc możliwe ich skutecznie wielokrotnie użycie w roli nadklas w drzewie dziedziczenia. Jest to liczba operacji nadklasy, które unieważniono w podklasie. Duża wartość oznacza, że nadklasa nie jest odpowiednim przodkiem dla tej podklasy. Inżynieria oprogramowania, Rozdział 24 Slide 40 Analiza pomiarów Jednym z problemów związanych z gromadzeniem ilościowym danych na temat oprogramowania i przedsięwzięć informatycznych jest zrozumienie, co te dane naprawdę oznaczają. Łatwo jest niewłaściwie zinterpretować dane i wyciągnąć niepoprawne wnioski. Pomiary trzeba starannie zanalizować, żeby zrozumieć, co oznaczają. ©Ian Sommerville 2000 Inżynieria oprogramowania, Rozdział 24 Slide 41 Główne tezy Zarządzanie jakością oprogramowania polega na zapewnieniu, że oprogramowanie ma małą liczbę defektów i że spełnia wymagane standardy zdatności do pielęgnacji, niezawodności, przydatności, itd. Czynności zarządzania jakością obejmują zapewnienie jakości, tzn. ustalenie standardów budowania oprogramowania, planowanie jakości i kontrolę jakości, tzn. sprawdzenie, czy oprogramowanie spełnia zdefiniowane standardy. W firmowym podręczniku jakości należy udokumentować zbiór procedur zapewnienia jakości. Jego podstawą może być ogólny model zaproponowany w standardach ISO 9000. Standardy oprogramowania są ważne dla zapewnienia jakości, ponieważ stanowią wskazanie „najlepszych zwyczajów”. ©Ian Sommerville 2000 Inżynieria oprogramowania, Rozdział 24 Slide 42 Główne tezy Przeglądy wyników procesu tworzenia oprogramowania są najczęściej stosowaną metodą oceny jakości. Pomiary oprogramowania mogą służyć do gromadzenia ilościowych danych o oprogramowaniu i procesie budowania oprogramowania. Zebrane wyniki pomiarów można wykorzystać do wyciągania wniosków o jakości produktu i procesu. Miary jakości produktu są szczególnie przydatne do wykrywania anomalnych komponentów, w których występują kłopoty z jakością. Te komponenty należy później szczegółowo zanalizować. Nie ma standardowych ani uniwersalnych miar oprogramowania. Firmy muszą wybrać miary i analizować wyniki na podstawie lokalnej wiedzy i warunków. ©Ian Sommerville 2000 Inżynieria oprogramowania, Rozdział 24 Slide 43