Distinguish subsystems by staff skill requirements
The system is separated into subsystems based on the skills required to implement the subsystem.
This approach is of use in small or medium sized organizations where there is no large collection of individuals with each skill. When replacing an individual, it may not be easy to find any replacement with the same body of skills. It is easier for the needs of a system to be conveyed to a newcomer if the system is partitioned into subsystems based on the skills required to implement the subsystem. This gives a separation of concerns and lets people see the issues in isolation.
A variant of this pattern is to partition subsystems by the technology used. This is often the basis of ‘layered’ architectures. However, the layers are not necessarily split into distinct subsystems. This saves on communications overheads.
There are usually better ways to separate the concerns if the particular issues of transfer of knowledge that are addressed here are not important. Layering is often a better approach than partitioning into subsystems in any case.