40
Cutting Edge Research in Engineering of Web Applications Part 2 What is Different about Engineering Web Apps? Jeff Offutt Professor of Software Engineering George Mason University http://www.cs.gmu.edu/~offutt/ off[email protected]

Cutting Edge Research in Engineering of Web Applications Part 2 What is Different about Engineering Web Apps? Jeff Offutt Professor of Software Engineering

Embed Size (px)

Citation preview

Page 1: Cutting Edge Research in Engineering of Web Applications Part 2 What is Different about Engineering Web Apps? Jeff Offutt Professor of Software Engineering

Cutting Edge Research in Engineering of Web

ApplicationsPart 2

What is Different about Engineering Web Apps?

Jeff OffuttProfessor of Software Engineering

George Mason University

http://www.cs.gmu.edu/~offutt/[email protected]

Page 2: Cutting Edge Research in Engineering of Web Applications Part 2 What is Different about Engineering Web Apps? Jeff Offutt Professor of Software Engineering

A. Who am I ?B. Who are you ?

Outline

July 2013 © J Offutt 2

Part1 (13:00-15:00)1. Web Apps Overview2. How the Interweb

Works3. Web Software

(Servlets)

Part 2 (19:00-21:00)4. Control Flow & State

Handling is Different5. State Handling in JSP

Part 3 (Friday13:00-15:00)

6. Web Software Security

7. Modeling Web Apps8. Testing Web Apps9. Engineering Process

Page 3: Cutting Edge Research in Engineering of Web Applications Part 2 What is Different about Engineering Web Apps? Jeff Offutt Professor of Software Engineering

© J Offutt 3July 2013

Tracking State Information

D1D1+D2+D3

Form1 Form2 Form3

Server

Form4

Server

D1+D2 D1+D2+D3+D4D1

Server Server

D1+D2 D1+D2+D3

• The initial versions of the web suffered from a lack of state:

HTMLForm

ServerHTMLPage

Data Info

• If you wanted multiple screens, there was no way for data to be accumulated or stored

Page 4: Cutting Edge Research in Engineering of Web Applications Part 2 What is Different about Engineering Web Apps? Jeff Offutt Professor of Software Engineering

© J Offutt 4July 2013

Session Tracking

• Web applications must maintain user states

• This is called session tracking

Page 5: Cutting Edge Research in Engineering of Web Applications Part 2 What is Different about Engineering Web Apps? Jeff Offutt Professor of Software Engineering

© J Offutt 5

Session Tracking (2)

• Session tracking refers to keeping data between multiple HTTP requests

• This problem is essential to maintaining state, which we understand quite well in the context of traditional procedural programming and object-oriented programming

• The Web brings in unique constraints

July 2013

Session:A series of related interactions between a client and a web server (similar to a use case)

HTTP is connectionless

Distributed

Page 6: Cutting Edge Research in Engineering of Web Applications Part 2 What is Different about Engineering Web Apps? Jeff Offutt Professor of Software Engineering

© J Offutt 6

New Control Flow and State Handling

July 2013

To support session handling (and other issues)

J2EE introduced new language mechanisms

1. New control flow mechanisms

2. New state management .

3. New variable scopes .

Page 7: Cutting Edge Research in Engineering of Web Applications Part 2 What is Different about Engineering Web Apps? Jeff Offutt Professor of Software Engineering

Traditional Control Flow

• Procedural languages– Method / function calls– Decisions – if, while, for, repeat-until, switch,

…– Static includes – other code pulled in before

compiling• OO languages

– Dynamic binding via polymorphism• Client / Server

– Message passing

July 2013 © J Offutt 7

Page 8: Cutting Edge Research in Engineering of Web Applications Part 2 What is Different about Engineering Web Apps? Jeff Offutt Professor of Software Engineering

Web App Control Flow (1)

Traditional Control Flow Mechanisms1. Same as traditional – Software on server and

client2. Synchronous message passing – Client to

server, HTTP– Also server to other servers

3. Event handling – On the client

July 2013 © J Offutt 8

Page 9: Cutting Edge Research in Engineering of Web Applications Part 2 What is Different about Engineering Web Apps? Jeff Offutt Professor of Software Engineering

Web App Control Flow (2)New Control Flow Mechanisms

4. Asynchronous message passing – Client to server, Ajax

5. Forward – Transfers control from one server component to another, no return

6. Redirect – Ask client to send request elsewhere

7. URL rewriting by users8. Dynamic include – Control passes to another

component, then returns, no parameters9. Dynamic binding – Reflection allows new

components to be added and used dynamicallyJuly 2013 © J Offutt 9

Page 10: Cutting Edge Research in Engineering of Web Applications Part 2 What is Different about Engineering Web Apps? Jeff Offutt Professor of Software Engineering

Ramifications of New Control Flow

• The traditional control flow graph does not model essential parts of web app execution !

• UML diagrams do not model many of these

• Most developers learn the syntax, but not the concepts behind these new control connections

July 2013 © J Offutt 10

Lots of poorly designed software …and lots and lots of poorly understood

software faults !

Page 11: Cutting Edge Research in Engineering of Web Applications Part 2 What is Different about Engineering Web Apps? Jeff Offutt Professor of Software Engineering

© J Offutt 11

New Control Flow and State Handling

July 2013

To support session handling (and other issues)

J2EE introduced new language mechanisms

1. New control flow mechanisms

2. New state management .

3. New variable scopes .

Page 12: Cutting Edge Research in Engineering of Web Applications Part 2 What is Different about Engineering Web Apps? Jeff Offutt Professor of Software Engineering

© J Offutt 12

Handling State in Procedural Languages

• The C programming language has simple ways to handle state

July 2013

char name [25];main (){ int x, y, z; . :

Global variable

Local variables

• We added several layers of scope in OO languages

Page 13: Cutting Edge Research in Engineering of Web Applications Part 2 What is Different about Engineering Web Apps? Jeff Offutt Professor of Software Engineering

© J Offutt 13

State in Object-Oriented Languages

• In addition to local and global variables, OO languages have other scopes– Nonlocals : package, protected, default, …

• Data sharing in OO languages– Two components can share data if they are in the

same scope– Two components can share data by passing

parameters• OO languages also are based on the concept

of objects, which are instances of classes– Classes define types, which are global– Objects can be defined at multiple scopes

July 2013

Page 14: Cutting Edge Research in Engineering of Web Applications Part 2 What is Different about Engineering Web Apps? Jeff Offutt Professor of Software Engineering

© J Offutt 14

Class 4

Handling State in JavaClass 1

inheritance

Class 3

Class 2

Package

Class 5

private members

default

protected members

public members

July 2013

Page 15: Cutting Edge Research in Engineering of Web Applications Part 2 What is Different about Engineering Web Apps? Jeff Offutt Professor of Software Engineering

© J Offutt 15

State on the Web• These schemes have two simple, subtle,

assumptions :

July 2013

1. The software components share physical memory

2. The program runs to completion with active memory

• But these assumptions are violated in web applications !

1. Distributed software components

2. Connectionless nature of HTTP• To keep state in web applications, we need different ways to store

and access variables and objects

Public access and parameter passing are not enough in Web applications!

Page 16: Cutting Edge Research in Engineering of Web Applications Part 2 What is Different about Engineering Web Apps? Jeff Offutt Professor of Software Engineering

© J Offutt 16

State and Session Tracking• Session tracking refers to passing data from

one HTTP request to another• A web application is comprised of several

software components• The characteristics of a Web app means that

the components do not communicate directly– Independent processes (threads)– Connectionless protocol– Client-server or N-tier architecture– Execution flow always goes through a client

July 2013

How can these independent components share data?

Page 17: Cutting Edge Research in Engineering of Web Applications Part 2 What is Different about Engineering Web Apps? Jeff Offutt Professor of Software Engineering

© J Offutt 17

Session Tracking Methods

1. Include data as extra parameters (URL rewriting)

2. Hidden form fields3. Cookies4. Servlet API session tracking tools

July 2013

Request with a TokenClient

CServer

SResponse with a Token

All four methods work by exchanging a token between the client and server

Page 18: Cutting Edge Research in Engineering of Web Applications Part 2 What is Different about Engineering Web Apps? Jeff Offutt Professor of Software Engineering

© J Offutt 18July 2013

(1) URL Rewriting

• Forms usually add parameters URL ? P1=v1 & P2=v2 & P3=v3 & …• You can add values in the URL as a parameter : HREF = "./servlet/X ? SneakyParam=42"> or : User=george">• This is used as a key to find the saved information

about the user george– Messy and clumsy– Long URLs– Information on URL is public– All HTML pages must be created dynamically– Often limited in size

Page 19: Cutting Edge Research in Engineering of Web Applications Part 2 What is Different about Engineering Web Apps? Jeff Offutt Professor of Software Engineering

© J Offutt 19

(2) Hidden Form Fields• Flows of control go through the client• Data that must be passed from one software

component to another can be stored in hidden form fields in the HTML

• Generate HTML pages with forms that store “hidden” information :

<INPUT type=“hidden” name=“User” value=“george”>

• Several problems :– Insecure – users can see the data– Unreliable – users can change the data– Undependable – users can use the back button,

direct URL entry, and URL rewriting to skip some hidden form fields

• Still useful in limited situationsJuly 2013

Page 20: Cutting Edge Research in Engineering of Web Applications Part 2 What is Different about Engineering Web Apps? Jeff Offutt Professor of Software Engineering

© J Offutt 20July 2013

(3) Cookies

• Cookies are small files or text strings stored on the client’s computer

• Created by the web browser• Arbitrary strings, but sometimes var=value

pairs or XML• Java coding : Cookie c = new Cookie (“user”, “george”);

c.setMaxAge (5*24*60*60); // expires in 5 days, in seconds

response.addCookie (c); // sends cookie to client

Page 21: Cutting Edge Research in Engineering of Web Applications Part 2 What is Different about Engineering Web Apps? Jeff Offutt Professor of Software Engineering

© J Offutt 21July 2013

(3) Cookies – cont.

• Cookies are very useful and simple• Not visible as part of the HTML content• Convenient way to solve a real problem• But cookies are scary !

– It’s as if I stored my files at your house– Cookies go way beyond session tracking– Cookies allow behavior tracking

Page 22: Cutting Edge Research in Engineering of Web Applications Part 2 What is Different about Engineering Web Apps? Jeff Offutt Professor of Software Engineering

© J Offutt 22July 2013

(4) Servlet Sessions

• Cookies are handled automatically• HttpSession stores data in the current

active object• Data disappears when the object is

destroyed• Object is destroyed after the session ends,

usually 30 minutes after the last request

The servlet API uses cookies to provide a simple, safe, flexible method for session tracking

Page 23: Cutting Edge Research in Engineering of Web Applications Part 2 What is Different about Engineering Web Apps? Jeff Offutt Professor of Software Engineering

© J Offutt 23

Sessions—Big Picture

July 2013

Web ServerClient

1Time

HTTP Request

HTTP ResponseSession ID = 0347

HTTP Request

HTTP Response

HTTP Request

HTTP Response

Session ID = 0347

TimeClient

2

HTTP Request

HTTP ResponseSession ID = 4403

HTTP Request

HTTP Response

HTTP Request

HTTP Response

Session ID = 4403

Session ID = 0347Session ID = 4403

Server returns a new unique session ID when the request has none

Page 24: Cutting Edge Research in Engineering of Web Applications Part 2 What is Different about Engineering Web Apps? Jeff Offutt Professor of Software Engineering

© J Offutt 24

Session ID = 4403

Sessions—Big Picture

July 2013

Web ServerClient

1Time

HTTP Request

HTTP ResponseSession ID = 0347

HTTP Request

HTTP Response

HTTP Request

HTTP Response

Session ID = 0347

TimeClient

2

HTTP Request

HTTP ResponseSession ID = 4403

HTTP Request

HTTP Response

HTTP Request

HTTP Response

Session ID = 4403

Client stores the ID and sends it to the server in subsequent requests

Session ID = 0347

Server recognizes all the requests as being from the same client.This defines a session.

Server recognizes these requests as being from a different client.

Page 25: Cutting Edge Research in Engineering of Web Applications Part 2 What is Different about Engineering Web Apps? Jeff Offutt Professor of Software Engineering

© J Offutt 25July 2013

Servlet API Session Methods

• The servlet API methods are not synchronized

• Multiple servlets can access the same session object at the same time

• If this can happen, the program must synchronize the code that modifies the shared session attributes

Page 26: Cutting Edge Research in Engineering of Web Applications Part 2 What is Different about Engineering Web Apps? Jeff Offutt Professor of Software Engineering

© J Offutt 26July 2013

Session Definition

• The web server– Servlet container– Servlet context

• The client– IP address– Browser

• Session objects are kept on the server• Each session object uses different parts of

memory (instances of data values) on the server

A session is defined by

Page 27: Cutting Edge Research in Engineering of Web Applications Part 2 What is Different about Engineering Web Apps? Jeff Offutt Professor of Software Engineering

© J Offutt 27July 2013

Example

Client

Servlet S1

JSP 3

JSP 2

JSP 1

Consider a small Web app with 2 servlets and 3 JSPs

Servlet S2

How can the servlets and JSPs share data?

Page 28: Cutting Edge Research in Engineering of Web Applications Part 2 What is Different about Engineering Web Apps? Jeff Offutt Professor of Software Engineering

© J Offutt 28

New Control Flow and State Handling

July 2013

To support session handling (and other issues)

J2EE introduced new language mechanisms

1. New control flow mechanisms

2. New state management .

3. New variable scopes .

Page 29: Cutting Edge Research in Engineering of Web Applications Part 2 What is Different about Engineering Web Apps? Jeff Offutt Professor of Software Engineering

© J Offutt 29July 2013

Sharing Data : Session Object• One program component can store a value in

the session object• Another component can retrieve, use, and

modify the value• Depends on the servlet container :

– Software components are threads, not processes– Servlet container stays resident and can keep

shared memory

Page 30: Cutting Edge Research in Engineering of Web Applications Part 2 What is Different about Engineering Web Apps? Jeff Offutt Professor of Software Engineering

© J Offutt 30July 2013

Session object

ServletContainer

Session Data Example

Client

Servlet S1

JSP 3

JSP 2

JSP 1

Software components share “container” access data

Servlet S2

Page 31: Cutting Edge Research in Engineering of Web Applications Part 2 What is Different about Engineering Web Apps? Jeff Offutt Professor of Software Engineering

© J Offutt 31July 2013

Login Example

Login

Form Entry

View Data

isLoggedIn: T/F

userID: string

2. Check isLoggedIn

4. Set isLoggedIn true and set userID

6. Check isLoggedIn7. if isLoggedIn false

3. if isLoggedIn false

1. User request

5. User request

Page 32: Cutting Edge Research in Engineering of Web Applications Part 2 What is Different about Engineering Web Apps? Jeff Offutt Professor of Software Engineering

© J Offutt 32

Session and Context Scopes• The session object is available to software

components in the same request and session– They have access to the session ID– This is called session scope

• Sometimes we need a wider scope– Chat rooms : Allow multiple users to interact– Group collaboration : Online meeting– Online bidding– Reservation systems

• J2EE also defines a context scope

July 2013

This allows us to share data among multiple users

Page 33: Cutting Edge Research in Engineering of Web Applications Part 2 What is Different about Engineering Web Apps? Jeff Offutt Professor of Software Engineering

© J Offutt 33

Context Scope

July 2013

session

object 1

Container Engine

Servlet S1

JSP 3

JSP 2

JSP 1

Servlet S2

context

object

Session 1 Context (application)

session

object 2

Session 2

Page 34: Cutting Edge Research in Engineering of Web Applications Part 2 What is Different about Engineering Web Apps? Jeff Offutt Professor of Software Engineering

© J Offutt 34July 2013

Session and Context Scope Examples

Compare attributeServlet and servletContext examples

http://cs.gmu.edu:8080/offutt/servlet/attributeServlethttp://cs.gmu.edu:8080/offutt/servlet/servletContext

Try them in different browsersCompare the differences

Page 35: Cutting Edge Research in Engineering of Web Applications Part 2 What is Different about Engineering Web Apps? Jeff Offutt Professor of Software Engineering

© J Offutt 35

Control Flow & State Summary• Managing state is fundamental to any

program• Managing state is the most unique aspect of

designing and programming web applications• Software vendors are creating new

frameworks all the time– Most of them introduce additional state handling

techniques• Many professional developers make

fundamental mistakes with managing state

July 2013

State management is the most common source of software faults in web applications

Page 36: Cutting Edge Research in Engineering of Web Applications Part 2 What is Different about Engineering Web Apps? Jeff Offutt Professor of Software Engineering

A. Who am I ?B. Who are you ?

Outline

July 2013 © J Offutt 36

Part1 (13:00-15:00)1. Web Apps Overview2. How the Interweb

Works3. Web Software

(Servlets)

Part 2 (19:00-21:00)4. Control Flow & State

Handling is Different5. State Handling in JSP

Part 3 (Friday13:00-15:00)

6. Web Software Security

7. Modeling Web Apps8. Testing Web Apps9. Engineering Process

Page 37: Cutting Edge Research in Engineering of Web Applications Part 2 What is Different about Engineering Web Apps? Jeff Offutt Professor of Software Engineering

Java Server Pages• A JSP is a scripted page that mixes

programming statements into HTML• JSP scriptlets:

– Have a Java-like syntax– Can use external objects and call methods– Can process form data

• JSPs are translated to Java servlets, then compiled

• The help separate presentation from data

July 2013 © J Offutt 37

Page 38: Cutting Edge Research in Engineering of Web Applications Part 2 What is Different about Engineering Web Apps? Jeff Offutt Professor of Software Engineering

© J Offutt 38

JSP Scope & State Management• JSPs formalize this with four separate scopes

1. Page : Within the same program component (web page)

2. Request : Within the same request3. Session : Within all requests from the same

session4. Application : Within all sessions for one servlet

context

• Each can be accessed by different sets of program components

• Some exist for different periods of time

July 2013

http://cs.gmu.edu:8080/offutt/jsp/642/counterScope.jsp

Page 39: Cutting Edge Research in Engineering of Web Applications Part 2 What is Different about Engineering Web Apps? Jeff Offutt Professor of Software Engineering

© J Offutt 39July 2013

application

page

session

Sharing Data with Scope

request

request

forward

forward

request

request

Client 1

Client 2

page

page

request

Page 40: Cutting Edge Research in Engineering of Web Applications Part 2 What is Different about Engineering Web Apps? Jeff Offutt Professor of Software Engineering

© J Offutt 40

Web Apps State Summary• Programmers often get state management

wrong– They learned “how” without learning “why” (the

theory)– They don’t understand the differences in the

various scopes– They forget to consider which scope to use as part

of design• State management is very different from

traditional programming• These scopes are quite powerful• New frameworks beyond J2EE often add

different scopes or different semantics on the same scopesJuly 2013

http://cs.gmu.edu/~offutt/classes/642/examples/jsp/