In computing, the System Object Model (SOM) is an object-oriented shared library system developed by IBM. In computing the System Object Model (SOM is a proprietary executable File format developed by Hewlett-Packard for its HP-UX and MPE/ix operating Object-oriented programming (OOP is a Programming paradigm that uses " objects " and their interactions to design applications and computer programs In Computer science, a library is a collection of Subroutines used to develop Software. International Business Machines Corporation abbreviated IBM and nicknamed "Big Blue", is a multinational Computer Technology A distributed version based on CORBA, DSOM, allowed objects on different computers to communicate. The Common Object Requesting Broker Architecture (CORBA is a standard defined by the Object Management Group (OMG that enables software components written
SOM was intended to be used universally from IBM's mainframe computers right down to the desktop in OS/2, allowing programs to be written that would run on the desktop but use mainframes for processing and data storage. Mainframes (often colloquially referred to as Big Iron) are Computers used mainly by large organizations for critical applications typically bulk data OS/2 is a computer Operating system, initially created by Microsoft and IBM, then later developed by IBM exclusively IBM produced versions of SOM/DSOM for OS/2, Microsoft Windows and various Unix-flavours (notably IBM's own AIX). Microsoft Windows is a series of Software Operating systems and Graphical user interfaces produced by Microsoft. Unix (officially trademarked as UNIX, sometimes also written as Unix with Small caps) is a computer SOM/DSOM was also an important part of the later versions of the VisualAge development platform, allowing different languages to call code in a standardized format. VisualAge was the name of a family of computer Integrated development environments from IBM, which included support for a few popular (and not so popular computer
Perhaps the most widespread uses of SOM within IBM was in later versions of OS/2, which used it for most code, including the Workplace Shell. OS/2 is a computer Operating system, initially created by Microsoft and IBM, then later developed by IBM exclusively The Workplace Shell (WPS is an award-winning Object-oriented desktop shell produced by IBM 's Boca Raton development lab for OS/2 2 With the "death" of OS/2 in the mid-1990s, the raison d'etre for SOM/DSOM largely disappeared; if users would not be running OS/2 on the desktop, there would be no universal object library anyway. SOM/DSOM development faded, and is no longer actively developed.
For some time after the formation of the AIM alliance, SOM/DSOM was also used by Apple Computer for similar purposes. The AIM alliance was an alliance formed in September 1991 between Apple Computer, IBM and Motorola to create a new computing standard based Apple Inc, ( formerly Apple Computer Inc, is an American Multinational corporation with a focus on designing and manufacturing Consumer electronics It was most widely used in their OpenDoc framework, but saw limited use in other roles as well. OpenDoc was a multi-platform Software componentry framework standard for Compound documents inspired by the Xerox Star system and intended as an alternative Most of these technologies were dropped in 1997 when Steve Jobs returned to Apple and ended many development efforts. Steven Paul Jobs (born February 24 1955 is the Co-founder, Chairman, and CEO of Apple Inc and former CEO of Pixar Animation
SOM is similar in concept to Microsoft's Component Object Model. Component Object Model ( COM) is an interface standard for Software componentry introduced by Microsoft in 1993 Both systems address the problem of producing a standard library format that can be called from more than one language. Many disparage this concept because the vast majority of programs are written in a single language, and the language neutrality always adds overhead — sometimes considerable. Yet it is important to note that even a single language from different vendors, or even different versions of the same compiler, may use incompatible formats.
SOM can be considered more robust than COM. COM offers two methods of accessing methods onto an object, and an object can implement either one of them or both. The first one is dynamic and late binding (IDispatch), and language-neutral similar to what is offered by SOM. In Programming languages name binding is the association of values with Identifiers An identifier bound to a value is said to reference IDispatch is the interface that exposes the OLE Automation protocol The second one, called a Custom Interface, is using a function table which can be built in C but is also directly compatible with the binary layout of the virtual table of C++ objects in Microsoft's C++ compiler. With compatible C++ compilers, Custom interfaces can therefore be defined directly as pure virtual C++ classes. The resulting interface can then be called by languages that can call C functions through pointers. Custom Interfaces trade robustness for performance. Once an interface is published in a released product, it can not be changed, because client applications of this interface were compiled against a specific binary layout of this interface. This is an example of the fragile base class problem, which can lead to DLL hell, as a new version of a shared library is installed and all programs based on the older version can stop functioning properly. The fragile base class problem is a fundamental architectural problem of Object-oriented programming systems where base classes ( superclasses are considered "fragile" In Computing, DLL hell is a colloquial term for the complications that arise when working with dynamic link libraries, (DLLs used with Microsoft Windows To prevent this problem, COM developers must remember to never change an interface once it is published, and new interfaces need to be defined if new methods or other changes are required.
SOM prevents these issues by providing only late binding, to allow the run-time linker to re-build the table on the fly. This way changes to the underlying libraries are resolved when they are loaded into programs, although there is a performance cost.
SOM is also much more robust in terms of fully supporting a wide variety of OO languages. Whereas basic COM essentially defines a cut-down version of C++ to program to, SOM supports almost all common features and even some more esoteric ones. For instance SOM supports multiple inheritance, metaclasses and dynamic dispatching. Multiple inheritance refers to a feature of some object-oriented Programming languages in which a class can inherit behaviors and features from In object-oriented programming, a metaclass is a class whose instances are classes In Computer science, dynamic dispatch is the process of mapping a message to a specific sequence of code ( method) at Runtime. Some of these features are not found in most languages, which had led most SOM/COM-like systems to be simpler at the cost of supporting fewer languages. The full flexibility of multi-language support was important to IBM, however, as they had a major effort underway to support both Smalltalk (single inheritance, dynamic dispatch) with C++ (multiple inheritance, fixed dispatch). Smalltalk is an object-oriented, dynamically typed, reflective programming language. Multiple inheritance refers to a feature of some object-oriented Programming languages in which a class can inherit behaviors and features from In Computer science, dynamic dispatch is the process of mapping a message to a specific sequence of code ( method) at Runtime. C++ (" C Plus Plus " ˌsiːˌplʌsˈplʌs is a general-purpose Programming language. Multiple inheritance refers to a feature of some object-oriented Programming languages in which a class can inherit behaviors and features from
The most notable difference between SOM and COM is support for inheritance — COM does not have any. It might seem odd that Microsoft produced an object library system that could not support one of the most fundamental concepts of OO programming; the main reason for this is that it is difficult to know where a base class exists in a system where libraries are loaded in a potentially random order. COM demands that the programmer specify the exact base class at compile time, making it impossible to insert other derived classes in the middle (at least in other COM libraries).
SOM instead uses a simple algorithm, looking for potential base classes by following the inheritance tree and stopping at the first one that matches; this is the basic idea behind inheritance in most cases. The downside to this approach is that it is possible that new versions of this base class may no longer work even if the API remains the same. This possibility exists in any program, not only those using a shared library, but a problem can become very difficult to track down if it exists in someone else's code. In SOM, the only solution is extensive testing of new versions of libraries, which is not always easy.
The flexibility offered by SOM was considered worth the trouble by almost all, but similar systems, such as Sun Microsystems' Distributed Objects Everywhere also supported full inheritance. Sun Microsystems Inc ( is a multinational vendor of Computers computer components Computer software, and Information technology services Distributed Objects Everywhere ( DOE) was a long-running Sun Microsystems project to build a Distributed computing environment based on the CORBA NeXT's Portable Distributed Objects avoided these issues via a strong versioning system, allowing library authors to ship new versions along with the old, thereby guaranteeing backward compatibility for the small cost of disk space. NeXT Computer Inc (later NeXT Software Inc) was an American Computer company headquartered in Redwood City, California that Portable Distributed Objects, or PDO, is a Programming API for creating Object-oriented code that can be executed remotely on a network In Technology, especially Computing (irrespective of platform a product is said to be backward compatible when it is able to take the place of an older product