piątek, 17 lutego 2012

Numeracja

Numeracja jest czynnością stosunkowo często występującą w zakresie użytkowania programów z różnych dziedzin. Wszelkie ewidencje, katalogi zawierają w sobie jeden lub więcej rodzajów numeracji. W życiu codziennym też często spotykamy się z różnego rodzaju identyfikatorami numerycznymi: REGON, PESEL, NIP są to narzucone przez Państwo numery, dzięki którym ułatwione jest prowadzenie ewidencji obywatelskich. W szkole uczniowie mają pozycję w dzienniku, studenci numer indeksu, karta kredytowa ma swój unikalny numer. Mimo swej powszechności wiele numeracji jest tworzonych wadliwie. Może dlatego, że niewiele jest opracowań na ten temat i gdy pojawia się konieczność wprowadzenia nowej numeracji większość decydentów dokonuje tego bez zgromadzenia odpowiedniej wiedzy.

Spektakularne błędy numeracji

PESEL

Numer Pesel jest nadawany każdemu obywatelowi. Jest to 11 cyfrowa liczba: 10 cyfr znaczących i suma kontrolna. Niestety przy tworzeniu tego systemu nie pomyślano, że kiedyś będzie rok 2000. A ponieważ numer zawiera tylko 2 ostatnie cyfry daty urodzenia, to nastąpił problem. Dwie osoby urodzone w tym samym dniu roku, ale w odstępie 100 lat otrzymywali by taki sam numer, co było niedopuszczalne. Całe szczęście, że liczba miesięcy w roku jest mniejsza od 99, więc stosując odpowiednie kombinacje (typu 22 miesiąc) rozwiązano tą kolizję. Drugi problem również związany jest z rokiem 2000 (a dokładnie z latami 2000-2009). Jak wiadomo z matematyki początkowe zera w liczbach są nieznaczące. Ale nie u urzędnika. Ponieważ numer może się rozpoczynać od zera, niemożliwe jest przetwarzanie takich numerów operacjami matematycznym, które jak powszechnie wiadomo są znacząco efektywniejsze pod względem szybkości jak i zajmowanego miejsca. Taki niuans jak początkowe zero potrafi znacząco skomplikować sposób przetwarzania numeru. Lokalne firmy i instytucje często wpadają w taką pułapkę. Natomiast jeżeli przeanalizujemy globalne numeracje takie jak EAN czy VISA to nigdzie nie spotkamy takiego przypadku.

Numeracja faktur Poczty Polskiej

Wiele instytucji tworzy rejestry wystawianych przez siebie dokumentów i każdemu z nich nadaje unikalny numer. Numer dokumentu powinien jednoznacznie identyfikować dany dokument, tak aby wymieniając sam numer jednoznacznie powołać się na właściwy dokument. Ale to jest wszystko co od numeru należy oczekiwać: jednoznaczna identyfikacja. Zawieranie w numerze dodatkowych informacji jest możliwe, a nawet właściwe gdy stanowią element weryfikujący. Natomiast w rozszerzaniu treści zachowywanych w numerze należy zachować umiar. Taka dodatkowa informacja wydłuża numer, przez co staje się on niewygodny w użytkowaniu i powoduje generowanie niepotrzebnych błędów. Przykładem może być wspomniana numeracja faktur Poczty Polskiej, które to numery są dłuższe od obowiązującej numeracji kont bankowych. Jest to absurd, znacząco uprzykrzający życie zarówno klientom jak i pracownikom, nie mający żadnego uzasadnienia. Numeracja obejmująca milion faktur nie musi być dłuższa niż 7-8 cyfr, stosowanie więcej niż 20 to dowód niekompetencji. Jeszcze bardziej spektakularny błąd jest w programie Płatnik (ten do obsługi ZUS). Identyfikacja płatnika przez program, podczas importu danych dokonuje się poprzez jednoczesne porównanie numerów NIP, PESEL, REGON i skrót nazwy. Tym samym skrót nazwy, coś co powinno być potocznym określeniem, otrzymuje wagę identyfikatora, który musi być identyczny z dokładnością do spacji, cudzysłowu itp. Do prawidłowego działania programu Płatnik konieczne jest precyzyjne i bezbłędne przepisanie ponad 50 znaków tylko po to aby program nie pomylił bazy - uwaga: takich baz maksymalnie w komputerze jest 1000.

Numeracja ustaw i rozporządzeń

Drugim biegunem numeracji są dokumenty ustalające prawo: ustawy i rozporządzenia. Z definicji takie dokumenty nie mają numeru, zwyczajowo posługiwano się opisem. Określenia takie jak Konstytucja Kodeks Karny czy Kodeks Cywilny przez wszystkich są uważane jako jednoznaczne. Podobnie z ustawami, wydawać by się mogło że tytuł wystarczy: "Ustawa o podatku dochodowym od osób fizycznych" jednoznacznie wskazuje o jaki dokument chodzi. Bynajmniej. Powszechna praktyka pokazuje że wraz z tytułem konieczne jest przytoczenie numeru dziennika, w którym się dana ustawa pojawiła a nawet numeru pozycji (choć każdy z nich jest jednoznaczny) oraz dnia ukazania się. Każde odwołanie się do prawa (tzw. podstawa prawna) to szereg identyfikatorów danego dokumentu, piszący jakoby chcieli przestraszyć długością zapisu. Gdy obserwuję takie nagromadzenie identyfikatorów danej ustawy to przypomina mi się reklama: I władamy Dowód Osobisty do kieszonki, i im bardziej go władamy tym bardziej on tam jest. Oczywiście cytatu zazwyczaj nie ma, gdyż zbyt łatwo można by podważyć związek ze sprawą.

Automatyczna Numeracja faktur

Najczęściej spotykanym numerowanym dokumentem jest faktura. Tzn częściej występuje paragon fiskalny, ale zazwyczaj nikt nie przejmuje się jego numerem, a po drugie sposób jest narzucony odgórnie. Natomiast faktury każda firma wystawia samodzielnie i mniej lub bardziej samodzielnie wybiera sposób numeracji. Przy czym należy nadmienić że zasady numeracji faktur niewiele się różnią od numeracji innych dokumentów. Co w tym trudnego? Proszę przyjrzeć się temu przykładowi: FA 01/02/03

  1. pierwsza faktura z marca 2003 roku
  2. trzecia faktura z lutego 2001 roku
  3. druga faktura ze stycznie 2001 roku
Każde z powyższych może być prawidłowe. Ponieważ numery będą unikalne to nie dojdzie do powstania błędu formalnego. Natomiast może dojść do pomyłki. Ktoś może błędnie zaklasyfikować dany dokument. Do tego kluczowa jest wspomaganie komputerowe. Program zazwyczaj proponuje i kontroluje numeracje dokumentów. Aby to robił poprawnie musi posługiwać się takimi samymi regułami jak użytkownik. Tworząc program staramy się maksymalnie uelastycznić jego działanie. Tak aby były możliwe do realizacji wszelkie pomysły i potrzeby użytkownika. Sposób numerowania dokumentów nie jest wyjątkiem. Na numerację składa się:
  1. prefix - czyli stała początkowa część numeru
  2. suffix - część stała końcowa numeru
  3. miejsce roku i miesiąca
  4. właściwy numer
Aby program mógł automatycznie nadawać numery musi właściwie zidentyfikować położenie poszczególnych elementów. Musi wiedzieć gdzie jest wstawiany rok, czy numer zawiera oznaczenie miesiąca. Powinien też wiedzieć kiedy następuje tzw. zerowanie numeracji: co miesiąc, co rok czy wcale. Oczywiście wszystko jest możliwe gdy wprowadzimy odpowiednie definicje do programu. Ale to wymaga znajomości konfiguracji i notacji.

Sztuczna inteligencja?

Jednym z założeń program było możliwość używania różnych rodzajów numeracji przy minimalizowaniu konieczności jakiejkolwiek numeracji. Zadanie wydaje się proste: Użytkownik wpisuje FA 001 a program następnie podpowiada FA 003, Użytkownik wpisuje FA 34001 to program FA 34002.
  1. FA 003/2010 - program zakłada że końcówka to rok,czyli FA 004/2010
  2. FA 003/10 - analogicznie,czyli FA 004/10
  3. FA 11/3/10 - tu jest problem: czy to jest numer 3 czy miesiąc marzec, a może rok 2011 i numer 10; dla programu to jest niejednoznaczne (dla człowieka również - nie powinien takiej numeracji stosować
  4. FA 11/03/2010 - program przyjmuje że 03/2010 to data i inkrementuje 11
  5. FA 11/03/02010 - jeżeli numer jest umieszczony na końcu to nie może mieć ani dwu ani czterech cyft
  6. FA 11/V/2010 - wprowadzenie miesiąca rzymskiego znakomicie ułatwia identyfikację

Praca współbieżna

Kolejność numeracji to nie jedyny problem. Przy normalnej pracy dokumenty są dodawane i usuwane. Mogą powstać luki w numeracji. Oczywiście dla użytkownika wygodnie jest gdy program jak najwięcej dopuszcza a jednocześnie pilnuje. Np. gdy użytkownik anuluje ostatni dokument to numeracja powinna się cofnąć, gdy nie ostatni to powinien informować o powstałej luce. Gdy wiele osób wystawia dokumentu w jednej numeracji program musi pilnować aby każdy numer przydzielić tylko raz. I pilnować, gdy użytkownik się rozmyśli i porzuci dany numer. Gdy numeracja jest zerowana przy przejściu na nowy okres program winien podpowiadać odrębnie ostatni numer w każdym z okresów.

Brak komentarzy:

Prześlij komentarz