Proposed Developer Tool Specification
Development for the Isaac Platform should follow the MVC (Model View Controller) concept. This emphasizes a human interface first mode of thought.
- AppMaker - For management of an Applette's development components (i.e. source, media, etc.)
- ViewMaker - For building user interfaces
- IsaacTest - An Isaac Emulator with full debugging, can also pull debug data from an external Isaac
The workflow of an Applette's creation is composed of three phases, Genesis, Testing and Debugging, and Deployment.
The Genesis phase is when the the app goes from nonexistence to existence. First a developer creates an app project in AppMaker. He then builds the user interface views in ViewMaker. He then writes the code to make the views function within either the AppMaker built-in text editor, or he uses a text editor of his choice.
Testing and Debugging
App testing and Debugging can be handled in one of two ways:
- Emulated Testing
- Assisted Real Testing
Once enough code is written, the developer can test the code using a build and launch button in AppMaker. This builds and launches the Applette in IsaacTest. IsaacTest launches with a window that simulates a physical Isaac, complete with bezel and any physical buttons. A developer can select any model of Isaac to test on different form factors, screen orientations, and hardware configurations. IsaacTest features the ability to limit emulation to the actual hardware's capabilities.
In addition to emulating a physical Isaac, IsaacTest allows a user to display windows with information about the emulated Isaac. One window may display real-time updating information about the contents of variables, another window might display information about processors and memory usage, and still another may show select information about the data traveling through the Isaac's various interconnects (i.e. 802.11, Bluetooth, etc.). All information is loggable. A developer may also choose to "Play Back" user inputs from a logged session. This means you can re-test an app with identical inputs to check reproducibility of an issue, and check to see if later revisions resolve it.
For debugging, IsaacTest allows interaction with the runtime for the specific app you are debugging. This gives you the ability to manipulate variables, manually execute methods, and manage conditions in a debug situation.
Assisted Real Testing
Assisted Real Testing has all the same debugging characteristics of emulated testing, except it is done on a physical Isaac which is connected to a computer running IsaacTest. IsaacTest will mirror the physical Isaac's display and indicate when physical buttons are pressed on the real Isaac, as well as providing all the debug features offered in the emulated Isaac.
Using Assisted Real Testing a developer may choose to set up an 802.11 link with an Isaac and put the device in the hand of a tester. The developer can then monitor the user's interaction, or even inject little challenges for the user by modifying conditions in the runtime. This facilitates not only debugging, but usage studies to make more human-friendly interfaces.