User Interface Development: Architectures, Components, and Tools