MAS Software Engineering

Der berufsbegleitende Master of Advanced Studies Software Engineering vermittelt Ihnen modernes Technologiewissen und umfangreiche Methodenkompetenzen. Ihre Dozierenden aus Hochschule und Wirtschaft sichern Ihnen Hands-on experiences: Sie lernen, indem Sie selbst anwenden und profitieren von einem nachhaltigen Lernerlebnis.

Beim Lernen sind uns Konzepte wichtiger als konkrete Technologien. Doch Konzepte können Sie nur anhand konkreter Technologien erlernen – deshalb arbeiten Sie im MAS Software Engineering mit aktuellen Technologien. Wir setzen Java und Java-Technologien als Schulsprache ein.

Wie Ihr Studium strukturiert ist

Der Weiterbildungsmaster MAS Software Engineering besteht aus 3 Zertifikatskursen „Certificate of Advanced Studies“ (CAS) und der Master Thesis. Insgesamt umfasst Ihr Studium 60 Kreditpunkte (15 pro Semester), die Sie durch Präsenzunterricht (inklusive Team-Arbeiten und Übungen), Selbststudium und Ihrer Master Thesis erarbeiten.

Die 3 Zertifikatskurse können Sie auch einzeln besuchen, ohne den gesamten MAS zu absolvieren.

Alle 3 Semester beinhalten zu einem wesentlichen Teil praktische Übungen und Teamarbeiten. Für die Übungen benötigen Sie ein eigenes Notebook. Während der unten angegebene Dauer finden auch Ferien statt.

1. Semester: Software Engineering Foundation – 15 ECTS

Dauer: Etwa 25 Wochen
10 Lektionen pro Woche (dienstags und donnerstags 17:15 bis 21:50 Uhr) und Selbststudium Kurszertifikat Certificate of Advanced Studies (CAS) mit 15 ECTS

Unix Betriebssysteme

  • Einführung: Entstehung, Derivate, Normierung
  • UNIX-Philosophie und Architektur
    (Kern und GUI-Aufsätze)
  • Unix Shell und Shell Scripts, Unix Programmierung
  • Parallelverarbeitung und Interprozess-Kommunikation, Prozesszustände, Scheduling
  • POSIX Threads, Interprozesskommunikation (IPC): Unix Signale, Unix Pipes

Programmieren in C++

  • Datentypen, Operatoren, Anweisungen, Kontrollstrukturen
  • Blöcke, Funktionen, Klassen, friend Klassen, Templates, Namespaces
  • Vererbung, Virtuelle Funktionen, Mehrfachvererbung
  • Dynamische Speicherverwaltung
  • Schnittstelle zu C, Runtime-Type-Information RTTI
  • Exception Handling, Input- und Output in C++
  • ANSI/ISO C++ und Klassenbibliotheken

Projektmanagement

  • Projektmanagement und -organisation
  • Projektziele, Aktoren und Rollen
  • Phasen- und Entwicklungsmodelle, Scrum
  • Dokumentation, Fortschrittskontrolle, Berichtswesen, Projektabschluss, Debriefing
  • Change- und Software-Konfigurationsmanagement

Software Prozesse

  • Software-Vorgehensmodelle
  • Wasserfall- und V-Modell
  • Iterative Modelle (Unified Process)
  • Agile Prozesse (Scrum, XP)
  • Kombination von Prozessen („balanced approach“)

Windows Betriebssysteme

  • Einführung: Entstehung, Versionen und Architektur
  • Windows Registry und Services
  • Zugriffsrechte
  • Prozesse, Threads und Scheduling, Interprozesskommunikation
  • Windows Graphical User Interface
  • Dateisysteme: FAT, NTFS und Festplattenpartitionierung

Einführung in Requirements Engineering

  • Übersicht Requirements Engineering Methoden
  • Use Cases für Funktionale Anforderungen
  • Qualitätsmodell für Nichtfunktionale Anforderungen
  • Requirements Management: Verwalten, Priorisieren, Changemanagement
  • Quellen und Erhebungstechniken für Requirements

Programmieren Java

  • Datentypen, Operatoren, Anweisungen und Kontrollstrukturen
  • Programmstruktur (Blöcke, Methoden, Klassen, innere Klassen, Anwendung von Generics, Packages)
  • Schnittstellen, Vererbung und Polymorphismus,
  • Exception Handling
  • Ein- /Ausgabe und Streams
  • Architektur der Java Virtual Machine

Objektorientierte Modellierungspraxis

  • Grundlagen der Domainmodellierung
  • UML für Domainmodellierung
  • Modellierungstraining an mehreren Fallstudien

Projektarbeit Objektorientierte Softwareentwicklung

  • Objektorientierte Analyse, Objektorientiertes Design und Objektorientierte Programmierung eines Warenautomaten in Java
  • Arbeit wird in kleinen Teams ausgeführt

Grundlagen Betriebssysteme

  • Programmausführung und Hardware
  • Systemprogrammierung
  • Prozesse, Threads und Interprozesskommunikation
  • Ein- /Ausgabe

Arbeiten in Teams

  • Selbstmanagement
  • Kommunikation und Kommunikationsmodelle
  • Teambildung und Teamdesign
  • Teamdiagnose und Teamentwicklung

Einführung Objektorientierte Softwareentwicklung

  • Grundbegriffe: Klassen, Vererbung, Polymorphismus
  • Einführung in UML
  • Objektorientierte Analyse (OOA) und Objektorientiertes Design (OOD) mit UML
  • Umsetzung des Objektorientierten Designs in Programmiersprache Java

Algorithmen und Datenstrukturen

  • Rekursion
  • Sortierung: Selection-, Insertion-, Merge-, Quick-Sort
  • Collections: Vector, ArrayList, Stack, Queue, Linked List, Hashtable, Map und Dictionary, Bäume, Graphen
  • Analyse von Algorithmen: O-Notation, Arithmetische Progression
2. Semester: Software Engineering Intermediate – 15 ECTS

Dauer ca. 25 Wochen
10 Lektionen pro Woche (dienstags und donnerstags 17:15 bis 21:50 Uhr) und Selbststudium
Kurszertifikat Certificate of Advanced Studies (CAS) mit 15 ECTS

Cloud Computing

  • Grundlegende Eigenschaften: Self Service, Pay-per-Use, Elastizität, Resource Pooling, CAP-Theorem
  • Cloud Deployment Types (z.B. Private Cloud, Public Cloud)
  • Service Models: SaaS, PaaS, SaaS
  • Service Level Agreements (Security, Billing) und rechtliche Rahmenbedingungen
  • Cloud Architecture Patterns für Processing, Storage, Communication und Application Architecture
  • Technische Umsetzung der Patterns in aktuellen Cloud Offerings

Kommunikation in verteilten Systemen

  • Grundlagen: Basisarchitekturen, Interprozesskommunikation, Service-Architekturen
  • Middleware: Synchrone Kommunikation (RMI, CORBA, REST, Webservices), Asynchrone Kommunikation (JMS)
  • Enterprise Service Bus

Project Automation

  • Build Automation: Einführung, Ant
  • Scheduled Builds mit Cruise Control
  • Testing, Packaging und Deployment mit Ant
  • Release Automation mit Ant und Maven

Grundlagen Web Technologien

  • HTML 5: Struktur, Konzepte, Tools und Coding Style
  • CSS 3: Prinzipien, Kombinatoren, Selektoren, Pseudos, Advanced Concepts
  • Java Script / ECMA Script 6: Typen, Scope, Context, Funktionen, Besondere JS Features
  • DOM, jQuery, Events, Templating
  • HTTP und AJAX: Client-Server Architekturen, Kommunikations-Design, Native & jQuery AJAX API

C# und .net

  • Grundlagen .NET Framework und C#
  • Unterschiede C# und Java
  • .NET-Konzepte wie Delegates, Events und LINQ
  • User Interfaces mit WPF und XAML
  • Entitiy Framework und LINQ to SQL

Interaction Design

  • User-Centered Design
  • Goal-Driven Design
  • Personas, Szenarien
  • User Interface Prototypen
  • Usability Tests

Datenbanken Grundlagen

  • Grundlagen Datenbanken
  • Datenmodellierung, Relationales Datenmodell, Normalisierung
  • SQL als DDL und DML

Software Architektur

  • Grundprinzipien guter Applikationsarchitekturen
  • Rolle des Architekten
  • Architekturtypen: Schichten, Pipes und Filters, Interaktive und Verteilte Systeme
  • Sichten auf Architekturen
  • Architektur-Patterns

Objektorientiertes Design (OOD)

  • Grundprinzipien Objektorientiertes Design
  • UML als Designnotation
  • Responsibility Driven Design
  • Design-Verifikation
  • Design Pattern
  • Control Style und Software Architektur

Parallele Programmierung

  • Multi-Threading mit Java, Java Memory Modell
  • Synchronisation in Java (Kritische Abschnitte, Monitor Prinzip)
  • Zustandssynchronisation u. gegenseitiger Ausschluss
  • Semaphoren und Locks (Condition Variable)
  • Deadlock-Problematik, Klassische Probleme der Synchronisation

Programmieren Java advanced

  • Generics und Vererbung
  • Annotations
  • Java-Reflection API
  • Lambdas
  • Garbage-Collection  und Schwache Referenzen (Strong-, Weak-, Soft- und Phantom-Referenzen)
  • Java Native Interface (JNI)
  • Aspekt-Orientierte Prog. (AOP) mit AspectJ
  • Design-by-Contract mit Assertions und JML
  • Java-Internationalization, Logging-Framework

Funktionale Programmierung

  • Eigenschaften und Anwendung Funktionaler Sprachen
  • Funktionale Programmiersprache Haskell:
  • Typen und Klassen, Generatoren
  • Rekursive Funktionen, Funktionen höherer Ordnung
  • Interaktive Programme
  • Input/Output, Monaden

Performante Teams, Process Communication Model

  • Moderationsformen von Teams
  • Konstruktive Kommunikation als Schlüssel zur Teamarbeit
  • Gruppenregeln zur Effizienzsteigerung in Gruppenarbeiten
  • Kommunikationsmodell der Process Communication: grundlegende Persönlichkeitsprofile, Dynamik der zwischenmenschlichen Kommunikation
3. Semester: Software Engineering Advanced – 15 ECTS

Dauer ca. 25 Wochen
10 Lektionen pro Woche (dienstags und donnerstags 17:15 bis 21:50 Uhr) und Selbststudium
Kurszertifikat Certificate of Advanced Studies (CAS) mit 15 ECTS

Software Engineering für Mobile Plattformen

  • Einführung in das Software Engineering für Android
  • Übersicht über die grundlegenden Challanges bei der Entwicklung für Mobile Plattformen
  • Entwickeln einer App für Android

Agile Software Development

  • Grundkonzepte, Agile Manifesto
  • Agile Prozesse: XP, Crystal Clear, Adaptive Software Development (ASD), Feature Driven Development (FDD), Scrum
  • Agile Unified Process
  • Vergleich und Einordnung Agiler Prozesse

Internet of Things Grundlagen

  • Hardwarenahe Programmierung
  • SE Methoden im IoT Umfeld
  • Internet Anbindung, Data/Event Hub
  • Arduino Entwicklung

Qualitätsmanagement

  • Grundlagen der Software-Prüfung
  • Messbare Merkmale von Software
  • Reviews
  • Qualitätsmanagementsysteme (ISO 9001 und 90003)
  • Qualitätssicherung
  • Prozessbewertung und -verbesserung (CMMI)
  • Prozessmetriken

Datenbanken advanced

  • DB-Security
  • Stored Procedures and Triggers
  • DB-Programmierung (JDBC, OR-Mapper JPA)

Architekturen verteilter Systeme

  • Herkunft und Basisarchitekturen
  • Grundlagen und Vorgehen
  • Bekannte Architektur-Strukturen und –Plattformen (SOA)
  • Service Architekturen
  • Anatomie verteilter Systeme, OMA, SOA, EDA Architekturen
  • Design, Implementation und Integration: Modularisierung, Schnittstellen-Design, Design eines Services

Requirements Engineering advanced

  • Requirements Engineering Prozess
  • Qualitätsmodell für Anwendungssysteme
  • Essenzielle objektorientierte Analyse der funktionalen Anforderungen
  • Systemdesign der funktionalen und nicht-funktionalen Anforderungen

Web Technologien Advanced

  • Web Architektur Patterns (MVC, MWVVM, Single-Page Web-App, Routing, Data Service, Rendering)
  • Web Frameworks
  • ASP.NET MVC, WebApi
  • Web Software Engineering Methoden (Project Automation, Testing, Performance Optimierung)

Software Testing

  • Checking und Testing
  • Exploratory Testing und Session Based Test Management
  • Quality Models und Test Strategie
  • Embedded Testing in agilen Projekten
  • Domain Testing und Test Case Design
  • Unit Testing, Mocking und TDD
  • Regressionstests und Systemtest Automatisierung

Rechtliche Aspekte

  • Überblick über das Immaterialgüterrecht
  • Software: Schutz und Überlassung (Übertragung und Lizenzierung)
  • Domain-Streitigkeiten
  • E-Commerce: Rechtliche, insbesondere Datenschutz und persönlichkeitsrechtliche Aspekte im Zusammenhang mit einer Internetplattform

Anwendungssicherheit

  • Information Security Management (Werte, Bedrohung, Massnahmen, Verletzlichkeit)
  • Massnahmen zur Verbesserung der Sicherheit (Organisation, Technik, Personal)
  • Kryptologie Grundlagen (Verschlüsselung, Signatur, Zertifikate, Authentisierung)
  • Anwendungssicherheit (OWASP)
4. Semester: Master-Arbeit – 15 ECTS

Zum Abschluss des MAS erarbeiten Sie im 4. Semester die Master-Arbeit. Sie bringen einen Antrag mit Ihrem Themenvorschlag bei der Studienleitung ein. Die Master-Arbeiten werden als Gruppenarbeit realisiert. Sie wählen aus Ihren Dozierenden einen Coach, der Sie bei der Erarbeitung der Master Thesis betreut. Ihr Coach unterstützt Sie bei der selbstständigen Durchführung Ihrer Arbeit. Von der Studienleitung sind nur wenige Meilensteine vorgegeben sowie eine Schlusspräsentation.

Weiter zu Dozierende

Infoanlass CAS Mobile Application Development am 23. April 2018

An den Infoveranstaltungen des CAS Mobile Application...

Der Frühling ist da – auch am HSR Campus

18.04.18 - Am Dienstag begrüsste die HSR mit einer kleinen Feier den...