Research Group for Applied Software Engineering
Forschungsgruppe für Angewandte Softwaretechnik

Object Design Document Template



Object design is documented in the Object Design Document (ODD). It describes object design trade-offs made by developers, guidelines they followed for subsystem interfaces, the decomposition of subsystems into packages and classes, and the class interfaces. The ODD is used to exchange interface information among teams and as a reference during testing.



The audience for the ODD includes system architects (i.e., the developers who participate in the system design), developers who implement each subsystem, and testers.



Outline Description
1. Introduction
1.1 Object design trade-offs
1.2 Interface documentation guidelines
1.3 Definitions, acronyms, and abbreviations
1.4 References
The first section of the ODD is an introduction to the document. It describes the general trade-offs made by developers (e.g., buy vs. build, memory space vs. response time), guidelines and conventions (e.g., naming conventions, boundary cases, exception handling mechanisms), and an overview of the document.
Interface documentation guidelines and coding conventions are the single most important factor that can improve communication between developers during object design. These include a list of rules that developers should use when designing and naming interfaces. These are examples of such conventions:
  • Classes are named with singular nouns.
  • Methods are named with verb phrases, fields, and parameters with noun phrases.
  • Error status is returned via an exception, not a return value.
  • Collections and containers have an elements() method returning an Enumeration.
  • Enumerations returned by elements() methods are robust to element removals.
Such conventions help developers design interfaces consistently, even if many developers contribute to the interface specification. Moreover, making these conventions explicit before object design makes it easier for developers to follow them. In general, these conventions should not evolve during the project.
2. Packages The second section of the ODD, Packages, describes the decomposition of subsystems into packages and the file organization of the code. This includes an overview of each package, its dependencies with other packages, and its expected usage.
3. Class interfaces
The third section, Class interfaces, describes the classes and their public interfaces. This includes an overview of each class, its dependencies with other classes and packages, its public attributes, operations, and the exceptions they can raise.


Related Topics