An introduction to program design - Sargent, David (McGraw-Hill, 1991)