1
|
- Session 1
- LBSC 790 / INFM 718B
- Building the Human-Computer Interface
|
2
|
- The software development process
- Java
- Course description
|
3
|
- User interface design (CMSC 828F)
- Software design (this course)
- How should we go about it?
- Software implementation (this course)
- How do we actually do it?
- Usability evaluation (CMSC 828F)
- Did we do the right thing?
|
4
|
- Software represents an aspect of reality
- Input and output represent the state of the world
- Software describes how the two are related
- Programming languages specify the model
- Data structures model things
- Structured programming models actions
- Object-oriented programming links the two
- A development process organizes the effort
|
5
|
- Key insight: invest in the design stage
- An hour of design can save a week of debugging!
- Three key documents
- Requirements
- Specifies what the software is supposed to do
- Specification
- Specifies the design of the software
- Test plan
- Specifies how you will know that it did it
|
6
|
|
7
|
- Build what you think you need
- Perhaps using the waterfall model
- Get a few users to help you debug it
- First an “alpha” release, then a “beta” rel=
ease
- Release it as a product (version 1.0)
- Make small changes as needed (1.1, 1.2, ….)
- Save big changes for a major new release
- Often based on a total redesign (2.0, 3.0, …)
|
8
|
|
9
|
- The waterfall model doesn’t work well
- Requirements usually incomplete or incorrect
- The spiral model is expensive
- Rule of thumb: 3 iterations to get it right
- Redesign leads to recoding and retesting
|
10
|
- Goal: explore requirements
- Without building the complete product
- Start with part of the functionality
- That will (hopefully) yield significant insight
- Build a prototype
- Focus on core functionality, not in efficiency
- Use the prototype to refine the requirements
- Repeat the process, expanding functionality
|
11
|
|
12
|
- Quality
- Build systems that satisfy the real requirements by focusing on
requirements discovery
- Affordability
- Minimize development costs by building the right thing the first ti=
me
- Schedule
- Minimize schedule risk by reducing the chance of requirements disco=
very
during coding
|
13
|
- Attributes
- Appearance
- Concepts (represented by data)
- Behavior
- What it does
- How you control it
- How you observe the results
|
14
|
- People who need the task done (customers)
- People that will operate the system (users)
- People who use the system’s outputs
- People who provide the system’s inputs
- Whoever pays for it (requirements commissioner)
|
15
|
|
16
|
- Focus the discussion on the task
- Look for objects that are mentioned
- Discuss the system’s most important effects
- Displays, reports, data storage, device control, …
- Learn where the system’s inputs come from
- People, stored data, devices, …
- Note any data that is mentioned
- Try to understand the structure of the data
- Shoot for the big picture, not every detail
|
17
|
- Formal representation of the requirements
- Represent objects and their relationships
- Using a constrained entity-relationship model
- Specify how the behavior is controlled
|
18
|
- Easily built (about a week’s work)
- Requires powerful prototyping tools
- Intentionally incomplete
- Insightful
- Basis for gaining experience
- Well-chosen focus (DON’T built it all at once!)
- Easily modified
- Facilitates incremental exploration
|
19
|
- Choose a scenario based on the task
- Develop a one-hour script
- Focus on newly implemented requirements
- See if it behaves as desired
- The user’s view of correctness
- Solicit suggestions for additional capabilities
- And capabilities that should be removed
|
20
|
- Agree on a project plan
- To establish shared expectations
- Start with a requirements document
- That specifies only bedrock requirements
- Build a prototype and try it out
- Informal, focused on users -- not developers
- Document the new requirements
- Repeat, expanding functionality in small steps
|
21
|
- One-page written contract
- Between developer and requirements commissioner
- Goal The problem to be solved
- Product What you plan to deliver
- Scope Available time and personnel
- Method How your rapid prototyping works
- Roles What you expect each other to do
|
22
|
- Plan on between 12 and 50 iterations
- Adding about 10 new objects per iteration
- Use the project plan to enforce a deadline
- New requirements shrink, but never disappear
- Schedule a formal approval demonstration
- Allow one more iteration to fix any problems
|
23
|
- Focusing only on appearance
- Behavior is a key aspect of requirements
- Just building capabilities one at a time
- User involvement is the reason for prototyping
- Building a bulletproof prototype
- Which may do the wrong thing very well
- Discovering requirements you can’t directly use
- More efficient to align prototyping with coding
|
24
|
- Server-side
- Client-side
- Browser plug-ins
- Java application, C, C++, …
|
25
|
- A bytecode interpreter running on a real machine
|
26
|
- Strong support for graphical interfaces
- Includes a rich set of interface objects
- Designed for a networked environment
- Provides easy access to Web pages
- Object-oriented
- Designed to support abstract thinking
- Strongly typed
- You must declare variables before use
|
27
|
- Some constants
- 3 (an int), 3.7 (a float), “three” (a String)
- Declaring a variable
- Declaring objects
- Referring to a variables in an object
|
28
|
- Arithmetic operators
- Logical operators
- < <=3D =3D=3D !=3D >=3D > && || !
- String operator
|
29
|
- Sequential
- {…; …;…;}
- Semicolons are required at the end of every statement
- Conditional
- if (i=3D=3D3) {…} else {…}
- Loop
- for (i=3D0;i<10;i++) {…}
- while (i<5) {…}
- Braces are optional around a single statement
|
30
|
- A set of elements
- For example, the number of days in each month
- Each element is assigned an index
- A number used to refer to that element
- For example, x[4] is the fifth element - count from zero
- Arrays and loops work naturally together
|
31
|
- Defining a method
- int multiplyNumbers (a, b){return a*b;}
- Argument values are local to the method
- Explicitly invoking a method
- Events invoke a method in response to a stimulus
- Mouse click, mouseover, resize window, …
|
32
|
- Start by defining a top-level class
- public class ExampleApplication { … }
- Create a main method in the top-level class
- public static void main(String[] args) { … }
- Put statements in the main method
- System.out.println(“Hello World!”);
- Add more methods to the class as needed
- Add more classes as needed
|
33
|
- Java 2 SDK standard edition version 1.4.2
- Available free at http://java.sun.com/j2se/
- Runs on Windows, Solaris (Sun’s unix) and Linux
- Already installed several places on campus
- On the Windows machines in HBK 2105
- Available on WAM and Glue Unix systems
- Over telnet (without graphics display)
- On console in CSS 4352, PG2 and EPSL
|
34
|
- javac
- Compiles Java source to produce bytecode
- java
- Interprets Java application bytecode
- appletviewer
- Interprets Java applet bytecode
- jdb
- Supports typical debugging tasks
|
35
|
- path
- Where to look for javac, java, …
- classpath
- Where to look for “.class” files
- Both can be set automatically
- On WAM and Glue, “tap java”
- On Windows:
- Control Panel->System->Advanced->Environment Variables
|
36
|
- Java integrated development environment
- Integrated editor, execution, and debugging
- http://eclipse.org/downloads/index.php
- Main Eclipse download
site->Build 3.0->http
- After installation of Java 2 SDK 1.4.2!
- First practice exercise will get this working
|
37
|
- Linked from http://www.glue.umd.edu/~oard
- Note: the pages moved last week (disk errors)
- Goals
- Communications
- Be sure that you are receiving email from me!
- Syllabus
|
38
|
- Class sessions
- Theory, programming, show-and-tell
- Reading
- Primary source for detail (esp. programming!)
- Assignments
- Graded homework, ungraded exercises
- Lab sessions (Let’s choose a time now!)
- Project
- A vehicle for putting it all together
|
39
|
- Designed for teams of three people
- Larger or smaller is okay, working alone is not
- Form a team and choose your goal by week 6
- Plan on 6 hours per person per week after that
- Choose one of my project ideas, or invent your own
- Go through three prototype iterations
- 2 weeks each (=3D36 person-hours to design/code/test)
- Make a presentation during the final class session
- We need to choose the date and time for this now!
|
40
|
- On a blank sheet of paper, write a
- single sentence that will convey
- to me what you found to be the
- most confusing thing that was
- discussed during today’s class.
|