Hi,
Good examples of "partial" models. Not sure though how useful it would be leave the model "incomplete" in this way in practice.
But what you are touching upon, i.e. some kind of redefinition mechanism, where the "holes" can be filled in later. But I am not fully sure that you absolutely need to leave the "holes" empty. But very recently we have had lots of discussion about how to improve the legacy code generator to support "model weaving", "dependency injection", "marking models" or whatever term you want to use for this, to achieve that you can "redefine" an existing (complete) model, but being able to redefine the protocol typing a specific port, redefining the capsule typing a specific capsule part, redefining replication factor for ports and capsule parts, to be able to support building for different target configurations. So yes, this is definitively an area where there is a need for variability in context of software product lines, but also for unit testing ("injecting" mocking classes for example when building for unit test).
So what you describe regarding "incomplete" models and that you want to fill the "holes" later, could be seen as the same thing. But I am not sure that the core essence of it all is that the model should be able to be "incomplete". You can still require it to be complete, e.g. by requiring that you defined empty base classes, and then you use the ordinary redefinition mechanism to ensure that the empty "holes" are populated by the specific sub-classes during build/code-generation time.
I guess this is definitively something that we need to get back to... :)
/Peter Cigéhn