If you are using an Object-Oriented language (writing code in a DSL can change things a bit, it depends on the DSL) you should specify and verify the objects themselves and not how they are implemented.
Probably one the least understood aspects of the architect role is that the software development team **(which the architect is part of)** is itself a very important stakeholder. The architecture has to fulfill requirements from the system users, the project sponsors and developers.
Aggregations and compositions are not just collaborations; they are part of the class internal design and should not be exposed; not even to tests.
I’m just too tired of how our industry just does not get the difference between Domain-Driven Design and Object-Orientation.