mirror of
https://github.com/fhswf/aki_prj23_transparenzregister.git
synced 2025-06-22 22:23:55 +02:00
First Version of the network Documentation
This commit is contained in:
@ -0,0 +1,100 @@
|
||||
# Recherche zu benötigten Techniken (Tim Ronneburg)
|
||||
In diesem Kapitel werden die Prämissen behandelt welche zu Beginn des Projektes festgelegt und anhand deren eine Auswahl an benötigten Techniken getroffen wurde. Auf die hier genannten Werkzeuge und Technologien wird im späteren Verlauf an den jeweiligen Stellen spezifischer eingegangen.
|
||||
|
||||
Bei der Auswahl der Technologien für das Projekt wurden verschiedene Gesichtspunkte berücksichtigt. Insbesondere wurden folgende Fragen im Fokus betrachtet:
|
||||
|
||||
- Welches Tool zur Visualisierung soll verwendet werden?
|
||||
- Auf welche Weise erfolgt die Berechnung und Visualisierung von Graphen und Netzwerken?
|
||||
- Wie wird die Bereitstellung der Webseite durchgeführt?
|
||||
- Welche Datenbanken kommen für die Sammlung und Bereitstellung der - Informationen zum Einsatz?
|
||||
- Wie wird die Stimmung der Nachrichten zu einer Firma ausgewertet?
|
||||
|
||||
Auf die Fragestellung wie in der Projektgruppe zusammengearbeitet wird und welche Werkzeuge dafür zum tragen kommen - Stichwort: Git - wurde bereits im vorherigen Kapitel behandelt und wir hier nicht weiter betrachtet.
|
||||
|
||||
Für die aufgelisteten Fragestellungen hat sich jeweils ein Gruppenmitglied intensiv mit der Thematik auseinandergesetzt und eine Auswahl an möglichen Technologien der Projektgruppe vorgestellt. Nach mehreren iterationen der evaluation ist eine Asuwahl an Werkzeugen gesetzt worden.
|
||||
|
||||
Generell wurden für sämtliche Aspekte die allgemeinen Leitlinien berücksichtigt, dass die eingesetzten Werkzeuge und Technologien Open Source sein sollten, also frei verfügbar und ohne zusätzliche Kosten. Die Programmiersprache sollte auf Python basieren, da sie von allen Gruppenmitgliedern beherrscht wird und die Verwendung mehrerer Sprachen das Projekt unnötig komplex machen würde. Die gewählten Technologien sollten nahtlos in die Arbeitsweise mit DevOps und Git integrierbar sein, und durch automatisierte Tests überprüfbar sein, um eine einheitliche Arbeitsweise zu gewährleisten und Engpässe durch isolierte Anwendungen zu vermeiden. Schließlich wurde für alle zu berücksichtigenden Werkzeuge auf eine einfache Bedienbarkeit Wert gelegt, um einen reibungslosen Einstieg in die Technologie zu ermöglichen und die Beteiligung aller Teammitglieder zu erleichtern.
|
||||
|
||||
## Technische Anforderungen
|
||||
Neben den allgemein geltenden Anforderungen wird in diesem Unterkapitel auf die technischen Anforderungen je Kategorie eingegangen. Die Kategorien wurden aus den oben ganannten Fragestellungen abgeleitet und entsprechen den Arbeitsbereichen der einzelnen Gruppenmitglieder sowie die Kernelemente des Projektes. Die Gruppen/Kategorien lauten:
|
||||
- DevOps
|
||||
- Text Mining
|
||||
- Datenspeicherung
|
||||
- Sentimentanalyse
|
||||
- Verflechtungsanalyse
|
||||
- Visualisierung
|
||||
|
||||
Diese Einteilung findet sich im Verlauf der Dokumentation immer wieder. Zusätzlich kommt in diesem Teil noch das Unterkapitel "Provisionierung" hinzu indem auf die Vorgaben für die Bereitstellung der Anwendung für die Nutzer eingegangen wurde.
|
||||
Im folgenden wird auf kurz auf die Kategorien eingegangen und die speziellen Anforderungen für die jeweiligen Bereich dargelegt, welche es bei der Rechereche zu betrachten galt.
|
||||
|
||||
### DevOps
|
||||
Dieser Abschnitt befasst sich mit der Versionskontrolle des Quellcodes, automatisierten Tests und der automatisierten Bereitstellung der Anwendung auf einem Server. Im Kapitel 3.1 wurde dieses Thema theoretisch und in Kapitel 4.2 praktisch behandelt, weshalb sich dieser Abschnitt auf die Anforderungen auf höchster Ebene konzentriert.
|
||||
|
||||
Bei der Implementierung von DevOps war es entscheidend herauszufinden, welche Versionskontrollsoftware genutzt werden sollte, wie DevOps darin integriert werden kann und für welche Aspekte des Projekts DevOps sinnvoll eingesetzt werden kann.
|
||||
|
||||
Die Versionskontrollsoftware muss für alle Beteiligten leicht zugänglich sein und keine zusätzlichen Konten erfordern. Sie sollte die Zusammenarbeit im Team ermöglichen, indem mehrere Personen an denselben Dateien arbeiten können, die dann von der Versionskontrollsoftware zusammengeführt werden.
|
||||
|
||||
DevOps muss in dieser Software implementiert werden können, um eigene Pipelines zu erstellen, die die Anwendung testen und bereitstellen.
|
||||
|
||||
Unter Berücksichtigung der allgemeinen Vorgaben lauten die Prämissen für die Recherche der DevOps-Technologien wie folgt:
|
||||
|
||||
- Auswahl einer Versionskontrollsoftware, die eine kollaborative Arbeit des Teams am Quellcode ermöglicht.
|
||||
- Die Technologie sollte das Erstellen eigener Pipelines unterstützen.
|
||||
- Die Technologie sollte kostenlos und frei verfügbar sein.
|
||||
- Die Technologie sollte mit Python kompatibel sein.
|
||||
|
||||
### Text Mining
|
||||
Die Kategorie Text Mining beschäftigt sich mit dem sammeln von Unternehmensinformationen die für das Projekt relevant sind. Diese Daten werden dann im Abschnitt Datenspeicherung gesichert und der Projektgruppe zur Verfügung gestellt. Ähnlich wie im vorangegangenen Kapitel ist die Thematik im Kapitel 3.2 und 4.3 - 4.4 tiefer behandelt.
|
||||
|
||||
Für diesen bereich muss ein Werkzeug gefunden werden welches APIs aus dem Internet abfragt und die Daten sichert beziehungsweise Transformiert. Unter anderem die Unternehmensdaten aus dem Unternehmensregister für die Netzwerkanalyse und die Stammdaten, als auch diverse Nachrichten APIs für die Stimmungsanalyse zum jeweiligen Unternehmen.
|
||||
|
||||
Besonders bei dem gewinnen der Daten aus dem Unternehmensregister besteht die schwiriegkeit die Daten in ein einheitliches Format zu transferieren, da die Informationen als Jahresbericht der Unternehmen vorliegen die von jedem Unternehmen in eigener Form erstellt werden. Das Tool muss also die die Berichte auswerten können und die gesuchten Daten sammeln auch wenn diese mal in einer Tabelle oder im Fließtext vorkommen.
|
||||
|
||||
Zusammengefasst sind die Kriterien an die Technolgie:
|
||||
- Abfragen und Auswerten vom Unternehmensregister und Nachrichten APIs
|
||||
- Aufbereiten der Daten in ein einheitliches Format
|
||||
- Sichern der Daten in einer Datenbank nach Vorgabe des Datenbankschemas
|
||||
- Die Technologie sollte kostenlos und frei verfügbar sein.
|
||||
- Die Technologie sollte mit Python kompatibel sein.
|
||||
|
||||
### Datenspeicherung
|
||||
- No SQL DB für den Datalake um alle Infromationen zu sammeln
|
||||
- SQL Datenbank um die Daten aus dem Data Lake in eine Struktur zu packen
|
||||
- Erfahrung der Teilnehmer berücksichtigen
|
||||
- Kostenfrei
|
||||
|
||||
### Sentimentanalyse
|
||||
|
||||
### Verflechtungsanalyse
|
||||
- Kombinierbar mit dem Visualisierungstool
|
||||
- Einfach zu bedienen
|
||||
- Python bibliothek
|
||||
- performant
|
||||
- kostenfrei
|
||||
|
||||
### Visualisierung
|
||||
- möglichst python basierend
|
||||
- Einfach zu bedienen
|
||||
- Möglichkeit Diagramme und Netzwerke darzustellen
|
||||
- kostenfrei
|
||||
|
||||
|
||||
### Provisionierung
|
||||
- Kombinierbar mit Docker/Container
|
||||
- Kostenfrei
|
||||
- Zugriff übers Internet für alle Projektteilnehmer
|
||||
- Nicht zu Komplex
|
||||
|
||||
|
||||
|
||||
## Lösungsansätze: Überblick über relevante Technologien und Werkzeuge
|
||||
In diesem Abschnitt werden zu den Anforderungen die diskutierten Optionen vorgestellt und betrachtet.
|
||||
|
||||
Für Visualisierungs tool standen die Optionen Ploty Dash, Django oder ein Webframework auf Javascript basis wie Angular oder Vue.js zur Auswahl.
|
||||
|
||||
Für das Netzwerktool gab es die Wahl zwischen NetzwerkX, NetzwerkX mit pyviz, Graphviz und Cytoscape.
|
||||
|
||||
Für die Provisionierung galt es unterscheiden ob einer der Hyperscaler AWS, GCP oder Azure mit deren kostenfreien Kontingenten zum Einsatz kommen sol oder ob die Server der Universität Südwestfahlen dafür geeignet sind.
|
||||
|
||||
## Proof-of-Concept mit Jupyter Notebooks
|
||||
Bevor das Projekt startete wurde ein Proof-of-Concept (POC) durchgeführt um die Auswahl der Technologien zu evaluieren und den Aufwand abzuschätzen.
|
@ -0,0 +1,23 @@
|
||||
# Netzwerkanalyse
|
||||
Der Netzwerkanalyse geht das Kapitel 3.5 Verflechtungsanalyse vorraus indem die Grundlagen für den Aufbau eines Netzwerks sowie dessen Analyse vermittelt wurde. in diesem Abschnitt wird sich mit der Realisierung dieses Netzwerks und dem Erkenntnis Gewinn beschäftigt.
|
||||
|
||||
Wie im vorrangegangenen Abschnitt beschrieben kam in dem Projekt Plotly Dash zum Einsatz, ein Tool mit welches für die Erstellung von Dashbord mit Python ausgelegt ist. Zusätzlich wurde diese Tool mit der Bibliothek NetworkX erweitert um die Netzwerkgraphen abzubilden.
|
||||
|
||||
Die Netzwerkanalyse sollte und wurde an mehreren Stellen des Projektes integriert. Zunächst einmal in der Hauptseite wo es den gesamten Graph darstellt, dann auf der Unternehmens Detail Seite zur Betrachtung der Verflechtung aus der Perspektive des gewählten Unternehmens, sowie auf der Personen Detailsseite aus selben Grund wie bei der Unternehmensseite.
|
||||
|
||||
Quellcodeseitig wurde für die Erstellung des Netzwerks mehrere Dateien angelegt. Im Verzeichnis UI gibt es eine Unterordner utils mite dem Unterordner networkx, in diesem befinden sich die Dateien:
|
||||
network_2d.py
|
||||
network_3d.py
|
||||
network_base.py
|
||||
networkx_data.py
|
||||
|
||||
Die ersten beiden Dateien beinhalten den Quellcode zur Visualisierung des Netzwerkes mit einem Scatterplot in 2D oder 3D. Die Datei "base" beinhaltet die Initialisierung des Netzwerkes anhand der ausgewählten Daten. Gleichzeitig werden hier auch die Metriken gebildet. In der Datei "data" befinden sich diverse Funktionen zum abfragen von Daten die dann an das Netzwerk gegeben werden können.
|
||||
|
||||
Der Ablauf sieht unteranderem wie folgt aus. Wenn ein Nutzer auf der Startseite landet werden einige Funktionen in networkx_data ausgeführt um die Datenbank nach den voreingestellten Daten zu durchsuchen. Diese Daten werden in aufbereitet und als pandas Dataframe an network_base weitergegeben wo mithilfe vom Framework NetworkX ein Graph erstellt wird. In diesem Graph Element stecken die Positionen der Nodes. Außerdem werden Methoden bereitgestellt mit denen Standard Netzwerkanalyse Metriken berechnet werden können. Für diese Projekt sind es die Metriken degree, betweness, closeness, und pagerank. Anschließend wird das NetzwerkX Objekt und das Dataframe Metrics an die Datei network_xd gereicht. Dieses ließt die Positionen der nodes aus und berechnet die Edges um dann mithilfe eines Scatter plots den Graphen in 2d respektive 3d zu erstellen. Man erhält ein Figure Objekt, welches von Dash angezeigt werden kann.
|
||||
|
||||
Dieses Figure Objekt wird in den Pages Dateien:
|
||||
home.py
|
||||
company_elements.py
|
||||
person_elements.py
|
||||
|
||||
eingebunden. Für das Updaten des netzwerks nach Benutzereingaben werden callbacks verwendet. Diese werden durch das bedienen eines HTML Elements wie ein Dropdown oder Radiobuttons ausgelöst. Dadurch das dem Benutzer mehrere Auswahlmöglichkeiten für die Betrachtung des Netzwerkes gegeben werden muss der Callback für das Netzwerk mehrere Inputs aufnehmen und verarbeiten, da ein Callback immer nur ein Output hat und mehrere Callbacks nicht auf dasselbe HTML Element referenzieren sollen. Es gibt zwar neuerdings eine Möglichkeit multiple Outputs zu nutzen, birgt aber keine sonderlichen Vorteile.
|
Reference in New Issue
Block a user