Object oriented software engineering