One of the limitations to the DSM is the OIC methodology. The adoption of the OIC programming method was decided on because of the desire to have a programming environment which supports object oriented programming under an operating system ( OS9) for which no commercially available and viable Object Oriented Language could be found. It is a limitation because it is home-brewed (at the ESRF) and is unknown. It is not a language and therefore consists of 10 percent code and 90 percent discipline. Paradoxically OIC is also one of the strengths of the DSM. It is a strength because it is portable and Operating System independent. It is implemented in C and therefore completely compatible with the existing Unix-like programming environment. It is easy for programmer's proficient in C to use OIC. This is not necessarily the case for C++ for example which requires programmers to be proficient in C and C++.
Another limitation of the DSM is the lack of multiple inheritance. Multiple inheritance is the ability of a class to be derived from multiple superclasses at the same level. This limitation is due to the use of OIC. It can be partially overcome by using multiple superclasses arranged hierarchically but will only be completely overcome by either adding multiple inheritance to OIC or by implementing the DSM in an OOP language which supports multiple inheritance.
Timing is another area in the DSM which is treated in a limited way. A device server spends most of its time waiting for client requests. When a request is received it is executed completely i.e. synchronously, before the server goes back to waiting for client requests. The server by definition has only one thread of execution. If a server wants to communicate with other processes it has to use the mechanisms offered by the operating system or some of the advanced calls developed as part of the device server library (see Advanced programming techniques above). Timing has to be taking into account when designing device classes.