Transcript Document

University of Belgrade, Faculty of Mathematics
Human-Computer
Interaction and Java
Graphical User Interface Building
Aleksandar Kartelj
[email protected]
Outline
•
•
•
•
•
•
Introduction
Functional models for GUI, UML…
GUI Design (Java)
Implementation details
Clients and technologies
Concluding remarks
Resources
• Kraemer, Elieen, A Java-based Course in Human-Computer
Interaction, PDPTA, 2000.
• Lazar, Johathan, Jinjuan Heidi Feng, and Harry Hochheiser,
Research Methods in Human-Computer Interaction,
Wiley.com, 2010.
• Marinilli, Mauro et al., Professional Java User Interfaces,
New York: John Wiley & Sons, Inc., 2006.
• Weaver, James et al., Pro JavaFX 2: A Definitive Guide to Rich
Clients with Java Technology, Apress, 2012.
• Programming Paradigms Course, Faculty of Mathematics,
University of Belgrade.
Introduction
• 1980s shifts in visual technology:
• raster graphics,
• specialized graphic memories, processors
• I/O devices
• But, GUI design issues remained:
•
•
•
•
User happiness
Effectiveness
Complexity
…
Design perspective
• User-centric vs development-centric design
• Focusing on human details is critical:
• Perception
• Memory
• Learning capabilities
• Central issues:
• User
• Task
FUNCTIONAL MODELS
Standard abstract UI model
Layers
Team
Early design phase
• UML use case diagrams
• Typical (happy path) scenario analysis
Lifecycle approaches
• Rational Unified Process (RUP)
• User experience (UX) storyboards:
enriching use cases with GUI design info
• Extreme programming and agile approaches
• Evolutionary prototyping
GRAPHICAL USER INTERFACE DESIGN
Skipping theoretical parts
•
•
•
•
Short term memory and cognitive modelling
System response time and user
Compromising between human control and automation
Presenting the user with internal state of application
User-centered design
Single rule:
“Know the user.”
GUI example
Component costs
Design guidelines
Iterative development
•
•
•
•
•
•
Prototyping
Refactoring
User interface testing
Software testing
Usability testing
Profiling
Prototyping
Design patterns inside Java GUI
IMPLEMENTATION DETAILS
Java GUI underlying patterns
Separating Presentation
• Elements that need to be separated:
•
•
•
•
Look and Feel (how the components are drawn)
Some interaction styles (one or two clicks)
Fonts
Color and themes
• Provided by Swing by pluggable look and feel
• SWT and AWT enforce certain modularization
• JavaFX uses separate FXML source files
Data Transfer Object (Data
I/O)
• Holds business data in transactions between service providers
and clients
• Single method to send and receive DTO
• Decreases bandwidth
• Simplifies communication
• Usually contains only necessary information
Observer Pattern (Control)
• Event-based communication
• Publish and subscribe mechanism
Form-based, web-based, mobile clients
CLIENTS AND TECHNOLOGIES
Form-based rich clients (1)
• Microsoft technologies (Window Forms), Flash (Flex), Java
based,…
• Java differences:
•
•
•
•
•
Full object-oriented approach
Multi-platform execution
Highly collaborative community
JRE
SWT sacrifices a part of portability for performances
Form-based rich clients (2)
• Usual strategy:
• Content first
• Data second (simulate moving back and forth)
• Plain Old Java Object (POJO) object
• Commands third
•
•
•
•
AWT
Swing
SWT
JavaFX
Web-based clients (1)
• Web environment
•
•
•
•
•
•
Client display size, connection types, different browsers
No state
Cannot operate when disconnected from server
Attention to bandwidth and interaction issues
Web pages are defined in non-object-oriented languages
No installation needed
Web-based clients (2)
• Typical business implementations:
• Servlets
• JSP
• JSF (Spring, Struts,…)
• Example of online game scenario:
• Data: Postgresql + JPA (Hibernate)
• Logic: Tomee+ Rest Services
• Presentation: JavaScript + AJAX + JQuery
Mobile based clients
• J2ME MIDlets
• Limitations:
• Low hardware resources
• Simplified application lifecycle
• Cost-driven design
• Other problems…
Concluding remarks
• HCI – design, implementation and evaluation of interactive systems for
humans
• GUI building is its practical part: design, software architecture, code
tactics
• Java has good GUI related stuffs:
•
•
•
•
Widely used and well documented
Architecture-neutral, available
High level GUI packages
Growing importance on the internet
THANK YOU FOR ATTENTION.
[email protected]
[email protected]
www.math.rs/~kartelj