TH Köln

Master Digital Sciences

Dokumente zur Akkreditierung des Studiengangs

Modul »Large and Cloud-based Software Systems« (LCSS)

Informationen zur Organisation des Moduls

Modulverantwortung
Prof. Dr. René Wörzberger (Fakultät F07)
Sprache
Englisch
Angeboten im
Sommersemester (Dauer 1 Semester)
Ort
Campus Köln Deutz
Anzahl Teilnehmer*innen
minimal 5, maximal 10
Vorbedingung
advanced coding skills, basic knowledge in databases, Linux, software architectures, and Unified Modeling Language (UML)
Empfehlung
keine
ECTS
5
Aufwand
Gesamtaufwand 150h
Kontaktzeit
60h (30h Vorlesung / 15h Übung / 15h Praktikum)
Selbstlernzeit
90h
Prüfung
Klausur in Verbindung mit semesterbegleitendem Projekt / Präsentation (2 Teilprüfungen)
Vermittelte Kompetenzen
Model Systems, Implement Concepts, Deploy Products
Beziehung zu globalen Studiengangskriterien
Digitalisierung

Beitrag zu Handlungsfeldern

Nachfolgend ist die Zuordnung des Moduls zu den Handlungsfeldern des Studiengangs aufgeführt, und zwar als anteiliger Beitrag (als ECTS und inhaltlich). Dies gibt auch Auskunft über die Verwendbarkeit des Moduls in anderen Studiengängen und über die Beziehung zu anderen Modulen im selben Studiengang.

Handlungsfeld ECTS (anteilig) Modulbeitrag zum Handlungsfeld
Architecting and Coding Software 4

This module teaches fundamental quality attributes, their impact on the design of distributed, cloud-based software systems and the selection of suitable virtualization approaches, standard protocols and the like. It focuses rather on technical aspects and complements module Domain Driven Design of Large Software Systems.

Managing and Running IT 1

This modules partly teaches operations of IT systems in the cloud.

Besonderer Hinweis

This module is organized by faculty 07 (at Campus Köln Deutz). There may be different starting times for this module, compared to all other modules. Please contact the supervisor for further information. Application is handled via this ILU course (permanent link).

Learning Outcome

  • Students are capable of
    • designing architectures for complex and mission critical enterprise software systems,
    • implementing these systems and
    • operate them in the cloud
  • by
    • knowing and trading conflicting interests and concerns of stakeholders,
    • knowing quality attributes and their trade-offs,
    • specifying architecturally significant requirements in quality attribute scenarios,
    • analysing design decisions with respect to their effects on quality attributes and stake-holder interests and concerns,
    • leveraging and reflecting on the appropriate use of the right web, virtualization, messaging, security, and database technology,
    • using cloud resources like virtual machines, containers and storages in order to operate a system in the cloud,
  • in order
    • to be able to design usable software systems that are of high quality in every regard and
    • to be able to act as an IT architect, e.g., in an IT department of a larger enterprise.

Inhaltliche Beschreibung des Moduls

  1. Software Systems: definition and some basic terms
  2. Stakeholders: The whole plethora of stakeholder groups and their numerous interests in large projects.
  3. Quality Attributes
    1. Performance: What makes my system slow? What workload do I have to deal with? Why is often latency a bigger problem than throughput? Why is it bad idea to fully utilize my system? How can I scale my system?
    2. Dependability: How can I increase my system’s availability? How can I make my system resilient to faults? Why do I have to trade availabilty for consistency and vice versa?
    3. Quality Attribute Maintainabilty: What is maintainability? What fundamental cognitive mechanism drive the perception of a code base’s maintainability?
    4. Security: How can I describe security properties? What are aspect of security? What are common threats for (web based) systems?
  4. Design
    1. Trade-offs: Why is there no silver bullet?
    2. Requirements: How can I formulate quality requirements?
    3. Principles: Which fundamental principles govern architectural design?
    4. Patterns: How should I distribute my system? How do systems and their parts communicate?
  5. Technology
    1. Middleware: What standard components constitute a contemporary large cloud-based web application? What are load balancers, inbound gateways, caching services, data warehouses, message queues, identity provides etc.?
    2. Cloud Computing: What kinds of cloud offerings do we have to deal with? How do we create a infrastructure in the cloud for a large scale web application?
    3. Virtualization: What are virtual machines and containers, how do they differ and what are the trade-offs?
    4. Web: How do HTTP as the fundamental protocol of the world-wide web, its applications like GraphQL and related protocols like WebSockets and gRPC work? How can web applications be secured by means of Transport Layer Security (TLS) for encryption and server (and client) authentication, OAuth 2 for authorization, and OpenID Connect for user authentication?
    5. Messaging and Streaming: What do message queues, brokers and streaming platforms like Apache Kafka do?
    6. Persistence: What kind of (No)SQL databases do we have and what are their trade-offs (relational, document, key-value, graph)? How does scaling work in the database world? How much consistency do I need?

Lehr- und Lernformen

  • Lectures and/or videos. Optionally flipped classroom.
  • Assignments. Try out design and technology by yourself.
  • Lab course. Form a team, carve out a “research question”, design and implement a (large scale) system, write a “research answer” in a research paper.

Zur Verfügung gestelltes Lehrmaterial

  • Lecture notes
  • Lecture videos
  • Assignment sheets
  • Templates and guidelines

Weiterführende Literatur