To reduce imprecision, ambiguity, and incompleteness in use case specifications, Zen-RUCM approach with template and restriction rules is recommended to achieve better understandability of use cases and improves the quality of derived analysis models. However, when crosscutting concerns are modeled together with non-crosscutting concerns as use case models, resulting use case models often result in cluttered diagrams and redundant information in use case specifications. Therefore, the overall reusability of the use case models is usually low. To cope with these, we extend the general Zen-RUCM use case approach for modelling crosscutting concerns, i.e., AsepctRUCM, along with a weaver to automatically weave aspect use case models into their corresponding base model to facilitate, e.g., automated requirements analysis.
An aspect describes a crosscutting concern, which in our context is a set of system requirements, which crosscuts another set of system requirements describing the main functionalities of the system.
A joinpoint is a model element, which corresponds to a pointcut where an advice (e.g., use cases and actors in a use case diagram, and additional steps of flows of events, preconditions and postconditions in UCSs) might be applied. Theoretically, all model elements in UML use case diagrams and constructs of UCSs are possible joinpoints. However, we only define five types of joinpoints in AspectRUCM: actors, use cases, preconditions, postconditions, and steps of flows of events, which are sufficient based on our experience of evaluating AspectRUCM with three industrial case studies.
A pointcut selects one or more joinpoints with similar properties. A model element (e.g., actor) can be introduced in two different ways. It can be introduced to an aspect UCMod without being connected to any pointcut and it can also be connected to a pointcut through another model element.
The AspectRUCM profile is presented in the following figure.
An aspect describes a crosscutting concern and we specify stereotype «Aspect», which extends UML Package. «Aspect» has two attributes: baseUCM specifying the comma separated name(s) of the base UCMod(s), on which an aspect UCMod will be weaved, and the name of the aspect itself. We use a package to group model elements including use cases and actors to specify a crosscutting concern. An aspect UCMod might have one or more pointcuts. We specify two types of pointcuts in our profile: «UseCasePointcut» and «ActorPointcut», which specialize the abstract stereotype «Pointcut».
Use Case Pointcut. A use case pointcut selects one or more use cases of a system and the flows of events of the UCSs of the selected use cases. This is realized via the composition association between stereotype «UseCasePointcut» and class UseCaseCutSegment, which is further associated to class FlowCutSegment. Class UseCaseCutSegment specifies the system where a selected use case belongs to (attribute system: String), a set of selected use cases (selectedUseCases : String), and the type of the pointcut (enumeration PointcutType and attribute poincutType: PointcutType), which can be selecting All, Subset, or One use case(s) of the system.
Actor Pointcut. An actor pointcut selects one or more actors and consists of one or more ActorPointcutSegments, which specify the system that the actor belongs to, the selected actors, and the pointcut type. Same as for UseCaseSegment, if an ActorPointcutSegment has poincutType as PointcutType::All, there is no need to specify selectedActors.