14.17. Containment

Critics concerning containment in ArgoUML, that is where one artifact forms a component part of another.

The current version of ArgoUML has the following critics in this category.

14.17.1. Remove Circular Composition

Suggestion that there is a series of composition relationships (associations with black diamonds) that form a cycle, which is not permitted.

14.17.2. Duplicate Parameter Name

Suggestion that a parameter list to an operation or event has two or more parameters with the same name, which is not permitted.

14.17.3. Two Aggregate Ends (Roles) in Binary Association

Only one end (role) of a binary association can be aggregate or composite. This a well-formedness rule of the UML 1.4 standard.

Aggregation and composition are used to indicate whole-part relationships, and by definition, the “part” end cannot be aggregate.

To fix this, identify the “part” end of the association, and use the critic wizard (the Next> button, or manually set its aggregation to none using the button 2 pop-up menu or the property sheet.

Composition (more correctly called composite aggregation) is used where there is a whole-part relationship that is one-to-one or one-to-many, and the lifetime of the part is inextricably tied to the lifetime of the whole. Instances of the whole will have responsibility for creating and destroying instances of the associated part. This also means that a class can only be a part in one composite aggregation.

An example of a composite aggregation might be a database of cars and their wheels. This is a one-to-four relationship, and the database entry for a wheel is associated with its car. When the car ceases to exist in the database, so do its wheels.

Aggregation (more correctly called shared aggregation) is used where there is a whole-part relationship, that does not meet the criteria for a composite aggregation. An example might be a database of university courses and the students that attend them. There is a whole-part relationship between courses and students. However there is no lifetime relationship between students and course (a student continues to exist even after a course is finished) and the relationship is many-to-many.

14.17.4. Aggregate End (Role) in 3-way (or More) Association

Three-way (or more) associations can not have aggregate ends (roles). This a well-formedness rule of the UML 1.4 standard.

Aggregation and composition are used to indicate whole-part relationships, and by definition can only apply to binary associations between artifacts.

To fix this, manually select the association, and set the aggregation of each of its ends (roles) to none using the button 2 pop-up menu or the property sheet.

14.17.5. Wrap DataType

This critic is discussed under an earlier design issues category (see Section 14.3.1, “Wrap DataType” ).