Breaking a complex IT system or problem into smaller parts ensures its maintainability and robustness, and facilitates cooperation in large-scale software projects.
Create a model of your system by breaking it into components, and then defining relationships. You can define models from different perspectives (e.g. static, dynamic and physical views).
- A ‘divide and conquer’ mindset.
- An appropriate modelling technique, like UML.
- Knowledge of some (not all) of the requirements.
- Knowledge of the end system and what changes are expected in the future (variation points).
Large companies use a wide repertoire of techniques (e.g. UML, SysML, C4 Model), while smaller companies often use a subset of these techniques. The extent to which these techniques are used depends on the needs in a project and can differ for various parts of the software.