Matthew van Cittert Supervisor: Prof. Shaun Bangay A second look at the “glorified text-editor”
The Problem New features but old, unchanging design Large projects become difficult to manage Netbeans DelphiVisual StudioCodeBlocks
Other approaches Focus on method implementation Visual Studio Class Diagrams Tinkertoy - LISP MapZone - Graphics
A New Approach Average program – bunch of classes Organised as trees Lots of them A new representation Options Minimap Interface
Demo OptionsMinimap Interface – Scrolling window
Solving the Problem Zoom Overview Minimap, scrollmap Get around quickly Spatial awareness
Solving the Problem 2 Text windows Separate code and comments Edit methods side by side Single workspace Avoid digging through files Code tour Interactive animated documentation
Making it go - Parser Five Tools Base: Match a string Base: Match from a set of characters Repeat: Match scanner a given number of times List: Match all scanners in a serial list Option: Match one scanner from a list of scanners Callbacks pre- and post-processing what to do when a match is found
Intermediate format Classes to describe code Filled out by parser callbacks Converters can render these back as text Other unimplemented ideas Use a database or ontology Query code (SQL or a reasoner)
Interface Series of components Plug into one another Zooming Scrolling Moving Resizing Layout manager to arrange classes Trees with GUI frontends.
Evaluation Comparison Project interface Traditional IDEs Methods of comparison User study Cognitive walkthrough Predictive evaluation Heuristic evaluation
Predictive Evaluation Can tasks be completed faster? Decompose tasks Open files Scroll to point of interest Type keywords Select class from classview Move, cut, paste Preliminary results
Heuristic Evaluation Is it easier to use? Gerhardt-Powals (1996) Automate unwanted workload Fuse data (high level summaries) Use aids to interpretation (metaphors) Group data meaningfully Include only relevant information
Conclusions & Questions Room for improvement of traditional IDEs Most existing solutions focus on method implementation Interfaces used in strategy games pose a potential solution easier to use more efficient navigation more effective documentation