Krzysztof Olszewski

Dyrektor Technologii i Architektury Oprogramowania

Krzysztof Olszewski

Dyrektor Technologii i Architektury Oprogramowania

Standardy jakości dotyczą tak wielu aspektów dzisiejszej gospodarki, że sprawą oczywistą jest potrzeba a wręcz konieczność wprowadzenia standaryzacji w zakresie jakości systemów informatycznych. Od razu zaznaczam, że nie chodzi mi o własnościowe rozwiązania poszczególnych dostawców oprogramowania wynikające z doświadczeń i wieloletniej optymalizacji procesów czy metodyk produkcyjnych, a o uniwersalny zestaw definicji, pojęć, metryk, pozwalający spojrzeć na zagadnienie z wysokiej perspektywy.

ISO/IEC 9126 to standard, który definiuje zagadnienia jakości oprogramowania poprzez zdefiniowanie modelu jakości opartego na sześciu obszarach:

  • funkcjonalność (functionality) – posiadanie przez oprogramowanie wymaganych funkcjonalności, które spełniają założone potrzeby,
  • niezawodność (reliability) – zdolność oprogramowania do utrzymania poziomu wydajności w ustalonych warunkach i ustalonym czasie,
  • użyteczność (usability) – poziom indywidualnego wysiłku wymaganego do pracy z oprogramowaniem, oparty na ocenie ustalonej lub domniemanej grupy użytkowników,
  • efektywność (efficiency) – relacje pomiędzy poziomem wydajności oprogramowania i ilości zasobów używanych, przy określonych warunkach brzegowych,
  • konserwacyjność (maintainability) – możliwości dokonywania zmian i poziom wysiłku potrzebnego do dokonania określonych zmian w oprogramowaniu,
  • przenośność (portability) – zdolność oprogramowania do przeniesienia do innego środowiska.

O ile moje tłumaczenia i rozumienia poszczególnych obszarów mogą być lekko „ortopedyczne”, o tyle sens poszczególnych pojęć pozostaje, mam nadzieję, jasny. Łącząc te obszary z typowymi wymaganiami i oczekiwaniami odbiorców systemów, można wszystko razem przedstawić tak:

  • system powinien robić wszystko, czego potrzebują użytkownicy,
  • zawsze i tak szybko, jak oczekują użytkownicy,
  • w prosty sposób,
  • na jak najmniejszych zasobach sprzętowych,
  • powinien dać się dowolnie rozbudowywać,
  • powinien być łatwy do przeniesienia na dowolne platformy.

Tak to oczywiście może wyglądać z perspektywy „anegdotycznych” odbiorców systemów spod flagi „tanio, szybko”, z perspektywy bardziej realnej wygląda to zdecydowanie inaczej. Dostarczenie jakości w każdym z tych obszarów ponosi za sobą koszty, a skoro tak jest, to należy (i tak się właśnie robi) ustalić konkretne atrybuty, miary, poziomy, zamieniając „wszystko”, „szybko”, „prosty”, „dowolnie” itd. na konkretne mierzalne wskaźniki. Co na początku pozwala na skalkulowanie poziomu kosztów, a w późniejszym czasie na końcową ocenę czy system je spełnia, a w ujęciu ogólnym na efektywne zarządzanie całym procesem dostarczania oprogramowania.

Idąc za tym standard ISO/IEC 9126 każdy z obszarów definiuje jako „Zestaw atrybutów … ” (A set of attributes …) opisujących konkretne parametry jakościowe, przykładem tu może być klasyczny atrybut dostępności systemu złożony dziewiątek (99,9…) opisujących procentowo ile czasu w ciągu roku system powinien być dostępny dla użytkowników. W standardzie atrybuty te należą do pod-obszarów i w zasadzie są definiowane indywidualnie dla każdego systemu zgodnie z jego charakterem.

W jednym z kolejnych wpisów chciałbym się pochylić nad zagadnieniami szeroko pojętej wydajności systemów, przejawy tejże znajdują swoje odbicie nie w jednym, jak by można było się spodziewać, aż w trzech obszarach definiowanych przez standard.