Program slices: formal, psychological, and practical investigations of an automatic program abstraction method