What is the proper terminology for a small (2-4) set of tightly coupled classes? These classes can't work independently.

I was thinking system, but after googling for a bit, I've determined that the word is typically used to describe the software as a whole.

Then, I thought of subsystem, but I don't know if the term applies if the number of classes in the subsystem is small.

What do you guys think? This is for a presentation for a professor who wants me to provide definitions for everything.


Essentially, I am describing various ways to architect game object systems, found in game engines. I'm using the term system as a way to include all the classes involved in the game object apparatus. Calling it a game object system feels right to me, but I'm not sure if it is the right terminology.

I don't view game objects as a layer, since it doesn't really work as a layer in a game engine. A module or package, to me, seem more suitable for a bunch of purely functional or stateless classes.

If I am not making sense, please let me know!

  • I would call this "stop over-thinking and code" ;) – MattDavey Feb 23 '12 at 23:18

I don't think there is a problem using subsystem because of small size alone. It is more a question of implementation/purpose: can the group of classes be considered a "component" on its own? Are they part of a bigger system? In that case it's a subsystem.

Cluster can sometimes be used as a generic term. The problem is that it can easily be confused with the "class cluster" design pattern, and data clusters.


I would say module or package as a generic term, but be careful because in some programming languages or systems these terms have more specific technical meanings. Layer is also commonly used to denote a set of classes, assuming your code is architected with restrictions like only having knowledge of the layer immediately below you.


In James Martin's Information Engineering Methodology, such a structure is denoted by "Business Area" - Business Areas divide the model space to include 'Entity Types' that are so related and serve the information needs of one or more areas of the business the system is built to support.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.