Search papers, labs, and topics across Lattice.
This paper critiques the foundational principle of object orientation in software engineering, arguing that the traditional partitioning of functionality among objects leads to fragmentation and conflation issues. It suggests that these problems are inherent to object-oriented design and proposes a shift towards an alternative approach that decouples problem domain individuals from functional modules. The key result emphasizes that abandoning object orientation can simplify software design and implementation by addressing these long-standing challenges more effectively.
Object orientation may be the root cause of fragmentation in software design, and abandoning it could streamline functionality and improve system coherence.
A core principle of object orientation -- that the functionality of a system can be partitioned amongst objects that correspond to individuals in the problem domain -- has influenced how software has been specified, designed and implemented for more than fifty years. Later developments in software engineering sought to build on this principle. But in fact this partitioning is neither natural nor straightforward, and the problems that these later developments sought to mitigate -- the fragmentation and conflation of functionality -- were often, in fact, the inevitable consequences of this founding principle. An easier path to addressing these problems therefore starts by going back, abandoning object orientation, and replacing it with an alternative approach that decouples the individuals of the problem domain from the modules that partition functionality.