Use-case driven design