Viele Kennungen, die ein System verarbeitet, haben überhaupt keine veröffentlichte Arithmetik hinter sich. Es gibt kein abschließendes Zeichen zum Nachrechnen, keine gewichtete Summe zum Vergleichen, keinen Rest zum Befragen. Die Zeichenkette hat eine dokumentierte Form und sonst nichts, und mehr als die Form zu bestätigen kann ein Prüfer ehrlicherweise nicht tun.
Diese Lage ist unbequem, und Unbequemlichkeit erzeugt zwei entgegengesetzte Fehler. Der eine besteht darin, eine Regel zu erfinden, damit das Feld eine befriedigende Antwort liefern kann. Der andere besteht darin aufzugeben und alles anzunehmen. Beide lassen sich vermeiden, sobald das reine Formatergebnis als vollwertiges Ergebnis gilt und nicht als Mangel an Fantasie.
Welche Nummern haben keine veröffentlichte Prüfziffer?
Die Kategorie ist breiter, als sie aussieht. Sie umfasst Kennungen aus Registern, die nie eine innere Regel dokumentiert haben, interne Codes, die ein Unternehmen statt einer Normungsstelle vergibt, und Werte, die dafür entworfen wurden, von Menschen gelesen und von Sachbearbeitern gespeichert zu werden, statt von Maschinen geprüft.
Sie umfasst auch Nummern, die sehr wohl eine latente Struktur enthalten, die niemand veröffentlicht hat. Ein Register kann Nummern fortlaufend vergeben oder eine Region oder ein Datum einbetten, ohne die Konvention je zu nennen. Von außen ist diese Struktur unsichtbar und unbrauchbar, und ein geratenes Muster als Regel zu behandeln ist schlechter, als Unkenntnis einzuräumen.
Der praktische Maßstab ist die Dokumentation und nicht die Intuition. Hat die ausgebende Stelle eine Prüfregel veröffentlicht, gibt es etwas umzusetzen. Hat sie eine Form veröffentlicht, setzen Sie die Form um. Hat sie keines von beidem veröffentlicht, ist die ehrliche Abdeckungsstufe keine, und keine noch so gründliche Analyse einer Stichprobe echter Werte darf diese Einordnung ändern.
Die Beispiele in diesem Beitrag sind erläuternde Formen und keine echten Werte. Hier wird keine echte Kennung wiedergegeben, und Strukturbeschreibungen beschreiben ausschließlich öffentliche Regeln.
Warum lassen sich manche Kennungen nicht mit Arithmetik prüfen?
Eine Prüfziffer braucht zwei Dinge: eine Regel, die den Rumpf auf ein einzelnes Zeichen abbildet, und die Gewissheit, dass das ausgebende Register diese Regel anwendet. Fehlt eines von beiden, hat die Arithmetik nichts, womit sie arbeiten könnte.
Die Geschichte erklärt die meisten Lücken. Viele Register sind älter als die Software und wurden für Sachbearbeiter entworfen, die Werte zwischen Formularen abschrieben; ihre Entwerfer hatten keinen Anlass, eine maschinelle Prüfung in die Nummer einzubauen. Andere wurden durch Gesetzgebung eingeführt, die festlegte, was die Nummer kennzeichnet, und das innere Format der Behörde überließ, die dann nichts veröffentlichte.
Der Datenschutz erklärt einen Teil des Rests. Eine veröffentlichte Prüfregel ist eine öffentliche Tatsache und verrät nichts über eine Person, weshalb sie selten aus diesem Grund zurückgehalten wird — das umgebende Format dagegen manchmal schon, und ein Schema ohne veröffentlichtes Format hat auch keine veröffentlichte Prüfung.
Das Ergebnis ist eine Landschaft mit echter Vielfalt in der Abdeckung. Diese Vielfalt ist das Thema des Bildes nach Ländern, in dem dieselben drei Stufen über Register jeder Größe hinweg wiederkehren.
Was bedeutet nur Format eigentlich?
Ein reines Formatergebnis sagt drei konkrete Dinge und eine wichtige Nichtaussage. Die drei sind: Die Zeichenkette verwendet zulässige Zeichen, ihre Länge ist eine, die das Schema definiert, und alle dokumentierten inneren Aufteilungen passen zum Gelieferten. Die Nichtaussage ist die Gültigkeit, denn es gibt keine Arithmetik, die sie bestätigen könnte.
Das klar zu sagen ist zuerst ein Kommunikationsproblem und erst danach ein technisches. Nutzerinnen lesen grüne Häkchen als Zustimmung, deshalb darf ein reines Formatergebnis nicht in dieselbe Erfolgsgestaltung gekleidet werden wie eine bestandene Prüfung. Es ist kein geringerer Erfolg, sondern eine andere Aussage, und die Oberfläche sollte den Unterschied sichtbar machen, ohne den Eindruck zu erwecken, etwas sei schiefgegangen.
Es zählt auch für die nachgelagerten Systeme. Ein Importlauf, der reine Formatbestätigungen erhält, darf sie nicht in dieselbe Spalte schreiben wie durch Verfahren bestätigte Werte, denn die beiden haben unterschiedliche Fehlerraten und werden in einer Prüfung irgendwann unterschiedlich behandelt.
Wie sollte eine Nummer ohne Prüfziffer geprüft werden?
Prüfen Sie, was die Dokumentation stützt, und hören Sie dort auf.
- Normalisieren Sie die Eingabe — Trennzeichen entfernen, Leerraum zusammenfassen, Schreibweise vereinheitlichen — und bewahren Sie das Original auf.
- Prüfen Sie den Zeichensatz und weisen Sie Buchstaben in einem numerischen Schema sowie Symbole überall zurück.
- Prüfen Sie die Länge gegen die dokumentierten Größen des Schemas.
- Untersuchen Sie jede dokumentierte innere Struktur, etwa eine feste Kennung am Anfang oder eine reservierte Position.
- Geben Sie ein reines Formatergebnis zurück, so formuliert, dass es die Form behauptet und sonst nichts.
Fügen Sie keinen sechsten Schritt hinzu. Eine eigene Prüfsumme für ein unveröffentlichtes Schema zu berechnen schafft eine Regel, die dem Register widersprechen wird, sobald ein echter Wert sie passiert, und der Widerspruch wird einer Nutzerin nicht zu erklären sein.
Zwei Einzelheiten werden leicht übersehen. Manche Schemata definieren mehr als eine zulässige Länge, sodass die Längenprüfung ein Zugehörigkeitstest und kein Gleichheitstest ist. Und Normalisierung ist keine Reparatur: Das Entfernen von Formatierungszeichen bereinigt die Eingabe, verwandelt aber keine Näherung in einen gültigen Wert.
Wo eine Formatprüfung trotzdem ihren Platz verdient
Formatprüfungen sind billig, und sie fangen die Fehler, die den echten Verkehr tatsächlich bestimmen: ein beim Kopieren verlorenes Zeichen, ein aus der falschen Spalte eingefügter Wert, eine alphabetische Zeichenkette in einem Zahlenfeld. Gemessen an diesen Fehlern bezahlt sich ein Formtest innerhalb eines Tages Produktivbetrieb.
Sie schützen zudem die Systeme hinter dem Formular. Ein Feld, das unzulässige Zeichen vor der Speicherung zurückweist, hält eine Klasse von Rauschen aus der Weiterverarbeitung heraus, und ein Feld, das eine dokumentierte Länge erzwingt, hält einen Abschneidefehler vom Datenlager fern.
Was eine Formatprüfung nicht leisten kann, ist alles, was das Register erfordert. Zu bestätigen, dass eine Kennung ausgegeben wurde, dass sie zu der Person gehört, die sie vorlegt, oder dass sie noch aktiv ist, sind alles Nachschlagevorgänge, und sie gehören neben die Formatprüfung und nicht in sie hinein. Wo ein solches Nachschlagen existiert, behandeln Sie es als Netzabhängigkeit mit eigenen Zeitüberschreitungen und eigenen Fehlern, im Sinne des getrennt erörterten Entwurfs der Grenze.
Für Entwickler: vier Urteile und ihre Formulierungen
Geben Sie dem Konzept einen Typ und jedem Zweig seine eigene Formulierung.
| Urteil | Bedeutung | Vorgeschlagene Formulierung |
|---|---|---|
| Gültig | Das veröffentlichte Verfahren wurde angewandt und das letzte Zeichen passt | Die Prüfziffer passt zu diesem Schema |
| Ungültig | Das Verfahren wurde angewandt und das letzte Zeichen passt nicht | Das Format passt, die Prüfziffer jedoch nicht |
| Nur Format | Es ist kein Verfahren veröffentlicht; die Form wurde bestätigt | Das Format ist gültig; die Gültigkeit lässt sich nicht bestätigen |
| Keine Regel | Die Eingabe passt zu keinem Schema, das das Werkzeug umsetzt | Nicht erkannt — das bedeutet nicht, dass der Wert falsch ist |
Zwei Wörter verdienen ein Verbot im Codebestand. Das erste ist echt, was keines dieser Urteile belegt. Das zweite ist gefälscht, was ebenfalls keines von ihnen belegt. Ein Werkzeug, das sie verwendet, wird irgendwann geglaubt werden, und die Annahmen werden falsch sein. Wenn ein Formular etwas Wahres über die Welt wissen muss, stammt dieses Wissen aus einem Nachschlagen und nicht aus Arithmetik; die Sicht auf die drei Ebenen der Prüfung erklärt, warum die Ebenen nicht ineinander zusammengezogen werden dürfen.
Nächste Schritte
Finden Sie jedes numerische Feld in Ihrem Produkt, das derzeit schlicht wahr oder falsch zurückgibt, und prüfen Sie, welches der vier Urteile es eigentlich ausdrückt. Nehmen Sie dann ein reines Formatschema und bestätigen Sie, dass Ihre Oberfläche dafür etwas anderes sagt als für eine bestandene Prüfung, mit dem Werkzeug zur Nummernprüfung als Referenz für diese Formulierung.