A design is only useful once it is built into a running application and deployed in the real world. In this chapter we’ll look at this realisation process. This includes some high-level issues of the overall system architecture: where is data stored, how does it get to the user interface when needed, what are the major components of the software and how do they interact? It also includes more detailed issues about the way individual interaction events (e.g. a menu selection) are managed and the various toolkits and frameworks that help this process, but also shape aspects of the interaction. Often an application may involve several people working closely together, the same person connected on multiple devices, or cloud resources; all of which must be considered during implementation. Once deployed, real use begins! Marketing may be separate but may be integral to the design where viral growth is expected. Documentation and maintenance are often an afterthought, but they are a crucial part of the delivered system as a whole. When in use there is often an ongoing process of continual improvements driven by data logging and/or user feedback, but updates, while improving the product, need to be designed to avoid confusion. Finally, every service or product has an end of life and so needs to be designed to enable a clean exit, such as exporting and then deleting personal data.
Contents
- The bits leak out
- Events and modal dialogs
- Race conditions — mute wars
- Synchronisation
- Build it
- Architecture
- Components and abstraction
- Toolkits and frameworks
- Deployment
- Adoption — from no use to use
- During use — ongoing support
- Personalisation, adaptation and appropriation
- Disuse — all good things come to an end
- Closing the loop
- Chapter Keypoints
- Additional reading
Glossary items referenced in this chapter
adaptation, adoption, agile software development, AI systems, allow interpretation, application interface, appropriation, automated testing, callback, cliques, continuous beta, critical mass, CSS, deployment, design for appropriation, design heuristic, desire, desire and disaster, dialog box, discounting of future value, disuse, documentation, drag-and-drop, early adopters, encourage sharing, event driven code, event loop, explainable user interface, expose intentions, functional core, grain, help systems, information architecture, iterative design, iterative development, learn from appropriation, lexical, modal dialog, mute wars, MVC, mvc!controller, mvc!model, mvc!view, network externalities, non-modal dialog, observer pattern, path, path of change, peer-peer advice, personalisation, pluggability and configuration, presentation, provide visibility, race condition, reactive frameworks, Seeheim model, semantic, semantic feedback, Smalltalk, software architecture, software as a service, software components, sprints, support not control, synchronisation!conflicts, synchronise, syntactic, the bits leak out, ui framework, ui toolkit, understand your materials, user experience, user interface architectures, user interface component, walk-up-and-use, web API, widget, wizards, zero-point value