generalize domain/range to software component