Valeria murgia product design lead - caesar systems leandro caniglia director of development -...
-
Upload
rodger-ferguson -
Category
Documents
-
view
217 -
download
2
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.](https://reader030.fdocuments.us/reader030/viewer/2022032612/56649ebf5503460f94bc9fe6/html5/thumbnails/1.jpg)
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.](https://reader030.fdocuments.us/reader030/viewer/2022032612/56649ebf5503460f94bc9fe6/html5/thumbnails/2.jpg)
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.](https://reader030.fdocuments.us/reader030/viewer/2022032612/56649ebf5503460f94bc9fe6/html5/thumbnails/3.jpg)
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.](https://reader030.fdocuments.us/reader030/viewer/2022032612/56649ebf5503460f94bc9fe6/html5/thumbnails/4.jpg)
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.](https://reader030.fdocuments.us/reader030/viewer/2022032612/56649ebf5503460f94bc9fe6/html5/thumbnails/5.jpg)
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.](https://reader030.fdocuments.us/reader030/viewer/2022032612/56649ebf5503460f94bc9fe6/html5/thumbnails/6.jpg)
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.](https://reader030.fdocuments.us/reader030/viewer/2022032612/56649ebf5503460f94bc9fe6/html5/thumbnails/7.jpg)
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.](https://reader030.fdocuments.us/reader030/viewer/2022032612/56649ebf5503460f94bc9fe6/html5/thumbnails/8.jpg)
Classes involved
ModelObjectWrapper ChangeLog
ChangeValidatorUserChange
![Page 9: Valeria murgia product design lead - caesar systems leandro caniglia director of development - caesar systems.](https://reader030.fdocuments.us/reader030/viewer/2022032612/56649ebf5503460f94bc9fe6/html5/thumbnails/9.jpg)
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.](https://reader030.fdocuments.us/reader030/viewer/2022032612/56649ebf5503460f94bc9fe6/html5/thumbnails/10.jpg)
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.](https://reader030.fdocuments.us/reader030/viewer/2022032612/56649ebf5503460f94bc9fe6/html5/thumbnails/11.jpg)
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.](https://reader030.fdocuments.us/reader030/viewer/2022032612/56649ebf5503460f94bc9fe6/html5/thumbnails/12.jpg)
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.](https://reader030.fdocuments.us/reader030/viewer/2022032612/56649ebf5503460f94bc9fe6/html5/thumbnails/13.jpg)
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.](https://reader030.fdocuments.us/reader030/viewer/2022032612/56649ebf5503460f94bc9fe6/html5/thumbnails/14.jpg)
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.](https://reader030.fdocuments.us/reader030/viewer/2022032612/56649ebf5503460f94bc9fe6/html5/thumbnails/15.jpg)
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.](https://reader030.fdocuments.us/reader030/viewer/2022032612/56649ebf5503460f94bc9fe6/html5/thumbnails/16.jpg)
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.](https://reader030.fdocuments.us/reader030/viewer/2022032612/56649ebf5503460f94bc9fe6/html5/thumbnails/17.jpg)
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.](https://reader030.fdocuments.us/reader030/viewer/2022032612/56649ebf5503460f94bc9fe6/html5/thumbnails/18.jpg)
Demo
Decision Tree demo
![Page 19: Valeria murgia product design lead - caesar systems leandro caniglia director of development - caesar systems.](https://reader030.fdocuments.us/reader030/viewer/2022032612/56649ebf5503460f94bc9fe6/html5/thumbnails/19.jpg)
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.](https://reader030.fdocuments.us/reader030/viewer/2022032612/56649ebf5503460f94bc9fe6/html5/thumbnails/20.jpg)
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.](https://reader030.fdocuments.us/reader030/viewer/2022032612/56649ebf5503460f94bc9fe6/html5/thumbnails/21.jpg)
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.](https://reader030.fdocuments.us/reader030/viewer/2022032612/56649ebf5503460f94bc9fe6/html5/thumbnails/22.jpg)
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?