When looking beyond the RAD (drag-drop and configure) way of building User Interfaces that many tools encourage you are likely to come across 3 design patterns called Model-View-Controller, Model-View-Presenter and Model-View-ViewModel. My question has three parts to it:
What issues do these patterns address?
How are they similar?
How are they different?