Maybe the problem is in the way I think of partitioning a system, but I struggle with Components and the ability to re-use parts of the model.
For example, it seems natural to me to create an interface to a servo drive. A generic interface decouples the application logic from the drive logic and when a different hardware vendor is required the main application logic remains intact. As a bonus I can use the vendor specific drive component on any project where the hardware will include the drive.
But when I think about a machine that has 100 or more identical servo drives and all of the ports required to interface to them, I start wondering if a package of classes and relationships wouldn’t have been the better approach. The downside is the system becomes more tightly coupled and the ability to re-use the model decreases.
Maybe with the 3rd approach the modeler can choose the size of building block that best fits the task at hand, either a Component or a Package.