Interface - Building Tools
Interface - Building Tools
Interface - Building Tools
System tools are better at designing system methods, not so much for
interfaces
Specification methods help design
Command Languages
Data-Entry Sequences
Widgets
What type of tools would you like to help you build an user interface?
Interface-Building Tools
Tools to do so
Visual editing
Create prototypes
Get the look of the system
Pros:
Improve rapidly (with subsequent versions)
Design is fast
Group work, client review, contract work
Modest technical training personnel can design interfaces
Write user manuals from it
Cons:
Non-PC based, makes design tools less prevalent
Overall benefit: user-interface independence the decoupling of programming from design
Interface Mockup Tools
Develop a quick sketch of GUI
Early stages
Explore multiple alternatives
Convey to clients
Paper and pencil, word processors, PPT
Examples?
Macromedia Director, Flash MX
Levels of mock up
Still images
Prototype (no help, database, etc.)
Apps: Microsoft Visio, Visual Studio .NET, Borlands JBuilder (screenshot)
Dramatically reduce design time
Win contracts
Comes with supplied widgets
Extensibility is varied
Software-Engineering
Tools
Layer 1 Windowing System
Extensive programming
Most Extensibility
Windows GDI
Layer 2- GUI Toolkits
AKA Rapid Prototyper, Rapid Application
Developer, User Interface Builder, UI Dev.
Environment
Software Libraries, widgets
Comes w/ basic widgets scrollbars,
buttons, etc.
Requires extensive programming
Software-Engineering
Tools
Layer 3 - Specialized Languages
No support for nongraphics part
Visual Programming
Simple Scripting
MFC, GLUI, Visual Studio, Tcl/Tk, Qt
Layer 4 Application Layer
Interface Generators
User-Interface Management Systems
Model-Based Building Tools
Small class of applications
Access, Sybase PowerDesigner
Choosing a Layer
Which is best? Highest or lowest?
Highest is typically better
Less flexibility, quicker design
Six evaluation criteria
1. Part of the application built using the tool
Ex. Presentation, UI, low-level interaction, other devices
2. Learning time
3. Building time
4. Methodology imposed or advised
Ex. Build UI first, connectivity requirements
5. Communication with other subsystems
Ex. Databases, devices, web
6. Extensibility and modularity
Ex. Evolution, new platforms, console games
Considerations
Tool price is usually not one
Good usability
Quote: Usability has been treated by many software
architects as a problem in modifiability
Separated user interface from internal functions
Now standard practice
Negatives: Postpones usability till the end!
How does this hurt?
Some problems can not be fixed at the end
Some functions need to be considered from the beginning. Ex. undo a
command, progress bar
Windowing-System Layer
User-interface library
Common widgets
windows, scroll bars, menus, fields,
buttons, etc.
Example: MFCs, Xtk, Apple Toolkit,
FrontPage
Is it interactive?
Yes: Much more effective
No: More learning, maintenance difficult
GUI Toolkit Layer
Microsoft .NET
Integrates large programming
libraries
Virtual machine compiler
Network support
Standard GUI Toolkit
Tied to windows
Java/J2EE, C#/.NET
Standard GUIs
Good for novices
Improve productivity and
satisfaction
Think post WIMP (Windows,
Icons, Menu, and a pointer)
Ex. Jazz and Piccolo (zoomable),
SATIN
Specialized toolkits to handle
apps like photo managing, 3d,
etc.
Application Framework/Specialized
Language
Application Frameworks
OOP
Started with MacApp 86 toolkit in
Object Pascal
All UI have similar structure
Capture it and translate it into classes
Ex. Buttons and actions
Others: NextStep, Cocoa, MFCs
Very effective for rapid UI building
Requires substantial programming
skills
Visual tools do exist
Specialized
Language
Create a language specifically to
create UIs
Ousterhout (94)
Created a scripting language (Tcl)
Coupled with a toolkit (Tk)
Tcl/tk is one of the most popular UI
Languages in use (research) wm title . "Hello"
Combo: Tcl easy to use, Tk message .m -text "Hello, world!" -
useful widgets font {{Times New Roman} 14}
Interpreted (rapid development) button .b -text "Done" -command
Cross platform exit
Lacks visual editor
pack .m .b
Good prototyper (hence used in
research)
Others include: Perl/Tk,
Python/Tk, Visual Basic
Web page interaction
JavaScript
First order
Spelling
Link checking
# of displays
Completeness
Still doesnt give enough info
Second order
Menu tree depth
Action redundancies
Consistency
Third order
Satisfaction
Task perfromance
What tools could you develop?