Software Engineering
Sapir-Whorf-Hypothese
Die Sprache, die du verwendest, beeinflusst wie du Probleme wahrnimmst und löst.
Anders gesagt: Die verwendete Programmiersprache beeinflusst die Art und Weise, wie man Probleme wahrnimmt und löst.
In Objektorientierten Programmiersprachen wird die Wahrnehmung der Probleme durch die Objekte und deren Beziehungen zueinander beeinflusst.
Was ist Anwendungsentwicklung?
Der Prozess der Planung, Entwicklung, Implementierung und Wartung von Software. Hierbei gibt es verschiedene Phasen:
- Anforderungsanalyse
- Design
- Programmierung
- Testen
- Bereitstellen
Anwendungsentwickler arbeiten mit Programmiersprachen, Frameworks und Bibliotheken um maßgeschneiderte Software für Unternehmen, Organisationen und Privatpersonen zu entwickeln.
Anwendungsentwicklung zielt darauf ab, benutzerfreundliche und effiziente Lösungen zu liefern, die den Bedürfnissen der Kunden entsprechen.
Was ist der TIOBE Community Index?
Der TIOBE Community Index ist ein Index, der die Beliebtheit von Programmiersprachen misst, anhand der Anzahl der Entwickler, die die Sprache verwenden.
Was ist das RedMonk-Ranking?
Das RedMonk-Ranking ist ein Ranking, dass verschiedene Programmiersprachen rankt, basierend auf den verwendeten Code in GitHub Projekten und der Aktivität in StackOverflow.
Was ist der PYPL Index? (Popularity of Programming Language)
Die beliebteste Programmiersprache wird anhand der Suchanfragen nach Lernprogrammen in Google gemessen.
Wie beeinflusst KI die Softwareentwicklung?
KI kann die Softwareentwicklung beschleunigen, indem es die Produktivität erhöht, die Qualität der Software verbessert und neue Möglichkeiten für die Entwicklung eröffnet. Entwickler müssen weniger Standard-Code schreiben und mehr die Ausgabe reviewen.
Die Anzahl an Entwicklern sinkt nicht, aber die Anforderungen und Rollen ändern sich.
Einsatzmöglichkeiten der KI
- Automatisierte Code-Generierung
- Code-Review-Assistenten
- Fehlerbehebung
- Projektmanagement
- Dokumentation
- Testautomatisierung
- Code-Optimierung
Was für Qualifikationen benötigt ein SW-Engineer bei KI
Als Entwickler sollte man gute Prompts schreiben können, um die KI zu leiten und die beste Lösung für das Problem zu finden. Daneben ist es wichtig, das Ergebnis zu verifizieren und anzupassen, damit es den Anforderungen entspricht.
Was sind Einhörner bei Software Engineers?
Unter Einhörnern versteht man Software Engineers, die sich in vielen Bereichen sehr gut auskennt.
Darunter fallen meistens:
- FullStack (Frontend, Backend, Datenbank, DevOps)
- Cloud Technologien (AWS, Azure, GCP)
- Daten & KI (Data Science, Machine Learning, AI)
- Sicherheit & Compliance
- Softskills (Kommunikation, Teamwork, etc.)
Was ist problematisch bei der Suche nach Einhörnern?
Entwickler mit solchen Profilen sind sehr selten. Firmen erhoffen sich bei der Jobausschreibung so eines Profils, aus mehreren Entwicklern einen einzigen zu machen.
Durch die hohen Anforderungen ist es schwierig, einen solchen Entwickler zu finden oder schrecken Bewerber mit zu hohen Anforderungen ab.
Was bietet eine Programmierungsumgebung?
- Refactoring, Debuggen, Projektspeicherung, Syntax-Highlighting, IntelliSense, Fehleranzeige
.Net Zyklus
- Jeden November eine neue Version
- Mit jedem Release wird auch festgelegt, ob es ein LTS (Long Term Support) Version oder nur STS (Standard Term Support) Version ist.
- LTS Versionen werden für mindestens 3 Jahre unterstützt, STS Versionen nur für 2 Jahre.
Semantic Versioning
Format: major.minor.patch
Major- Breaking Changes. Alter Code kann kaputt gehen.Minor- Neue Features, die abwärtskompatibel sind.Patch- Fehlerbehebungen, die abwärtskompatibel sind.
Was ist Version Lock und Version Promiscuity?
Version Lock bedeutet, ein Paket kann nur mit allen abhängigen Paketen mit der gleichen Version aktualisiert werden.
Version Promiscuity bedeutet, dass ein Paket angeblich mit einer zukünftigen Version aktualisiert werden kann, obwohl die aktuelle Version nicht kompatibel ist.
Versionsverwaltungssysteme
Versionsverwaltungssysteme sind notwendig, wenn mehr als eine Person daran arbeitet. Man kann nachvollziehen, wer wann was geändert hat. Sollte etwas kaputt gehen kann man zu älteren Versionen zurückrollen. Änderungen lassen sich mergen und in die aktuelle Version integrieren.
Was ist Git?
Git ist ein dezentrales Versionsverwaltungssystem. Es gibt lokale Repositories und nutzt Hash-Werte um Änderungen zu identifizieren.
IT-Integration: Womit haben Firmen zu kämpfen
Datenintegration:
- Datenredundanz: Mehrere Programme speichern die gleichen Daten in ihren eigenen Strukturen und ändern diese unabhängig voneinander.
Funktionsintegration:
- Wenn Funktionalität mehrfach implementiert wird, entsteht abweichendes Verhalten.
Welche Arten von Systeme werden eingesetzt
Entwicklungsumgebung als Verknüpfung von Programm und Library
Projekte nutzen die Base Class Library (BCL) um bestimmte Funktionen zu nutzen (z.B. Console.WriteLine(), File.ReadAllText(), Math.Sqrt(), etc.).
IntelliSense weiß, welche Typen und Methoden existieren, da die Assemblys (DLLs) Metadaten enthalten.
Beim Build eine Assembly erstellt wird (DLL, EXE), die Referenzen auf die Libraries enthält.
C#-Code -> Compiler -> Assembly (CIL + Type Info) -> CLR/JIT -> Native Code
Die Projektdatei (csproj) enthält welche Libraries/Features benötigt werden.
Wie entsteht die Verknüpfung zwischen Library und Programm?
Während man entwickelt, fügt man eine Referenz zu einer Library (IbanLibrary) seinem Projekt (IbanProgramm) hinzu.
Innerhalb der .csproj Datei wird vermerkt, dass es eine Referenz auf die Library gibt.
IntelliSense kann aus den Metadaten der Library herauslesen, welche Typen und Methoden existieren.
Wenn man das Projekt kompiliert, wird geprüft, ob in den Metadaten die Methoden und Typen von der Library existieren.
Der Code aus der Library wird nicht in das Programm kopiert, sondern es wird ein Manifest erstellt, dass angibt, dass es zur Laufzeit die Datei IbanLibrary.dll benötigt.
Im .bin Ordner befinden sich dann die Dateien IbanLibrary.dll (Kopierte Library) und IbanProgramm.exe (Programm + Manifest).
Erst wenn das Programm ausgeführt wird passiert die eigentliche Verknüpfung.
Die CLR startet das Programm und der JIT-Compiler übersetzt den IL-Code in Maschinencode.
Sobald der Compiler auf eine Methode oder Variable trifft, die aus IbanLibrary stammt, prüft er, ob im Manifest diese hinterlegt ist.
Die IbanLibrary.dll wird dann vom CLR in den Arbeitsspeicher geladen und der Code ausgeführt.