The object-oriented software life-cycle