Software Development Process and Introduction to Java Session 1 LBSC 790 / INFM 718B Building the Human-Computer Interface.

Slides:



Advertisements
Similar presentations
Designing a Program & the Java Programming Language
Advertisements

Lecture # 2 : Process Models
Software Engineering Session 14 INFM 603. Software Software represents an aspect of reality –Input and output represent the state of the world –Software.
1 CS 106, Winter 2009 Class 4, Section 4 Slides by: Dr. Cynthia A. Brown, Instructor section 4: Dr. Herbert G. Mayer,
Data Structures Session 9 LBSC 790 / INFM 718B Building the Human-Computer Interface.
Chapter 6 The Process of Interaction Design Presented by: Kinnis Gosha, Michael McGill, Jamey White, and Chiao Huang.
Structured Programming and UML Overview Session 2 LBSC 790 / INFM 718B Building the Human-Computer Interface.
XP 1 Working with JavaScript Creating a Programmable Web Page for North Pole Novelties Tutorial 10.
PHP Programming Session 2 INFM 718N Web-Enabled Databases.
Java Programming, 3e Concepts and Techniques Chapter 1 An Introduction to Java and Program Design.
Fundamentals of Information Systems, Second Edition
Where are we? Programming in Java consists of creating source code in an editor. Source code is compiled to bytecode by the Java compiler – javac The bytecode.
1 CMSC 132: Object-Oriented Programming II Nelson Padua-Perez William Pugh Department of Computer Science University of Maryland, College Park.
Modular Programming and Use Case Models Session 3 LBSC 790 / INFM 718B Building the Human-Computer Interface.
Week 1 INFM 718N Web-Enabled Databases The Big Picture.
Guide To UNIX Using Linux Third Edition
About the Presentations The presentations cover the objectives found in the opening of each chapter. All chapter objectives are listed in the beginning.
Introduction To C++ Programming 1.0 Basic C++ Program Structure 2.0 Program Control 3.0 Array And Structures 4.0 Function 5.0 Pointer 6.0 Secure Programming.
Introduction to AppInventor Dr. José M. Reyes Álamo.
Java PAL.  Contains the development kit and the runtime environment ( aka the Java Virtual Machine )  Download Link:
CASE Tools And Their Effect On Software Quality Peter Geddis – pxg07u.
CS102 Introduction to Computer Programming
Data Structures Session 8 LBSC 790 / INFM 718B Building the Human-Computer Interface.
Java Programming, 2E Introductory Concepts and Techniques Chapter 1 An Introduction to Java and Program Design.
A First Program Using C#
CS110/CS119 Introduction to Computing (Java)
M1G Introduction to Programming 2 4. Enhancing a class:Room.
Chapter 2 The process Process, Methods, and Tools
Software Development Process and Introduction to Java Session 1 LBSC 790 / INFM 718B Building the Human-Computer Interface.
An intro to programming. The purpose of writing a program is to solve a problem or take advantage of an opportunity Consists of multiple steps:  Understanding.
CS 360 Lecture 3.  The software process is a structured set of activities required to develop a software system.  Fundamental Assumption:  Good software.
20-753: Fundamentals of Web Programming 1 Lecture 1: Introduction Fundamentals of Web Programming Lecture 1: Introduction.
1 Module Objective & Outline Module Objective: After completing this Module, you will be able to, appreciate java as a programming language, write java.
© 2012 Pearson Education, Inc. All rights reserved. 1-1 Why Java? Needed program portability – Program written in a language that would run on various.
POS 406 Java Technology And Beginning Java Code
Introduction to Java Programming with Forte Y. Daniel Liang.
Clement Allen, PhD Florida A&M University SUMMER 2006.
Software Development Cycle What is Software? Instructions (computer programs) that when executed provide desired function and performance Data structures.
Lecture 1 Introduction Figures from Lewis, “C# Software Solutions”, Addison Wesley Richard Gesick.
Fundamental Programming: Fundamental Programming K.Chinnasarn, Ph.D.
National Taiwan University Department of Computer Science and Information Engineering National Taiwan University Department of Computer Science and Information.
1 CS210 Intermediate Computing with Data Structures (Java) Saaid Baraty S-3-90.
Topic 1 Object Oriented Programming. 1-2 Objectives To review the concepts and terminology of object-oriented programming To discuss some features of.
Final Exam Review Session 14 LBSC 790 / INFM 718B Building the Human-Computer Interface.
CSE S. Tanimoto Java Introduction 1 Java A Programming Language for Web-based Computing with Graphics.
1 CSCD 326 Data Structures I Software Design. 2 The Software Life Cycle 1. Specification 2. Design 3. Risk Analysis 4. Verification 5. Coding 6. Testing.
Core Java Introduction Byju Veedu Ness Technologies httpdownload.oracle.com/javase/tutorial/getStarted/intro/definition.html.
Connecting with Computer Science2 Objectives Learn how software engineering is used to create applications Learn some of the different software engineering.
Object Oriented Programming (OOP) LAB # 1 TA. Maram & TA. Mubaraka TA. Kholood & TA. Aamal.
© 2012 Pearson Education, Inc. All rights reserved types of Java programs Application – Stand-alone program (run without a web browser) – Relaxed.
1 Class 1 Lecture Topic Concepts, Definitions and Examples.
©2016 Pearson Education, Inc. Upper Saddle River, NJ. All Rights Reserved. CSC 110 – INTRO TO COMPUTING - PROGRAMMING Overview of Programming.
Software Development Process CS 360 Lecture 3. Software Process The software process is a structured set of activities required to develop a software.
Alexandria University Faculty of Science Computer Science Department Introduction to Programming C++
ITP 109 Week 2 Trina Gregory Introduction to Java.
1 CSC160 Chapter 1: Introduction to JavaScript Chapter 2: Placing JavaScript in an HTML File.
Programming Session 6 LBSC 690 Information Technology.
Structured Programming and UML Introduction Session 2 LBSC 790 / INFM 718B Building the Human-Computer Interface.
Software Development. The Software Life Cycle Encompasses all activities from initial analysis until obsolescence Analysis of problem or request Analysis.
Programming Logic and Design Seventh Edition Chapter 1 An Overview of Computers and Programming.
Software Engineering Session 12 INFM 603. Software Software represents an aspect of reality –Input and output represent the state of the world –Software.
Introduction to Algorithm. What is Algorithm? an algorithm is any well-defined computational procedure that takes some value, or set of values, as input.
CS210 Intermediate Computing with Data Structures (Java)
Development Environment
Chapter No. : 1 Introduction to Java.
Introduction CSC 111.
CSE 303 Concepts and Tools for Software Development
Introduction to AppInventor
Tonga Institute of Higher Education IT 141: Information Systems
Tonga Institute of Higher Education IT 141: Information Systems
Presentation transcript:

Software Development Process and Introduction to Java Session 1 LBSC 790 / INFM 718B Building the Human-Computer Interface

Agenda The software development process (10 minute break) Java (5 minute break) Course description

Building User Interfaces User interface design (CMSC 828F) –What should we do? 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?

Software 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

The Waterfall Model 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

The Waterfall Model Requirements Specification Software Test Plan

The Spiral Model 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” release 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, …)

The Spiral Model

Unpleasant Realities 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

The Rapid Prototyping Model 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

Rapid Prototyping + Waterfall Update Requirements Choose Functionality Build Prototype Initial Requirements Write Specification Create Software Write Test Plan

Objectives of Rapid Prototyping Quality –Build systems that satisfy the real requirements by focusing on requirements discovery Affordability –Minimize development costs by building the right thing the first time Schedule –Minimize schedule risk by reducing the chance of requirements discovery during coding

What are Requirements? Attributes –Appearance –Concepts (represented by data) Behavior –What it does –How you control it –How you observe the results

Who Sets the Requirements? 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)

The Rapid Prototyping Cycle

The Requirements Interview 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

The Specification Formal representation of the requirements Represent objects and their relationships –Using a constrained entity-relationship model Specify how the behavior is controlled –Activity diagrams, etc.

Characteristics of Good Prototypes 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

Prototype Demonstration 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

A Disciplined Process 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

The Project Plan One-page written contract –Between developer and requirements commissioner Goal The problem to be solved ProductWhat you plan to deliver ScopeAvailable time and personnel MethodHow your rapid prototyping works RolesWhat you expect each other to do

Requirements Approval 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

What is NOT Rapid Prototyping? 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

Programming for the Web Server-side –Java servlet, Perl Client-side –Java applet, JavaScript Browser plug-ins –Java application, C, C++, …

The Java Virtual Machine A bytecode interpreter running on a real machine Java Compiler Java Virtual Machine Java Program bytecode Keyboard Mouse Screen Speaker Network “compile time”“run time”

Java Features 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

Naming Things Some constants –3 (an int), 3.7 (a float), “three” (a String) Declaring a variable –int numberOfSeats Declaring objects –CommercialFlight flight Referring to a variables in an object –flight.numberOfSeats

Operators in Java Arithmetic operators + - * / Logical operators = > && || ! String operator +

Statements in Java Sequential {…; …;…;} Semicolons are required at the end of every statement Conditional if (i==3) {…} else {…} Loop for (i=0;i<10;i++) {…} while (i<5) {…} Braces are optional around a single statement

Arrays in Java 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

Methods in Java Defining a method int multiplyNumbers (a, b){return a*b;} Argument values are local to the method Explicitly invoking a method multiplyNumbers(b, 7); Events invoke a method in response to a stimulus –Mouse click, mouseover, resize window, …

Making Java Applications 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

Getting the Java 2 SDK Java 2 SDK standard edition version –Available free at –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

Main Java 2 SDK Components javac –Compiles Java source to produce bytecode java –Interprets Java application bytecode appletviewer –Interprets Java applet bytecode jdb –Supports typical debugging tasks

Getting the Java 2 SDK to Work 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

Eclipse Java integrated development environment –Integrated editor, execution, and debugging – Main Eclipse download site->Build 3.0->http –After installation of Java 2 SDK 1.4.2! First practice exercise will get this working

Course Organization Linked from  Note: the pages moved last week (disk errors) Goals Communications –Be sure that you are receiving from me! Syllabus

Learning Opportunities 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!) –Help with programming Project –A vehicle for putting it all together

Project 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 (=36 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!

Muddiest Point 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.