Stability, coupling, and cohesion of object-oriented software systems