The first step in the system design is to come up with the desired interfaces, what services need to be offered to clients and the message names for those services.
In IBDL, a system can be organized as a set of named modules. A module consists of a set of named interface and exception declarations. The messages of these interfaces can optionally be annotated with behavior specifications. An IBDL module can import other modules using the with clause. Declarations in a module can use all the interfaces and exceptions declared in the imported modules.