TL;DR: Apply domain-driven practices to analyze the domain with its core, generic and supporting subdomains1 and acquire knowledge about them. Establish a common vocabulary, the Ubiquituous Language1 of the domain.
This step ideally involves all project stakeholders from customers, business experts, users to developers. The goal of this first step is to aquire a common understanding between business people and developers/engineers. A common language shall be spoken so that misunderstandings and the need for translation are reduced.
This step usually, at least in the first iterations, produces analysis results on a higher level. A Domain Model must, therefore, not already use tactic DDD patterns and is not ready to be implemented. An Event Storming2 or Domain Storytelling3 can also be considered a viable alternative to a Domain Model at this stage. It is just important that you model the established understanding. In domain-driven terms: you probably model the real world - as it is - in this step; meaning you are modelling Subdomains (object-oriented analysis), but not Bounded Contexts yet (object-oriented design).
The domain knowledge of the experts and existing business processes are the input to this step.
The knowledge is written down and carved into:
Domain-Driven Design Reference, Eric Evans, https://www.domainlanguage.com/ddd/reference/ ↩ ↩2 ↩3 ↩4
http://ziobrando.blogspot.com/2013/11/introducing-event-storming.html ↩ ↩2 ↩3
Domain Storytelling: A Collaborative, Visual, and Agile Way to Build Domain-Driven Software, Stefan Hofer, Henning Schwentner, https://domainstorytelling.org/ ↩ ↩2 ↩3
Design Practice Repository (DPR), Olaf Zimmermann and Mirko Stocker, https://github.com/socadk/design-practice-repository ↩