Jakość na każdym etapie

Zarządzanie jakością oprogramowania wymaga odpowiedniego ustawienia procesów wytwórczych w całym cyklu jego tworzenia.

Zarządzanie jakością oprogramowania wymaga odpowiedniego ustawienia procesów wytwórczych w całym cyklu jego tworzenia.

Trudno wskazać jakąś uniwersalną definicję jakości oprogramowania, ponieważ taka ocena jest subiektywna, bo pozostaje uzależniona od potrzeb i oczekiwań jego odbiorców (którzy będą utrzymywać oprogramowanie) oraz docelowych użytkowników (którzy będą wykorzystywać oprogramowanie w realizowanych przez siebie zadaniach). Kombinacja różnych kryteriów oceny będzie składała się na definicję jakości oprogramowania dostosowaną do warunków realizacji projektu.

Błędy w dziedzinie

Błędy w dziedzinie

Jakość oprogramowania nie jest cechą, którą można "wbudować" w oprogramowanie po jego wytworzeniu. Jakość powstaje we wszystkich fazach rozwoju oprogramowania. Luki i niedociągnięcia na różnych etapach tego procesu odbijają się na jakości produktu końcowego. Na przykład brak w oprogramowaniu funkcji wymaganych przez użytkownika może być spowodowany błędem w implementacji, ale także może wynikać z tego, iż wymagania użytkownika nie zostały w ogóle udokumentowane lub też zostały co prawda udokumentowane przez projektantów systemu, ale w sposób niewystarczający, z pominięciem elementów wymaganej funkcjonalności (przypuszczalnie dokumentacja opisująca wymagania nie została zweryfikowana i zatwierdzona przez użytkownika). Co w takim razie jest istotne w procesie tworzenia oprogramowania, by rezultaty tego procesu były jak najlepsze?

Proces i projekt

Jakość procesu tworzenia oprogramowania jest niewątpliwie związana z jakością zarządzania projektem, w tym planowania prac, alokacji zasobów, terminów realizacji. Błędy w oszacowaniu budżetu oraz harmonogramu, niewłaściwy zespół, niewłaściwa komunikacja, brak zarządzania ryzykiem projektowym czy wreszcie brak wypracowanego podejścia do zarządzania jakością negatywnie odbijają się na jakości rezultatów procesu tworzenia oprogramowania.

W procesie tworzenia oprogramowania można wyróżnić dwa podstawowe obszary działań związanych z zarządzaniem jakością: (1) planowanie zarządzania jakością oraz (2) monitorowanie przestrzegania planu zarządzania jakością i przyjętych standardów jakości w realizacji prac projektowych.

Plan zarządzania jakością oprogramowania powinien zostać opracowany przed rozpoczęciem prac projektowych. Powinien uwzględniać ocenę jakości poszczególnych produktów (kryteria oceny jakości, procedury kontroli jakości, akceptacji prac), określenie działań mających na celu uzyskanie zakładanych celów w zakresie jakości oprogramowania i odpowiedzialności za te działania. Istotne jest także powiązanie rezultatów kontroli jakości z systemem oceny członków zespołu projektowego. Potrzebne są: wprowadzenie harmonogramu planowanych działań kontroli jakości oraz kamienie milowe związane z akceptacją poszczególnych produktów prac. Trzeba także ustalić standardy sposobu dokumentowania produktów w poszczególnych fazach tworzenia oprogramowania oraz kryteria oceny kompletności tych dokumentów, sposobu komentowania kodu oprogramowania.

Ważną rolę odgrywa podejście do komunikacji pomiędzy zespołem projektowym opracowującym dane rozwiązanie informatyczne a innymi zespołami pracującymi nad równoległymi projektami (w tym standardy komunikacji pomiędzy poszczególnymi członkami zespołu projektowego).

Podstawowym dokumentem jest lista kontrolna oceny kompletności oraz poprawności prac:

  • Czy funkcje oprogramowania zostały zdefiniowane w sposób jednoznacznie zrozumiały?

  • Czy zostały zdefiniowane interfejsy pomiędzy elementami systemu?

  • Czy została wybrana najlepsza opcja rozwiązania z możliwych?

  • Czy przyjęte rozwiązanie jest technicznie wykonalne?

  • Czy komponenty systemu są spójne (pomiędzy dokumentacją projektową oraz oprogramowaniem)?

  • Czy model danych poprawnie odzwierciedla obiekty danych, ich atrybuty oraz relacje?

  • Czy zostały uwzględnione wymagania użytkowników na poszczególnych etapach prac?

  • Czy zostały udokumentowane w sposób kompletny rezultaty poszczególnych etapów prac projektowych?

  • Czy zostały zachowane przyjęte standardy dokumentacji oraz kodowania?

    Kontrolne pytania powinny być uwzględnione w planie zarządzania jakością w odniesieniu do poszczególnych faz tworzenia oprogramowania. Zaletą stosowania planu jakości jest to, że działania kontrolne oraz korekty błędów są podejmowane systematycznie, przez co nie kumulują się pod koniec realizacji prac projektowych - często na etapie przekazania oprogramowania do eksploatacji. Kontrola jakości etapów poszczególnych prac istotnie podnosi jakość całego procesu oraz rezultatu końcowego. W zarządzaniu jakością w fazie realizacji prac projektowych szczególną wagę ma właściwe zrozumienie wymagań użytkowników. Błędy, które powstają na etapie specyfikacji potrzeb, bardzo dotkliwe przekładają się na koszty i czas tworzenia oprogramowania, ponieważ wymagają zmian we wszystkich fazach jego powstawania.

    Na etapie definiowania potrzeb użytkowników istotny wpływ na jakość oprogramowania ma ryzyko wystąpienia problemów w komunikacji pomiędzy przyszłymi użytkownikami systemu a wykonawcami rozwiązania. Użytkownicy często nie wiedzą, w jaki sposób opisać swoje potrzeby, informatycy natomiast nie rozumieją, czego potrzebują użytkownicy i przyjmują własne założenia, których rozbieżność z faktycznymi wymaganiami nierzadko ujawnia się dopiero na etapie testów oprogramowania. By temu zapobiec, należy zadbać o opracowanie dokumentacji specyfikującej te potrzeby w języku zrozumiałym dla użytkownika, a jednocześnie wystarczająco konkretnym i jednoznacznym dla opracowania projektu.

    Kryteria operacyjne jakości oprogramowania

    • Użyteczność: czy ma praktyczne zastosowanie, czy wnosi wartość do organizacji.
    • Bezpieczeństwo: czy zapewnia odpowiednie bezpieczeństwo dostępu do danych.
    • Kompletność: czy posiada wymaganą funkcjonalność.
    • Niezawodność: czy działa poprawnie, czy transakcje są realizowane w sposób poprawny, jak duże jest ryzyko awarii systemu.
    • Wydajność: czy czas odpowiedzi na zapytania, przetwarzania danych jest zadowalający.
    • Integralność: czy oprogramowanie działa poprawnie w powiązaniu z innymi systemami.

    Kryteria związane z utrzymaniem oprogramowania

    • Możliwość obsłużenia awarii: jak szybko można przywrócić system do działania w razie awarii.
    • Elastyczność na zmiany - czy można wprowadzić zmiany do oprogramowania, jak bardzo jest to złożone, jakie są ograniczenia.
    • Przenoszalność - czy oprogramowanie może działać na innym sprzęcie.
    • Otwartość - czy oprogramowanie może współpracować z innymi systemami.
    • Możliwość przeprowadzenia testów - czy można zweryfikować poprawność działania oprogramowania po wprowadzeniu w nim zmian, jeszcze przed przekazaniem go do eksploatacji.

    Koszty zarządzania jakością oprogramowania

  • Koszty zapobiegania powstawaniu błędów:

    - Szkolenia pracowników

    - Analizy potrzeb użytkowników

    - Opracowywanie prototypu rozwiązania

    - Monitorowanie i usprawnianie procesu tworzenia oprogramowania

  • Koszty identyfikacji błędów:

    - Przeglądy dokumentacji projektowej

    - Przegląd kodu źródłowego

    - Testy

    Koszty związane ze skutkami wywołanymi przez powstanie błędów

  • Koszty ponoszone przez dostawcę oprogramowania:

    - Dodatkowe prace związane z usuwaniem błędów

    - Koszty niedotrzymania terminu dostawy gotowego rozwiązania

  • Koszty ponoszone przez odbiorcę oprogramowania:

    - Koszty utraconych korzyści, jakie daje wdrożenie rozwiązania informatycznego

    - Koszty obniżenia satysfakcji klientów

    Źródło: "Evaluating the Cost of Software Quality", ACM