Home » Jakość oprogramowania, również w systemach embedded
Do tej pory wielokrotnie spotkałem się z nieprawidłowym rozumieniem pojęcia jakości oprogramowania – czy to ogólnie, czy też stricte w branży systemów embedded. Tym artykułem chciałbym rozwiać pewne mity i przybliżyć to pojęcie czytelnikom zainteresowanym tematem wytwarzania oprogramowania, szczególnie oprogramowania wbudowanego (embedded). Czym zatem tak naprawdę jest jakość?
Definicje różnią się drastycznie w zależności od tego, kogo o nie pytamy. Specjaliści często przyjmują te, które pasują do ich konkretnych obszarów kompetencji. Na przykład, deweloper może stwierdzić, że jakość to dobry, czysty kod, z jasną konwencją nazewnictwa, spójnym formatowaniem i najlepiej bez błędów. Z drugiej strony, projektant UX najprawdopodobniej skupi się na przejrzystym i skutecznym frontendzie, dopracowanym w zakresie dostępności i współczesnych trendów graficznych. Które podejście jest więc słuszne?
Po definicję jakości kodu możemy sięgnąć do najnowszej normy dotyczącą inżynierii systemowej i programowej ISO 25010, która w jednej ze swoich części adresuje to zagadnienie, podsumowując je następującym schematem:
Jak można zauważyć na powyższym rysunku, jakość oprogramowania została przedstawiona jako zespół charakterystyk i pod-charakterystyk, jakie musi ono spełnić, aby mogło otrzymać status produktu wysokiej jakości.
Trzeba jednak pamiętać, że ślepe dążenie za jak najwyższymi metrykami dla wszystkich charakterystyk może być katastrofalne – jak to zwykle bywa, rozsądny balans jest najlepszy. W przypadku systemów embedded nie jesteśmy w stanie spełnić wszystkich charakterystyk, na przykład wtedy, gdy nasz system nie bazuje na systemie operacyjnym lub nie współpracuje z innymi systemami.
Aby móc ocenić, jak wysoką jakością cechuje się oprogramowanie, musimy wdrożyć do projektu odpowiednie metryki numeryczne dla poszczególnych cech opisanych w normie. Prawie każdy parametr projektu można potraktować jako metrykę i na jej bazie monitorować status projektu czy development. Jednak tak jak w przypadku charakterystyk jakościowych ważne jest, aby zachować zdroworozsądkowy balans w ilości i typie wdrożonych metryk. Popularną metodyką wyboru metryk jest technika SMART.
Dobre metryki do naszego projektu to takie, które są:
Skoro wiemy już, czym są metryki, to pora wybrać te odpowiednie do danego projektu. Jest wiele typów metryk opisujących proces developmentu, testowania oprogramowania i samego kodu, więc wybranie odpowiedniego ich zestawu nie jest łatwe. Możemy mierzyć pokrycie kodu testami, liczyć linie kodu (CLOC), liczbę błędów w kodzie na moduł, wywołania funkcji, liczbę wyjść z funkcji, liczbę wołanych funkcji w funkcji, a nawet poziom komentarzy na plik.
Wybór konkretnych metryk to trudna sztuka znalezienia równowagi między cechami jakościowymi kodu, jakie chcemy monitorować a pracochłonnością związaną z ich monitorowaniem. Dodatkowo, w niektórych przypadkach wybrany poziom liczbowy danej metryki, jaki chcemy osiągnąć, powinien być dobrany do skomplikowania rozwiązania architektonicznego, jakie musi zostać wprowadzane w kodzie, aby dany poziom jakości zapewnić.
Reliability |
|
Maintainability |
|
Portability |
|
Reusability |
|
Warto także wspomnieć, że metryki mogą swoim działaniem dopełniać w pewnym stopniu większą gamę charakterystyk jakościowych.
Jakość kodu jest zdecydowanie jednym z najważniejszych obszarów determinujących jakość oprogramowania, w związku z czym powinna być jednym z naszych pierwszych zmartwień jeśli chcemy przejść z teorii do praktyki. W tym przypadku niektóre metryki możemy wdrożyć za darmo i bez wysiłku. Wystarczy włączyć odpowiednie opcje w kompilatorze i przygotować proces ich cyklicznego monitorowania. Inne wymagają wdrożenia odpowiedniego oprogramowania na przykład CppChecka – do analizy statycznej kodu i procesu przeglądu kodu, a także odpowiedniej konfiguracji oprogramowania, w celu monitorowania metryk odpowiadających cechom jakościowym kodu, o które chcemy dbać.
Oba typy są warte wykorzystania, szczególnie jeśli mogą zapewnić dodatkowe korzyści bez dodatkowych kłopotów. Na przykład, posiadając analizę statyczną kodu możemy monitorować jakość składni kodu, a zarazem wspomóc się dowolnym standardem kodowania – na przykład MISRĄ.
Kolejnym etapem wdrażania metryk jest wprowadzenie testów jednostkowych i stworzenie odpowiedniego procesu testowania funkcjonalnego i niefunkcjonalnego oprogramowania z podziałem na odpowiednie poziomy. Oczywiście ten etap jest zależny od wielkości projektu i potrzeb związanych z jakością kodu.
Podsumowując, odpowiednio dobrane techniki pomiaru, testy i analizy, mogą generować metryki, które liczbowo opisują wybrane przez nas charakterystyki i pod-charakterystyki jakościowe oprogramowania lub systemu. Dzięki nim możemy monitorować, jak bardzo wysokiej jakości jest rozwijane przez nas oprogramowanie.
Należy jednak pamiętać, że jakość oprogramowania to nie tylko jakość jego kodu z niską zawartością błędów czy jakość estetycznie zarysowanego interface’u graficznego. Nie jest to też tytuł, który otrzymuje się na zawsze w momencie, kiedy oprogramowanie spełni wszystkie stawiane mu wymogi. Są to ciągłe i nieustające przez cały okres rozwoju monitoring i analiza bieżących parametrów i trendów.
Jak łatwo zauważyć, wprowadzenie niektórych metryk może być więc kosztowne, szczególnie gdy sposób, w jaki uwypuklają one znaczenie mierzonych obszarów wywołuje w zespole deweloperskim tendencję do priorytetyzowania tychże obszarów. Dlatego wprowadzenie metryk do procesu wytwarzania oprogramowania o wysokiej jakości powinno być poprzedzone dogłębną analizą wykraczającą poza zespół deweloperski. Celem powinna to być synergia między potrzebami biznesowymi, które produkt ma spełniać oraz dojrzałością i przyjaznością procesu rozwoju.
Warto również pamiętać, że podczas każdego procesu tworzenia oprogramowania najważniejsi są ludzie. Bez ich zaangażowania i przeszkolenia, nawet najlepsze rozwiązania i procesy zawiodą. Dlatego zgrany i doświadczony zespół deweloperów i testerów to połowa sukcesu.
Najnowsze wpisy na blogu
Wypełnij formularz
Po wypełnieniu poniższego formularza skontaktujemy się z Tobą, żeby umówić rozmowę w dogodnym dla Ciebie terminie.
Sąd Rejonowy Gdańsk-Północ w Gdańsku, VII Wydział Gospodarczy Krajowego Rejestru Sądowego, Kapitał zakładowy: 455 647,60 zł PLN
We use cookies for the website to function properly. By clicking “Accept”, you consent to the use of cookies for analytical and marketing purposes. You can adjust or withdraw your consent at any time. Więcej w Polityce cookies