Lyndon word factorization
Pyth, 17 16 bytes
-1 byte thanks to isaacg!
hf!ff>Y>YZUYT+./
Try it online!
Explanation
hf!ff>Y>YZUYT+./
./ Take all possible disjoint substring sets of [the input]
+ plus [the input] itself (for the null string case).
f Filter for only those sets which
!f T for none of the substrings
f >YZUY is there a suffix of the substring
>Y lexographically smaller than the substring itself.
h Return the first (i.e. the shortest) such set of substrings.