A stepwise approach for designing CORBA-based applications