• Principles for dividing functionality into components;
  • Overview of strategies used in different languages and environments to integrate multiple software components into a single applications ;
  • Combining multiple source modules into a single executable;
  • Approaches in different languages ;
  • Systems composed of multiple communicating component processes. ;
  • System architecture as a description of components and their methods of communication