The Shlaer-Mellor lens
Recursive design as accessibility. Bridged semantic information domains rendered concrete by a model compiler for given user-and-environment constraints. The methodological substrate beneath everything else on this page.
The structural claim
Accessibility is a recursive-design problem. That is: it has the same shape as the problem Shlaer-Mellor Object-Oriented Analysis and Design was built to solve — bridged semantic information domains rendered concrete by a model compiler for given platform constraints.
In Shlaer-Mellor, you analyse a system as a collection of independent-but-related problem domains, each with its own subject matter, joined by formal bridges that map counterparts between the bridged domains. The abstract analysis is then translated (not elaborated) into a concrete realisation for a specific platform (defined by populated counterpart tables) via a model compiler. Same domains, different concrete realisations for different targets — that is recursive design.
Accessibility has the same structure with different vocabulary. The domains are content-semantics, navigation, modality (visual / sonic / haptic), user capability, device capacity, environment, custom-and-practice. The “platform” you are targeting is the user-plus-environment. The model compiler is the adaptation system that selects appropriate inventory and presentation for that user-and-environment context.
Functional accessibility is achieving one successful traversal of the bridges to land on a usable concrete realisation. Intrinsic accessibility is the property of an underlying interface that admits many such traversals for many user-platforms.
The forty-year lineage
This is not retrospective rationalisation. The lens has been the central engineering vocabulary across four decades and four problem domains:
- Forth at Metal Box (1984–89). The threaded-interpreter execution model that, twenty-five years later, became how the PhD’s Action Language runtime executed.
- Shlaer-Mellor from 1989 onward. OOA/D, domain charts, bridges, assigner state models, subtyping with role migration, action specification languages, model compilation.
- Ascom AG (1994–96). SM in production with Tcl simulation. A bridge-extension contribution from this period — describing inter-domain dependencies as sequences of interactions across domain boundaries — was carried into the thesis methodology.
- Nokia Mobile (1997–2001). Adaptive UIs as recursive design. Self-adapting interfaces moving across devices of varying capability.
- PhD (2004–13). SM applied explicitly to accessibility, with the bridge-composition contribution and the Forth-style threaded-interpreter Action Language execution engine.
- Paradise (current). The ActionLanguage intermediate representation (IR) for source-level accessibility analysis. The same shape again.
One continuous engineering project, applied to four problem domains.
Specific mappings to accessibility
- Domain charts → the CISNA five-layer model (Adaptation / Navigation / Semantics / Inventory / External Content), with peer relationships between domains rather than the canonical SM client-server hierarchy.
- Bridges between domains→ Inventory↔Semantics and Semantics↔Navigation in CISNA, expressing how meaning composes upward from raw content to adapted presentation.
- Assigner state models for resource competition → modality-channel competition (audio channel: incoming-call earcon vs. new-message earcon vs. voice-note recording).
- Subtyping with role migration (disjoint-complete) → transcoding sequences. A notification migrates Announcing → Dwelling → Expiring while remaining the same notification, with adapted forms of each state for different modalities.
- State Transition Tableswith “Can’t Happen” and “Ignore” entries → user-capability-specific exception handling expressed per user profile.
- Action Specification Language→ the Action Language XML notation, with Forth-style threaded-interpreter execution.
Reading on
- The Measure of Accessibility — the Shlaer-Mellor lens — substantive in-depth treatment as page 5 of the Measure sub-collection.
- Action Language — running code, with the in-browser TypeScript port and four worked examples that demonstrate the lens in code.