Software-driven vehicles