Udemy
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
Turn what you know into an opportunity and reach millions around the world.
Learn More
Your cart is empty.
Keep shopping
Advanced Software Testing, Maintenance and Evolution

Advanced Software Testing, Maintenance and Evolution

Automated Software Testing and Maintenance for Traditional (object-oriented) and modern (Cyber-physical) systems
Last updated 6/2025
English

What you'll learn

  • Foundations of software testing and software maintenance and evolution for traditional (object-oriented) and modern (Cyber-physical) systems
  • Motivation, challenges and definitions in the field of software testing and software maintenance and evolution
  • Techniques and technologies of software testing and software maintenance and evolution
  • Variants of software maintenance, relations to software development life-cycle
  • Quantitative analyses, empirical analyses, qualitative analyses of software. Evolution dynamics
  • Leverage platforms and Digital Twins tools for test case generation, DevOps technologies in the context of Java and autonomous systems
  • 14 Remote Lectures in total (Max 2 hours each ) - 1 Lecture per week
  • Some exercises are optional for the course, but they provide a better understanding of how the theory (published in research works) can be applied in practice
  • This course offers a combination of lectures and (optional) exercises, plus a research (usually group) project
  • Mix of learning technologies and research use projects

Course content

14 sections • 14 lectures • 2h 30m total length
  • Introduction to the Course25:57

    Software maintenance and testing are critical aspects of the software life cycle, often consuming more than two-thirds of the total effort invested in a software system. These efforts focus on modifications after delivery to correct faults, enhance performance, and adapt to evolving requirements such as platform updates or business changes. To manage these challenges effectively, it is essential to employ advanced techniques and tools that reduce costs and optimize resource utilization during development and testing.

    This course provides an in-depth exploration of the foundations of software evolution, maintenance, and testing. Students will examine key topics, including the management of successful but aging software systems (i.e., legacy software), object-oriented reengineering, refactoring, change patterns, defect prediction models, software quality analysis, and software evolution visualization.


    In the testing module, students will delve into software testing methodologies in the context of object-oriented systems (e.g., Java systems) and cyber-physical systems, such as autonomous drones and self-driving cars. The course also introduces cutting-edge analysis platforms and simulation tools, including PX4, BeamNG, Carla, and SDC-scissor. Students will learn about test case generation and continuous delivery technologies, gaining hands-on experience in applying these techniques to Java systems and autonomous systems.

    By the end of the course, students will have a strong foundation in advanced techniques for software maintenance, evolution, and testing, equipping them with the skills needed to address real-world challenges in these critical domains.

Requirements

  • Computer Science (and/or software engineering background) and programming skills in Python and/or Java
  • Creative mindset and interest in new technologies and research
  • Interested to discuss ideas and develop them during the project courses

Description

Software maintenance and testing are critical aspects of the software life cycle, often consuming more than two-thirds of the total effort invested in a software system. These efforts focus on modifications after delivery to correct faults, enhance performance, and adapt to evolving requirements such as platform updates or business changes. To manage these challenges effectively, it is essential to employ advanced techniques and tools that reduce costs and optimize resource utilization during development and testing.

This course provides an in-depth exploration of the foundations of software evolution, maintenance, and testing. Students will examine key topics, including the management of successful but aging software systems (i.e., legacy software), object-oriented reengineering, refactoring, change patterns, defect prediction models, software quality analysis, and software evolution visualization.

In the testing module, students will delve into software testing methodologies in the context of object-oriented systems (e.g., Java systems) and cyber-physical systems, such as autonomous drones and self-driving cars. The course also introduces cutting-edge analysis platforms and simulation tools, including PX4, BeamNG, Carla, and SDC-scissor. Students will learn about test case generation and continuous delivery technologies, gaining hands-on experience in applying these techniques to Java systems and autonomous systems.

By the end of the course, students will have a strong foundation in advanced techniques for software maintenance, evolution, and testing, equipping them with the skills needed to address real-world challenges in these critical domains.


Course mode:


The lecture is done regularly:

  • The lecture is done regularly over Microsoft Teams. After each lecture, a video of the live lecture is made available to students (even the ones who were not able to participate). If requested the course can be done fully in offline mode, with the videos of the lectures shared weekly. However, the exercises and projects will be discussed with the lecturer on a regular basis.

  • The slides and material of each lecture are shared upfront on the webpage of the course. Questions can be made during the lectures.

  • Projects and exercise meetings are in general done on a weekly basis via MS Teams. The time slots for them are discussed between the lecturer and the students. On request, other channels (e.g., Slack) can be created for running the projects, but the default way is to use sub-channels of the MS teams dedicated to the course.

“We encourage all students to contact the lecturer(s) via MS teams and/or email for any doubt about the projects and exercises


Format:


This course offers a combination of lectures and exercises. The exercises are required for the course as they will provide a better understanding of how the theory (published in research works) can be applied in practice.

This way the students actively learn during the lecture and through preparation before and after the lecture based on concrete examples.

There will be exercises for the students to do individually and a project. The project will be done in groups of students formed by max 3-4 people. The group project will be about one of the main topics of the course itself with presentations from the students. In specific cases, individual projects are accepted.

Sometimes, successful projects lead to the publication of relevant conferences or journals.


Grading will be based on:

(i) the practical exercise (not too complicated) performed during the course (35% of the grade);

(iii) the (bigger) project (65% of the grade).


You gain skills and competencies covered in central modules:

- Foundations of software testing and software maintenance and evolution for traditional (object-oriented) and modern (Cyber-physical) systems

- Motivation, challenges, and definitions in the field of software testing and software maintenance and evolution

- Techniques and technologies of software testing and software maintenance and evolution

- Variants of software maintenance, relations to software development life-cycle

- Quantitative analyses, empirical analyses, and qualitative analyses of software. Evolution dynamics

- The participants will also leverage platforms and Digital Twins (i.e., Simulation environments) tools (e.g., PX4, BeamNG, Carla, SDC-scissor, etc.), test case generation and continuous delivery technologies in the context of Java and autonomous systems (e.g., drones and self-driving cars).


Who this course is for:

  • Software maintenance and testing are critical aspects of the software life cycle, often consuming more than two-thirds of the total effort invested in a software system. These efforts focus on modifications after delivery to correct faults, enhance performance, and adapt to evolving requirements such as platform updates or business changes. To manage these challenges effectively, it is essential to employ advanced techniques and tools that reduce costs and optimize resource utilization during development and testing. This course provides an in-depth exploration of the foundations of software evolution, maintenance, and testing. Students will examine key topics, including the management of successful but aging software systems (i.e., legacy software), object-oriented reengineering, refactoring, change patterns, defect prediction models, software quality analysis, and software evolution visualization. In the testing module, students will delve into software testing methodologies in the context of object-oriented systems (e.g., Java systems) and cyber-physical systems, such as autonomous drones and self-driving cars. The course also introduces cutting-edge analysis platforms and simulation tools, including PX4, BeamNG, Carla, and SDC-scissor. Students will learn about test case generation and continuous delivery technologies, gaining hands-on experience in applying these techniques to Java systems and autonomous systems. By the end of the course, students will have a strong foundation in advanced techniques for software maintenance, evolution, and testing, equipping them with the skills needed to address real-world challenges in these critical domains.
  • This course address both academic and industrial researchers (both senior and junior) interested to be exposed to top notch and recent technological and researcher oriented approaches and tools/frameworks in both programming and robotics systems