I was recently asked for recommendations on how user experience teams can design and understand the relationship between elements of the UI design (vs. the underlying software objects). Those (UX and UI) are two good topics unto themselves!
I'm going to start with UI design first, only because, each of us have probably used, and have gotten frustrated by a really poor UI design at least once in our lifetime. Everyone has their own story here (comment about it if you'd like), but there's nothing more frustrating to me when designers make that simple "check box versus radio button" mistake. All of those guidelines for best choice for UI elements have been around since before Windows 3.0, roughly 1990, that's over 20 years ago!
Of course, the choice of UI elements should be driven by the user experience (UX). Perhaps in the Agile world you'll know this as user stories, or storyboards, which are arguably subsets of the modern day use case (thank you Ivar Jacobson!)
Marrying these topics together makes for some more interesting reading:
User experience storyboards: Building better UIs with RUP, UML, and use cases
Build a user model with Rational Software Architect and the User Interface Generator
RUP for User Experience Modeling v.4.0 (which is a process model that can be extended using Rational Method Composer)
and the person who asked this original question also referenced a few other topics that IBMers had worked on in the past: