1 / 22

Making the most of user changes

valeria murgia product design lead - caesar systems leandro caniglia director of development - caesar systems. Making the most of user changes. Demo. Use the software Generate some changes Show the changes browser Replay them. Logging user changes. wrapper. Composite Pane. model.

ivi
Download Presentation

Making the most of user changes

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. valeriamurgia product design lead - caesar systems leandrocaniglia director of development - caesar systems Making the most of user changes

  2. Demo • Use the software • Generate some changes • Show the changes browser • Replay them

  3. Logging user changes wrapper Composite Pane model message message wrapper ChangeLog Changes the model? yes

  4. Command logging message wrapper GUI change Changes collection Validates? change !! Warning! store message file out Change(text) model

  5. Change structure change changeLog timestamp author command(selector) receivername arguments not nil not empty not nil resolvable arguments size=command arity responds tocommand

  6. Naming objects r a b2 b1 c1 a: b2: c2 c2

  7. Creating changes nil ModelObjectWrapper doesNotUnderstand: aMessage | selector | selector := aMessage selector. (self shouldBuildMethodFor: selector) ifTrue: [self buildMethodFor: selector] ifFalse: [aMessage receiver: wrappee]. ^aMessage perform wrappee changeLog ― private ― doesNotUnderstand: ―all user commands― add: newThis: newThat: remove: renameTo: … renameTo: arg changeLognewChange wrappee: wrappee command: #renameTo: argument: arg. ^wrappeerenameTo: arg

  8. Classes involved ModelObjectWrapper ChangeLog UserChange ChangeValidator

  9. Replaying changes change changeLog Change(text) file in Validates? yes Execute the change perform | receiver wrapper | receiver := self resolve: receiverName. wrapper := self wrap: receiver. ^wrapper perform: command withArguments: arguments no !!

  10. 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

  11. 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

  12. 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

  13. 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

  14. 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-out • download a project from the database • work at home • apply your changes back to the repository

  15. Demo • Open a project • Make some few changes • Create two scenarios • Edit & change the scenarios • Show the changes

  16. Decision analysis: scenarios Basemodel • Copy the base model 1st changeset • keep the changes 2nd changeset 3rd changeset 4th changeset 5th changeset 6th changeset kth changeset Copy change-set Every change-set represents a scenario Scenario Let the user edit the copy • forget the scenario

  17. Scenarios continued Basemodel • Copy the base model • Locate the change set 1st changeset 2nd changeset 3rd changeset 4th changeset 5th changeset 6th changeset kth changeset Copy 3rd changeset • Apply the changes to the copy Scenario 3 Parent / child relationship

  18. Demo • Decision Tree demo

  19. Decision trees Parent Object Object Child A Child C Child B Child D Parentchanges Child Achanges Child Cchanges Child Bchanges Child Dchanges

  20. 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

  21. Influences

  22. 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?

More Related