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: