I want to describe an architecture/system that is composed of diverse and modular parts. What's a good antonym for monolithic architecture to describe a technical system?
The opposite of monolithic is of course polylithic.
These terms are used with megalithic architecture and structures. Rather than referring to something composed of a single stone, it is something composed of several or even of many stones. Wikipedia reports that:
Examples of monolithic types include statues and standing stones, including Stonehenge. Examples of polylithic types include dolmens, cairns, and barrows.
The relevant Greek roots for these terms are:
Insofar as it can be applied to software design and architecture, one can see how it refers to something with many interchangeable pieces, not one giant program. The Unix philosophy encourages polylithic design, because it encourages small tools that each do one thing well but can be combined in many ways. Eric Raymond summarizes these in part as:
There are other principles, but those are the most important ones. The polylithic design of Unix is what makes the command line (and shell scripts) so powerful, as Neal Stephenson so eloquently describes in his persuasive essay “In the Beginning . . . Was the Command Line”.
These principles of polylithic architecture can also be applied to object-oriented design, when you have a variety of coöperating, communicating classes that can be multiply combined in useful ways. One site describes this as:
When designing a highly interchangeable polylithic class system, the traditional subclass–superclass relationships can become at best onerous. For this reason, modern programming languages often resort to the highly acclaimed “C3” method resolution order, which essentially provides for breadth-first method resolution.
Instead of having merely a superclass above you in the inheritance graph, you also have a “next” class to the right of you, something more like a sibling or cousin class than a parent class. This often works better for these fancy polylithic class designs than can be achieved under the limitations of the old subclass–superclass setup. That’s because the interchangeability aspect is enhanced, so that you don’t have to go around deriving n2 new classes just because you have n classes you want to interoperate with n other classes, and when you are limited to them interacting through a parent–child relationship instead of sibling (or cousin or uncle–nephew, etc.) relationship.
Go with "composite architecture," which includes multy-layer and multi-material configurations.
Modern computer architectures are called layered.
Here's a helpful picture:
Software architects will refer to the presentation layer of an architecture; this will minimize the users' interactions with the business layer.
Modern computer architectures are built on frameworks.
The Java-based Spring framework has built-in components for security and database, for instance.
You could call this a Spring framework architecture.
Both frameworks and layers stand in contrast to monolithic programming. Both of them have colorful, little rectangles grouped into bigger rectangles, housed by the biggest rectangle.
In contrast, monolithic architecture would be one, big, gray rectangle.
Non-monolithic is the antonym for monolithic. "We live in a non-monolithic society."