yeah it's always bad when vocal participants like the client(product owner whatever) wants to add complexity to actually make the product do what it is supposed to do..
and if you actually make an uml diagram that results in hundreds of thousands of lines of java code that does the same thing as 100 lines then you have fucked up quite badly in both making the uml diagram and writing the code.
I think the OP was asking for a solution to do just high level design anyhow, to slash up the work into smaller logical segments - so that they don't end up writing hundreds of thousands of lines of unnecessary code.
a whiteboard is useful that you can draw anything on it.
like drawing the flow of the program from ui side for example to communicate to the team what the end product needs to do so the team can figure out what the backend has to be capable of and so forth. if that part is skipped the server guys can for example write some shit that they claim fills the role of the server but is fucking horrible at doing what it needs to do and ends up needing a total rewrite before the product can ship.