Software engineering a programming approach - Bell (Addison-Wesley, 1987)