 |
- "Communication Engine":
Online-Vernetzung von Rechnern und Datenbanken
diverse Kommunikationsprotokolle
spezielle Einsatzgebiete:
Zellenleitrechner in der automatisierten Fertigung, Anlagensteuerung
-
Konfiguration à la Carte:
Produkt- und Auftragskonfiguration für
Variantenfertiger
-
Klassen- und Funktionsbibliotheken:
Unser bewährtes Konzept für
effiziente und sichere Software-Entwicklung mit wiederverwendbaren Komponenten
-
Regel- und Befehlssprachen:
Definition und Implementierung von Regel-
und Befehlssprachen als flexibles Instrument zur Interaktion verschiedener Systeme sowohl untereinander
als auch mit den Bedienern
-
Mitwirkung in Software-Projekten:
Wir bringen unsere Erfahrung
in Ihre Projekte ein
Unterstützung in allen Phasen, von der Konzeption bis zur Wartung
Hilfe auch in kritischen Phasen und Engpässen
Unser stärkstes Angebot: Coaching.
|
Die "Communication Engine" ist aus diversen Projekten der Fertigungsautomatisierung, speziell
in der Automobilbranche, entstanden.
In der automatisierten Fertigung
ist es von entscheidender Bedeutung, für den Datentransport von und
zu den Fertigungsanlagen leistungsfähige Lösungen zu finden. Aus der
Erfahrung mehrerer einschlägiger Projekte haben wir einen flexiblen
Kommunikationsserver entwickelt, der diverse Datenübertragungsprotokolle
mit hoher Performance abwickeln kann.
Im Zusammenspiel mit einer Datenbank ist dieser Server in der Lage,
einerseits auftragsspezifische Daten für einen Arbeitsgang vorzubereiten
und bei Bedarf bereitzustellen, andererseits Rückmeldungen der Anlage
(z.B. für Zwecke der Qualitätssicherung) zu speichern. Mit einem
zusätzlichen Dialogsystem werden Steuerungs- und Überwachungsfunktionen ermöglicht,
so dass sich eine maßgeschneiderte Leitrechner- bzw.
Leitstandskonfiguration ergibt.
Die "Communication Engine" besteht aus einem Gerüst von C++-Klassen. Dieses beinhaltet:
- Die Grundfunktionen eines Kommunikationsservers:
- ständige Empfangsbereitschaft auf einem oder mehreren Kommunikationskanälen (passiver Server)
- aktive Abfrage eines oder mehrerer Kommunikationskanäle in vorgegebenen Zeitintervallen
(aktiver Server)
- Verbindung zur Datenbank
- Bereitstellung von Logfile- und Statistikfunktionen
- Überwachung von Kommunikationskanälen, Alarm bei Ausfällen oder Störungen
- Die Basisklasse "Port", die eine Kommunikationsverbindung repräsentiert:
- Ein Kommunikationsserver bedient einen oder mehrere, gleiche oder verschiedene Ports.
- Ports beinhalten die Details spezieller Kommunikationskanäle. Standard-Ports für
gängige Kommunikationskanäle (z.B. serielle Schnittstelle, TCP/IP-Socket) liegen uns als
Bibliotheken vor, weitere Ports können wir durch Ableitung von bestehenden Klassen
schnell und effizient entwickeln.
- Auch spezielle Anschlüsse werden als "Ports" in die "Communication Engine" integriert,
z.B. Datenbanken (ODBC-Port), User Interface u.a.
- Die Basisklasse "Datagramm", die eine kommunizierte Nachricht repräsentiert:
- In Ableitungen dieser Klasse werden die Inhalte der Nachrichten behandelt.
- Parameter der Nachricht werden interpretiert, gespeichert, weitergeleitet.
- Eine Beantwortung (Quittung) kann durch Methoden eines Datagramm-Objektes automatisch
erzeugt und wieder an die "Communication Engine" zurückgeleitet werden.
Weiterführende Informationen zum Thema "Communication Engine"
erhalten Sie über unser Download:
comm_eng.zip (gezipptes Word-Dokument: 165 kByte)
Für Variantenfertiger haben wir ein modular aufgebautes Software-System für
die Konfiguration von Produkten bzw. Aufträgen entwickelt.
Das Herzstück dieses Systems ist eine Produktdatenbank, die alle Teile und Komponenten sowie die Beziehungen
untereinander enthält.
Die Produkt-Konfiguration geht so vor sich, dass der Bediener das Produkt aus den in der Datenbank
gespeicherten Teilen und Komponenten sukzessive aufbaut. Es entsteht der
sogenannte Konfigurationsbaum.
Das System stellt sicher, dass der Bediener nur zulässige Kombinationen von Teilen auswählt.
Aus dem zentral vorliegenden Konfigurationsbaum werden diverse Datensichten bzw. Darstellungen
abgeleitet, z.B.
- Angebotstexte,
- Stücklisten zur Übernahme in das PPS-System,
- Kosten- und Preiskalkulationen,
- Fertigungsaufträge,
- technische Zeichnungen für die Fertigung und/oder für den Kunden,
- Versandlisten, Platzbedarf, Gewichtsberechnungen,
- u.v.a.m.
Ein interessanter und wichtiger Aspekt unseres Systems ist, dass verschiedene Abteilungen auf der Basis der gleichen Konfiguration
ihre jeweiligen Aufgaben erfüllen können, z.B. ist folgendes Szenario denkbar:
|
Der Vertriebsmitarbeiter im Aussendienst erstellt mit dem Kunden eine Konfiguration und sendet sie
auf elektronischem Weg in die Angebotsabteilung. Hier werden technische Details ergänzt, eine
Preiskalkulation durchgeführt und ein Angebot erstellt. Nachdem der Kunde den Auftrag erteilt hat,
wird die Konfiguration um weitere für die Auftragsbearbeitung wichtige Details ergänzt,
und es werden Daten für
das PPS-System, für die Fertigung und den Versand erzeugt. Die Konfiguration wird archiviert und
stellt die Grundlage für spätere Wartungs- und Servicemaßnahmen dar. |
Damit das Zusammenspiel der verschiedenen beteiligten Abteilungen funktioniert,
wird mit Rollen
und Detaillierungsgraden gearbeitet:
- Rollen definieren, auf welche der Daten in der Konfiguration ein Bearbeiter lesend und/oder
schreibend zugreifen kann. Jeder Bearbeiter sieht nur "seinen Teil" der Konfiguration.
- Mit Detaillierungsgraden wird festgelegt, bis zu welchem Detail ein Bearbeiter eine
Konfiguration festlegen oder ändern darf. Es gilt: Je höher der Detaillierungsgrad
- desto mehr Teile aus der Datenbank können gewählt werden,
- desto mehr Eigenschaften der Konfiguration können manuell geändert werden,
- desto vielfältiger sind die Möglichkeiten der Bearbeitung,
- desto geringer ist aber auch die Unterstützung des Systems bei der Erzeugung "richtiger"
Konfigurationen.
Der Vertriebspartner (oder sogar der Kunde selbst) erstellt Konfigurationen mit niedrigem
Detaillierungsgrad. Diese sind, durch die Unterstützung des Systems, auf jeden Fall richtig. Etwaige Sonderwünsche werden von
einem Bearbeiter mit höherem Detaillierungsgrad nachgetragen. Dieser hat die entsprechenden
Fachkenntnisse, um entscheiden zu können, welche Abweichungen vom Standard möglich sind,
und hat Kontakt zu den Fachabteilungen, um abklären zu können, wie sich Änderungen
z.B. auf den Fertigungsprozess sowie auf Kosten und Preise auswirken.
Softwaretechnisch besteht das System aus folgenden Hauptmodulen:
- Flexibles Objektmodell zur Darstellung des Konfigurationsbaumes (Objekte der speziellen
Anwendung werden aus generischen Objekten abgeleitet),
- Datenbank-Interface zum Zugriff auf die Produkt-Datenbank,
- Universelle File-Schnittstelle,
- User-Interface zur Teile-Auswahl, Baumdarstellung der Konfiguration mit Navigations- und Bearbeitungsfunktionen
- optional: Regelinterpreter: Vorgaben und Einschränkungen werden vom Administrator als Regeln formuliert und bei der Bearbeitung automatisch berücksichtigt.
Mit dieser Erweiterung können auch komplexe Abhängigkeiten zwischen Teilen und Komponenten
beschrieben werden.
- optional: 2-D-Schemadarstellung zur graphisch-interaktiven Konfiguration
Anwendungsgebiete
u.a.: Geräte- und Anlagenbau, (Spezial-)Fahrzeugbau, Produkte mit
"Baukastensystem", Türen und Fenster, Einbaumöbel, Erstellung und Verwaltung von Rezepturen
Weiterführende Informationen zum Thema "Konfiguration à la Carte"
erhalten Sie über unser
Download:
konfig.zip (gezipptes Word-Dokument: 90 kByte)
Klassen- und Funktionsbibliotheken stellen das "Herzstück" der À la Carte
Software-Philosophie dar.
In jedem Projekt identifizieren wir allgemeingültige Lösungen und bereiten den zugehörigen Programmcode so auf,
dass er in folgenden Projekten mit ähnlichen Aufgabenstellungen wiederverwendet werden kann.
Wenn in einem neuen Projekt weitergehende Anforderungen bestehen, so nutzen wir die Gelegenheit,
unsere Bibliotheken zu erweitern und zu verbessern.
So können wir aus einem wachsenden Vorrat von bestehenden, ausführlich geprüften und deshalb sehr
verlässlichen Bibliotheksklassen und -funktionen wählen und erreichen damit, dass unsere Produktivität
ständig wächst. Die Erfahrung lehrt, dass Projektlaufzeiten vor allem dadurch deutlich reduziert werden,
dass grundlegende Funktionen wiederholt getestet wurden und somit garantiert fehlerfrei sind.
Wenn wir für Sie Software entwickeln, setzen wir automatisch unsere Bibliotheken ein und liefern sie
im Quellcode mit aus. Aber auch wenn Ihr Team Software selbst entwickeln will, können wir unsere
Bibliotheken zur Verfügung stellen. Fragen Sie uns!
Noch ein Aspekt: Wir überarbeiten unsere Bibliotheken laufend, um die Funktionen noch besser,
effizienter und flexibler zu gestalten. Die Schnittstellen zur Anwendung werden selbstverständlich
kompatibel gehalten. So können heute entwickelte Anwendungen von Verbesserungen in der Zukunft
profitieren.
Im Folgenden finden Sie eine Auswahl der Themenbereiche, die von unseren Bibliotheken abgedeckt werden:
Basics
- Strings mit zahlreichen Operatoren zur einfachen und dennoch 100% sicheren Behandlung von
Zeichenreihen. Schluss mit "strcmp", "strcpy" etc.
- Listen beliebiger Objekte, implementiert als Arrays oder verkettete Listen; wenn mal
mehr Objekte gespeichert werden sollen als ursprünglich erwartet, erweitern sich die Listen
selbständig und ohne dass im Anwendungscode ein zusätzliches Statement erforderlich wird.
- Zeit- und Datumsfunktionen
- Fehlerbehandlung: Jeder, der bestrebt ist, gute Software zu entwickeln, weiss, wie viel
Arbeit es macht, eine vernünftige Fehlerbehandlung und adäquate Fehlermeldungen zu bekommen.
Wir besitzen ein mächtiges Konzept und Klassen, mit denen alle Anforderungen einfach und dennoch
flexibel erfüllt werden.
Analyse und Ausführung von Programm- und Steuersprachen
- Abstrakte Syntax für Ausdrücke und Anweisungen - das Kernstück für jeden Interpreter: Die konkrete
Sprache kann individuell nach den Anforderungen eines Projektes definiert werden. Aber was am meisten Arbeit macht,
die interne Darstellung von Ausdrücken und Anweisungen, ist
bei uns schon fertig. Darum sind wir so leistungsfähig bei der Entwicklung von
regelbasierten Systemen und bei der Implementierung von Protokollen und Steuerbefehlen.
- Eine allgemeingültige Symboltabelle: Wenn in einer Sprache symbolische Bezeichner
vorkommen, greifen wir auf diese allgemeingültige Klasse zurück. Was ohne Hilfsmittel ein
Projekt von Wochen ist, schaffen wir in wenigen Stunden.
Generische Objekte
Unsere generischen Objekte bringen folgende Fähigkeiten bereits mit:
- Aufnahme von beliebig vielen Attributen diverser, auch komplexer Datentypen,
- Bildung von baumartigen Strukturen (s. Produkt-Konfiguration),
- Speichern in Files, Wiedereinlesen von Files,
- Speichern in einer Datenbank, Restaurieren aus einer Datenbank.
Die Anwendung leitet konkrete Objekte von den generischen Objekten ab und kümmert sich um
die wichtigen Aspekte. Die oben genannten Basisfunktionen bringen die Objekte bereits mit.
Die "Communication Engine"
Die "Communication Engine" ist derzeit unsere mächtigste
Bibliotheksklasse. Auch für diese Klasse gilt: sofort einsetzbar und nahezu beliebig
erweiterbar.
Wir bringen profundes Knowhow in Scanner- und Parsertechnologie (insb. Generatoren), eine
bewährte Klassenbibliothek und jede Menge Erfahrung aus diversen Projekten mit.
Damit qualifizieren wir uns für die Entwicklung von Regel-Interpretern, für Protokoll-Implementierungen
und für die Analyse beliebiger Datenformate.
Egal, ob Sie Ihr eigenes Format definieren wollen oder ein vorgegebenes Format lesen müssen:
mit unseren Hilfsmitteln können wir eine perfekte Lösung zu günstigen Konditionen liefern.
Haben Sie Kapazitätsengpässe in Ihrer Software-Entwicklung? Fehlt bestimmtes Knowhow in Ihrem Projektteam?
Wir helfen gerne - durch Übernahme von Teilaufträgen oder durch Mitarbeit vor Ort.
Unsere große Stärke sind kurzfristige Einsätze: Wir helfen, wenn es brennt, unterstützen Sie mit unserem Knowhow
und unseren Software-Bibliotheken. Wenn wieder alles im grünen Bereich ist, ziehen wir uns zurück, stehen aber
nach wie vor als Ansprechpartner zur Verfügung.
Unser Leistungsprofil als Download:
profil.zip (gezipptes Word-Dokument: 15 kByte)
Stellen Sie sich vor, Ihr Entwicklungsteam beginnt ein neues Projekt, und es stehen Aufgaben an, für die noch
kein profundes Knowhow vorliegt.
Was können Sie tun?
- Das Projektteam aufwendig schulen lassen. Das kostet Zeit und Geld, und trotzdem ist nicht gewährleistet,
dass die Umsetzung des theoretisch Gelernten in der Praxis reibungslos funktioniert.
- Das Projekt mit der Parole "wird schon gutgehen" erstmal beginnen. Doch dann müssen Sie damit rechnen,
dass die Schwierigkeiten im unglücklichsten Moment auftreten oder dass die erreichte Lösung nicht optimal
ausfällt.
Wir bieten den idealen Mittelweg: Wir stellen einen Mitarbeiter mit perfektem Knowhow als Coach. Dies
bedeutet:
- Der Coach arbeitet produktiv im Projekt mit. Er kann dafür sorgen, dass schon von der Konzeption her der
richtige Weg beschritten wird. Er garantiert für tragfähige Lösungen und sorgt dafür, dass unnötige Schwierigkeiten
gar nicht erst auftreten.
- Der Coach vermittelt sein Knowhow an Ihr Projektteam, und zwar sowohl theoretische Grundlagen als auch Tipps aus der Praxis;
Hilfe zur Selbsthilfe, damit die Projektmitarbeiter in Zukunft den Aufgabenbereich selbständig beherrschen.
Der Einsatz eines Coach rechnet sich: Sie gewinnen durch die Mitarbeit des Coach
und durch die gesteigerte Produktivität der gecoachten Mitarbeiter mehr, als Coaching
kostet. Schildern Sie uns Ihre Situation, und wir zeigen Ihnen,
wie Sie kostengünstig weiterkommen.