Entwickeln von Linuxwerkzeugen für ein Optikergeschäft

ArticleCategory

Applications

AuthorImage

This is the author after being exposure to Linux

TranslationInfo

original in es Juan Pablo Rosas Durán
es to en Miguel Angel Sepúlveda
es to en Javier Palacios Bermejo

en to de Katja Socher

AboutTheAuthor

Zur Zeit ist er Systemmanager für "Optica LUX" in Mexico. Er hat seit seinem dritten Lebensjahr mit Computern zu tun, als er mit den Haufen von Lochkarten von der Arbeit seines Vaters spielte und Gamma10 Handbücher als Malbücher benutzte. Seine beruflichen Erfahrungen mit Linux wandelten ihn vollständig und seither versucht er, Open Source Lösungen (mit einigem Erfolg) überall anzuwenden. Momentan unterstützt er eine Initiative für die Entwicklung von GPLed Applikationen für Geschäfte: http://www.pochtecah.org.mx.
Er dankt LinuxFocus für die Möglichkeit, seine Linuxerfahrungen und Open Source Software zu teilen.

Abstract

Dieser Artikel diskutiert, wie eine mittelgroße Firma, die sich auf die Entwicklung und Produktion von Brillen spezialisiert hat, Linux und Open Source Software benutzt hat, um ihren Kundendienst zu verbessern.

ArticleIllustration

Óptica LUX

ArticleBody

Über Óptica LUX

Óptica LUX ist ein Unternehmen, das sich der Entwicklung und Produktion von kommerziellen Sonnenbrillen und verschriebenen Brillen verschrieben hat. Im März 2000 feierte die Firma ihren 85. Geburtstag und in den letzten acht Jahren hat sich die Zahl ihrer Einzelhandelsläden verdoppelt. Zur Zeit existieren 40 Einzelhandelsläden.

Seit ihren Anfängen hat Óptica LUX eine Politik garantierter Zufriedenheit für ihre Kunden unterstützt und das erfordert den großes Wissen über ihre Kunden, Kundenwünsche und die momentanen Brillengestaltungsvorlieben.

Es wird geschätzt, daß Óptica LUX Ende 1999 Informationen über hunderte ihrer Kunden besaß. Die meisten dieser Informationen bezüglich Statistiken und augenärtztlicher Daten waren auf alten Papierkarteikarten gespeichert. All diese Informationen waren in dieser Form nur von sehr begrenztem Nutzen.

Unser Problem bestand darin, eine Lösung zu finden, um diese Informationen so zu verwalten, daß sie unseren Kundendienst verbessern würden, ohne zu irgendwelchen Verzögerungen in dem bereitgestellten Dienst und seiner Qualität zu führen. All dies sollte ohne zusätzliche Kosten für das Endprodukt geschehen.


Typische Aktivitäten in einem Optikergeschäft

Bevor wir anfangen, ist es wichtig, die allgemeinen Schritte, denen ein typischer Kunde von Óptica LUX folgt, zu verstehen, um die Anforderungen für die später beschriebene Anwendung zu verstehen. Wenn ein Kunde zuerst in einen Laden kommt:

  1. werden allgemeine Informationen über den Kunden aufgenommen und gespeichert: Name, Adresse und Email.
  2. Der Kunde wird von einem Augenarzt untersucht, der verschiedene Tests und Messungen durchführt, unter ihnen Linsenmesungen, Brechung und Messung der Sehschärfe.
  3. Basierend auf diesen Tests wird der Kunde über die verfügbaren Technologien beraten, die seine/ihre Sehproblemen lösen.
  4. Der Kunde wählt die Technologie und das gewünschte Brillengestell.
  5. Der Kunde leistet eine Teil- oder Vollzahlung für die Arbeit, die an das Labor zur sofortigen Produktion und Lieferung weitergeleitet wird.


Zu unserer Fallstudie, wie ein typischer Kunde in einem Laden bedient wird, müssen wir die folgenden Betrachtungen hinzufügen, um die Dinge in den richtigen Kontext zu setzen, bevor wir die Anwendung schreiben:



Die obige Analyse macht deutlich, daß das benötigte Werkzeug, um unsere Kunden zu unterstützen sehr einzigartig und spezialisiert sein muß.


Erfolglose Suche

Von 1990 an haben wir verschiedene proprietäre Systeme, die für den Optikereinzelhandel spezialisiert waren, studiert und getestet, aber keines von ihnen erfüllte wirklich alle oben beschriebenen Anforderungen zufriedenstellend. Eine dieser kommerziellen Lösungen einzuführen, hätte erfordert, die Art,wie Óptica LUX mit seinen Kunden interagiert und ihre Informationen verwaltet, drastisch zu verändern, es hätte bedeutet, doppelt soviel für diese Veränderungen zu zahlen, als der Wert der Software gewesen wäre. Proprietäre Software hat auch noch den zusätzlichen Nachteil, uns von einer dritten Partei, dem Softwareanbieter, abhängig zu machen.

1995 haben wir zum ersten Mal in Betracht gezogen, eine Inhouse-Lösung hausgeschneidert für die Bedürfnisse von Óptica LUX, zu entwickeln. Bei der Abschätzung der Kosten für das Lizensieren der Plattform und Werkzeuge (SCO Unix und Informix) jedoch ergab sich, daß sie äquivalent mit den Kosten für die Eröffnung eines neuen Einzelhandelsladens! einschließlich Installation, augenärtztlicher Ausrüstung und Handelswaren waren!!

Es wurde dann entschieden, daß wir versuchen würden, nach einer durchführbaren Lösung zu schauen, die kein riesiges Investment in Lizenzen erfordern würde. Die Plattformen, die unsere größte Aufmerksamkeit erhielten, waren Coherent, Qnx und Linux.

Wir versuchten, mit coherent Kontakt aufzunehmen, doch hatten sie inzwischen aufgehört, zu existieren.

Qnx hatte ein Büro in Mexico (in der Stadt Monterrey N.L.). Jedoch beschränkte sich ihre Antwort auf das Schicken ihrer Werbebroschüren.


Entdeckung von Linux

Wir lernten Linux dank eines Artkels mit dem Titel ``Linux una propuesta indecorosa'' (Linux, ein unanständiger Vorschlag), geschrieben von Fernando Magariños (besser bekannt in den Mailinglisten als ``Mancha de la Calabaza que ladra'') kennen. Wir schickten ihm eine Email, die von Miguel de Icaza persönlich beantwortet wurde (ich bezweifle, daß er sich jetzt noch daran erinnert). Er erklärte uns seine Sicht der Dinge, was uns umsomehr in unserem Interesse an Linux bestärkte.

Zuerst wurde Linux für uns hauptsächlich als eine abgabenfreie Plattform interessant. Jedoch wurden seine darunterliegenden Prinzipien, seine Dynamik und der Geist seiner Gemeinde auch sehr wichtige Faktoren.

Die technische Unterstützung, die man für Linux durch Mailinglisten bekommt, ist sehr viel effektiver als die seiner kommerziellen Konkurrenten. Linux ist eine stabile Plattform, die ständig besser wird und hat ein großes Angebot an verfügbaren Anwendungen.

Ein weiterer Faktor ist, daß Informationen über Linux und freie Software viel zugänglicher sind, als solche über proprietäre Konkurrenten, es ist dadurch sehr einfach, sich selbst in der Benutzung von Linux oder seinen Anwendungen zu schulen.

Zur Zeit wird Linux bei Óptica LUX nicht nur in den Läden, sondern auch im Hauptbüro benutzt, besonders auf der Serverseite, um Dateien und Drucker zu teilen und Daten zu speichern und Anwendungen auszuführen, die für andere Unixrechner entwickelt wurden.

Wir benutzen Linux auch, um die grundlegende Kommunikationsinfrastruktur unseres Unternehmens zu unterstützen, wie einen PPP Server, einen Webserver, Email und ftp (unser kleines "Intranet") und auch für die Steuerung und Fragmentierung unseres Netzwerkverkehrs.

Zuletzt haben wir damit begonnen, Linux als eine Desktopplattform für Endbenutzer zu benutzen, aber das ist eine Geschichte für ein anderes Mal :-).


Erste Fehler beim Einführen von Linux

Die ersten Schritte sind niemals leicht und im Fall Óptica LUX war es nicht, das Problem das ausführende Management von der technischen Überlegenheit von Linux als Plattform zu überzeugen, sondern ihnen bewußt zu machen, daß die Kosten, die mit dem Entwickeln eines neuen Systems verbunden sind, besonders einem hoch spezialisierten, sehr hoch sind und das es kein schneller Prozeß ist.

Wir baten sieben Firmen oder Gruppen, uns Vorschläge für das Entwickeln einer auf Linux basierenden Lösung einzureichen, aber ihre Angebote übertrafen bei weitem die Ausgaben für proprietäre Systeme, wie wir sie oben diskutiert haben.

Als nächstes versuchten wir, Entwickler zu rekrutieren, um eine Inhouse-Lösung zu entwickeln. Leider gab es immer noch nur sehr wenige Leute, die auf dieser Plattform wirklich gut waren und der Preis von denen, die verfügbar waren, lag verständlicherweise weit über dem durchschnittlichen Marktpreis.

Heute ist es akzeptiert, daß die Entwicklung von auf Open Source basierenden Lösungen teurer sein kann als proprietäre Systeme, aber die Ergebnisse zufriedenstellender sind. Auf jeden Fall können die Ersparnissse an Lizenzkosten benutzt werden, um die erforderlichen Entwicklungskosten der Anwendung zu zahlen.


Entwicklungsprozeß

Mitte 1999 engagierten wir eine Consultinggruppe, um ein Werkzeug für die Verwaltung unserer Kundendaten basierend auf Linux und der GNU Software zu entwickeln.

Die Entwicklung wurde in einer Reihe von kleinsten Schritten durchgeführt. Eine erste Analyse des Problems ergab:

  1. ein detailliertes Design einer Datenbank
  2. Anwendungsfälle für unsere Applikation
  3. Benutzerschnittstellen


Basierend auf dieser ersten Analyse entwickelte die Gruppe einen ersten Prototyp, der dann von unseren Expertenaugenärzten getestet wurde. Die Benutzer lieferten interessantes Feedback, das zu Modifikationen in den Anforderungen und zu einem zweiten Prototyp führten. Wir durchliefen einige Verfeinerungszyklen bis wir zu einem zufriedenstellenden Produkt gelangten.

Die Features der Werkzeuge, die bei der Entwicklung benutzt wurden, erlaubten uns, durch erneutes Benutzen und Perfektionieren der Komponenten der Anwendung den Entwicklungsprozeß zu beschleunigen.

Die benutzen Werkzeuge können in zwei Gruppen eingeteilt werden: diejenigen, die während der Analyse, dem Design und der Dokumentation benutzt werden und denjenigen, die während der Entwicklung der Anwendung benutzt wurden.


Analyse-, Design- und Dokumentationswerkzeuge

Xfig  (http://www.xfig.org/)
Werkzeug zum Zeichnen allgemeiner Diagramme
Dia  (http://www.lysator.liu.se/~alla/dia)
Werkzeug, um UML Diagramme zu zeichnen
VisualTCL  (http://www.neuron.com/stewart/vtcl)
GUI Prototyenwerkzeug
LYX  (http://www.lyx.org/)
Wordprocessor, benutzt, um die Spezifikationen des Datenbankssystems zu schreiben
StarOffice  (http://www.sun.com/staroffice)
Wordprocessor, um das Benutzerhandbuch zu schreiben.

Entwicklungswerkzeuge

PostgreSQL  (http://www.postgresql.org/)
Datenbank. Gewählt wegen seiner Flexibilität, seiner Mächtigkeit und seiner Fähigkeit, große Volumina von Daten zu verwalten.
Perl  (http://www.perl.com/)
Sprachbasis für die Entwicklung der Applikation. Gewählt wegen seiner Mächtigkeit, seiner Ausdrucksstärke und der Leichtigkeit, für einen relativ geschulten Benutzer, sie zu lernen.
 Tk  Module (http://www.cpan.org/modules/by_module/Tk/tk_modlist.html)
PERL-funktionen für die GUI-entwicklung. pTk ist leicht zu programmieren und bietet einen großen Bereich an widgets.
 DBI  Module (http://www.fugue.com/dbi)
PERL Funktionen für die Verwaltung der SQL Databanken. High level Funktionen, die einen großen Betrag an Entwicklungszeit sparen.
 DBD::Pg  Module (http://www.bawue.de/~mergl/mergl_DBD_Pg.html)
ein spezieller DBI Treiber für postgreSQL.
Emacs  (http://www.emacs.org/)
Entwicklungsumgebung, die für das Schreiben, Testen und Debuggen unserer Applikationen benutzt wurde.
CVS  (http://www.gnu.org/software/cvs/cvs.html)
Archivierungssystem, benutzt um den Code, die Prototypen und die Unterprototypen zu pflegen. Vieles an Verfolgungsaufwand der verschiedenen Revisionen der Anwendung wäre ohne es nicht möglich gewesen.

Schließlich unsere Applikation

Es ist schwierig, ein so hochspezialisiertes und komplexes Werkzeug kurz zu beschreiben. Das Skript, das die Datenbank erstellt, hat über 1000 Zeilen SQLcode und die Anwendung selbst über 15 000 Zeilen von Perl. Deshalb werden wir nur die relevantesten Features erwähnen.


Die Bentuzeroberfläche

Das wichtigste Feature dieser Anwendung ist die Benutzeroberfläche. Um die Benutzbarkeit der Oberfläche zu erleichtern, wurde entschieden, eine sehr einfache und flache Oberfläche zu entwickeln. Die Expertenaugenärzte sollen sich, bei gegebener Erfahrung mit anderer optischer Ausrüstung, angenehm und vertraut damit fühlen, .

Die verschiedenen Elemente der Oberfläche sind in Feldern gruppiert und folgen der Einteilung eines Notizbuches (siehe die folgende Abbildung). Die grafische Oberfläche erfordert vom Benutzer nicht, die Maus zum Eingeben von Daten zu benutzen. Es gibt angenehme Tastaturkürzel, die so angeordnet sind, daß auf jedes Feld im GUI zugegriffen werden kann.

Die Felder in der Anwendung sind wie folgt:

Allgemeine Daten
enthält den Namen des Kunden, seine Adresse und Email.
Ursprüngliche Verschreibung
Informationen, die die ursprüngliche Verschreibung, die der Kunde benutzte, als er zum ersten Mal in den Laden kam, betreffen.
Optische Aufzeichnungen
Es beherbergt Daten über den Zustand der Augen, generelle Gesundheit und Aktivitäten und alles, was man über die Sehprobleme festhalten könnte.
Untersuchungen
mit den Ergebnissen der Überprüfungen und den augenärztlichen Messungen von den Kunden
Kontaktlinsen
Es ist ein ganzes Modul innerhalb der Anwendung. Unterfelder werden benutzt, um die notwendigen Berechnungen durchzuführen, um die besten Kontaktlinsen für jeden Kunden zu erreichen.
Rezepte
die neusten Spezifikationen für die Brille. Hiernach wird Arbeitsauftrag zum Labor verschickt wird.
Geschichte
wo man nach alten Tests und bisherigen Verkäufen an den Kunden suchen kann.
Verkäufe
die Verbindung mit dem Verkaufsmodul, wo die Rechnung erstellt wird und wo die Arbeitsaufträge für jeden Kunden verwaltet werden.


Hiernach werden die wichtigsten Aspekte, die mit diesen Datengruppen zusammenhängen, diskutiert.


Allgemeine Daten

Der stärkste Punkt der Felder ist, wie leicht es ist, nach Daten zu suchen (und sie zu finden). Zum Beispiel kann man den Teil eines Stadtteilsnamens eingeben, eine Stadt von der Liste auswählen und die Anwendung liefert dir eine Liste der Postleitzahlen, die beide Kriterien erfüllen.

t_dat_grales.png
klick auf das Bild, um eine detailliertere Ansicht zu erhalten

Anstelle des Stadtteils kannst du die Ortschaft eingeben oder beide Namen. In diesem Fall liefert das System eine speziellere Liste.

Die Postleitzahlen, der Stadtteil, Ortschaft und Städte vom ganzen Land sind in der Datenbank mit über 60 000 Einträgen gespeichert. Die längste Suche benötigt nicht länger als 3 Sekunden, um sie durchzuführen und die Postleitzahlen darzustellen.

Die Suchfunktionen sind überall in der Applikation verfügbar. Wenn ein Benutzer eine Person namens "Juan" finden will, dessen Familienname "Perez" oder "Penas" sein könnte, dann schreibt er "Pe" in das Nachnamefeld und "Juan" in das Vornamefeld und nach dem Drücken des "Such"knopfes (oder dem Tastaturkürzel Ctrl-B) liefert ihm das System eine Liste, die jeden Kunden aufführt, der das Kriterium erfüllt.


Bearbeitung von Kundendaten

Von überall innerhalb der Applikation bekommt man durch einfaches Drücken von Ctrl-A ein Fenster mit allen in diesem Moment teilnehmenden Kunden, das es erlaubt, sie mit ihrem Namen zu identifizieren und auf alle ihre Daten zuzugreifen.

t_clientes_proceso.png
klick auf das Bild, um eine detailliertere Ansicht zu erhalten


Optische Aufzeichnungen

Dies war mit einer der schwierigsten Felder, die zu entwickeln waren, da es große Änderungen in den pTk widget Quellen implizierte, besonders für den Rahmen "Transparente und externe mittlere Besprechungen".

t_antecedentes.png
klick auf das Bild, um eine detailliertere Ansicht zu erhalten

Innerhalb dieses Frames ist der Benutzer in der Lage, jede verfügbare Überprüfung auszuwählen, die begleitet durch eine Liste mit allen möglichen Anomalien für jedes Auge angezeigt wird.

t_antece2.png
klick auf das Bild, um eine detailliertere Ansicht zu erhalten

Sobald der Augenarzt den "check Knopf" drückt, erscheint ein Kreuz neben dem Label der gewählten Überprüfung. Kennt jemand einen einfachen Weg, das z.B. mit VB zu machen?.


Untersuchungen

In dem Untersuchungsfeld wird eine eher komplexe Menge von Validierungen durchgeführt. Wenn der Augenarzt die Messungen der Instrumente niederschreibt und über die korrekte Einstellung für den Kunden entscheidet, dann überprüft das System die Korrektheit der Verhältnisse zwischen verschiedenen Daten und warnt den Benutzer, wenn eine Bedingung nicht erfüllt ist.

t_examen.png
klick auf das Bild, um eine detailliertere Ansicht zu erhalten


Kontaktlinsen

Dies ist das Juwel der Applikation! Dieses Stück Code war eines, das größere Anstrengungn bedurfte und die meisten Diskussionen innerhalb des Entwicklerteams auslöste. Die meisten Leute, die Kontaktlinsen tragen, können sich die Komplexität des höchst erstaunlichen Dings, daß sie in ihren Augen tragen, nicht vorstellen.

Kontaktlinsen sind wie Schuhe. Genauso wie es keine zwei gleichen Füße auf der Welt gibt, gibt es kein Augenpaar mit denselben Sehproblemen.

Die Applikation wurde entwickelt, um dem Augenarzt zu helfen, den besten Typ von Kontaktlinsen für jeden Kunden auszuwählen. Es ist unmöglich für die Applikation, automatisch über die korrekte Einstellung zu entscheiden, weil es so viele nicht meßbare Bedingungen gibt, die in Betracht gezogen werden müssen (z.B. die, die in dem Feld mit optischen Aufzeichnungen gezeigt sind).Jedoch ist das Modul sehr nützlich, um die Auswirkung vieler Faktoren auf die Sehschärfe jedes Auges zu beurteilen.

t_calculo1_lc.png
klick auf das Bild, um eine detailliertere Ansicht zu erhalten

Zum Beispiel für wulstartige Kontaktlinsen gibt die Applikation dem Augenarzt einen Weg, verschiedene Korrekturen für die Abweichung der Kontaktlinsenache (die untere rechte Ecke in der vorherigen Abbildung) zu probieren. Wie vorher schon gesagt, ist jedes Auge einzigartig und die Kontaktlinsen leiden unter kleinsten Abweichungen, um die corneaform zu beherbergen, was die endgültige wirksame Einstellung des Auges verändert.


Datenbankduplikation mit verschlüsselter Email

Es gibt andere Teile der Applikation, die wegen ihrer einzigartigen Charakteristiken erwähnt werden müssen. Eine von ihnen ist der Mechanismus, Datenbanken über das Interent zu duplizieren. Wir suchten nach einer sicheren Übertragung der Daten von jedem Optikergeschäft zur zentralen Datenspeicherung in unserem Hauptbüro.

Dieser Mechanismus wurde durch Benutzen verfügbarer Module von jeder CPAN Mirrorseite und einigem Code, der für den Datenbank PostgreSQL geschrieben wurde, wie in de Abbildung unten gezeigt, implementiert.

t_duplicacion.png
klick auf das Bild, um eine detailliertere Ansicht zu erhalten

Tatsächlich enthält diese Entwicklung so viele interessante Aspekte, daß wir hoffen, einen weiteren zukünftigen LinuxFocusartikel darüber schreiben zu können. Wenn die Editoren uns diese Möglichkeit geben :-)


Leichte Computer

Der letzte zu erwähnende Punkt ist die Benutzung von leichten, kleinen Computern. Wie in der Einführung gesagt, war eine der Anforderungen, Computer mit der kleinstmöglichen Größe zu benutzen. Deswegen war eine wichtige Aufgabe, zu studieren, ob gebrauchte 486, slim und ultra-slim Rechner und Netzwerkrechner die beste Wahl wären.

Die brauchbarsten Alternativen waren:

Ultra-slim Rechner
Sie wurden mit einer Linuxdistribution, die sich auf einer Diskette (ein minimales komprimiertes Kernelbild) mit der grundlegenden Netzwerkkonfiguration und einem vnc Client basierend auf svgalib, getestet. Diese Bootdiskette wandelt einen 486 (und neueren) Rechner in grafsche Workstations um, die mit nur 8Mb und ohne erforderliche Festplatte laufen.
Netzwerkcomputer
Weder Festplatte noch Diskettenlaufwerk, mit remote boot unter Benutzung von DHCP und basierend auf PowerPC CPUs. Obwohl die Linuxunterstützung für diesen Prozessor zu der Zeit, zu der die Diskussion stattfand, noch in der Entwicklung befand, war ein Kernelbild via ftp verfügbar (wie im NetStations HOW-TO gesagt).

Da der kritische Punkt der physikalische Platz war, wählten wir Netzwerkcomputer mit 9'' SVGA Bildschirmen, da ihre Größe(19.05x26.67x3.18 cm) es erlaubt, sie irgendwo im Laden aufzustellen.

Die Erfahrungen mit leichten, kleinen Computern hat viele interessante Aspekte, über die wir in einem zukünftigen LinuxFocusartikel schreiben werden.


Dank, wem Dank gehört

Wir wollen den Artikel nicht beenden, ohne eine angemessene Anerkennung an die Leute, deren Kreativität und Anstrengungen es ermöglicht haben, die gesamte Applikation auf Linux basieren zu lassen:

Citlali Calderón de Anda: citlali@galois.fciencias.unam.mx
Liliana Araceli Cabello: liliana@galois.fciencias.unam.mx
Juan José Alba
Edgar Raúl Acosta Villaseñor: edgar@galois.fciencias.unam.mx
Gunnar Wolf: gwolf@chmd.edu.mx
Roberto Andrade Fonseca: randrade@abl.com.mx

Wir glauben, daß ein Teil des Codes allgemein interessant sein könnte, wie die Änderungen in den pTk widgets, die verschlüsselt verschickten Emails unter Benutzung von Perl, und die Programme zum Duplizieren und Synchronisieren der PostgreSQL Datenbanken sowie die floppy Bilder für graphische Bootdisketten. Alles wird in Zukunft unter http://www.pochtecah.org.mx/ABL_GNU.html zu finden sein.