# Nuclos

Nuclos ist eine freie Enterprise-Resource-Planning-Software (ERP-Software), die der GNU Affero General Public License unterliegt. Es handelt sich bei Nuclos um einen Softwarebaukasten, mit dem Unternehmen ERP-Software erstellen können. Nuclos wird seit 2003 entwickelt. Seit Oktober 2009 ist Nuclos Open Source, seit Juli 2010 steht es zum Download zur Verfügung. Der Name Nuclos leitet sich ab aus einer Kombination der Begriffe Nucleus (lat. Kern) und dem Kürzel OS für Open Source. Nuclos wurde von der Firma Novabit entwickelt, die seit Mitte 2010 Mitglied der Open Source Business Alliance ist.

## Softwareerstellung mit Nuclos

Nuclos abstrahiert in seiner Eigenschaft als Softwarebaukasten von technischen Details, insbesondere auch von Programmiersprachen. Der Ersteller einer Businessapplikation in Nuclos benötigt im Gegensatz zum Softwareentwickler in anderen Systemen in der Regel keine Kenntnisse über Programmiersprachen mehr, um Geschäftsprozesse mit Nuclos abzubilden. Da ein Verständnis der Geschäftsprozesse typischerweise eine Kenntnis von Zusammenhängen im Unternehmen voraussetzt, und oftmals auch eine Koordination von mehreren Beteiligten erfordert, sollte der Applikationsersteller in Nuclos über eine gewisse disziplinarische Befugnis oder Führungsverantwortung und einen umfassenderen Überblick über das Unternehmen verfügen.

### Iterative Realisierung

Diese Art der Herangehensweise an Softwareentwicklung, bei welcher der Betroffene eines Geschäftsprozesses in die Lage versetzt wird, seinen Geschäftsprozess in Nuclos selbst zu definieren, erleichtert und unterstützt insbesondere eine iterative Umsetzung, da Kommunikations- und Abstimmungsbedarf zwischen Unternehmensfunktion und IT reduziert wird.
Einerseits entfällt der Aufwand für alle an der Umsetzung beteiligten Personen, Anforderungen in Form von Spezifikationen zu Papier zu bringen, die dann als Grundlage eines Verständnisses der Anforderungen durch den Softwareentwickler bzw. Programmierer dienen. Andererseits werden in der Mehrheit der Fälle schriftliche Spezifikationsunterlagen zum Bestandteil von Werkverträgen zwischen Unternehmen und Softwareentwicklern gemacht. Damit wird die nachträgliche Änderung von Anforderungen während der Projektlaufzeit und später zumindest erschwert und ist oft mit preislichen Aufschlägen verbunden. Diese entfallen, wenn eine direkte Umsetzung der Anforderungen durch die Unternehmensfunktionen selbst geschehen kann.
In diesem Zusammenhang hebt Nuclos die Trennung zwischen Design-Time (Entwurfszeit), Compile-Time (Übersetzungszeit) und Laufzeit auf. Die Erstellung von Businessapplikationen in Nuclos erfolgt innerhalb derselben Benutzeroberfläche wie die Nutzung der erstellten Applikation selbst. Eine Organisation des Applikationserstellungsprozess geschieht in Nuclos über eine entsprechende Benutzerrechtesteuerung.

### Baukastenprinzip

Im Gegensatz zu proprietären ERP-Systemen und anderen Open-Source-ERP-Systemen geschieht die Realisierung von ERP-Software basierend auf Nuclos unter Nutzung generischer Mechanismen, die allen Geschäftsprozessen und typischen Anforderungen an datenverarbeitende Systeme gemein sind. Für einen konkreten, individuellen Geschäftsprozess nimmt der Applikationsersteller in Nuclos eine Konfiguration bzw. Parametrisierung der generischen Mechanismen vor, um diese für die einzelnen Anwendungsfälle einzustellen. Er erstellt dabei Entitäten, Maskenlayouts, Gesamt- und Teilprozesse, Geschäftsregeln, Workflows und Reports und fügt diese wie Bausteine zusammen.

### Nuclets

Die daraus resultierende Businessapplikation wird nicht zu einem festen Bestandteil von Nuclos, sondern bleibt ein von Nuclos getrenntes Softwareartefakt (sog. Nuclet), das sich nur aus Konfigurationsinhalten und Parametern zusammensetzt und damit unabhängig von einer Softwarekompilierung jederzeit zur Laufzeit änderbar ist. Die technische Struktur von Nuclos erzwingt eine strikte Trennung von Nuclos und den darauf aufsetzenden Nuclets. Dies ermöglicht insbesondere auch einen einfachen Austausch von Nuclets zwischen Unternehmen bzw. Anwendern.

## Ziele des Projekts

Das Ziel von Nuclos ist es, individuelle ERP (Enterprise Resource Planning) Systeme insbesondere auch für KMU (kleine und mittlere Unternehmen) zugänglich und bezahlbar zu machen. Dieses Ziel versucht Nuclos als Open Source zum einen durch eine Commoditisierung von Software und Geschäftsprozessen, und zum anderen durch eine konsequentere Arbeitsteilung zwischen Unternehmensfunktionen und der IT in einem Unternehmen zu erreichen.

### Arbeitsteilung

Heute besteht ein enger Zusammenhang zwischen Geschäftsprozessen und eingesetzten Technologien. Beides wird heute oft von ein und demselben Hersteller bezogen, womit die Qualität und Eignung von Software gleichzeitig sowohl von der technischen als auch von der fachlichen Kompetenz des Anbieters abhängt.
Eine klarere Trennung der Geschäftsprozesse von eingesetzten Technologien fördert eine sinnvollere Arbeitsteilung zwischen Unternehmensfunktionen und IT. Während die IT dafür verantwortlich ist, die Stabilität und Sicherheit einer einheitlichen technologischen Grundlage zu gewährleisten, können die leitenden Stellen der Unternehmensfunktionen ihre Anforderungen darauf selbst abbilden. Eine fachliche Übereinkunft zwischen IT und Unternehmensfunktionen ist bei dieser Form der Arbeitsteilung nicht mehr bzw. nur noch in reduziertem Umfang erforderlich. So können etwa branchenspezifische Geschäftsprozesse von Branchenexperten geschaffen werden, bzgl. derer ein einzelner IT-Anbieter nur bedingt das nötige Fachwissen selbst aufbringen könnte.

## Standardprozesse

Eine initiale Installation von Nuclos enthält keine vorgefertigten Geschäftsprozesse. Der Hersteller liefert keine fertigen Nuclets mit, unterstützt aber bei der Erstellung individueller Nuclets.
Er führt die kurze Realisierungszeit von Nuclets mithilfe von Nuclos an und weist darauf hin, dass insbesondere die Kernprozesse eines Unternehmens als wertschöpfende und differenzierende Prozesse unternehmensspezifisch sind und daher durch individuell entworfene Software unterstützt werden müssen, wohingegen Standardsoftware nur solche Prozesse unterstützen kann, die in allen Unternehmen weitestgehend identisch sind. Eine Standardisierung von Prozessen ist dort sinnvoll, wo eine Differenzierung keinen Mehrwert schafft. Dies ist typischerweise der Fall bei unterstützenden Prozessen, die deshalb auch oft in Shared Services konsolidiert oder im Rahmen eines Business Process Outsourcing an Dienstleister ausgelagert werden.

## Architektur

Nuclos ist Spring-basierend. Zum Einsatz kommt ein Apache Tomcat, grundsätzlich kann Nuclos jedoch auf beliebigen Java Servlet Containern betrieben werden. Entsprechend setzt Nuclos client- und serverseitig Java voraus und ist auf jedem Betriebssystem lauffähig, für das eine Java-Distribution existiert. Nuclos abstrahiert Datenbankzugriffe und kann daher prinzipiell auf beliebigen relationalen SQL-Datenbanken betrieben werden. Unterstützt werden derzeit:
* PostgreSQL
* Oracle Database
* Microsoft SQL Server
* Sybase
* Db2

## Entwicklungsprozess

Das Projekt wird maßgeblich von der Firma Novabit getragen. Das Bitbucket-Repository und das Maven-Repository (beide vom Hersteller geführt) sind frei zugänglich. Eine Projektübersicht findet sich auch bei Ohloh. Der Hersteller betreibt ein öffentliches, auf Jira (Software) basierendes Issue-Tracking-System zur Erfassung von Featurewünschen und Fehlern.