Wyślij zapytanie Dołącz do Sii

Poka-Yoke, wywodzący się z japońskich praktyk zarządzania, stanowi skuteczne rozwiązanie w zapobieganiu błędom poprzez eliminację najczęstszych źródeł i rozpoznawanie podstawowych przyczyn ich występowania.

Metoda ta koncentruje się na tworzeniu warunków, w których pomyłki są niemożliwe lub natychmiast zauważalne, obejmując praktyki takie jak:

  • przekazywanie dalej tylko części bez wad,
  • redukcja kosztów związanych z poprawkami,
  • standaryzacja,
  • zmniejszenie procesów kontrolnych i jakościowych.

Artykuł ma na celu ocenę możliwości metody Poka-Yoke jako metody zapobiegania defektom, szczególnie w informatyce, analizując jej zastosowania i potwierdzając, że testowanie w tej dziedzinie również stanowi mechanizm Poka-Yoke.

Krótko o historii Poka-Yoke

Poka-Yoke, wynaleziona przez Shigeo Shingo, inżyniera z Toyoty, jest metodą eliminującą możliwość powstania błędów. Inspiracją była filozofia Toyoty, skupiająca się na produkcji bez wad i błędów. Shingo uznał, że zamiast wymagać od pracowników większej uwagi, lepiej jest usunąć potrzebę uważania, tworząc systemy, które zapobiegają błędom.

Pierwsze urządzenie Poka-Yoke zastosowane w fabryce Yamada Electric w 1961 roku wyeliminowało błąd wynikający z niepoprawnego montażu. To urządzenie było proste, ale skuteczne i przyczyniło się do doskonalenia systemu produkcyjnego Toyoty (TPS). Od lat 60. i 70. Poka-Yoke zyskało na popularności w Japonii, a później również na rynkach europejskim i amerykańskim.

Założenia inżynierskie i idea rozwiązania Poka-Yoke

Shigeo Shingo, dążąc do osiągnięcia stanu „zero defektów”, identyfikuje kluczowe założenia Poka-Yoke:

  • nieefektywność metodologii SPC przy pomyłkach,
  • potrzeba 100% kontroli każdego wyrobu,
  • autonomiczność inspekcji jako część procesu produkcyjnego.

Podstawą jest wykrywanie, sygnalizowanie i eliminacja błędów. Poka-Yoke koncentruje się na zaprojektowaniu procesów pracy, w których błędy są niemożliwe lub natychmiast korygowane, z uwzględnieniem głównych przyczyn ludzkich pomyłek. Urządzenia Poka-Yoke powinny być proste, tanie i efektywne.

Podział i zastosowanie urządzeń Poka-Yoke

Poka-Yoke dzieli się na systemy prewencyjne i detekcyjne. Klasyfikacja wg funkcji wygląda następująco:

  • regulacyjne – metody kontroli/sterowania, które zatrzymują maszynę przy wykryciu wady, oraz metody ostrzegania, sygnalizujące alarmem wystąpienie wady,
  • ustawiające – metody kontaktu wykrywają nieprawidłowości poprzez fizyczny kontakt, a metody ustalonej wartości oraz koniecznego kroku polegają na sprawdzaniu ilości ruchów lub elementów oraz wymaganej sekwencji operacji.

Przykłady zastosowania obejmują wiele rozwiązań, m.in.:

  • zmianę konstrukcji śruby, aby uniknąć porysowania opakowań przy montażu:
Kształt śruby przed i po zastosowaniu Poka-Yoke
Ryc. 1 Kształt śruby przed i po zastosowaniu Poka-Yoke
  • stosowanie specjalnych tac, które ułatwiają identyfikację brakujących elementów montażowych. Tacki zostały zaprojektowane w taki sposób, aby liczba otworów w jednym rzędzie była taka sama, jak liczba śrub wymagana dla jednego produktu. Tacka jest czarna, żeby operator łatwo zauważył brak śruby lub podkładki i mógł łatwo ocenić, czy doszło do pominięcia podczas montażu.
Górna pokrywa
Ryc. 2 Górna pokrywa
Czarna tacka jako urządzenie Poka-Yoke
Ryc. 3 Czarna tacka jako urządzenie Poka-Yoke

Zastosowanie Poka-Yoke w informatyce

W informatyce Poka-Yoke można stosować poprzez wbudowane systemy kontrolne, które uniemożliwiają powstawanie błędnych danych.

Jednym z często spotykanych, aczkolwiek nie zawsze wykorzystywanych rozwiązań, jest „wyszarzenie” przycisku OK w oknie dialogowym, jeśli użytkownik nie wprowadził wszystkich wymaganych danych. Dzięki temu, aplikacja uniemożliwia dalsze działanie bez kompletu informacji, zapobiegając w ten sposób błędom.

Metodą na wykrywanie nieprawidłowości jest również wprowadzenie do systemu losowych danych i weryfikacja uzyskanych odpowiedzi.

Mniej powszechnie, a co za tym idzie – niesłusznie pomijane, są techniki bardziej zaawansowane, takie jak:

  • kontrola liczby rekordów po procesie replikacji danych,
  • obliczanie sum kontrolnych CRC podczas transferów danych,
  • stosowanie instrukcji assert do weryfikacji wartości zmiennych w kodzie programu.

Metody zmniejszające liczbę błędów

Zgodnie z definicją, do metod zmniejszania liczby błędów można zaliczyć:

  1. „umiejętne zastosowanie paradygmatów programowania strukturalnego, proceduralnego i obiektowego,
  2. pisanie w sposób czytelny, hierarchiczne formatowanie kodu źródłowego,
  3. unikanie skrótów programistycznych w rodzaju ++i*=*c--,
  4. stosowanie zrozumiałych identyfikatorów, nawet kosztem ich większej długości,
  5. stosowanie komentarzy w miejscach, w których zrozumienie kodu nie jest natychmiastowe,
  6. współtworzenie programu i jego dokumentacji,
  7. opisywanie (w komentarzach i dokumentacji) założeń przyjętych podczas pisania danego fragmentu kodu (np.: co do typów danych wejściowych, czy spodziewanego sposobu użycia),
  8. unikanie trudnych w analizie konstrukcji (jak instrukcja skoku, czy ewaluacja kodu w trakcie wykonania),
  9. używanie narzędzi wykrywających podejrzane fragmenty kodu (np. lint),
  10. włączenie ostrzeżeń kompilatora o napotkaniu konstrukcji będących częstym źródłem błędów (np. if(a=b)... zamiast if(a==b)...),
  11. ręczne audyty kodu

W typowych warunkach można się spodziewać, że w każdym nietrywialnym programie będzie sporo błędów. Ich liczbę można jednak znacząco ograniczyć.

Uważa się, że liczba błędów na wiersz kodu jest w przybliżeniu niezależna od języka, dlatego program o tej samej funkcjonalności napisany w języku wyższego poziomu (np.: Perl czy Python), będzie miał mniej błędów, niż w języku niższego poziomu (C czy asembler). Stąd lepiej używać języków, które w krótszym tekście zawrą więcej.

Stosowanie tych prostych mechanizmów pozwala w oczywisty sposób ograniczać liczbę błędów, które pojawiają się w produkcie finalnym lub – w najlepszym razie – wychodzą na testach.

Poka-Yoke w testowaniu

Testowanie także jest mechanizmem Poka-Yoke. Tak postawioną hipotezę postaram się udowodnić w dalszej części artykułu.

Bez wątpienia, testowanie stanowi kluczowy element procesu wytwórczego systemów informatycznych. Jest to czynność, która zdecydowanie zasługuje na dokładne i metodyczne wykonanie przed wprowadzeniem systemu do użytku. Należy jednak mieć świadomość, że wykrywanie oraz eliminowanie błędów w fazie testów wiąże się z dużymi kosztami, co oznacza, że testy nie mogą zastąpić innych elementów zapewnienia jakości.

Testy powinny być zautomatyzowane – automat może przeprowadzić o kilka rzędów wielkości więcej testów niż człowiek w danej jednostce czasu. Testowanie dużych funkcjonalności jest trudną operacją. Zazwyczaj testuje się osobno podzespoły programu oraz program w całości (testy integracyjne).

Aspekty testowania

Testowanie oprogramowania jest jednym z procesów kontroli jakości oprogramowania i ma dwa główne cele:

  • weryfikację oprogramowania – sprawdzenie, czy wytwarzane oprogramowanie jest zgodne ze specyfikacją,
  • walidację oprogramowania – sprawdzenie czy oprogramowanie spełnia oczekiwania użytkownika.

Testowanie powinniśmy rozpocząć jak najszybciej, gdyż umożliwia wykrycie błędów we wczesnych stadiach rozwoju oprogramowania (specyfikacja i projekt). Dzięki temu możemy zmniejszyć koszty ich usuwania na późniejszych etapach wytwarzania oprogramowania.

Zasady testowania

Podstawową i najkrótszą definicją testowania jest znajdowanie anomalii. Nie rozstrzygamy, czym jest anomalia i kto ma stwierdzić, czy konkretny przypadek nią jest, czy też nie. Pozostawiam dopasowanie tej definicji do środowiska i pojmowania testowania.

Podstawy

Każdy produkt ludzkiej działalności, od najmniejszych przedmiotów jak igła, aż po skomplikowane maszyny takie jak odrzutowce, a także oprogramowanie i konstrukcje budowlane, może być przedmiotem testów. Dodatkowo, każda osoba, niezależnie od tego, czy sobie zdaje z tego sprawę, czy nie, w pewnym stopniu pełni rolę testera.

Jako przykład można podać wybór trasy dojścia do pracy, który opiera się na naszych potrzebach i ocenie jakości poszczególnych opcji. Zazwyczaj, po wypróbowaniu różnych możliwości, decydujemy się na tę, która wydaje nam się najbardziej odpowiednia.

Planowanie testów

Podejmując decyzję o testowaniu, warto zwrócić uwagę na cele testów:

  • do czego dążymy?
  • co chcemy osiągnąć?

Możemy to osiągnąć poprzez stworzenie planu testów.

Kontrolowanie testów

Plan testów w każdym momencie procesu musi być sprawdzany pod kątem tego, jak daleko „odchodzimy” od wstępnych założeń.

Projektowanie i analiza testów

Planowanie oraz analiza testów to proces, w którym z ogólnych założeń dotyczących testowania przechodzi się do konkretnego określenia warunków testowych oraz projektowania samych testów.

Wdrażanie i wykonywanie testów

Implementacja testów i ich wykonywanie jest czynnością, gdzie warunki testów zostają przemienione w przypadki testowe i zbiór czynników testowych oraz konfigurację środowiska.

Sprawdzenie kryterium zakończenia testów

Weryfikacja kryteriów zakończenia testów jest czynnością odnoszącą się do ustalonych celów. Proces ten wymaga realizacji na każdym etapie testowania.

Zakończenie testów

Zakończenie testów obejmuje gromadzenie danych z wszystkich wykonanych czynności testowych, aby skonsolidować zdobyte doświadczenia, czynniki testowe, fakty i dane.

Podsumowanie

Systemy Poka-Yoke przyczyniają się do znacznej poprawy jakości procesów wytwarzania oraz redukcji defektów, wykazując się większą skutecznością niż tradycyjne metody kontroli jakości produktów czy Statystyczna Kontrola Procesu (SPC). W związku z tym, rekomenduję ich używanie w miejsce innych metod kontroli procesu lub produktu, gdziekolwiek jest to wykonalne.

Urządzenia Poka-Yoke powinny charakteryzować się maksymalną prostotą, dlatego w fazie projektowania priorytetem jest poszukiwanie rozwiązań, które są jednocześnie proste i ekonomiczne. Warto też kształtować proces w taki sposób, aby prawidłowe operacje były łatwe do wykonania, natomiast wykonanie operacji nieprawidłowych było utrudnione.

Stosowanie Poka-Yoke jest procesem ciągłym, służącym do zabezpieczenia bezbłędnego wykonania wszystkich operacji na produkcie na każdym stanowisku roboczym.

Analizując zasady testowania, wymienione wyżej aspekty testowania oraz biorąc pod uwagę cechy Poka-Yoke, można stwierdzić, że kontrola jakości oprogramowania, czyli testowanie też jest mechanizmem Poka-Yoke.

Przykładem Poka-Yoke w tworzeniu oprogramowania jest wykorzystanie przypadków testowych. Twórcy oprogramowania przeprowadzają przypadki testowe, aby upewnić się, że wzięto pod uwagę wszystkie niezbędne czynniki. Zmniejsza to prawdopodobieństwo późniejszego znalezienia tych błędów przez użytkowników i zapewnia bardziej stabilny produkt.

5/5 ( głosy: 5)
Ocena:
5/5 ( głosy: 5)
Autor
Avatar
Tomasz Sobestiańczyk

Developer/Administrator z 15-letnim doświadczeniem w zakresie wdrożeń Dynamics AX/D365. Entuzjasta usprawniania i układania procesów wytwarzania oprogramowania. Prywatnie miłośnik i pasjonat różnorodnych roślin oraz wszystkiego, co jest z nimi związane, wielbiciel lasów, pól i bezdroży

Zostaw komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Może Cię również zainteresować

Pokaż więcej artykułów

Bądź na bieżąco

Zasubskrybuj naszego bloga i otrzymuj informacje o najnowszych wpisach.

Otrzymaj ofertę

Jeśli chcesz dowiedzieć się więcej na temat oferty Sii, skontaktuj się z nami.

Wyślij zapytanie Wyślij zapytanie

Natalia Competency Center Director

Get an offer

Dołącz do Sii

Znajdź idealną pracę – zapoznaj się z naszą ofertą rekrutacyjną i aplikuj.

Aplikuj Aplikuj

Paweł Process Owner

Join Sii

ZATWIERDŹ

This content is available only in one language version.
You will be redirected to home page.

Are you sure you want to leave this page?