| Termin | Definicja |
|---|---|
| złe wersjonowanie danych wejściowych | Złe wersjonowanie danych wejściowych utrudnia śledzenie, która wersja informacji została faktycznie przetworzona. Na czym polega złe wersjonowanie danych wejściowychZłe wersjonowanie danych wejściowych występuje wtedy, gdy system przetwarza informacje bez jednoznacznego oznaczenia ich wersji, źródła albo momentu pozyskania. Dotyczy to między innymi plików importowanych do programu, rekordów pobieranych z interfejsu API, konfiguracji, formularzy, komunikatów między procesami oraz danych zapisanych w bazie. Jeżeli kolejne zmiany zastępują poprzednią zawartość bez zachowania identyfikatora wersji, później trudno ustalić, jaki dokładnie zestaw informacji trafił do konkretnego etapu przetwarzania. Wersja danych wejściowych nie musi oznaczać numeru nadawanego ręcznie przez użytkownika. Może nią być numer rewizji, identyfikator wydania, znacznik czasu, suma kontrolna pliku, numer komunikatu albo kombinacja kilku pól. Istotne jest, aby oznaczenie było jednoznaczne i pozostawało powiązane z konkretną treścią. Sam zapis „najnowsze dane” jest niewystarczający, ponieważ zawartość pod takim określeniem może zmienić się pomiędzy odczytem, walidacją i właściwym przetworzeniem. Jak brak wersji zmienia przepływ informacjiW prawidłowym przepływie danych każdy etap powinien móc rozpoznać, z jakiego wejścia korzysta. Przykładowo program może pobrać plik konfiguracyjny, sprawdzić jego poprawność, przeliczyć zawartość i zapisać wynik. Jeżeli w czasie pomiędzy tymi operacjami plik zostanie podmieniony, a system nie przechowuje jego wersji lub sumy kontrolnej, wynik może odnosić się do innej zawartości niż ta, która została wcześniej zweryfikowana. Taki błąd nie zawsze powoduje natychmiastowe zatrzymanie programu. Częściej prowadzi do niespójnych wyników, trudnych do odtworzenia wyjątków albo rozbieżności pomiędzy działaniem dwóch komputerów. Problem jest szczególnie widoczny przy przetwarzaniu asynchronicznym. Jeden proces może przyjąć dane, a drugi wykonać operację dopiero po pewnym czasie. Bez kontroli wersji drugi proces nie wie, czy otrzymane informacje są aktualne, czy zostały już zastąpione nowszym wariantem. Może wtedy nadpisać świeższe dane starszym wynikiem, zastosować obliczenia do niewłaściwego rekordu albo zaakceptować komunikat, który stracił aktualność. W systemach korzystających z wielu źródeł dodatkowym utrudnieniem jest brak informacji, czy różne wartości pochodzą z tego samego wydania danych. Objawy i metody rozpoznania niespójnościTypowym objawem złego wersjonowania są wyniki, których nie można powtórzyć mimo użycia pozornie tych samych plików lub parametrów. W logach mogą pojawiać się komunikaty o konflikcie, odrzuconej aktualizacji, brakującym rekordzie albo niezgodności schematu. Czasami program nie zgłasza błędu, ponieważ dane mają poprawny format, lecz należą do innej wersji logicznej. Wtedy niezgodność ujawnia się dopiero w raporcie, po ponownym uruchomieniu zadania lub przy porównaniu danych na dwóch stanowiskach. Rozpoznanie problemu wymaga porównania całego łańcucha przetwarzania: źródła danych, czasu odczytu, identyfikatora wersji, zastosowanego schematu, parametrów programu oraz zapisanej odpowiedzi. Pomocne jest rejestrowanie sum kontrolnych plików, numerów rewizji i identyfikatorów operacji. Przy danych rekordowych można przechowywać numer wersji zwiększany przy każdej zmianie. Aktualizacja powinna wtedy sprawdzać, czy numer użyty przez zapisujący proces nadal odpowiada numerowi w źródle. Jeżeli nie odpowiada, operacja powinna zostać odrzucona albo skierowana do ponownego odczytu, zamiast bezwarunkowo nadpisywać aktualną zawartość. Weryfikacja danych wejściowych na laptopie lub komputerze PCPodczas diagnostyki programu warto sprawdzić, czy pliki wejściowe nie są podmieniane przez synchronizację, kopię zapasową, aktualizator lub ręczne kopiowanie z innego stanowiska. Należy także ustalić, czy aplikacja zapisuje wersję danych razem z wynikiem, czy tylko sam rezultat. W praktyce przydatne jest utworzenie kontrolnego egzemplarza pliku, obliczenie jego sumy kontrolnej, uruchomienie przetwarzania na tej kopii oraz porównanie logów z faktycznie użytym wejściem. Trzeba również zweryfikować zegar systemowy, ścieżki plików, uprawnienia do katalogów i ustawienia programu, ponieważ błędny czas lub wskazanie innej lokalizacji może wyglądać jak problem z wersjonowaniem. Warszawskie Pogotowie Komputerowe zajmuje się profesjonalną naprawą laptopów, komputerów PC i podzespołów, a w ramach diagnostyki można przeanalizować działanie aplikacji, zapis logów oraz spójność plików używanych przez program. W przypadku stwierdzenia błędnego przepływu danych istotne jest oddzielenie awarii sprzętowej od problemu logicznego w oprogramowaniu. Kontrola dysku, pamięci operacyjnej i systemu plików może wykazać, czy dane ulegają uszkodzeniu podczas odczytu lub zapisu, natomiast porównanie wersji, sum kontrolnych i logów pozwala ocenić, czy przyczyną jest niewłaściwe zarządzanie kolejnymi wydaniami danych wejściowych. |