Beyond Objects

· Source: cs.SE updates on arXiv.org · Field: Technology & Digital — Software Development & Engineering, Artificial Intelligence & Machine Learning · Depth: Expert, extended

Summary

A core principle of object orientation (OO), which partitions system functionality among objects corresponding to problem domain individuals, has profoundly influenced software development for over fifty years. This paper argues that this partitioning is neither natural nor straightforward, leading to inevitable problems like fragmentation and conflation of functionality, making software difficult to write, read, and maintain. It critiques how actions involving multiple individuals are often arbitrarily assigned to single objects, resulting in poor modularity and problematic dependencies, even in modern web frameworks utilizing object-relational mappers. The article proposes an alternative "concept" approach, which decouples problem domain individuals from functional modules. This method uses "concepts" to encapsulate actions and relations over individuals, allowing a single individual to participate in multiple concepts and coordinating behaviors through declarative action synchronization, aiming for stronger modularity, clearer separation of concerns, and better alignment with problem domain types.

Key takeaway

For AI Architects and Software Engineers designing new systems or refactoring existing ones, understand that object orientation's core principle of assigning computations to domain objects often creates fragmented and tightly coupled code. This leads to conflation and technical debt. Instead, explore "relational modularity" using concepts. This approach decouples domain individuals from functional modules, coordinating via action synchronization. It promises clearer separation of concerns and improved legibility, especially with LLM-based code generation.

Key insights

Object orientation's core principle of assigning computations to domain objects inherently causes modularity issues.

Principles

Method

The "concept" approach defines modules (concepts) that encapsulate actions and relations over individuals, allowing individuals to span multiple concepts. Coordination occurs via declarative action synchronization rules.

In practice

Topics

Code references

Best for: AI Scientist, Software Engineer, Research Scientist, AI Architect

Related on AIssential

Open in AIssential →

Editorial summary, takeaway, and curation by AIssential. Original article published by cs.SE updates on arXiv.org.