onsdag 2 oktober 2013

Hur man inte bör specificera en standard, exemplet Link 16

Link 16 är en militär kommunikationsstandard som används av USA, NATO och andra. Specifikationen finns publicerad som STANAG (NATO STANDARDIZATION AGREEMENT) 5516 inom NATO (i flera olika utgåvor) och i USA som MIL-STD-6016. Standarden är inte hemlig men den är, som man säger, inte offentlig. Det innebär att man kan be USA eller NATO om att få tillgång till den och om man anses vara betrodd får man det. Som svensk är det naturligtvis inget problem, vi är ju en "coalition partner" (se mer här).

När man får tillgång till standarden så är det första man reagerar på att den är 4848 sidor. Detta trots att dokumentet bara innehåller beskrivningar av de meddelanden som skickas och i stort sett ingenting om den omkringliggande infrastrukturen (tekniska detaljer finns i bilagor som publicerats separat). Det andra man reagerar på (om man inte sett det tidigare) är den mycket noggranna hanteringen av blanka sidor i dokumentet (motsvarande "This Page Intentionally Left Blank").

Link 16 beskriver ett sextiotal olika meddelanden, där de flesta finns i några olika varianter. Sammanlagt är det alltså ungefär tvåhundra meddelanden som ska beskrivas. De flesta meddelanden kan beskrivas på några få sidor, så hur hamnar dokumentet då på sammanlagt nästan 5000 sidor? Jo, genom införandet av en egenskap som kallas"Specific Type". Som exempel tittar vi på meddelande J3.3 "Surface Track". Ett enkelt meddelande för att förmedla positionen hos ett fartyg (farkost på vatten) man har observerat. Man skickar ett id och en position, kurs och fart. Man kan ange vilken typ av fartyg det är (det finns 34 fyra typer att välja på) och vad det eventuellt håller på med (det finns också 34 aktiviteter att välja på). Sedan går man in i den 45-sidiga listan (mer än 3000 typer) över "Specific Types" för detta meddelande, utdrag nedan (sidan 15):



Vad betyder listan? Jo, om fartyget du observerat var det svenska minfartyget "Älvsborg" anger du 899 i fältet för "specific type" men om det istället var stabs- och ledningsfartyget "Carlkrona" anger du 901. Men det kanske var tyska "Sachsenwald"? Då ska du ange 910. Motsvarande listor finns för flygplan, markfordon, ubåtar, kryssningsmissiler med mera. I slutet av 1990-talet när man arbetade fram standarden valde man alltså att i standarden hårdkoda värden för alla då existerande militära fartyg, flygplansmodeller med mera. Naturligtvis blev standarden på detta sätt nästan ögonblickligen inaktuell. Till exempel såldes "Älvsborg" 1997 till Chile där hon nu mer går under namnet "Almirante José Toribio Merino Castro". Av svenska flygplan så finns till exempel J-35 Draken (typnummer 21, 28, 277, 564 eller 801 beroende på modell)  och J-37 Viggen (31, 281, 800 eller 802)  representerade men ingen JAS Gripen. Om man ska skapa en applikation för att skicka Link 16-meddelanden bör man alltså, enligt standardförfarandet, implementera drop-down menyer (eller motsvarande) med fler än 3000 namn på fartyg att välja på för att skicka ett J3.3. Detta är inte det sätt man bör specifiera en standard på.   

Inga kommentarer:

Skicka en kommentar