Software Evolution

6 EC

Semester 1, period 2

5364SOEV6Y

Owner Master Software Engineering
Coordinator dr. L.T. van Binsbergen
Part of Master Software Engineering, year 1

Course manual 2023/2024

Course content

This course is designed around lab sessions in which we study real and large (open-source) software systems, written in languages like C, Java, PHP or Ruby. We use Rascal -a programming language workbench, or meta programming language- to apply and build software metrics, software analyses, software visualisations and (if time permits) software transformations. See http://www.rascal-mpl.org. The student is supported with introductory courses and interactive lab sessions while learning this new language in the beginning.

The course is supported by a series of lectures on the theory of software maintenance and evolution, guest lecturers from field experts, and a guided study of a number of research papers about maintenance, reverse engineering, reengineering and renovation. Example topics are clone detection, mining software repositories and refactoring.

Study materials

Syllabus

  • Reader consisting of selected papers on software evolution

Other

  • http://www.rascal-mpl.org: http://www.rascal-mpl.org
  • Potentially other (academic) sources

Objectives

  • Understand a wide range of challenges stemming from the fact that software is developed in large, dynamic teams, is subjected to changing requirements and needs to be adapted to new contexts
  • Apply language engineering and empirical software engineering techniques to large code-bases in order to analyze them using various software quality metrics (e.g. to measure maintainability)
  • Analyze scientific contributions from selected papers addressing the challenges in software evolution discussed in lectures and covered in practicals
  • Evaluate one's own implementation of a software analysis tool by experimenting with the implementation (e.g. tweaking parameters or implementation choices), drawing comparisons with alternative approaches in literature, and/or against a set of clearly specified requirements

Teaching methods

  • Lecture
  • Seminar
  • Laptop seminar
  • Presentation/symposium
  • Self-study

The format is focused on practical skills via the lab exercises, such as exploring source code and building tools, and academic skills via the lectures and seminar sessions. Every week we start with a two hour lecture on the theory of software evolution, which is required to understand the material covered in the lab exercises. The rest of the day and the following day are lab hours. You also need to spend hours every week to prepare for the writing and reading assignment.

In this course we use the experimental programming language Rascal, which is (beta) open-source software and new to most students. On top of that we dive into many new topics for the students. Therefore the lab time is designed to be an integral and interactive part of the teaching, where the lecturer and the students are both present.

Learning activities

Activity

Number of hours

Zelfstudie

53

Lecture

16

Seminar

4

Presentation (giving/attending)

3

Laptop practical

92

Attendance

Requirements concerning attendance (TER-B).

  • Participation in practical exercises, tutorials and study group sessions is obligatory. Detailed rules are laid out in the study guide and/or the course catalogue for each unit of study.
  • Assessment

    Item and weight Details

    Final grade

    1 (100%)

    Assignments

    NAP if missing

    1 (33%)

    Series 1

    Mandatory

    1 (33%)

    Series 2

    Mandatory

    1 (33%)

    Annotated Bibliography

    Mandatory

    Assignments

    The two practical assignments are executed in pairs (Series 1-2). The written assignment is executed individually (Annotated Bibliography)

    Fraud and plagiarism

    The 'Regulations governing fraud and plagiarism for UvA students' applies to this course. This will be monitored carefully. Upon suspicion of fraud or plagiarism the Examinations Board of the programme will be informed. For the 'Regulations governing fraud and plagiarism for UvA students' see: www.student.uva.nl

    Course structure

    See course reader.

    Additional information

    Recommended prior knowledge:

    • Advanced programming skills in several programming languages.
    • Knowledge of compiler construction (parsing, ASTs, basic code analysis, etc.).
    • Good (academic) English reading and writing skills.

    Contact information

    Coordinator

    • dr. L.T. van Binsbergen