Software Tools.  It accomplishes an important task  (for better and for worse) You don’t have to make it yourself, and it abstracts a set of knowledge.

Slides:



Advertisements
Similar presentations
implementation support
Advertisements

Chapter 11 Designing the User Interface
Programming Paradigms and languages
Operating Systems High Level View Chapter 1,2. Who is the User? End Users Application Programmers System Programmers Administrators.
Past, Present and Future of User Interface Software Tools
6/13/20151 CS 160: Lecture 13 Professor John Canny Fall 2004.
UQI120S2 Human Computer Interaction Designing and building GUIs We made the point that the final product should fit the cognitive makeup of the user. We.
1 Model View Controller. 2 Outline Review Definitions of MVC Why do we need it? Administiriva Changing the display Event flow Dragging at interactive.
Graphical User Interface (GUI) Nelson Padua-Perez Bill Pugh Department of Computer Science University of Maryland, College Park.
Ch 7 & 8 Interaction Styles page 1 CS 368 Designing the Interaction Interaction Design The look and feel (appearance and behavior) of interaction objects.
Graphical User Interface (GUI) Nelson Padua-Perez Chau-Wen Tseng Department of Computer Science University of Maryland, College Park.
0 CS 160: Design Process: Implement Event-based UI Programming, Model-View-Controller, and the Web Jeffrey Nichols IBM Almaden Research Center
© Prentice Hall CHAPTER 3 Computer Software.
About the Presentations The presentations cover the objectives found in the opening of each chapter. All chapter objectives are listed in the beginning.
Stanford hci group / cs376 research topics in human-computer interaction I/O Toolkits Scott Klemmer 29 November 2005.
Stanford hci group / cs376 research topics in human-computer interaction UI Software Tools Scott Klemmer 27 October 2005.
1 An Introduction to Visual Basic Objectives Explain the history of programming languages Define the terminology used in object-oriented programming.
Cambodia-India Entrepreneurship Development Centre - : :.... :-:-
Chapter 13: Designing the User Interface
WEB DESIGNING Prof. Jesse A. Role Ph. D TM UEAB 2010.
Systems Software Operating Systems.
Standard 1 - Objective 2: Understand, evaluate, and use computer software.
Human Computer Interaction Implementation Support.
Operating System.
Lecture 8: Overview of UI Software and Tools Brad Myers Advanced User Interface Software 1© Brad Myers.
SOFTWARE.
Computer for Health Sciences
Lesson 4 Computer Software
TC2-Computer Literacy Mr. Sencer February 8, 2010.
MVC pattern and implementation in java
Microsoft Visual Basic 2005: Reloaded Second Edition
11.10 Human Computer Interface www. ICT-Teacher.com.
CHAPTER FOUR COMPUTER SOFTWARE.
Software Tools. Specification Methods Design requires a good notation to record and discuss alternate possibilities: –The default language for specifications.
Chapter 34 Java Technology for Active Web Documents methods used to provide continuous Web updates to browser – Server push – Active documents.
Visual C++ Programming: Concepts and Projects
Stanford hci group / cs376 u Scott Klemmer · 30 November 2006 UI Software Tools.
1 Implementation support chapter 8 programming tools –levels of services for programmers windowing systems –core support for separate and simultaneous.
Systems Software Operating Systems. What is software? Software is the term that we use for all the programs and data that we use with a computer system.
Web Application Design Patterns. Large Scale Architectures Early systems were monolithic applications –Large and hard to maintain Then came the client-server.
INFO 355Week #71 Systems Analysis II User and system interface design INFO 355 Glenn Booker.
1 Lecture 2: Overview of UI Software and Tools Brad Myers Advanced User Interface Software.
Foundation year Lec.3: Computer SoftwareLec.3: Computer Software Lecturer: Dalia Mirghani Year: 2014/2015.
Java GUI building approaches Aleksandar Kartelj Faculty of Mathematics, Belgrade 11 th Workshop “Software Engineering Education and.
C OMPUTING E SSENTIALS Timothy J. O’Leary Linda I. O’Leary Presentations by: Fred Bounds.
CS160 Discussion Section Matthew Kam Apr 7, 2003.
Stanford hci group / cs147 u 04 December 2007 Software Tools Scott Klemmer tas: Marcello Bastea-Forte, Joel Brandt, Neil Patel,
Stanford hci group / cs376 u Jeffrey Heer · 26 May 2009 User Interface Toolkits.
© Paradigm Publishing, Inc. 4-1 Chapter 4 System Software Chapter 4 System Software.
1 Lecture 5: Interactive Tools: Prototypers (HyperCard, Director, Visual Basic), Interface Builders Brad Myers Advanced User Interface Software.
Model-View-Controller Architecture. 2 Give someone a program, you frustrate them for a day; teach them how to program, you frustrate them for a lifetime.
Chapter 1 Basic Concepts of Operating Systems Introduction Software A program is a sequence of instructions that enables the computer to carry.
Oman College of Management and Technology Course – MM Topic 7 Production and Distribution of Multimedia Titles CS/MIS Department.
Basic Organization of UI Software. 2 The User Interface n Typically want to think of “UI” as only one component of an overall system – The part that “deals.
Hardware/Software Basics Test Get out your DIY Test Review.
Procedural programming Procedural programming is where you specify the steps required. You do this by making the program in steps. Procedural programming.
introductionwhyexamples What is a Web site? A web site is: a presentation tool; a way to communicate; a learning tool; a teaching tool; a marketing important.
Programming Logic and Design Seventh Edition Chapter 1 An Overview of Computers and Programming.
Presented by Alexey Vedishchev Developing Web-applications with Grails framework American University of Nigeria, 2016 Intro To MVC Architecture.
Programming Logic and Design Seventh Edition Chapter 12 Event-Driven GUI Programming, Multithreading, and Animation.
Human Computer Interaction (HCI)
Support for the Development of Interactive Systems
Lecture 8: Overview of UI Software and Tools
11.10 Human Computer Interface
Java Look-and-Feel Design Guidelines
Class Announcements 1 week left until project presentations!
Learning to Program in Python
Professor John Canny Spring 2004 March 5
I/O Toolkits Scott Klemmer · 16 November 2006.
Professor John Canny Spring 2003 March 12
Presentation transcript:

Software Tools

 It accomplishes an important task  (for better and for worse) You don’t have to make it yourself, and it abstracts a set of knowledge  (for better and for worse) it provides a platform for standardization

Standards  Standards Change where innovation happens  It inhibits innovation in the area of the standard, but it enables innovation in areas that build on the standard.  Developers are people too......and tools are interfaces too

What should tools do?  Help design the interface given a specification of the tasks.  Help implement the interface given a design.  Help evaluate the interface after it is designed and propose improvements, or at least provide information to allow the designer to evaluate the interface.  Create easy-to-use interfaces.

 Allow the designer to rapidly investigate different designs.  Allow non-programmers to design and implement user interfaces.  Provide portability across different machines and devices.  Be easy to use themselves.

Tools Can Yield Better Interfaces  Designs can be rapidly prototyped and implemented, possibly even before the application code is written.  It is easier to incorporate changes discovered through user testing.  More effort can be expended on the tool than may be practical on any single user interface since the tool will be used with many different applications.  Different applications are more likely to have consistent user interfaces if they are created using the same user interface tool.  Tools can enable a variety of specialists to participate in interface design

Tools Can Lower Maintenance Costs  There will be less code to write  There will be better modularization due to the separation of the user interface component from the application.  The level of expertise of the interface designers and implementers might be able to be lower, because the tools hide much of the complexities of the underlying system.

 Reliability may improve, since the code for the user interface is created automatically from a higher level specification.  It may be easier to port an application to different hardware and software environments since the device dependencies are isolated in the user interface tool.

Success of Tools  Today’s tools are highly successful  Window Managers, Toolkits, Interface Builders ubiquitous  Most software built using them  Are based on many years of HCI research  Brad A. Myers. “A Brief History of Human Computer Interaction Technology.” ACM interactions. Vol. 5, no. 2, March, pp

Different Tools for Different Genres  Each has own unique UI style, and implementation challenges  Word processors  Drawing programs  CAD/CAM  Painting programs  Hierarchy displays, like file browsers  Mail readers  Spreadsheets  Forms processing

 WWW  Interactive games  Visualizations  Automated-teller machines (ATM)  Virtual Reality  Multi-media  Video  Animation  Controlling machinery

Different Tools for Different Stages

Tools Can Discourage Change  Harder to use non-standard widgets  Have to buy or create your own, e.g. pie menus  Easy to re-arrange widgets and layout of app,  But hard to change behavior (i.e. the code)  Provides some support, not a lot stresses importance of getting features right first  Harder to do things beyond mouse and keyboard  Speech and sketching harder  Harder to do multi-user multi-device apps

Predictability for users  Why is every login and checkout different?  Sometimes there’s a reason but often there isn’t  For developers: path of least resistance  Tools should guide implementers into better user interfaces

Programmers are People  And programming languages are user interfaces. Consequently, all of the machinery that we’ve got for designing and evaluating user interfaces we can bring to bear on programming tools.

Plotting the Learning Curve Graphical Editor HTML Javascript

Threshold and Ceiling  Threshold = How hard to get started  Ceiling = how much can be achieved

Threshold, Ceiling, and Walls

Threshold and Ceiling

Model-View-Controller  Architecture for interactive apps  Introduced by Smalltalk developers at PARC  Partitions application in a way that is  scalable  maintainable

Model -View-Controller  Information the app is trying to manipulate  Representation of real world objects  Example:  circuit for a CAD program  logic gates and wires connecting them  shapes in a drawing program  geometry and color

Model-View-Controller  Implements a visual display of the model  May have multiple views  e.g., shape view and numerical view  Any time the model is changed, each view must be notified so that it can change later  e.g., adding a new shape

Model-View-Controller  Receives all input events from the user  Decides what they mean and what to do  Communicates with view to determine which objects are being manipulated (e.g., selection)  Calls model methods to make changes on objects  Model makes change and notifies views to update

Model-(ViewController)  View and controller are tightly intertwined  lots of communication between the two  Almost always occur in pairs  i.e., for each view, need a separate controller  Many architectures combine into a single class

Why MVC?  Combining MVC into one class or using global variables will not scale  model may have more than one view  each is different and needs update when model changes  Separation eases maintenance  easy to add a new view later  new model info may be needed, but old views still work  can change a view later, e.g., draw shapes in 3-d (recall, view handles selection)

 A success story:  View source on the Web: huge user interface innovation.

Discussion of Themes  Path of Least Resistance  Tools should guide implementers into better user interfaces  Goal for the future: do this more?  Predictability  Programmers do not seem willing to release control  Especially when system may do sub-optimal things  Moving Targets  Long stability of Macintosh Desktop paradigm has enabled maturing of tools

What worked  Window Managers and Toolkits  Event Languages  Graphical, Interactive Tools  Component Architectures  Scripting Languages  Hypertext  Object Oriented Programming

Window Managers  Multiple (tiled) windows in research systems of 1960’s: NLS, etc.  Overlapping introduced in Alan Kay’s thesis (1969)  Smalltalk, 1974 at Xerox PARC  Successful because multiple windows help users manage scarce resources:  Screen space and input devices  Attention of users  Affordances for reminding and finding other work

Toolkits  A collection of widgets  Menus, scroll bars, text entry fields, buttons, etc.  Toolkits help with programming  Help maintain consistency among UIs  Path of least resistance translates into getting programmers to do the right thing  Address common, low-level features for all UIs  Address the useful & important aspects of UIs

Why use toolkits?  Code reuse saves programmer time  50% of code is for the GUI [Myers & Rosson, CHI ’92]  Consistent look & feel across apps  Easier to modify and iterate the UI  Make UI development accessible to more people

Sequential Programs  Program takes control, prompts for input  command-line prompts (DOS, UNIX)  The user waits on the program  program tells user it’s ready for more input  user enters more input

Sequential Programs (cont.)  works really well for text-based / low- interaction apps  General Flow  Prompt user for input  Program reads in a line of text  Program runs for a while (user waits)  Maybe some output  Loop back to beginning

 But how do you model the many actions a user can take?  for example, a word processor?  printing, editing, inserting, whenever user wants  sequential doesn’t work as well for graphical and for highly-interactive apps  how do you model the mouse input?

Example Interactions  Title bar  Folder  Scroll bar  Size control  Close box

Modern GUI Systems  Concepts:  Event-driven programming  Widgets  Interactor Tree  Describes how most GUIs work  Closest to Java  But similar to Windows, Mac, Palm Pilot

What this means for design  Harder to use non-standard widgets  have to buy or create your own, ex. pie menus  Easy to re-arrange widgets and layout of app, but hard to change behavior (i.e. the code)  provides some support, not a lot  stresses importance of getting features right first  Harder to do things beyond mouse and keyboard  speech and sketching harder  Harder to do multi-user multi-device apps

   _interface_builder _interface_builder   /COMP3050/readings/futureofTools.pdf /COMP3050/readings/futureofTools.pdf  /COMP3050/readings/futureofTools.ppt /COMP3050/readings/futureofTools.ppt