Requirements

Quality of design is an absolute requirement. This must be reflected both in the implementation by the definition of adequate interfaces and the use of inheritance and delegation and in the documentation explaining the rationale of the design. The use of design patterns is strongly encouraged. Also you're invited to define separately IDL interfaces for the major components of your application, whether or not you use actual CORBA technology for the implementation.