The peak.model package is used to define object models for applications' "problem domain". The "problem domain" is the sphere of knowledge that the program works in. In an e-mail application, for example, a Message or Mailbox might be objects in the "problem domain". The key idea of creating a "domain model", or object model for the problem domain, is that by closely matching the structure of the subject area, you and your code will not be continually translating between the problem domain and the solution domain of programming technique. In other words, you shouldn't need to be thinking about things like what data structure you chose to store a mailbox's messages in. (e.g. "Was that a list of tuples or a tuple of lists?")

For a tutorial on creating simple domain models and applications with peak.model, see the GraphvizTutorial.

For further information on the "domain model" concept, see DomainModelReferences.