Category: IT

Können Architekten voneinander lernen?

Heute habe ich an den SOA Days 2011 teilgenommen. Obwohl die Veranstaltung schon seit etwa 14 Jahren organisiert wird, bin ich zum ersten Mal dabei. Mehr oder weniger interessante Vorträge, wie bei jeder Veranstaltung, die Mischung macht es. Die Vorträge unterscheiden sich natürlich nach der Qualität und Aktualität für mich. Der letzte Vortrag heute war…

Adobe vs. AppleAdobe proti AppleAdobe vs. Apple

Apple droht im Streit mit Adobe ein Kartellverfahren. Adobe hat bei US-Behörden eine Beschwerde eingereicht. Dem Software- und Hardware-Hersteller wird vorgeworfen, den Wettbewerb zu behindern. Was Adobe nicht gefällt? Apple hat bei iPhone und iPad keine Unterstützung für Flash-Software angeboten. Nachdem der Apple-Boss Steve Jobs in der Öffentlichkeit die Flash-Software kritisiert hat, (Flash ist veraltet,…

[lang_de]Gute und nicht so gute Standards[/lang_de][lang_cs]Dobré a ne tak dobré standardy[/lang_cs]

[lang_de]   In der EDI Welt ist man oft mit den verschiedensten Standards konfrontiert. Sehr häufig bekommen Entwickler eine Standardbeschreibung mit den Worten „so muss es funktionieren“. Das Jahr 2009 war keine Ausnahme. Wie oft haben wir uns über manche Standards geärgert… Was macht eigentlich den Unterschied zwischen einem GUTEN und SCHLECHTEN Standard? Eine kleine…

[lang_de]
 
In der EDI Welt ist man oft mit den verschiedensten Standards konfrontiert. Sehr häufig bekommen Entwickler eine Standardbeschreibung mit den Worten „so muss es funktionieren“.
Das Jahr 2009 war keine Ausnahme. Wie oft haben wir uns über manche Standards geärgert…

Was macht eigentlich den Unterschied zwischen einem GUTEN und SCHLECHTEN Standard?
Eine kleine Zusammenfassung…

1. Lass den Standard simple und dumm sein, wie es nur geht.
Zwei wichtige Parameter des Erfolgs sind die Komplexität des Standards und die Grösse des Teams, das an dem Standard arbeitet. Erfolgreiche Standards sind grundsätzlich simple, fokussiert und einfach zu lesen.

2. Daten zum Austauschen sind einfach zu verstehen und human readable.
Entwickler können nur das abbilden, was sie auch verstehen und einfach testen können. Das ist auch der Grund dafür, dass sich Standards wie HTTP, XML, HTML, usw. durchgesetzt haben. Jeder kann einfach die empfangenen/versendeten Daten im beliebigen Texteditor analysieren und verifizieren.

3. Standards funktionieren am besten, wenn sie fokussiert sind.
Standards scheitern oft daran, dass sie verschiedene komplexe Ziele verfolgen. Aller erfolgreiche Standards sind simple wie nur möglich. Wie umfangreich ist z.B. der XML Standard?

4. Standards haben eindeutige Kodierungen.
XML ist ein überschaubarer Standard abgesehen von den Textzeichen, Unicode. Benutzte Kodierungen sollte frei verfügbar sein, ohne besondere Lizenzen.

5. Standard sollte eine Beispiel-Implementierung anbieten.
Eine Referenzimplementierung bestätigt die praktische Tauglichkeit eines Standards.

6. Ausnahme- und Fehlerbehandlung sollten möglichst „weich“ sein.
Z.B. wenn im HTTP der Empfänger etwas nicht interpretieren kann, wird es einfach ignoriert. Die Bearbeitung bricht nicht ab!
Oder im HTML, wenn der Browser etwas nicht versteht, wird es einfach ignoriert.
Es gibt aber auch schlechte Beispiele, wie z.B. XML Schema.

7. Standard sollte jedem frei verfügbar sein.
Zum Beispiel auf einer Webseite. Fehlen sollten nicht Beispiele, die den Standard praktisch erklären.

Fazit:
Ein erfolgreicher Standard mit hoher Akzeptanz sollte einfach verständlich sein, mit einer Referenzimplementierung. Leider treffen wir im täglichen Geschäft an viele Standards, die nicht frei verfügbar sind und so geschrieben werden, damit sie den Autoren noch Einnahmen aus Beraterverträgen sichern. Die Armen, die diese Standards implementieren müssen…

Es gibt aber auch viele gute Standards, die sich sehr schnell verbreiten.

[/lang_de]

[lang_cs]

Ve světě EDI je člověk stále s nejrůznějšími standardy konfrontován. Velice často dostanou vývojáři znění nějakého standardu se slovy „tak to musí fungovat“.

Rok 2009 nebyl v tomto směru žádnou vyjímkou. Jak často jsme se museli se standardy rozčilovat…

Ale jaký je vlastně rozdíl mezi DOBRÝM a ŠPATNÝM standardem?

Moje malé zamyšlení…

1. Standard by měl být jednoduchý a hloupý, jak to jenom jde.

Dva důležité parametry úspěchu jsou složitost standardu a velikost týmu, který na definici standardu pracuje. Úspěšné standardy jsou zásadně jednoduché, jednoznačné a jednoduché ke čtení.

2. Data určená k elektronické výměně dat jsou srozumitelná a člověkem čitelná.

Vývojáři mohou pouze to zrealizovat, čemu rozumí a co můžou jednoduše otestovat. To je důvod pro to, proč se standardy jako HTTP, XML, HTML, atd. prosadili.

Každý může přijatá/odeslaná data v libovolném textovém editoru analyzovat a ověřit jejich správnost.

3. Standardy fungují nejlépe, když se soustředí na jeden cíl.

Standardy troskotají často na různých a komplikovaných cílech. Všechny úspěšné standardy jsou jednoduché jak jen možné. Jak jednoduchý je např. XML standard?

4. Standardy mají jednoznačné kódování.

XML je přehledný standard s vyjímkou textových znaků, unicode. Použitá kódování by měli volně dostupná, obzvláště bez komerčních licencí.

5. Standard by měl nabízet příklad implementace.

Referenční implementace dokazuje praktickou použitelnost standardu.

6. Zacházení s vyjímkami a chybami nesmí být příliš striktní.

např. Pokud HTTP příjemce nedokáže něco nemůže interpretovat, jednoduše to ignoruje.Zpracování každopádně není přerušeno!

Nebo v HTML, pokud browser něčemu nerozumí, tak to ignoruje.

Ale existují i negativní příklady, jako např. XML schema.

7. Standard by měl být volně dostupný.

Například na webovské stránce. Chybět by neměly ani příklady, které ten standard blíže vysvětlují.

Facit:

Úspěšný standard s vysokou akceptancí by měl být jenoduchý a srozumitelný, s referenční implementací. Bohužel se ve firmě potýkáme s mnoha standardy, které nejsou volně dostupné a jsou tak vypracované, aby si autoři zajistili příjem z poradenských smluv. Ti chudáci, kteří tyto standardy musí implementovat…

Existují ale i velice dobré standardy, které se velice rychle rozšiřují.

[/lang_cs]