User Interface Design: A Software Engineering Perspective