What is a System?

by Tom DeMarco

Imagine you are at a conference of people associated with the plastics industry and you ask each person there to write down a concise definition of the word plastic on an index card.

Tom DeMarco

You collect the cards and what do you find?  Well, some variance perhaps in how different people approached the definition, but nobody would come up completely blank.  Now imagine you do the same thing at a conference of systems people (say the ICSE or INTEROP or Agile2009), asking each attendee to define the word system.  I suggest you'd get half the cards handed in blank and the rest would be definitions that dealt with some kinds of system but not the others and not even most.

We use the word system to describe many things that at first glance seem to have little to do with each other:

  • the electoral system
  • our system of government
  • your digestive system
  • the entertainment system in your car
  • the propulsion system of a rocket or plane
  • the social security system
  • the health care system
  • the weather system
  • your system for beating the dealer at Blackjack
  • Windows
  • MacOS
  • Microsoft Word
  • the software system your project is building
  • the project itself (system for building the system)

As system builders, it seems likely to me that we work at a disadvantage if we can't even define the word in a fairly rigorous way.  I propose we adopt a trick from Aristotle to separate the words we use and know from those that are used all the time but that -- under scrutiny --   turn out to be only vaguely understood.  Aristotle was a bear about definition, so keen on the subject that he began by defining definition.  He asserted that rigorous definition is made up of two steps, and that the two are necessary and sufficient:
1. Name a class that the thing being defined belongs to
2. Supply distinguishing characteristics that separate it from all other members of the class

The class that definition belongs to is two-step process, and the distinguishing characteristics are the two steps as described above.
Aristotle's example of a well formed definition is his definition of man:

Man is the animal possessed of the capacity for articulate speech.

The class that contains man is animal, and the distinguishing characteristic is possessed of capacity for articulate speech.  In Aristotle's terms, the class is called the word's genus, and the characteristics that distinguish it from all other members of that genus are called its differentia.

OK, so to define the word system we first have to figure out its genus, a class of things that it belongs to.  There is no single correct answer: a word might belong to many different classes; the larger genus you start off with, the more differentia you'll need to complete the definition.  A useful tactic is to look for the smallest genus that contains the word.

To form my definition of system, I choose genus = connected set.  After all, every system that is worthy of the name is made up of discrete parts that interact.  That's why the operating system in your laptop qualifies, but a shovel doesn't.  The operating system consists of kernel, drivers, real-time executive, scheduler, dispatcher, memory management, etc.  The shovel, on the other hand has no interacting parts.

There are many non-system connected sets, i.e. collections of discrete elements that are in some sense interacting, but don't qualify as systems.  Consider a few of them:

the students in a Spanish class
Mothers Against Drunk Drivers
the 10 to the 27th air molecules that fill a medium sized room

The differentia that will distinguish systems from other connected sets is this: whose parts interact to accomplish some common purpose.  The complete definition is:

A system is a set of interconnected parts which act together to accomplish some purpose.