Object- oriented software construction - Bertrand Meyer (New York, 1988)