An introduction to program design - Sargent (McGraw-Hill international series in software engineering, 1991)