It is definitely geared toward writing pure software. Though most of the time, I don't actually need it to create the decomposition documentation, so long as it keeps the principles in mind.
If you're just working with a flat library of CRUD functions, most of the functions are doing one thing anyway. When that data starts to get used and transformed in the program is when this method becomes useful.
Also what's a multi-level user?