Koszt jakości – czy warto inwestować w drogą i czasochłonną jakość?


W projektach informatycznych zawsze za mało jest czasu i budżetu. Projektanci i programiści często siedzą po godzinach by zdążyć dowieźć projekt przed deadlinem. Wszyscy piszą, stukają, pracują. Nie ma czasu na zadbanie o standardy, przeglądy kodu, dobre praktyki czy testy jednostkowe. Nie ma czasu na jakość. Jakoś to napiszemy a najwyżej potem, przy najbliższej modyfikacji, to poprawimy, przepiszemy, zrefaktorujemy.

Jednak „potem” nie przychodzi nigdy. Przy najbliższej modyfikacji znów jest za mało czasu, znów „napiszemy na szybko, potem się poprawi”.

Skoro terminy cisną i nie ma czasu to może to dobre podejście? Najważniejsze przecież jest zmieścić się w budżecie i oddać klientowi działającą aplikację. W terminie.

Ale czy na pewno? Czy na pewno aplikacja taka będzie tańsza niż jeśli by zadbało się w trakcie tworzenia o jakość? Czy na pewno aplikacja taka będzie spełniała wymagania klienta?

Wydaje się, że jeśli nie musimy sobie zawracać głowy standardami czy tracić czasu na szczegółowe projekty – to zyskujemy sporo czasu i szybciej dowieziemy wymagane funkcjonalności do etapu testów. W etapie testów zaś tester sprawdzi aplikację i wyłapie wszystkie błędy, szybko się je naprawi i oddamy działającą aplikację klientowi. Teoretycznie zyskujemy dużo czasu na wszystkich etapach: podczas analizy szybko podejmujemy decyzję o developmencie, przecież wymagania są zrozumiałe i oczywiste. Projekt? Po co projekt, wrzucimy w enterprise architecta kilka tabel, to wystarczy. Mamy dobrego programistę, poradzi sobie. Proces trwa szybko, w iście sprinterskim tempie dowozimy aplikację do etapu testu. Zdążymy przed deadlinem! Jeszcze tylko szybko testy i gotowe. W budżecie i w terminie.

I właśnie na tym polega największy błąd w szacowaniu czasu i kosztu developementu. Szacuje się czas na sam projekt i developement oraz jedną turę testów. Zapomina się o czasie potrzebnym na debugging i naprawę błędów oraz retesty. A ilość retestów w nisko jakościowej aplikacji może być znaczna! Często w takich aplikacjach naprawa jednego błędu generuje powstanie kilku innych błędów! W koszt wytworzenia aplikacji powinno też się wliczyć koszt wdrożenia i utrzymania gwarancyjnego (usuwanie usterek). W niskiej jakościowo aplikacji koszt wdrożenia może być wysoki – wymaga udziału kilku specjalistów, może się okazać, że ze względu na dużą ilość błędów - potrzeba kilka podejść do wdrożenia. Jak już uda się wdrożyć system, to okazuje się że większość czasu zespołu zajmuje utrzymanie tej aplikacji. Błędy, które powinny zostać wykryte i naprawione podczas wytwarzania aplikacji – nie zostały znalezione ze względu na niską jakość procesu i oprogramowania i zostają wykryte dopiero po wdrożeniu na produkcję, gdzie koszt naprawy jest najwyższy! Już nie wspominając o tym, jak prestiż nasz, jako wytwórców tego oprogramowania, spada.

Czy koszt tej samej aplikacji ale z wdrożonymi standardami jakościowymi w proces wytwarzania będzie niższy czy wyższy? Prawdopodobnie koszt poszczególnych etapów: analizy, projektowania czy programowania może być nieznacznie wyższy. Aczkolwiek z dobrze wyszkolonymi specjalistami może też być podobny lub nawet niższy. Jednak najbardziej znacząca różnica w kosztach będzie na etapie testów, wdrożenia i eksploatacji.

Wysoko jakościowe oprogramowanie już do etapu testów dociera w dużej mierze wyczyszczone z wielu usterek – a to dzięki inspekcjom, przeglądom kodu czy testom jednostkowym.

Inspeckje i przeglądy kodu czyszczą kod z błędów typowych czy błędów związanych z błędami funkcjonalnymi.

Testy jednostkowe dzięki wysokiej jakości kodu (standardy programistyczne i projektowe) są łatwe do napisania i przez to tanie. Dzięki ich prostocie i ilości wykrywają i umożliwiają naprawę większości błędów trudnych do znalezienia i naprawy na etapie testów.

Dzięki temu na etapie testów testerzy mogą skupić się nad funkcjonalnymi wadami oprogramowania a nie potykać się ciągle nad typowo programistycznymi usterkami. Metody zapewniania jakości rozłożone na wszystkie etapy programowania gwarantują lepsze pokrycie testami i większą skuteczność wykrywania usterek. A dzięki wysokiej jakości kodu wykrywanie i naprawa błędów jest szybka i łatwa zaś naprawa błędów nie powoduje powstania nowych błędów w systemie.

Także wdrożenie oprogramowania na produkcję dzięki standardom i dobrym praktykom odbywa się szybko i płynnie. A że aplikacja jest w zasadzie wolna od błędów – a proces wdrożenia dokładnie przetestowany – nie ma potrzeby kilkukrotnego podejścia do wdrożenia aplikacji. Wdrożenie przebiega szybko i bezbłędnie.

Zastosowanie standardów jakościowych oraz stosowanie metod zapewniania jakości na wszystkich etapach programowania gwarantuje produkt wysokiej jakości i wolny od błędów. Utrzymanie takiej aplikacji jest tanie i nie wymaga poświęcania dużej ilości czasu specjalistów czy nawet całych zespołów na utrzymanie.
Szacunki na podstawie oceny eksperckie projektu z zastosowanymi standardami i bez.
To nie jakość jest droga – to brak jakości podraża koszty wytworzenia oprogramowania!

Komentarze