Legislaturperiode
User
-
Registriert
-
Letzter Besuch
Reputationsaktivität
-
Legislaturperiode hat auf Whiz-zarD in Vorstellungsgespräch, duales Studium Softwaretechnik | 8-10 Min Präsentation | kein Softwareentwicklungsthema?Mit dem Buch bist du schon sehr gut unterwegs, auch wenn das Buch mehr C#-lastig ist. Das war auch meine Lektüre zu diesem Thema und wird auch von vielen empfohlen. Im Buch wird das Dependency Injection Muster erläutert. Beim Dependency Injection werden Abhängigkeiten in die Klasse reingereicht. Man schreibt also z.B. nicht
public Class PersonRepository implements IRepository { private final IDatabase database; public PersonRepository { this.database = new Database(); } ... } sondern
public Class PersonRepository implements IRepository { private final IDatabase database; public PersonRepository(IDatabase database) { this.database = database; } ... } Man kehrt also die Abhängigkeiten um, indem die Klasse gar nicht die konkrete Implementierung der Abhängigkeiten kennt, sondern nur gegen Interfaces arbeitet und die konkrete Implementierung reinreicht. Man spricht dabei auch vom Dependency-Inversion-Prinzip und das macht das Testen der PersonRepository-Klasse viel einfacher, weil man jetzt in diesem Fall tatsächlich die Datenbank mocken kann. In der richtigen Anwendung reicht man vielleicht die Klasse MySqlDatabase rein und im Test MockedDatabase, die nichts anderes tut, als Textausgaben auf der Konsole zu machen, die der Unittest dann testet. Andere Tests wiederrum testen die MySqlDatabase-Klasse, indem sie schauen, dass z.B. die richtigen Tabellen angelegt worden sind. Fürs Dependency Injection Muster gibt es auch diverse Frameworks (sog. IoC Container (IoC = Inversion of control)), die einem das Leben erleichtern. Mit Hilfe eines Bootstraping-Verfahrens wird dann beim Starten der Anwendung die Abhängigkeiten der einzelnen Klassen aufgelöst und das Framework instanziiert und initialisiert die Klassen mit allen ihren Abhängigkeiten. Die Java-Welt ist nicht so ganz meine Welt, daher kenne ich mich dort mit den Frameworks nicht so gut aus, aber dort gibt es ja z.B. Spring, Pico Container oder Guice.
-
Legislaturperiode hat auf Whiz-zarD in Vorstellungsgespräch, duales Studium Softwaretechnik | 8-10 Min Präsentation | kein Softwareentwicklungsthema?Du rufst im Test aber gleich mehrere Methoden aus einem Modul/einer Klasse auf. Das ist kein Unittest. Unittests testen eine Methode und nicht die gesamte Klasse und das ist das Problem bei deiner Architektur. Du kannst gar nicht eine Methode einzeln testen, sondern nur im Bündel. Das Problem ist, dass deine Database-Klasse zu viel macht. Sie ist sowohl das Repository als auch die Datenbank-Verbindung. Dein Test läuft so ab:
Erstelle eine neue Datenbank-Datei Erstelle eine neue Tabelle Füge Daten in die Tabelle ein Wenn jetzt der Unittest fehlschlägt, kannst du nicht sagen wo genau dieser Fehler liegt. Du musst also den Unittest debuggen. Das mag bei deinem Projekt noch funktionieren aber bei komplexen Projekten ist das die Hölle, weil die Tests sehr zeitintensiv und instabil werden. Du musst also das Repository von der Datenbank trennen. Dafür gibt es das sog. Unit of Work-Pattern. Schaue dir an wie O/R-Mapper wie z.B. Nibernate funktionieren. Die implementieren das Unit of Work-Pattern. Das Unit of Work-Objekt registriert neue Geschäftsobjekte und bei einem Commit() werden sie dann in die Datenbank geschrieben. Bei O/R-Mappern schreibt man auch keine SQL-Statements selber. Sie werden über das Framework generiert.
Ja, das meine ich.
Wie willst du aber die Datenbank-Verbindung mocken? Du hast keine Möglichkeit, diese von außerhalb zu ändern. Also bist du davon abhängig. Du müsstest also die Klasse ableiten und alle Methoden neu implementieren. Das ist viel zu viel Arbeit. Auch ist deine Database-Klasse sowohl die Datenbank-Verbindung als auch das Repository. Angenommen, du willst jetzt nicht nur eine Tabelle mit Deutsch/Englisch-Wörter implementieren, sondern noch eine Tabelle mit Benutzerdaten. Also z.B. wie viele Wörter die Benutzer richtig erraten haben, etc. Wie willst du das jetzt hier einbauen? Willst du die Database-Klasse um weitere Methoden erweitern? Dann kommt eine neue Tabelle und noch eine und noch eine ... Dann hast du irgendwann eine Klasse mit über 100.000 Zeilen und damit ein unwartbares Biest. Viel spaß beim Mocken.
-
Legislaturperiode hat auf stefan.macke in Vorstellungsgespräch, duales Studium Softwaretechnik | 8-10 Min Präsentation | kein Softwareentwicklungsthema?Wenn du Spaß an der Entwicklung hast und das Thema völlig frei wählbar ist, warum solltest du dann zu einem anderen Thema präsentieren? Was ist der Sinn dahinter? Du kannst dir ein beliebiges Thema aussuchen und wählst absichtlich etwas, worauf du eigentlich gar nicht so viel Lust hast!? Da würde ich sagen: Thema verfehlt.
Zu den von dir genannten Punkten kannst du sicherlich locker 8 Minuten füllen. Das ist ja nichts! Bastel mal ein paar Folien und übe deine Präsentation. Du wirst sehen, wie schnell die Zeit vergeht.
-
@Eratum Zu deinem OffTopic: Ich fand das Buch Datenfresser von Constanze Kurz und Frank Rieger ganz passend.
-
Mahlzeit!
Ich hab's aus zweierlei Gründen wieder gelöscht.
Ich fand es langweilig. Als jemand, der sich hauptberuflich mit der Auswertung und Verknüpfung von Daten beschäftigt finde ich es gelinde gesagt "bedenklich", was sich mit diesen Unmengen an Bewegungsprofilen anstellen lässt. Am besten noch per SSO-Facebook Login. Es sollte meiner Meinung nach viel mehr "Awareness" dafür geschaffen werden, was mit gar nicht mal so komplizierter Mathematik an Dingen bzgl. der Verknüpfung und Auswertung von Daten möglich ist. Und dass das immer eine Wahl "Bequemlichkeit vs. Datenhoheit/Privatsphäre" ist. Ein anderes, für Laien eher greifbares Beispiel sind die Vorschläge bei Amazon. "Ja, das ist doch bequem!" - Aber: Für welchen Preis?
Wir IT-ler, Mathematiker und Naturwissenschaftler im Allgemeinen sind da imho besonders in der Pflicht, aufzuklären und zu unterstützen.
Nicht einfach zu verteufeln, schließlich hat das Spiel vermutlich so viele Kids vor die Tür gebracht wie selten ein "Spiel" vorher. Aber ein reflektierter Umgang mit den Daten, die jeder so vor sich hin produziert, liegt mir persönlich schon irgendwie am Herzen.
Gruß, Goulasz
-
Ich finde auch den Wildwuchs an Berufsbezeichnungen teilweise sehr abschreckend:
(Junior-/Senior-)Software-Developer, (Junior-/Senior-)Software-Engeneer etc. pp.
Warum kann man sich nicht auf eine einheitliche Berufsbezeichnung oder zumindest einheitliche Kriterien für die Verwendung der verschiedenen Bezeichnungen einigen?
Ab wann ist man z.B. Junior-Software-Developer ab wann Senior-Software-Developer? Hängt das vom Lebensalter oder der Berufserfahrung ab?
Fragen über Frage!
Da wundert es mich nicht, wenn Firmen sich darüber beklagen, keine passenden Leute zu finden, wenn sie teilweise selber nicht einmal zu wissen scheinen was sie suchen oder die Anforderungen völlig realitästfremd sind. Stichwort: 18 Jahre, Ausbildung mit 1,0 abgeschlossen und 5 Jahre Berufserfahrung! Okay, ein wenig überspitzt, aber im Grunde weiß wohl jeder, was ich meine :floet:
-
Um es noch etwas zu überspitzen: Im Grunde verlangt die Wirtschaft, dass du mit 25 deinen abgeschlossenen Master hast und bereits 3 Jahre Berufserfahrung aufweisen kannst. Kinder bzw. Kinderwunsch sollte dabei sowieso keinesfalls vorhanden sein und die Gehaltsvorstellungen sollten auch unter 3k/Monat liegen. ^^