This text provides a balanced view of the various software design methodologies most widely used by practitioners. It advises students of the strengths and limitations of each method, with a view to helping them judge which to adopt when working in the field.