Valeria murgia product design lead - caesar systems leandro caniglia director of development -...

22
MAKING THE MOST OF USER CHANGES valeria murgia product design lead - caesar systems leandro caniglia director of development - caesar systems

Transcript of Valeria murgia product design lead - caesar systems leandro caniglia director of development -...

Page 1: Valeria murgia product design lead - caesar systems leandro caniglia director of development - caesar systems.

MAKING THE MOST OF USER CHANGES

valeria murgiaproduct design lead - caesar systems

leandro canigliadirector of development - caesar systems

Page 2: Valeria murgia product design lead - caesar systems leandro caniglia director of development - caesar systems.

Demo

Use the software Generate some changes Show the changes browser Replay them

Page 3: Valeria murgia product design lead - caesar systems leandro caniglia director of development - caesar systems.

Logging user changes

messagemodel

wrapperComposite Pane

message

Changes the model? Change

Log

yes

wrapper

Page 4: Valeria murgia product design lead - caesar systems leandro caniglia director of development - caesar systems.

Command loggingmessage

change

Validates? change

Changes collection

!!Warning! store

message

model

wrapperGUI

Change(text)

file out

Page 5: Valeria murgia product design lead - caesar systems leandro caniglia director of development - caesar systems.

Change structure

change

timestamp author command(selector)

receivername arguments

not nil not empty not nil resolvable

responds tocommand

arguments size=

command arity

changeLog

Page 6: Valeria murgia product design lead - caesar systems leandro caniglia director of development - caesar systems.

Naming objects

a

c1

b2

r

c2

b1

a: b2: c2

Page 7: Valeria murgia product design lead - caesar systems leandro caniglia director of development - caesar systems.

Creating changes

ModelObjectWrapper

wrappeechangeLog

doesNotUnderstand: aMessage| selector |selector := aMessage selector.(self shouldBuildMethodFor: selector)

ifTrue: [self buildMethodFor: selector]ifFalse: [aMessage receiver: wrappee].

^aMessage perform

― private ―doesNotUnderstand:―all user commands―add:newThis:newThat:remove:renameTo:…

renameTo: argchangeLog newChange

wrappee: wrappeecommand: #renameTo:argument: arg.

^wrappee renameTo: arg

nil

Page 8: Valeria murgia product design lead - caesar systems leandro caniglia director of development - caesar systems.

Classes involved

ModelObjectWrapper ChangeLog

ChangeValidatorUserChange

Page 9: Valeria murgia product design lead - caesar systems leandro caniglia director of development - caesar systems.

Replaying changes

Change(text) change

file in

Validates?

perform | receiver wrapper |receiver := self resolve: receiverName.wrapper := self wrap: receiver.^wrapper

perform: commandwithArguments: arguments

Execute the changeyes

!!

no

changeLog

Page 10: Valeria murgia product design lead - caesar systems leandro caniglia director of development - caesar systems.

Applications

Recovery log all the time save every change on disk

Auditing who changed what, when and how

Local redo (can be used for undo) right click on any object and list all its

changes Scripting

use the changes system as a scripting language

Page 11: Valeria murgia product design lead - caesar systems leandro caniglia director of development - caesar systems.

Applications continued

Demos & Tutorials demo your system by replaying changes

Overcome back compatibility issues recreate old projects from their changes

Merging merging changes is easier than merging

objects User support

solve the user’s problem and send back the changes

Page 12: Valeria murgia product design lead - caesar systems leandro caniglia director of development - caesar systems.

Applications continued

Bug reporting send the changes that exhibit a defect don’t know what you did? look at the

changes! Testing

look at the changes to write unit tests Regression

build a library of scripts to test your system Learning (new programmers)

use the changes as debugging entry points

Page 13: Valeria murgia product design lead - caesar systems leandro caniglia director of development - caesar systems.

Applications continued

Metrics count the number of commands your

users can perform how many keystrokes does your

software require? measure user dedication and

productivity which areas of your software are more

heavily used? understand users’ workflows discover bad practice patterns

Page 14: Valeria murgia product design lead - caesar systems leandro caniglia director of development - caesar systems.

Applications continued

Teamwork combine changes from different contributors

into the same model Database conflicts

let users recover conflicting changes that did not get committed

Database: automated check-in/check-out1.download a project from the database2.work at home3.apply your changes back to the repository

Page 15: Valeria murgia product design lead - caesar systems leandro caniglia director of development - caesar systems.

Demo

Open a project Make some few changes Create two scenarios Edit & change the scenarios Show the changes

Page 16: Valeria murgia product design lead - caesar systems leandro caniglia director of development - caesar systems.

1st changeset

Decision analysis: scenarios

Basemodel

Copy

Scenario

1. Copy the base model

2. Let the user edit the copy

Every change-set represents a scenario

3. forget the scenario

change-set

2nd changeset3rd change

set4th changeset5th change

set6th changesetkth change

set

4. keep the changes

Page 17: Valeria murgia product design lead - caesar systems leandro caniglia director of development - caesar systems.

1st changeset

Scenarios continued

Basemodel

Copy

Scenario 3

1. Copy the base model

3rd changeset

2nd changeset3rd change

set4th changeset5th change

set6th changesetkth change

set

2. Locate the change set

3. Apply the changes to the copy

Parent / child relationship

Page 18: Valeria murgia product design lead - caesar systems leandro caniglia director of development - caesar systems.

Demo

Decision Tree demo

Page 19: Valeria murgia product design lead - caesar systems leandro caniglia director of development - caesar systems.

ObjectParentObject

Decision trees

Child A

Child B

Child C

Child D

Parentchanges

Child Achanges

Child Bchanges

Child Cchanges

Child Dchanges

Page 20: Valeria murgia product design lead - caesar systems leandro caniglia director of development - caesar systems.

Applications continued

Scenarios associate change sets with scenarios for

what-if analysis Decision trees

Organize change sets under a hierarchical structure

Monte Carlo simulations create one scenario for every random

sample

Page 21: Valeria murgia product design lead - caesar systems leandro caniglia director of development - caesar systems.

Influences

Changes System

Smalltalk Change

log

Squeak Event

Recorder II (M & C)

PetroVR Action

Recorder (Vuletich)

Squeak Event Recorder I

(Ingalls)

Page 22: Valeria murgia product design lead - caesar systems leandro caniglia director of development - caesar systems.

Questions

Have you implemented all the applications described here?

Have you used the changes system to analyze the workflow of end-users?

Does the changes system impact the performance?

What's the overhead for programmers? What if arguments are not literals? Can your system log any user action?