Die Philosophie hinter Unity Software orientiert sich an zwei Leitgedanken.
„software by thinking“
Legt man auf Wert auf Qualität, so muss man sich bei der Softwareentwicklung Zeit nehmen und auch mal über den Tellerrand hinaus blicken. Komplexe Funktionalitäten in einer Software sind nicht immer lokal eingrenzbar, sondern oft auch schichtenübergreifend wirksam. Datenbank, Daten-Zugriffsschicht, Dienstfunktionen, Schnittstellen, Exporte, Importe, Geschäftslogik und Anwendungsoberfläche müssen beim Entwurf einer Software wohl durchdacht aufeinander abgestimmt werden, damit die einzelnen Funktionen nahtlos ineinander greifen. Ebenso müssen auch fachliche Aspekte genau analysiert werden, da viele fachliche Funktionalitäten auch fachdomänen-übergreifend sind. Silodenken ist hier fehl am Platz! Die Geschäftswelt wird immer komplexer und vor allem vernetzter. Die Anhängigkeit von Fachlichkeiten zueinander über fachliche Domänengrenzen hinweg steigt ständig an.
Allzu oft wird aber ein vorausschauendes Gesamtkonzept aufgrund von Zeit- und Kostendruck vernachlässigt mit der Konsequez das Abhängigkeiten unberücksichtigt bleiben, Lücken in der Software entstehen, der Anwender unzufrieden ist und vielleicht teuer nachgearbeitet werden muss. Daher sollte man beim Design guter Software immer alle Softwareschichten (vertikal) als auch gleichzeitig alle betroffenen Fachdomänen (horizontal) von Anfang an im Blickfeld haben und sich nicht nur ausschließlich auf eine jeweils konkret gewünschte Funktion konzentrieren, auch wenn das mehr Zeit kostet. Bei der Konzeption der Unity Plattform wurde auf diese ganzheitliche Sicht sehr großen Wert gelegt.
„keep it simple, but full featured“
Software muss für den Anwender einfach, übersichtlich und selbsterklärend sein. Das soll aber nicht heissen, dass der Anwender deswegen auf Komfort oder Funktionalität verzichten muss. Im Gegenteil. Es sollen alle vom Anwender benötigten fachlichen oder technischen Funktionalitäten vorhanden sein. Die Herausforderung liegt vielmehr darin, die heutzutage oft fast nicht mehr überschaubare Anzahl an benötigten Funktionen in ein logisches Gesamtkonzept zu packen und dabei auch so manche Funktion transparent in den Hintergrund zu schieben, um damit den Anwender nicht zu belasten. Die Funktionalitäten sollten dem Anwender in einer vereinfachten und aggregierten Form dargeboten werden.
Was für den Softwareanwender gilt, gilt ebenso auch für den Softwareentwickler. Im Software-Quellcode ist immer mehr und mehr Funktionalität enthalten, der Quellcode muss aber weiterhin überschaubar und wartbar bleiben. Nichts ist schlimmer für die langfristige Qualität von Software, als wenn ein Softwareentwickler irgendwann im einem Meer von Codezeilen den Überblick verliert. Eine gut durchdachte Modularisierung bei der Softwareentwicklung ist hier unverzichtbar. Jedes Modul sollte gut gekapselt und nach aussen hin einfach verwendbar sein. Die Unity Plattform mit ihren zahlreichen Modulen baut konsequent auf diesem Prinzip von Anfang an auf … „simple“ aber „full featured“.