Lectures at the Advanced Programming Concepts School, 2025
DESY, Hamburg, Germany, 2-6 June 2025 -
School web site
Introduction to the Software Development Process
This brief introduction illustrates basic concepts of the software
development process.
It is propaedeutic to the following topics.
Lecture
Testing
This lecture introduces a few basic concepts of software testing,
with special emphasis on unit testing.
Unit testing is a fundamental component of the refactoring process;
it is applied in the hands-on exercise included in the APC school programme.
Lecture
Refactoring
Refactoring is a disciplined technique for restructuring an existing body of
code, improving its internal structure without changing its external behaviour.
This lecture summarizes the basic concepts and techniques of refactoring.
Lecture
Exercise: refactoring and unit testing
The students are kindly asked to install the
required software
on their laptops BEFORE the scheduled Refactoring Exercise.
The hands-on exercise is based on the "Video Store Example", described
in Chapter 1 of M. Fowler's Refactoring book, 1999 ed.
Overview
Online guidance for the exercise
References for further study
- Martin Fowler, Refactoring: Improving the Design of Existing Code, Addison-Wesley Professional, 1st ed. 1999
- Martin Fowler, Refactoring: Improving the Design of Existing Code, Addison-Wesley Professional, 2nd ed. 2018
- Martin Fowler's Refactoring web site and
Refactoring catalog
- Michael C. Feathers, Working Effectively with Legacy Code, Prentice Hall, 2004
- Serge Demeyer, Stéphane Ducasse, Oscar Nierstrasz, Object-Oriented Reengineering Patterns, 2009
(available as free PDF)
- Robert C. Martin, Clean Code, Prentice Hall, 2008
- Robert C. Martin, Clean Coder, Prentice Hall, 2011
- Robert C. Martin, Clean Architecture, Pearson, 2017
- Jacobson, G. Booch, J. Rumbaugh, The Unified Software Development Process, Addison-Wesley Professional, 1999
- Philippe Kruchten, The Rational Unified Process: An Introduction, Addison-Wesley Professional, 2003
- Philippe Kruchten, "A Software Development Process for a Team of One", Rational Edge, 2002
- Ian Sommerville, Software Engineering, Pearson, 2015
M.G. Pia, 2025