Lectures at
Advanced Programming
Concepts 2016
7-11 March 2016 - DESY, Hamburg, Germany - School
web site
Introduction to
the Software
Development Process
This brief introduction illustrates the main concepts of the software
development process and overviews some models of software development.
It is
propedeutic to the following topics.
Lecture
References for
further study
Ian Sommerville, Software Engineering, Pearson, 2015 (10th ed.)
Robert C. Martin, Agile Software Development, Principles, Patterns, and Practices, Pearson, 2002
B. Boehm, “Get Ready for Agile Methods, With Care”, IEEE Computer, 2002
B. Meyer, Agile!: The Good, the Hype and the Ugly, Springer, 2014
D. Astels, Test Driven Development: A Practical Guide, Prentice Hall, 2003
K. Schwaber, and M. Beedle, Agile Software Development with Scrum, Prentice Hall, 2001
I. 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
Robert C. Martin, Clean Code: A Handbook
of Agile Software Craftsmanship, Prentice Hall, 2008
Testing
This lecture introduces the main concepts of the software test process.
Unit testing, which is illustrated here, is a fundamental component of
the refactoring process; it is applied in the hands-on refactoring exercise
described below.
Lecture
Useful links
Boost Unit Test Framework
Google Test
Refactoring
The lecture summarizes the main concepts of refactoring, with special
attention to refactoring physics code.
Lecture
Exercise:
The Video Store Example
This hands-on exercise is based on the "Video Store Example", described
in
Chapter 1 of M. Fowler's Refactoring book.
Overview
Online guidance for
the exercise
References
for further study
Martin Fowler, Refactoring: Improving the
Design of Existing Code, Addison-Wesley Professional, 1999
G. Suryanarayana, G. Samarthyam, T. Sharma, Refactoring for Software Design Smells, Morgan Kaufmann, 2014
Michael C. Feathers, Working Effectively with
Legacy Code, Prentice Hall, 2004
Serge Demeyer, Stéphane Ducasse, Oscar
Nierstrasz, Object-Oriented
Reengineering Patterns, 2009
Robert C. Martin, Clean Code: A Handbook
of Agile Software Craftsmanship, Prentice Hall, 2008
Useful links
Martin Fowler's Refactoring web site
Refactoring catalog
Smells to Refactoring Quick Reference
Computing
environment for the exercise
Accounts
for the APC students have been preset at DESY on naf-school01.desy.de
and naf-school02.desy.de. No further software installation is necessary
on the computers dedicated to the school. The following information is
provided, if you wish to reproduce the exercise in your own computing
environment.
The exercise has been tested on the following platforms:
- Mac OS 10.11 (El Capitan), Xcode 7.2.1 with command line tools installed
- Scientific Linux 6
- CentOS 7 with gcc 4.8.5 (@naf-school01.desy.de)
The instructions below are given for these platforms; please adapt them
to your own computing environment, if necessary.
Version control
Git
Pro Git book
Repository
of the source code for the exercise
Build
cmake (needed to build GoogleTest)
Unit testing
Google Test
(the repository gives access to the Google Test Primer to get started)
Installing googletest for the exercise:
quick and simple guidance, it does not replace the more extensive
documentation of the Google Test Primer