| Termin | Definicja |
|---|---|
| Zgodność typów danych | Zgodność typów danych między systemami zapobiega błędom konwersji przy wymianie informacji. Zgodność typów danych jako warunek poprawnej wymiany informacjiZgodność typów danych oznacza takie dopasowanie sposobu zapisu informacji, aby dwa programy, urządzenia albo moduły systemu mogły prawidłowo odczytać przekazywane wartości. Nie chodzi wyłącznie o to, czy w obu miejscach występuje pole o podobnej nazwie. Znaczenie ma również sposób przechowywania danych, zakres dopuszczalnych wartości, format zapisu, długość pola oraz reguły interpretacji. Tekst, liczba całkowita, liczba z częścią ułamkową, data, wartość logiczna i plik binarny są odmiennymi typami, nawet jeśli wszystkie mogą zostać przesłane jako ciąg znaków. Problem pojawia się wtedy, gdy system źródłowy wysyła dane w formie, której system docelowy nie rozpoznaje albo interpretuje ją inaczej. Przykładem może być data zapisana jako dzień, miesiąc i rok, podczas gdy drugi program oczekuje kolejności rok, miesiąc i dzień. Podobne ryzyko występuje przy liczbach z separatorem dziesiętnym, wartościach pustych, polach identyfikacyjnych oraz informacjach o czasie. Dane mogą zostać odrzucone, zmienione podczas konwersji albo zapisane bez komunikatu o błędzie, co utrudnia późniejsze znalezienie przyczyny. Zgodność typów danych w praktyce i różnice między formatamiWymiana informacji może odbywać się między programami korzystającymi z baz danych, plików tekstowych, arkuszy, formularzy, interfejsów programistycznych albo urządzeń podłączonych do komputera. Każde z tych środowisk może stosować inne zasady opisu wartości. W jednej bazie numer może być przechowywany jako tekst, ponieważ może zawierać zera na początku, a w innym systemie ten sam element zostanie potraktowany jako liczba. Automatyczna konwersja może wtedy usunąć początkowe zera lub zmienić sposób sortowania. Warto odróżnić zgodność typu od zgodności znaczenia. Dwa pola mogą mieć ten sam techniczny typ, lecz przedstawiać różne informacje. Pole tekstowe z oznaczeniem produktu nie jest tym samym co pole tekstowe z opisem usterki. Podobnie liczba może określać ilość, numer porządkowy, wynik pomiaru albo czas wyrażony w określonej jednostce. Przed połączeniem systemów należy więc ustalić nie tylko typ, lecz także jednostkę, zakres, wymagane oznaczenia i dopuszczalność wartości pustej. Istotne są również różnice między formatami wymiany. JSON, XML, CSV i zwykły plik tekstowy mogą przechowywać podobne informacje, ale inaczej opisują typy, zagnieżdżenia oraz brakujące dane. W jednym formacie wartość logiczna może być zapisana jako true lub false, a w innym jako 1 lub 0. Data może być przekazywana jako tekst, liczba oznaczająca czas od ustalonego punktu albo struktura z osobnymi składnikami. Bez jawnych reguł mapowania łatwo o niejednoznaczność. Zgodność typów danych a typowe problemy konwersjiJednym z częstych problemów jest zamiana liczby całkowitej na typ o mniejszym zakresie. Jeżeli wartość przekracza dopuszczalny limit, może dojść do błędu, obcięcia danych lub zapisania nieprawidłowej wartości. Odmienny przypadek dotyczy liczb zmiennoprzecinkowych. Wynik obliczeń może zawierać przybliżenie, a po zapisaniu w systemie o innej precyzji końcowe cyfry mogą się różnić. W zastosowaniach, w których liczy się dokładność, nie powinno się zakładać, że każda konwersja liczby przebiegnie bez wpływu na wynik. Problematyczne bywają też znaki narodowe, kodowanie tekstu i długość pola. Dane zawierające polskie litery mogą zostać zastąpione nieczytelnymi symbolami, jeśli programy korzystają z różnych sposobów kodowania. Zbyt krótkie pole może obciąć nazwę użytkownika, opis albo komunikat diagnostyczny. Z kolei różne zasady dotyczące spacji, wielkości liter i znaków końca wiersza mogą powodować, że dwie pozornie identyczne wartości nie zostaną uznane za równe. Do błędów prowadzi także odmienne rozumienie pustej wartości. Brak danych może być oznaczony jako pusty tekst, wartość null, zero albo specjalny kod. Te oznaczenia nie zawsze są równoważne. Zero może być prawidłowym wynikiem pomiaru, a pusty tekst może oznaczać brak informacji. Jeżeli aplikacja nie rozróżnia tych przypadków, raporty i filtry mogą przedstawiać niepełny albo zniekształcony obraz danych. W systemach związanych z czasem trzeba uwzględnić strefę czasową, zmianę czasu oraz dokładność zapisu. Ten sam moment może być pokazany w różnych godzinach, jeśli aplikacje korzystają z odmiennych ustawień. Błąd może ujawnić się dopiero przy sortowaniu zdarzeń, analizie historii lub odtwarzaniu kopii informacji. Zgodność wymaga dlatego określenia, czy przesyłany jest lokalny czas, czas uniwersalny, sama data czy data wraz z godziną. Zgodność typów danych podczas diagnozy i porządkowania informacjiPrzed rozpoczęciem wymiany danych warto przygotować prosty opis pól. Powinien on wskazywać nazwę elementu, jego typ, wymagany format, zakres dopuszczalnych wartości, sposób oznaczania braku danych oraz regułę konwersji. Taki opis pozwala porównać wymagania obu stron i wychwycić rozbieżności jeszcze przed uruchomieniem pełnego procesu. Pomocne jest także rozdzielenie danych wejściowych, danych pośrednich i danych wynikowych, ponieważ na każdym etapie mogą obowiązywać inne ograniczenia. Bezpieczne testowanie powinno obejmować wartości typowe, graniczne i nietypowe. Należy sprawdzić między innymi liczby ujemne, bardzo długie teksty, zera na początku, puste pola, znaki diakrytyczne, nietypowe daty oraz wartości przekraczające przewidziany zakres. Warto również porównać dane przed konwersją i po konwersji, a następnie ocenić, czy zachowały pierwotne znaczenie. Sam fakt, że plik został przyjęty przez program, nie świadczy jeszcze o poprawności zawartości. Jeżeli system zgłasza błąd typu danych, przydatne jest ustalenie, na którym etapie powstaje problem. Należy sprawdzić źródłowy zapis, sposób odczytu, reguły mapowania, miejsce zapisu oraz komunikaty rejestrowane przez aplikację. Nie powinno się wielokrotnie zmieniać danych bez zachowania kopii wyjściowej, ponieważ utrudnia to porównanie i może doprowadzić do utraty informacji. Najlepiej pracować na kopii pliku lub zbioru danych, zachowując oryginał do dalszej analizy. Ważną praktyką jest jawne wykonywanie konwersji. Reguła zamiany tekstu na liczbę, daty na zapis standardowy albo wartości logicznej na kod powinna być określona w konfiguracji lub dokumentacji. Ukryte konwersje mogą działać poprawnie dla większości rekordów, a zawodzić przy pojedynczych wartościach. Walidacja na wejściu pozwala zatrzymać nieprawidłowy zapis i wskazać, czego brakuje, zamiast przekazywać błąd do kolejnych etapów przetwarzania. Kiedy zgodność typów danych wymaga zgłoszenia do serwisuDo serwisu warto zgłosić się wtedy, gdy problem z typami danych powtarza się w kilku programach, pojawia się po aktualizacji systemu, dotyczy odczytu plików lub powoduje rozbieżności między ekranem a zapisanym wynikiem. Szczególnej uwagi wymaga sytuacja, w której dane znikają, zmieniają format, otwierają się jako nieczytelne znaki albo są odrzucane mimo poprawnego działania źródłowego programu. Takie objawy mogą wynikać z uszkodzenia pliku, błędnych ustawień środowiska, niezgodnego sterownika, problemów z aplikacją lub niewłaściwego mapowania danych. Przed przekazaniem sprzętu dobrze przygotować opis czynności, po których wystąpił błąd, nazwę używanego programu, przykładowy komunikat oraz kopię problematycznego pliku, jeśli nie zawiera poufnych informacji. W Warszawie pomoc przy takich przypadkach można uzyskać w firmie Warszawskie Pogotowie Komputerowe 24/7. Przekazanie konkretnych objawów i przykładu danych ułatwia odtworzenie problemu, rozdzielenie usterki sprzętowej od błędu konfiguracji oraz dobranie właściwego sposobu dalszej obsługi. |