OER - Kurssammlung
Arbeitsgruppe Softwareentwicklung und Robotik (TU Freiberg)
Vorlesung Softwareentwicklung
Die Lehrveranstaltung vermittelt Konzepte objektorientierten und interaktiven Programmierung, Syntax und Semantik der Programmiersprache C# sowie die Fähigkeiten Probleme kollaborativ bei verteilter Verantwortlichkeit von Klassen zu lösen.
Die "Quellcodes" aller Vorlesungsmaterialien finden Sie im zugehörigen Github-Repository Github-Repository
Einführung
Motivation der Vorlesung "Softwareentwicklung" und Beschreibung der Organisation der Veranstaltung
Softwareentwicklung als Prozess
Definition des Softwarebegriffes, Softwareentwicklungszyklus, Fehler in der Softwareentwicklung, Softwarequalität
.NET und Einordnung der Sprache C#
Programmierparadigmen und Einordnung von C#, Eigenschaften der Programmiersprache C#, .NET, Unterschiede zu anderen Sprachen/Konzepten
C# Grundlagen I
Einführung in die Basiselemente der Programmiersprache C#, Variablen, Datentypen und Operatoren
C# Grundlagen II
Werte- und Referenzdatentypen, Array, String, implizite Variablendefinition und Nullables
Programmfluss und Funktionen
Kontrollstrukturen, Funktionen, Parameterübergabe, Überladen von Funktionen, Lebensdauer und Sichtbarkeit von Variablen
OOP Motivation
Einführung der Konzepte OOP, structs, this-Operator, readonly- und const-Datenfelder, Sichtbarkeitsattribute
OOP Konzepte I
OOP-Konzepte (Kapselung, Vererbung, Polymorphie), Klassen und Klassenmembers, Operatorenüberladung
Abstrakte Klassen und Interfaces
Lösungsansatz und Formen der Versionsverwaltung, Strategien der Konfliktvermeidung, Git
Versionsverwaltung I
Motivation der Versionsverwaltung in der Softwareentwicklung, Diskussion der zentraler / dezentraler Ansätze, Umsetzung von merge Operation, Einführung in die Verwendung von Git
Versionsverwaltung II
Versionsverwaltung mit Git und GitHub, Automatisierung von Arbeitsabläufen auf dem Versionsserver
Modellierung von Software
Prinzipien des (objektorientierten) Softwareentwurfs, Motivation der Modellierung von Software, Unified Modeling Language
Modellierung von Software
Klassifikation von UML Diagrammtypen, Anwendungsfall Diagramm, Aktivitätsdiagramm, Sequenzdiagramm, Klassendiagramm, Objektdiagramm, UML Tools
Testen von Software
Softwarefehler, Testen zur Qualitätssicherung, Planung von Tests, Konzepte und Umsetzung in dotnet
Collections
Generelle Container und Datenkonzepte, Collections, Implementierung in Csharp und Anwendung der generischen Collections
Delegaten
Grundidee, Multicast Delegaten, Anonyme/Lambda Funktionen, generische Delegaten, Action und Func
Threads
Multithreading Konzepte, Thread-Modell und Interaktion, Implementierung in C#, Datenaustausch, Locking, Thread-Pool
Tasks
Logging in Software, Konfiguration eines Programmweiten Loggingsystems, weiterführenden Abstraktionen für Multithreading, Task Modell in C#, asynchrone Methoden
Language-Integrated Query
Erweiterungsmethode, anonyme Typen, Enumerables, LINQ-Grundlagen und Basisfunktionen
Entwurfsmuster
Entwurfsmuster-Kategorien und ausgewählte Beispiele, Singleton Pattern, Adapter Pattern, State Pattern, Factory Pattern, Anti-Pattern