Object-oriented programming is a widely adopted paradigm for desktop software development.This paradigm partitions software into separate entities, objects, which consistof data and related procedures used to modify and inspect it. The paradigm has evolvedduring the last few decades to emphasize decoupling between object implementations, viameans such as explicit interface inheritance and event-based implicit invocation.Inter-process communication (IPC) technologies allow applications to interact with eachother. This enables making software distributed across multiple processes, resulting in amodular architecture with benefits in resource sharing, robustness, code reuse and security.The support for object-oriented programming concepts varies between IPC systems.This thesis is focused on the D-Bus system, which has recently gained a lot of users, butis still scantily researched. D-Bus has support for asynchronous remote procedure callswith return values and a content-based publish/subscribe event delivery mechanism.In this thesis, several patterns for method invocation in D-Bus and similar systems arecompared. The patterns that simulate synchronous local calls are shown to be dangerous.Later, we present a state-caching proxy construct, which avoids the complexity ofproperly asynchronous calls for object inspection. The proxy and certain supplementaryconstructs are presented conceptually as generic object-oriented design patterns. Thee ect of these patterns on non-functional qualities of software, such as complexity, performanceand power consumption, is reasoned about based on the properties of the D-Bussystem. The use of the patterns reduces complexity, but maintains the other qualities at agood level.Finally, we present currently existing means of specifying D-Bus object interfaces for thepurposes of code and documentation generation. The interface description language usedby the Telepathy modular IM/VoIP framework is found to be an useful extension of thebasic D-Bus introspection format.
展开▼