JQuery Finding your way through scattered code Andrew

  • Slides: 22
Download presentation
JQuery: Finding your way through scattered code Andrew Eisenberg, Doug Janzen, Kris De Volder,

JQuery: Finding your way through scattered code Andrew Eisenberg, Doug Janzen, Kris De Volder, Ryan Wannop Software Practices Lab. -- The University of British Columbia 1

JQuery: Motivation Typical ways to explore scattered concerns: Browse structural views - package structures,

JQuery: Motivation Typical ways to explore scattered concerns: Browse structural views - package structures, inheritance hierarchy Search for a specific pattern - regular expressions Follow relationships - calls, instantiates, references Most modern IDEs can help with all of this, but… Software Practices Lab. -- The University of British Columbia 2

JQuery: Motivation Explosion of browsers Call Hierarchy Inheritance Hierarchy Browsers are too specific Poor

JQuery: Motivation Explosion of browsers Call Hierarchy Inheritance Hierarchy Browsers are too specific Poor use of screen Real. Estate Exploration itself is scattered and tangled Package Explorer Search Software Practices Lab. -- The University of British Columbia 3

JQuery: How it works Avoiding loss of context: Problem: Too many browsers leads to

JQuery: How it works Avoiding loss of context: Problem: Too many browsers leads to loss of context. Solution: Support many views within a New Choose Browser single tool. Start with Package Browser Software Practices Lab. -- The University of British Columbia 4

JQuery: How it works Both views in same window Abstract Class Browser Bundled with

JQuery: How it works Both views in same window Abstract Class Browser Bundled with many more browsers Package Browser Software Practices Lab. -- The University of British Columbia 5

JQuery: How it works Incrementally perform the exploration by extending each view with a

JQuery: How it works Incrementally perform the exploration by extending each view with a sub-view 1. Select extension point Software Practices Lab. -- The University of British Columbia 6

JQuery: How it works Incrementally perform the exploration by extending views with a new

JQuery: How it works Incrementally perform the exploration by extending views with a new extensions 1. Select extension point 2. Choose subquery Software Practices Lab. -- The University of British Columbia 7

JQuery: How it works Incrementally perform the exploration by extending views with a new

JQuery: How it works Incrementally perform the exploration by extending views with a new extensions 1. Select extension point 2. Choose subquery 3. Continue exploration Bundled with many more sub-browsers Software Practices Lab. -- The University of British Columbia 8

JQuery: How it works Filtering by regular expression Search for “Figure”: • Open query

JQuery: How it works Filtering by regular expression Search for “Figure”: • Open query dialog • double-click Software Practices Lab. -- The University of British Columbia 9

JQuery: How it works Filtering by regular expression Search for “Figure”: • Open query

JQuery: How it works Filtering by regular expression Search for “Figure”: • Open query dialog • Edit query Software Practices Lab. -- The University of British Columbia 10

JQuery: How it works Filtering by regular expression Search for “Figure”: • Open query

JQuery: How it works Filtering by regular expression Search for “Figure”: • Open query dialog • Edit query • Close dialogue (query automatically reexecutes) Software Practices Lab. -- The University of British Columbia 11

JQuery: How it works Filtering by regular expression Browser is now filtered by “Figure”

JQuery: How it works Filtering by regular expression Browser is now filtered by “Figure” Can customize queries in many other ways too. Software Practices Lab. -- The University of British Columbia 12

JQuery: An Example Task: Make a enhancement to the JHot. Draw codebase. Nontrivial, but

JQuery: An Example Task: Make a enhancement to the JHot. Draw codebase. Nontrivial, but some details abstracted away. Based on an actual task we performed with little prior knowledge of the codebase. Software Practices Lab. -- The University of British Columbia 13

JQuery: The Plan Menu Change Pen Color ? ? ? Frame Rectangle No Frame

JQuery: The Plan Menu Change Pen Color ? ? ? Frame Rectangle No Frame Text Software Practices Lab. -- The University of British Columbia 14

JQuery: Executing the Plan Menu Change Pen Color ? ? ? Found by regex

JQuery: Executing the Plan Menu Change Pen Color ? ? ? Found by regex search for *Attribute* Change Attribute Command Step 1: Find menu creation Step 2: Find relationship to frames ? ? ? Frame Rectangle No Frame Text Software Practices Lab. -- The University of British Columbia 15

JQuery: Executing the Plan creates create. Color. Menu Draw Application calls create. Attr. Menu

JQuery: Executing the Plan creates create. Color. Menu Draw Application calls create. Attr. Menu Change Attribute execute Command Determined that Pen Color sets Menu Frame. Color Attribute ? ? ? Frame Rectangle No Frame Text Software Practices Lab. -- The University of British Columbia 16

JQuery: Executing the Plan creates create. Color. Menu Draw Application calls create. Attr. Menu

JQuery: Executing the Plan creates create. Color. Menu Draw Application calls create. Attr. Menu Change Attribute execute Command Determined that Pen Color sets Frame. Color Attribute sidetrack to explore Figure. Attributes Figure Attribute Figure calls set. Attr implemented by set. Attr get. Attr dataflow draw. Fr Frame Rectangle No Frame Text Software Practices Lab. -- The University of British Columbia 17

JQuery: Executing the Plan creates create. Color. Menu Draw Application calls create. Attr. Menu

JQuery: Executing the Plan creates create. Color. Menu Draw Application calls create. Attr. Menu Determined that Pen Color sets Frame. Color Attribute sidetrack to explore Figure. Attributes Change Attribute execute Command Figure Attribute Figure calls set. Attr implemented by change this method set. Attr dataflow get. Attr draw. Fr implemented by Rectangle Figure draw. Fr Text Figure Software Practices Lab. -- The University of British Columbia draw. Fr 18

JQuery: Versatile Code Navigator Browse Scattered Code 1. Browsing structural views 2. Searching for

JQuery: Versatile Code Navigator Browse Scattered Code 1. Browsing structural views 2. Searching for a specific pattern 3. Following relationships Current IDE’s: “explosion” of disconnected views loss of context disorientation JQuery: within a single navigation view retain context reduce disorientation Software Practices Lab. -- The University of British Columbia 19

JQuery: Customization JQuery can do more: can create more powerful queries can include data

JQuery: Customization JQuery can do more: can create more powerful queries can include data from other tools has extendable menu items virtual source files (in next release) See our website! Software Practices Lab. -- The University of British Columbia 20

JQuery: De-tangling searching Why use 4 browsers when you can use 1? Software Practices

JQuery: De-tangling searching Why use 4 browsers when you can use 1? Software Practices Lab. -- The University of British Columbia 21

Questions? Download JQuery (new release out soon): Google: Prevents tangled and scattered searches Reduces

Questions? Download JQuery (new release out soon): Google: Prevents tangled and scattered searches Reduces disorientation of complex exploration Maintains context Andrew Eisenberg: ade@cs. ubc. ca Software Practices Lab. -- The University of British Columbia 22