TH Köln

Master Digital Sciences

Documents for Study Program Accreditation

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

Organizational Details

Responsible for the module
Prof. Dr. René Wörzberger (Faculty F07)
Language
English
Offered in
Summer Semester (Duration 1 Semester)
Location
Campus Köln Deutz
Number of participants
minimum 5, maximum 10
Precondition
advanced coding skills, basic knowledge in databases, Linux, software architectures, and Unified Modeling Language (UML)
Recommendation
none
ECTS
5
Effort
Total effort 150h
Total contact time
60h (30h lecture / 15h exercise / 15h practical)
Time for self-learning
90h
Exam
Written exam in conjunction with project (during semester) and a presentation (2 partial exams)
Competences taught by the module
Model Systems, Implement Concepts, Deploy Products
General criteria covered by the module
Digitization

Mapping to Focus Areas

Below, you find the module's mapping to the study program's focus areas. This is done as a contribution to all relevant focus areas (in ECTS, and content-wise). This is also relevant for setting the module in relation to other modules, and tells to what extent the module might be part of other study programs.

Focus Area ECTS (prop.) Module Contribution to Focus Area
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.

Special Note

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.

Module Content

  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?

Forms of Teaching and Learning

  • 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.

Learning Material Provided by Lecturer

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

Literature