Even when a lot of effort is focused on producing good code, too many programming details have to be mixed in to allow the code to communicate overall system design and architecture well enough. Good models can do that -- as long as they do stay in sync with the code. You can do that through process discipline or tooling support -- or even by making your models executable so they become the code.
But if you can't keep your models in sync and they end up communicating the wrong information, then that's worse than not having them.
E-mail addresses are not publicly displayed, so please only leave your e-mail address if you would like to be notified when new comments are added to this blog entry (you can opt-out later).