A watch application
would specify a calculation to obtain the time to display, either just one such Display
Function for the whole application (e.g., Time, Alarm) or perhaps different Display
Functions for different states (e.g., Stopwatch states for being stopped and running, or
Countdown Timer states for setting the timer and counting down). The modeler??™s
burden would end there, and not a thread synchronization or semaphore in sight. The
expert developer would write a display update function that would run in a separate
thread once every few milliseconds, ask the application to perform its Display
Function calculation, and update the display with the result. Our example model at
this stage, after 105 minutes of metamodeling, is shown in Fig. 9.3.
9.3.5 Odds and Ends
When building a modeling language, there are always things that get missed on the
?¬?rst pass. Thinking through a concrete example application and its model helps keep
things on track, but any given example will rarely contain an instance of everything
MODELING LANGUAGE 199
needed in the modeling language. So too in this case: Stopwatch had been a good
example for many areas, but it was missing features that were used in several other
watch applications. We also missed one important part of Display Functions, which
only became apparent in the Stopwatch when it was used in several different watch
models.
Pages:
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370