Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

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!

share|improve this question
I would call this "stop over-thinking and code" ;) – MattDavey Feb 23 '12 at 23:18
up vote 1 down vote accepted

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.

share|improve this answer

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.

share|improve this answer

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.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

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