Software-defined vehicles