IntarS

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche
IntarS
Entwickler IntarS Unternehmenssoftware GmbH
und freie Entwickler
Aktuelle Version 6.1
Betriebssystem Server: Linux
Client: Firefox, Chrome, Safari
Kategorie Unternehmenssoftware
Lizenz GPL
Deutschsprachig ja
www.intars.de
Screenshot

IntarS ist eine komplett freie (unter der GNU GPL) Unternehmenssoftware (ERP, PPS, Warenwirtschaft) mit Webbrowser-Oberfläche für kleinere bis mittlere Handel-, Fertigungs- und Dienstleistungsunternehmen.

IntarS ist ein kommerzielles Open Source ERP System. Treibende Kraft hinter der Weiterentwicklung sind die IntarS Unternehmenssoftware GmbH und die nach einer Schulung zertifizierten IntarS-Partner. Sie bieten kostenpflichtige Professional Services an und betreuen die Community auf SourceForge. Es gibt jedoch keine Unterscheidung zwischen Community- und Professional-Version, der Source ist tagesaktuell identisch.

IntarS richtet sich vor allem an Unternehmen, die individuelle Anforderungen haben und eine in die Jahre gekommene selbstgestrickte Individuallösung (meist auf dBASE oder Access) ablösen wollen.

Geschichte[Bearbeiten]

Die Anfänge von IntarS reichen zurück bis 1996. Für ein datenbankorientiertes Kundenprojekt in ObjectiveC auf OPENSTEP mit häufig wechselnden Anforderungen entwickelte Pirmin Braun ein Modellierungswerkzeug, aus dem die IntarS Workbench entstand. In mehreren Folgeprojekten im Bankensektor und für die damalige BRAIN AG (später Agilisys, jetzt Infor) reifte das Anwendungsframework heran (Version 1).

1999 entstand in Zusammenarbeit mit Ralf Engelhardt die Branchenlösung "Möbel2000" (Version 2).

Im Jahr 2000 gründeten Pirmin Braun und Ralf Engelhardt die seat-1 Software GmbH und entwickelten "Möbel2000" weiter zu den branchenneutralen Produkten "seat-1 ERP" für Fertigung und "seat-1 WaWi" für Handel (Version 3). Als technische Neuerung kamen eine Weboberfläche und die Hybrid-Technik aus kompiliertem Code und Scripting zum Einsatz.

IntarS 4.0 kam Anfang 2004 unter GPL als schlankere Version der seat-1 Warenwirtschaft auf den Markt. Funktionsumfang, Operating, Arbeitsabläufe und Arbeitsteilung wurden auf die Erfordernisse kleinerer und mittlerer Unternehmen abgestimmt.

2006 hielt mit IntarS 5.0 eine noch stärkere Orientierung zu Scripting und kundenspezifischen Repositories Einzug. In Folge entstanden Branchenlösungen für Elektro, Automotive, Fahrradhersteller und Verlage. Mit Version 5.1 wurde der IntarScript-Interpreter gegenüber der Vorgängerversion verbessert.

Mit IntarS 6.0 wurden 2010 unter anderem XHTML und interaktive SVG-Grafiken für Dashboards und OLAP, ein vereinfachtes Programmiermodell für Anwendungsentwickler, sowie Installations- und Operating-Werkzeuge eingeführt.

Version 6.1 brachte im Jahr 2011 Unterstützung für mobile Geräte, verbesserte Modularisierung, Erweiterungen des IntarScript-Sprachumfanges, neue Schnittstellen (z. B. für Microsoft Exchange und zur Finanzbuchführungssoftware Quickbooks), Integration in RoundCube und Refactoring des Frameworks.

Im Jahr 2012 erfolgte die Umfirmierung von "seat-1 Software GmbH" in "IntarS Unternehmenssoftware GmbH".

Funktionsbereiche[Bearbeiten]

  • Auftragsverwaltung
  • Angebotserstellung
  • Disposition
  • Lagerwesen, Inventur, Mehrlager
  • Rechnungslegung
  • Projektabwicklung
  • Bestellwesen
  • Arbeitsvorbereitung
  • Content-Management
  • Document-Management
  • Groupware
  • Fertigungsplanung
  • Fertigungssteuerung, Leitstand
  • Prozessteuerung durch Barcode-Scanner
  • CRM
  • Statistik-Auswertungen
  • Datev- und EuroFibu-Schnittstelle
  • Fuhrpark
  • Variantentechnik

Systemvoraussetzungen[Bearbeiten]

IntarS läuft nativ auf 32-bit Linux (vorzugsweise Debian), als Virtual Appliance auf weiteren Plattformen im Intranet und Internet. Als Datenbank kommt MySQL zum Einsatz. Ein handelsüblicher PC als Server verkraftet 10 Benutzer gleichzeitig. Mit leistungsfähiger Hardware gibt es kein Limit für die Anzahl von Benutzern. Clients greifen über Web-Oberfläche darauf zu, z. B. mit Firefox oder Safari.

Technischnes[Bearbeiten]

Architektur[Bearbeiten]

In IntarS besteht eine Trennung zwischen Geschäftslogik und technischem Grundsystem.

Das Grundsystem ist in Objective-C geschrieben und mit dem gcc kompiliert. Es enthält einen Interpreter für IntarScript und Datenmodell, sowie eine allgemeine Infrastruktur für Datenbank, Druck, Oberflächensteuerung und Navigation, XML, Kommunikation und Betriebssystemzugriffe.

Die Geschäftslogik ist in IntarScript geschrieben (der dynamische Teil) und im Datenmodell definiert (der statische Teil). Die ca. 1000 Skripte und das Datenmodell bilden zusammen mit Moduldefinitionen, Layouteinstellungen, Stylesheet, Hilfedateien und weiteren Ressourcen das Repository.

Zur Laufzeit lädt das Grundsystem das Repository und wird dadurch zur eigentlichen Anwendung. Dies ist vergleichbar mit dem Laden eines Spreadsheets in eine Tabellenkalkulation.

Jeder registrierte Kunde bekommt eine eigene Mandantennummer, unter der sein individuelles (nicht öffentliches) Repository geführt wird. Damit bleibt das kompilierte Grundsystem update- und releasefähig und kann ohne Verletzung von Geschäftsinteressen als Open Source veröffentlicht und weiterentwickelt werden.

Programmierung[Bearbeiten]

Um ein neues Repository zu bauen, wird das freie Standard-Repository 000230 oder das einer Branchenlösung dupliziert. Damit ist schon lauffähiges System vorhanden. Dieses wird nun nach und nach punktuell angepasst und erweitert.

IntarS hat eine flache Struktur von ca. 100 Modulen und 1000 überwiegend voneinander unabhängigen Scripts. Das hat mehrere Vorteile:

  • hat ein Script einen Fehler, sind die Auswirkungen auf dieses eine Script beschränkt (defensive Programmierung)
  • es können mehrere Programmierer parallel unabhängig voneinander daran arbeiten
  • der Programmieraufwand kann gut abgeschätzt werden, da er proportional zur Anzahl der betroffenen Scripts ist
  • die Versionierung und die Rückkehr zu einer bekannten lauffähigen Version kann in kleinen Schritten erfolgen

Alle Änderungen im neuen Repository bleiben privat. Es kann "auf der grünen Wiese" losgelegt werden ohne Rücksicht nehmen zu müssen auf eventuelle unerwünschte Auswirkungen in anderen Projekten. Umgekehrt beeinflusst auch kein anderes Kundenprojekt das eigene.

Die Scripts werden mit einem beliebigen Text-Editor bearbeitet. Für Notepad++ und den integrierten CodeMirror steht eine IntarScript Sprachdefinition mit Syntaxhighlighting und Keyword Completion zur Verfügung. Es wird an der laufenden Anwendung entwickelt, indem nach jedem Editiervorgang die geänderten Scripts neu geladen und gleich getestet werden. Das dauert nur wenige Sekunden und kommt der agilen Softwareentwicklung entgegen. Jedes Modul hat zudem eine interaktive Konsole, in der Scripts vorab ausprobiert und im Trial- und Error-Verfahren verbessert werden können. Ziel dieses Vorgehensmodells ist, möglichst schnell eine genau passende Individuallösung zu erstellen, die zudem noch während der Programmierung lauffähig bleibt und während des Echtbetriebs genauso flexibel kontinuierlich weiterentwickeln werden kann.

Unterstützung[Bearbeiten]

Ein Grundgedanke von Open Source ist, dass man die Software anpassen kann. Dazu bietet IntarS folgende Unterstützung:[1]

  • Workbench zur Verwaltung des Datenmodells
  • Skript-Verwaltung
  • Migrationssuiten für dBASE und verschiedene CRM-Systeme wie z. B. Cobra Adressmanager oder SugarCRM
  • Modulverwaltung, Layout-Designer, Indexverwaltung
  • das Kapitel "Erweitern und Anpassen" im Hilfesystem
  • Tutorial
  • IntarScript-Referenz
  • Ein universelles Standard-Repository (Nr. 000230) als Anschauungsmaterial für "Programming by Example"

Wiederverwendung[Bearbeiten]

Die Geschichte zeigt [2], dass Geschäftslogik schwer zu abstrahieren ist und sich damit den Wiederverwendungstechniken Vererbung oder aspektorientierter Programmierung entzieht.

Um dennoch das Rad nicht immer neu erfinden zu müssen, propagiert IntarScript die ungeplante oder unscharfe Wiederverwendung: Ist eine neue Individuallösung einige Zeit im Einsatz gereift, wird die Funktionalität informell in ein Wissensmanagementsystem aufgenommen. Kommt nun der Zeitpunkt, da man so etwas noch einmal bräuchte, wird die Funktionalität zwischen den Repositories gemerged. Das geschieht textlich mit WinMerge und der Workbench.

Wird etwas für allgemein interessant gehalten (z.B. Schnittstellen), wird es sogar ins Standard-Repository gemerged.

Die Repository-Struktur bis hin zur IntarScript Syntax ist auf möglichst effizientes Mergen (z.B. mit WinMerge) hin optimiert:

  • von Menschen lesbare Textdateien (UTF-8)
  • zeilenorientiert
  • innerhalb der Zeilen feste Felder
  • nach Möglichkeit sortiert
  • soviel Redundanz, dass eine Zeile für sich betrachtet schon aussagt, wo sie hingehört
  • feste Verzeichnis-Struktur, die vorgibt, an welcher Stelle sich ein File befinden kann und wie es heissen muss.
Mergen eines Layout Information Files

Die Entwicklung der Versionierungswerkzeuge wie subversion oder git in den letzten Jahren mit ihren Branch-, Fork- und Merge-Techniken geht in die gleiche Richtung.

Es hat sich in der Praxis gezeigt, dass Mergen die Qualität verbessert. Durch das ständige Vergleichen von Files aus unterschiedlichen Repositories werden nebenher Fehler gefunden, weil sie als Unterschied aufleuchten.

IntarScript[Bearbeiten]

Ursprünglich entstand IntarScript 1997 als Interpreter zur Erzeugung von PDF. Im Laufe der Jahre wuchs der Sprachumfang ständig und wurde praxisgetrieben zu einer domänenspezifischen Sprache für die Implementierung von Geschäftslogik. Die Designziele der Entwickler waren:

  • Effizienz, wenig Schreibarbeit
  • DRY (Don’t repeat yourself) Prinzip
  • wenig Overhead
  • leichte Erlernbarkeit
  • Uniformität
  • gut zu versionieren und zu mergen
  • einfacher, performanter, leicht zu erweiternder Interpreter

IntarScript nimmt Anleihen an C, Objective-C, bash, Ruby, Java, Perl, BASIC und dBase.

IntarScript enthält Befehle zur:

  • PDF-Erzeugung
  • Feld- und Dialogsteuerung
  • Datenbank-Abstraktion
  • Eingabeverarbeitung
  • Auswertung, Filterung, Suche, Import/Export Schnittstellen
  • Batch-Verarbeitung
  • Mail, Fax, Dokumentenmanagement

Skripte in IntarS sind verhältnismäßig klein. Da Stand-Alone-Skripte erzeugt werden, lässt sich unbeschwert drauflos programmieren. Variablen sind defaultmäßig im Einflussbereich eines Scriptes global, typenlos, und haben kurze Namen. Lokale Variablen und Typprüfungen müssen dagegen explizit deklariert werden.

IntarScript lässt dem Programmierer keinen künstlerischen Freiraum. Es gibt genau ein Statement pro Zeile und Befehle und Operanden werden ausnahmslos mit Komma getrennt. Der Schachtelung von Ausdrücken sind Grenzen gesetzt. Diese restriktive Syntax erleichtert die Versionsverwaltung mit subversion und WinMerge und erleichtert es, sich in fremden Scripts zurechtzufinden. Namenskonventionen werden forciert durch die Bevorzugung von Konvention vor Konfiguration.

Die Kombination aus kompiliertem Framework und Interpreter ergibt eine Gesamtperformance, die nur wenig hinter der eines komplett kompilierten Systems zurückbleibt. Das liegt daran, dass zum einen beim Systemstart zunächst alle Scripts eingelesen, geparst und in eine Art Bytecode überführt werden. Zum anderen laufen während des Vorgangs des Interpretierens die allermeisten Taktzyklen wieder in kompiliertem Code, weil es sich im Wesentlichen um eine Liste von Funktionsaufrufen handelt. Wäre das Framework dagegen ebenfalls in einer Scriptsprache wie z.B. PHP implementiert (solche ERP Software Systeme gibt es auch), wäre die Performance schlechter.

Es muss bei der Anwendungsentwicklung nichts mehr kompiliert werden. So wird laut Hersteller alles komplizierte, technische des kompilierten Frameworks von dem fachlichen, betriebswirtschaftlichen in den Skripten getrennt. Erweiterungen und Anpassungen erfolgen nahtlos mit derselben Technik, mit der auch der Standard erschaffen wurde.

Trivia[Bearbeiten]

Der Name "IntarS" ist ein Akronym für: International adaptiv realtime Software

Weblinks[Bearbeiten]

Quellen, Verweise und Belege[Bearbeiten]

  1. Handbuch
  2.  James Carey, Brent Carlson: Framework Process Patterns: Lessons Learned Developing Application Frameworks. Addison-Wesley Professional, 2002 (Originaltitel: Framework Process Patterns: Lessons Learned Developing Application Frameworks), ISBN 0201731320.