OER - Kurssammlung

Arbeitsgruppe Softwareentwicklung und Robotik (TU Freiberg)


Vorlesung Softwareentwicklung

Softwareentwicklung / Einführung in die Softwareentwicklung (SoSe 2023)

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

C# Grundlagen III

Ein-und Ausgabeoperationen, Ausnahmebehandlung

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

Vererbung

Abstrakte Klassen und Methodens, Interface-Definition und -bedeutung, cast Operationen

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

Dokumentation und Build-Tools

Ziele von Dokumentation, Build Tools dotnet, MSBuild und Make

Continuous Integration

Continuous Intergration, GitHub CI, Anwendungsbeispiele

Generics

Generische Typen und Methoden, Constrains und Vererbung bei generischen Typen

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

Events

Publish-Subscribe Prinzip, Events in C#, generische Events

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

Anwendungsbeispiele

Zusammenfassung und Ausblick, Anwendung von C# in der Godot Engine