It is important that the author of this work product be able to analyze key decisions about the structure and behavior
of the system and communicate them to other collaborators. It is also important that these decisions can be
communicated at various levels of abstraction and granularity. Some aspects of the design can be represented by source
code, possibly with some extra annotations. But more abstract representations of the design will be at a higher-level
than source code.
The more abstract representation could use various representation options. UML could be used either strictly or
informally; it is a preferred notation based on its rich semantics and broad usage in the industry. Other techniques
could be used to communicate the design. Or the design could use a mix of techniques as applicable.
Whether you record these representations on a white board or use a formal tool is not governed by this process. But any
representation, whether characterized as formal or informal, should unambiguously communicate the technical decisions
embodied by the design.