Guideline: Subsystem Definition
This guidance provides recommendations for identifying and specifying subsystems.
Relationships
Main Description

A subsystem is a large-scale architecture unit of a system. In a software-oriented development project in which the hardware platform is known and understood, a subsystem is solely a measure for constructing large-scale units of software that appear at run-time. In a system engineering environment, it includes hardware (e.g. digital electronics, analog electronics, mechanical design, chemical design, etc) as well as the software.

Good principles of subsystem definition include:

  • elements within a subsystem are tightly-coupled in terms of time, functional, or data dependency
  • elements across a subsystem boundary are loosely-coupled in terms of time, functional, or data dependency
  • elements should collaborate with each other to realize a few narrowly-focused capabilities or use cases within the context of the subsystem
  • subsystems should provide a few well-defined interfaces
  • A subsystems should ideally be constructed by a single co-located team
  • A subsystem model should be kept in a separate model or separate package in singular system model
  • Classes and types shared between subsystems should be defined within a separate shared model or separate shared package