Automated Teller Machine can be seen as an archetype of basic functionalities for user entry points, namely:
- Input and output devices for non symbolic flows (card reader and cash dispenser)
- User interface for symbolic interaction.
- Output device for documents (printer).
On a broader perspective it marks the point where actual objects meet their symbolic surrogate. Based on architecture driven system modeling principles, the objective is to build models from modules defined by architectural concerns.
The case is presented along basic technical and functional perspectives.
Use case is based upon a simple user and service configuration without real-time coupling. Dialog states are governed by an initial external event, and execution status on one hand, user actions on the other hand.
Context is made of physical agents, entry points (clients) and servers, system functionalities include boundary management, control, and persistency.
The context perspective (aka deployment) combines physical and functional considerations:
- ATM, operator entry point and bank server are defined as blocs with symbolic processing capacity. Both communication channels and functional flows are explicitly asynchronous.
- An ATM is a structured bloc made of four functional components.
- Customers and operators appear as agents, i.e active physical entities with organizational responsibilities. Functional flows are explicitly defined, communication channels remain implicit.
It must be reminded that concerns can be safely combined into the same model as illustrated by connectors between ATM and server whose simultaneous display help to review architectural consistency.
Symbolic Counterparts & Functionalities
Combining modeling concerns, relevant contexts can be mapped to their symbolic counterparts, persistent or transients:
- Processing of physical flows: card reader, printer, cash dispenser.
- Processing of interactions with users: customer, operator.
- Representation of agents: customer, operator.
That provides the subset of functional components needed to support interactions with context.
Use Cases & Functionalities
Those functional components can also be associated with functional requirements as defined by use cases.