Software Engineering Project

  • Code

    L.29627

  • Amount of hours required

    420

  • Language

    en-GB

  • Quartile of execution

    2, 3

Cloud software and scalable distributed systems are commonly used to develop reliable and scalable systems. Within the software engineering project students will learn to build a reliable, high-quality, and scalable system using distributed computing. According to ANSI, Software Reliability is defined as: the probability of failure-free software operation for a specified duration in a specified environment. Reliability of systems involves a number of concepts:

  • Availability
    Redundancy, failover, degraded performance, intermittent connectivity and eventual consistency, fault tolerance, ETBF, error recovery.
  • Maintainability
    Code quality, coding standards, automated quality tools, metrics, documentation.
  • Testability
    Test-based development, remote testing, automated (GUI) testing, link between test, requirement, issue and resolution (jira).
  • Specification
    Modelling of behaviour.
  • Logging and monitoring, backup and restore
    Identifying and logging key process parameters, performance measurements, error propagation.
  • Development process quality
    Code quality tools, review process (Gitflow), versioning, continuous and concurrent development, continuous delivery.
  • Security
  • 3rd party software
    Defensive programming, product evaluation, software maturity (cots!), future-proof software, obsolescence, licensing.

Several of these concepts are introduced and practiced within this module which will help students to bring their software engineering skills to the master level. The theory is introduced and practiced in workshops. This knowledge is then applied in a single project in which the students work together to develop a professional high-quality distributed system.

The theory is combined in workshops focussing on three areas:

  • Reliable systems: How can methods and tools be applied to the software engineering process to ensure quality of the end product.
  • Parallel and distributed systems: How are modern distributed and parallel systems developed and how can practical systems be designed using industry accepted design patterns.
  • Advanced programming: modern programming languages combined functional and generic programming with object-oriented programming. In this course students will learn how functional and generic programming can be effectively used.

Competences

  • Master ICT Software Engineering 11 SW/ANA / 4
  • Master ICT Software Engineering 12 SW/ADV / 4
  • Master ICT Software Engineering 13 SW/ONT / 4
  • Master ICT Software Engineering 14 SW/REA / 4
  • Master ICT Software Engineering 15 SW/M&C / 4
  • Master ICT Software Engineering Research Skills
  • Master ICT Software Engineering Prof. Skills

Learning goals

  • Understand the process of developing high-quality software, know what tools and procedures can be applied to develop high quality software.
  • Understand how distributed systems can be used to develop applications with high-availability and reliability.
  • Understand generic programming and functional programming techniques to develop high-quality and reusable software components.

Tests