OmniGraffle would be the obvious choice, I think. There are many Stencils available for modeling the software architecture:
http://graffletopia.com/categories/programming
And there are others to help you draw mock-ups of the forms and windows in the user interface:
http://graffletopia.com/categories/user-interface
You can even create links ("Actions") on the user interface elements so that clicking on them will jump to some other canvas, making your mockups more realistic.