Vernetzung immer und überall

Heutzutage sind wir ständig vernetzt – auch mit Familienmitgliedern.
Wir führen Konversationen über WhatsApp und besprechen Termine am Abend am Esstisch.
Doch oftmals fallen auch Dinge an, die man sich behalten sollte und auf die man bei Bedarf zurückgreift oder welche einfach für die komplette Familie interessant sind.

Lange Zeit war das für mich ein Problem, da man sich ständig viele Dinge zu merken hat oder auch eine Plattform für gemeinsame Termine, Dateien und mehr braucht.
Man könnte nun im Internet nach fertigen Intranetsoftware suchen. Jedoch sind diese oft überdimensioniert, teuer oder haben hohe Anforderungen, die man in einem privaten Haushalt nur schlecht umsetzen kann.

Zugegeben, es gibt viele Familien, die sich noch Zettelchen an den Kühlschrank hängen und damit ihre komplette „Verwaltung“ abwickeln. Doch das muss heutzutage nicht mehr sein. Die Technik ist so weit, dass man sich auf einfache Art und Weise schnell eine Lösung basteln kann. Was früher noch in großen Unternehmen interessant war, kann man in der heutigen Zeit auch ganz einfach für die eigene Familie betreiben.

Grundgedanken

Egal ob selbst erstellt oder eingekauft, man sollte sich Gedanken darüber machen, was man von einer Intranetsoftware für die Familie erwartet.
Meine Anforderungen konnte man schon fast an einer Hand abzählen:

  • Terminverwaltung
  • Wissen und Infos sammeln in Form von Seiten
  • Nachrichten versenden
  • Störungen im Netzwerk und an Computern melden

Hinzu kamen zwei Komfortfunktionen, die das ganze System abrunden:

  • Emailversand
  • Benachrichtigungszentrale

Zudem sollte das System seine Benutzer in verschiedene Ränge einteilen. Einige Funktionen sollen nur dem Systemverwalter zustehen, manche Inhalte sind nur für die Familie zugänglich und ein paar wenige Inhalte dürfen von jedem User eingesehen werden.
Dabei war es für mich wichtig, dass ranghöhere Mitglieder immer alle Inhalte des niedrigeren Rangs (und allen darunter) einsehen können.

Konzept

Um nun dem Intranet eine weitere Struktur zu geben, teilt man das System in unterschiedliche Teile auf.

Ich habe mich am Drei-Schichten-Modell orientiert. Hierbei gibt es – wie der Name schon sagt – drei Schichten: die Präsentationsschicht, die Funktionsschicht bzw. die Applikationslogik und die Datenschicht.

Die Präsentationsschicht dient lediglich dazu, dem Benutzer eine (ansprechende) Oberfläche zu bieten, über die er seine Interaktionen mit dem System durchführt.
Die Funktionsschicht enthält die Logik des Programms und berechnet alle Werte, bereitet die Daten zum Austausch zwischen Präsenationsschicht und Datenschicht auf und sorgt für die Sicherheit der Daten, indem sie fehlerhafte Daten filtert und Angriffe verhindert.

Wieso man dieses Modell bevorzugt liegt klar auf der Hand: die Skalierbarkeit. Einzelne Teile des Systems können auf unterschiedlichen Servern liegen, was für eine höhere Rechenleistung sorgt. Natürlich ist es auch möglich, dass ein Server alleine für die Software zuständig ist. Besonders im privaten Bereich muss man hier nicht mit einer hohen Belastung rechnen, weshalb ein einzelner Server die Aufgabe problemlos alleine übernehmen kann.

Zudem ist es für den Entwickler einfacher, einzelne Teile des Systems auszutauschen. Da nicht alles zu verschachtelt ist, kann man einzelne Dateien updaten ohne große Auswirkung. Wichtig ist hierbei nur, dass alte Schnittstellen erhalten bleiben, solange eine Oberfläche darauf noch zugreift.

Praktisches

Doch alle Theorie hilft nichts, man muss die Sache praktisch angehen.

Ich habe zu Beginn die einzelnen Funktionen in eigene Klassen geschrieben. Am Ende kam ein Kalendermanager, Störungsmanager, Inhaltemanager und Nachrichtenmanager dabei heraus. Jeder dieser Manager ist für einen Teil des Gesamtsystems zuständig.

Zusätzlich zu diesen Modulen gab es noch ein weiteres Modul, ohne das nicht weitergemacht werden konnte: der Datenbankmanager. Dieser greift später als einziges Modul auf die Datenbank zu. Keine andere Klasse wird direkten Zugriff auf die Datenbank haben. Im Datenbankmanager werden „verbotene“ Abfragen herausgefiltert. Hierdurch erreicht man eine erhöhte Sicherheit, um die Daten zu schützen.

Möchte man nun also eine Störung aus der Datenbank auslesen, um diese darstellen zu können, muss eine neue Instanz des Störungsmanagers erzeugt werden. Diese Instanz enthält eine Methode, die eine Störung auslesen soll. Diese Methode erzeugt eine neue Instanz des Datenbankmanagers, welcher die endgültige Abfrage an der Datenbank ausführt. Im Anschluss werden Daten an den Störungsmanager zurückgegeben, welcher die Daten in JSON-Daten umwandelt und weitergibt.

Ich habe mich für JSON-Daten entschieden, da man dadurch verschiedene Systeme daran „anknüpfen“ kann.
JSON ist eine Möglichkeit, womit man erreichen kann, dass auch andere Programmiersprachen oder Programme mit dem System kommunizieren können. Ein Windows-Client könnte also mit einer Software die Funktionen der Anwendungslogik aufrufen und erhält Daten. Somit erreiche ich, dass ich jede Abfrage über diese Logik laufen lasse und im Falle eines Updates direkt alle Clients auf die neue Methode leite. Hätte man hingegen mehrere Anwendungslogiken, müsste man im Falle einer Veränderung oder eines Fehlers jede Logik umschreiben.

Schließlich ist ein Client nichts anderes als eine Weboberfläche – es sieht lediglich anders aus.

Schlusswort

Jeder, der Interesse an Programmierung hat und auch vor hat, einem bestimmten Personenkreis eine Plattform zu bieten, sollte die Eigenentwicklung in Betracht ziehen.
Es ist interessant und bringt einen durchaus voran, da man mit viel Interesse an seiner Lösung arbeitet.

Aber auch für Neulinge kann das durchaus interessant sein, denn in einer praktischen Anwendung lernt man – meiner Meinung nach – mehr, als wenn man Beispiele aus einem Buch nacharbeitet.

Klar sollte einem allerdings auch sein, dass man um bestimmte Literatur oder viel Internetrecherche nicht herum kommt. Viele Informationen und Konzepte muss man sich zusammen suchen und vieles miteinander kombinieren. Jedoch lernt man dadurch eine gewisse selbständige Arbeitsweise, die von vielen Arbeitgebern auch vorausgesetzt wird.

Sollte man später einmal in der IT-Branche arbeiten wollen, ist ein solches Projekt durchaus auch eine Art der Referenz. Man kann durch Eigeninitiative und Interesse sehr viele Sympathiepunkte sammeln.
Aus eigener Erfahrung weiß ich, dass Personalchefs oft wichtig ist, dass man selbstständig und in seiner Freizeit an solchen Dingen arbeitet. In diesem Fall beschäftigt man sich intensiver und mit viel Begeisterung mit dieser Thematik.


Verweise

MrKnowing.com: Wie funktioniert die 3-Schichten-Architektur?

Wikipedia.org: Schichtenarchitektur 

Kategorien: Web

Lukas

Hi, mein Name ist Lukas. Seit 2016 blogge ich auf Hobbyblogging über unterschiedliche Themen des Alltags. Schwerpunkt dabei ist das Thema Smart Home, speziell mit der Open Source Software OpenHab auf dem Raspberry Pi. Neben dem Bloggen absolviere ich derzeit mein Master-Studium im Fachbereich Wirtschaftsinformatik und arbeite als Werkstudent im Software Engineering.

0 Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.