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
Prześlij komentarz