Course syllabus
Course-PM
DAT266 / DIT265 DAT266 / DIT265 Software evolution project lp1 HT25 (15 hp)
Course is offered by the department of Computer Science and Engineering
Contact details
Course examiner: Farnaz Fotrousi (fotrousi@chalmers.se)
Course responsible: Per Lenberg (perle@chalmers.se)
Teaching assistants/supervisors
- Mustafa Hassan mustafa.hassan@chalmers.se
- Srijita Basu srijita@chalmers.se
- Simin Sun siminsu@chalmers.se
- Linda Erlenhov linda.erlenhov@chalmers.se
Course purpose
The aim of this course is to enable students to synthesize and apply knowledge from previous compulsory courses in the program, while addressing the activities that take place after the initial release of a software product. The course familiarizes students with typical situations, activities, and techniques in software evolution, such as adding new features, refactoring, automating variability or testing, improving performance, and balancing non-functional requirements. In addition, students will learn to plan, implement, and critically reflect on software evolution scenarios and improvements.
Schedule
Course literature
The course literature is found here.
Course design
The course is structured around a project as well as individual assignments. To support this work, we provide a series of lectures and one workshop. The project work, individual work, and lectures are defined below.
Project Work
- Students organize themselves into project groups of 4-7 students, which will remain intact throughout the course.
- Each group:
- is assigned a dedicated supervisor.
- shall provide a short written progress report to their supervisor each week.
- shall meet with their supervisor at least every second week, with at least one of these meetings each month held physically.
- The project work is divided into four phases, each ending with a delivery milestone:
- Phase 1: Introduction, Program comprehension, and Project planning
- Phase 2: Code analysis and Software improvement implementation
- Phase 3: Continued implementation and Evolvability evaluation
- Phase 4: Product finalization
- Each phase includes one or more group assignments.
- At the end of phases 1, 2, and 3, each project group will:
- Present the results of their assignments to other project groups.
- Oppose (give feedback on) other groups’ presentations.
- At the end of phase 4, each group will:
- Submit a final project report which will be presented to other project groups.
- Oppose (give feedback on) other groups’ presentations.
Individual Work
- Students will submit three mandatory individual assignments.
Lectures and Workshop
- A lecture series and a workshop are provided to ensure students have the knowledge required to carry out the project and individual assignments.
- Lectures are not mandatory, but students are strongly encouraged to participate.
Expectations
Each student is expected to:
- Actively participate in, and contribute to, all parts of the project work.
- Present at least once during group presentations.
- Provide feedback (opposition) to another project group on at least one occasion.
Learning objectives and syllabus
Learning objectives:
- explain the notion of software evolution.
- summarize state of the art in methods and tools for software evolution tasks, such as program comprehension and software refactoring.
- discuss the challenges associated with software evolution.
- explain current research trends in program comprehension and refactoring.
- extract a software product's architecture from a given code base and evaluate the quality of the software product.
- implement one software evolution scenario.
- implement changes to a software product that lead to an improvement of the product's quality.
- make use of synergies between different improvements goals for the same product.
- detect and judge needs for quality improvement or evolution in an authentic software product.
- plan the use of appropriate methods and techniques for performing a software evolution scenario and a quality improvement task.
- judge needs for improvement of methods and tools to support software evolution.
- plan and evaluate ideas for new or improved tools.
The course is a joint course (Chalmers and Göteborgs Universitet).
Examination form
The course is examined through project work and individual assignments. There is no written exam.
The course corresponds to 15 hp in total: 12 hp for the group project and 3 hp for the individual assignments. For grading, the group project counts for 80% and the individual assignments for 20% of the final grade. To pass the course, all examination components defined below must be approved. In addition, each student must present at least once during the course and provide feedback (opposition) on at least one other group’s presentation.
The detailed distribution of points across the examination components is shown below. The maximum score is 45 points. To pass with grade 3, you need at least 22 points (~50%); grade 4 requires 31 points (~70%); and grade 5 requires 40 points (~90%).
- Group Project (36 p)
- Phase 1: Group assignments (2.5 p), Presentation (2.5 p), and Opposition (1 p)
- Phase 2: Group assignments (2.5 p), Presentation (2.5 p), and Opposition (1 p)
- Phase 3: Group assignments (2.5 p), Presentation (2.5 p), and Opposition (1 p)
- Phase 4: Group assignments (2.5 p), Final Group Report (4 p), Presentation (2.5 p), and Opposition (1 p)
- Active individual contribution to the group project (e.g., coding, participation in supervision meetings, and documentation) (8 p)
- Individual Assignments (9 p)
- Assignment 1 (0 p)
- Assignment 2 (4.5 p)
- Assignment 3 (4.5 p)