An introduction to program design - Sargent David (McGraw-Hill International Series in Software Engineering, 1991)