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
|