Abstract
The desired principle of separation of concerns in software development can be jeopardized by the so-called crosscutting concerns, which tend to be scattered over (and tangled with) the functionality of the modular units of a system. The correct identification of such concerns (and their encapsulation into separate artifacts) is thereby considered a way to improve software understanding and evolution. Pursuing a proper management of concerns from the requirements engineering stage can greatly benefit the entire software life-cycle. In this paper, we propose conceptual guidelines on how to perform the identification of crosscutting concerns in the process of building requirements specifications. We argue that the identification must be carried out in an incremental way, to encapsulate apart the crosscutting concerns even if they have not emerged completely yet.
















Similar content being viewed by others
Notes
We shall focus on the set of basic operators of SCTL because it suffices to illustrate our proposal. A complete definition of SCTL—including its timed extension and the definition of fixpoint operators—can be found at [11].
The steps followed to reach this solution are detailed in Appendix 1.
Notation: [¬] means that the operator ¬ may appear or not in the corresponding formula; as in Sect. 3.1, \(\Rightarrow\bigoplus\) denotes a temporal operator.
By default, the algorithm uses the models that were employed in the last V&V activities, assuming that these are the ones that best represent the stakeholders’ idea of the desired functionality.
The SCTL-MUS methodology offers support to help the stakeholders identify requirements from integration analysis (see [29]).
References
Altisen K, Maraninchi F, Stauch D (2004) Exploring aspects in the context of reactive systems. In: Proceedings of the workshop on foundations of aspect-oriented languages, in conjunction with AOSD, Lancaster, pp 45–51
Baniassad E, Clarke S (2004) Finding aspects in requirements with Theme/Doc. In: Proceedings of the workshop on early aspects, in conjunction with AOSD, Lancaster, pp 15–22
Barragáns-Martínez B, Pazos-Arias JJ, Fernández-Vilas A (2004) On measuring levels of inconsistency in multi-perspective requirements specifications. In: Proceedings of the 1st international conference on the principles of software engineering, Buenos Aires, pp 21–30
Barragáns-Martínez B, Pazos-Arias JJ, Fernández-Vilas A (2005) Merging requirements views with incompleteness and inconsistency. In: Proceedings of the IEEE Australian software engineering conference, Brisbane, pp 58–67
Bolognesi T (2000) Toward constraint-object-oriented development. IEEE Trans Softw Eng 26(7):594–616
Breu S, Krinke J (2004) Aspect mining using event traces. In: Proceedings of the 19th international conference on automated software engineering, Linz, pp 310–315
Bruns G, Godefroid P (1999) Model checking partial state spaces with 3-valued temporal logics. Lect Notes Comput Sci 1633:274–287
Ceccato M, Marin M, Mens K, Moonen L, Tonella P, Tourwé T (2005) A qualitative comparison of three aspect mining techniques. In: Proceedings of the 13th international workshop on program comprehension, in conjunction with ICSE, St. Louis, pp 13–22
CTAS: The Center TRACON Automation System. http://www.ctas.arc.nasa.gov/
Ehrig H (1986) Towards an algebraic semantics of the ISO specification language LOTOS. In: Proceedings of the 4th workshop on abstract data type, Brunswick
Fernández-Vilas A, Pazos-Arias JJ, Gil-Solla A, Díaz-Redondo RP, García-Duque J, Barragáns-Martínez B (2004) Incremental specification with SCTL/MUS-T: a case study. J Syst Softw 70(2):189–208
Filman R, Elrad T, Clarke S, Akşit M (eds) (2005) Aspect-oriented software development. Addison-Wesley, Boston
Finkelstein A, Spanoudakis G, Till D (1996) Managing interference. In: Joint proceedings of the 2nd international workshop on software architecture and the international workshop on multiple perspectives in software development, San Francisco, pp 172–174
García-Duque J, Pazos-Arias JJ (2001) Reasoning over inconsistent viewpoints: how levels of agreement can evolve? In: Proceedings of the 2nd international workshop on living with inconsistency, in conjunction with ICSE 2001, Toronto, pp 1–3
García-Duque J, Pazos-Arias JJ, Barragáns-Martínez B (2002) An analysis-revision cycle to evolve requirements specifications by using the SCTL-MUS methodology. In: Proceedings of the 10th IEEE international conference on requirements engineering, Essen, pp 282–288
Godefroid P, Huth M, Jagadeesan R (2001) Abstraction-based model checking using modal transition systems. Lect Notes Comput Sci 2154:426–440
Gotzhein R (1992) Temporal logic and applications—a tutorial. Comput Netw ISDN Syst 24:203–218
Go K, Shiratori N (1999) A decomposition of a formal specification: an improved constraint-oriented method. IEEE Trans Softw Eng 25(2):258–273
Griswold WG, Kato Y, Yuan JJ (1999) Aspect browser: tool support for managing dispersed aspects. Technical Report CS99-0640, Dept. of Computer Science and Engineering, University of California, San Diego
Grundy JC (1999) Aspect-oriented requirements engineering for component-based software systems. In: Proceedings of the 4th IEEE international symposium on requirements engineering, Limerick, pp 84–91
Hannemann J, Kiczales G (2001) Overcoming the prevalent decomposition of legacy code. In: Proceedings of the workshop on advanced separation of concerns in software engineering, in conjunction with ICSE, Toronto
ISO (1989) Information Processing Systems—Open Systems Interconnection—LOTOS—a formal description technique based on an extended state transition model. ISO/IEC/8807
Katz S, Rashid A (2004) From aspectual requirements to proof obligations for aspect-oriented systems. In: Proceedings of the 12th IEEE international conference on requirements engineering, Kyoto, pp 48–57
Kiczales G, Lamping J, Mendhekar A, Maeda C, Lopes C, Loingtier J-M, Irwin J (1997) Aspect-oriented programming. In: Proceedings of the 11th european conference on object-oriented programming, Jyväskylä, pp 220–242
Kleene SC (1952) Introduction to metamathematics, volume 1 of Bibliotheca mathematica. North-Holland
Langerak R (1990) Decomposition of functionality: a correctness-preserving LOTOS transformation. In: Proceedings of the 10th international conference on protocol specification, testing and verification, Amsterdam, pp 229–243
Larman C, Basili VR (2003) Iterative and incremental development: a brief history. IEEE Comput 36(6):47–56
Liu S (2002) Capturing complete and accurate requirements by refinement. In: Proceedings of the 8th IEEE international conference on engineering of complex computer systems, Greenbelt, pp 57–67
López-Nores M, Pazos-Arias JJ, García-Duque J, Barragáns-Martínez B, Díaz-Redondo RP, Fernández-Vilas A, Gil-Solla A, Ramos-Cabrer M (2005) Tracing integration analysis in component-based formal specifications. Lect Notes Comput Sci 3535:147–162
Loughran N, Rashid A (2002) Mining aspects. In: Proceedings of the workshop on early aspects, in conjunction with AOSD, Enschede
Mens K. AIRport: aspect identification and refactoring portal. http://www.2.info.ucl.ac.be/ingidocs/people/km/AIRPort/AIRPort.htm
Milner R (1989) Communication and concurrency. In: International series in computer science. Prentice-Hall, Upper Saddle River
Nuseibeh B, Easterbrook S, Russo A (2001) Making inconsistency respectable in software development. J Syst Softw 58(2):171–180
Nuseibeh B (2004) Crosscutting requirements. In: Proceedings of the 3rd international conference on aspect-oriented software development, Lancaster, pp 3–4
Pazos-Arias JJ, García-Duque J, López-Nores M, Barragáns-Martínez B (2005) Eliciting requirements and scenarios using the SCTL-MUS methodology. The shuttle system case study. In: Proceedings of the workshop on scenarios and state machines, in conjunction with ICSE, St. Louis
Pazos-Arias JJ, García-Duque J (2001) SCTL-MUS: a formal methodology for software development of distributed systems. a case study. Formal Aspects Comput 13:50–91
Rashid A, Moreira A, Araújo J (2003) Modularisation and composition of aspectual requirements. In: Proceedings of 2nd international conference on aspect-oriented software development, Boston, pp 11–20
Rashid A, Sawyer P, Moreira A, Araújo J (2002) Early aspects: a model for aspect-oriented requirements engineering. In: Proceedings of the 10th IEEE international conference on requirements engineering, Essen, pp 199–202
Rosenhainer L (2004) Identifying crosscutting concerns in requirements specifications. In: Proceedings of the workshop on early aspects, in conjunction with OOPSLA, Vancouver, pp 49–58
Sampaio A, Loughran N, Rashid A, Rayson P (2005) Mining aspects in requirements. In: Proceedings of the workshop on early aspects, in conjunction with AOSD, Chicago
Sannella D (2000) Algebraic specification and program development by stepwise refinement. Lect Notes Comput Sci 1817:1–9
Shin JE, Sutcliffe AG, Gregoriades A (2005) Scenario advisor tool for requirements engineering. Require Eng 10(2):132–145
Spanoudakis G, Kim H (2004) Supporting the reconciliation of models of object behaviour. Softw Syst Model 3(4):273–293
Sutton SM (2002) Early-stage concern modeling. In: Proceedings of the workshop on early aspects, in conjunction with AOSD, Enschede
The shuttle system case study. http://www.cs.upb.de/cs/ag-schaefer/CaseStudies/ShuttleSystem/
Tarr P, Ossher H, Harrison W, Sutton SM (1999) N degrees of separation: Multi-dimensional separation of concerns. In: Proceedings of the 21st international conference on software engineering, Los Angeles, pp 107–119
Tonella P, Ceccato M (2004) Aspect mining through the formal concept analysis of execution traces. In: Proceedings of the 11th IEEE working conference on reverse engineering, Delft, pp 112–121
van den Berg K, Conejero J (2005) A conceptual formalization of crosscutting in AOSD. In: Proceedings of the 3rd Iberian workshop on aspect oriented software development, Granada
van Lamsweerde A, Letier E (2000) Handling obstacles in goal-oriented requirements engineering. IEEE Trans Softw Eng 26(10):978–1005
Whittle J, Krüger I (2004) A methodology for scenario-based requirements capture. In: Proceedings of the international workshop on scenarios and state machines, in conjunction with ICSE, Edinburgh
Zhang C, Jacobsen H-A (2003) Refactoring middleware with aspects. IEEE Trans Parallel Distrib Syst 14(11):1058–1073
Zowghi D, Offen R (1997) A logical framework for modeling and reasoning about the evolution of requirements. In: Proceedings of the 3rd IEEE international symposium on requirements engineering, Annapolis, pp 247–259
Author information
Authors and Affiliations
Corresponding author
Additional information
This work has been partially funded by the Xunta de Galicia research project PGIDIT04PXIB32201PR.
Appendices
Appendix 1: The mining algorithm
Algorithm 1 shows the pseudo-code of the mining algorithm implemented in SCTL-MUS, that receives two parameters: (1) the MUS model of a component \(\mathcal{C},\) and (2) a set \(\delta_{\mathcal{C}}\) containing the events of \(\mathcal{C}\) that do not appear in the models of the other components. The output consists of a model for the clean component \(\mathcal{C}_{clean}\) and another one for the projection of the aspect \(\mathcal{P}roj.\) We use the notation \(s_{i} \xrightarrow{a} s_{j}\) to represent a possible transition from state s i to state s j through the event a. On its part, \(\overline{s_{i}[a]}\) represents a non-possible transition from state s i through event a (i.e. the fact that the event a is specified as false in s i , also denoted by s i [a]=false).
The algorithm starts out by making the models of \(\mathcal{C}_{clean}\) and \(\mathcal{P}roj\) equal to that of \(\mathcal{C},\) and then proceeds by distributing the possible and non-possible transitions of the latter. The successive transformations are such that it always holds that \(\mathcal{C} = \mathcal{C}_{clean} ||_{\mathcal{M}} \mathcal{P}roj,\) or, what is the same, \(\mathcal{C} = \mathcal{C}_{clean} |[\Lambda]|_{\mathcal{M}} \mathcal{P}roj\) with Λ the whole set of events that appear in possible or non-possible transitions in \(\mathcal{C}.\)
The pseudo-code of Algorithm 1 does not show the following features:
-
1.
The splits that assign all the transitions to either \(\mathcal{C}_{clean}\) or \(\mathcal{P}roj\) are automatically discarded.
-
2.
The algorithm keeps track of the options it has traversed, to explore others in case a solution is rejected by the stakeholders.
-
3.
Some options may not be explored following stakeholders’ indications (see Sect. 4.2).

The simplification mentioned in line 31 of Algorithm 1 works as follows. Given \(\mathcal{C} = \mathcal{C}_{clean} |[\Lambda]|_{\mathcal{M}} \mathcal{P}roj,\) it attempts to remove events from \(\mathcal{C}_{clean}\) and/or \(\mathcal{P}roj\) and from the Λ set. The eligible events are those that appear only in possible or unspecified state transitions in \(\mathcal{C}_{clean} (\mathcal{P}roj),\) and in unspecified transitions or unit loops in \(\mathcal{P}roj (\mathcal{C}_{clean}).\) Any such event e can be removed from Λ, and the unit loops through e in \(\mathcal{P}roj (\mathcal{C}_{clean})\) become unspecified transitions—producing simplified models \(\mathcal{P}roj^{e} \quad (\mathcal{C}_{clean}^{e}).\) The changes must preserve that \(\mathcal{C}_{clean}|[\Lambda - \{e\}]|_{\mathcal{M}} \mathcal{P}roj^{e} \quad (\mathcal{C}_{clean}^{e}|[\Lambda - \{e\}]|_{\mathcal{M}} \mathcal{P}roj)\) equals the original \(\mathcal{C}.\)
Next, we describe the execution of the mining algorithm when applied over the MUS model of \(\mathcal{S}tation_{i}^{1}\) (Fig. 5) (with the set \(\delta_{\mathcal{S}tation_{i}^{1}} = \{rdy_{i}\}\)). We label each step with the corresponding line number in the pseudo-code of the algorithm.
-
[line 1] Figure 17 depicts the initial situation, where the models of \(\mathcal{S}tation_{i_{clean}}^{1}\) and \(\mathcal{P}roj_{i}\) are equal to the original one (the layout represents the equality \(\mathcal{S}tation_{i}^{1} = \mathcal{S}tation_{i_{clean}}^{1}||_{\mathcal{M}} \mathcal{P}roj_{i}).\) The dotted lines represent unassigned transitions. Once a transition has been assigned to either \(\mathcal{S}tation_{i_{clean}}^1\) or \(\mathcal{P}roj_{i},\) it becomes a solid line in that part and in the original component; thus, the algorithm finishes when all the transitions of the original component are solid lines.
-
[line 2] Let Υ be the possible transition \(s_{1} \xrightarrow{rdy_i} s_{2}.\)
-
[line 4] Υ is assigned to \(\mathcal{S}tation_{i_{clean}}^{1},\) which implies joining the states s 1 and s 2 in \(\mathcal{P}roj_i\) (Fig. 18).
-
[line 2] Let Υ be the possible transition \(s_{2} \xrightarrow{init_i} s_{3}.\)
-
[line 4] As first option (shown in Fig. 19), Υ is assigned to \(\mathcal{S}tation_{i_{clean}}^{1},\) which implies: (1) the transition \(s_{3} \xrightarrow{end_i} s_{1}\) is also assigned to \(\mathcal{S}tation_{i_{clean}}^{1},\) because it joins the same states in \(\mathcal{P}roj_i\) (s 1,2 and s 3) than Υ [line 5]; (2) joining the states s 1,2 and s 3 in \(\mathcal{P}roj_i\) [lines 6–16].
-
[line 2] Let Υ be one of the possible transitions \(s_{2} \xrightarrow{init_j} s_{4},\) for some j ≠ i.
-
[line 4] As first option (shown in Fig. 20), Υ is assigned to \(\mathcal{S}tation_{i_{clean}}^{1},\) which implies: (1) assigning all the other possible transitions between s 2 and s 4 to \(\mathcal{S}tation_{i_{clean}}^1\) [line 5]; (2) assigning the transition \(\overline{s_4[init_i]}\) to \(\mathcal{S}tation_{i_{clean}}^1\) [line 10]. This option is discarded, because it leads to a split where all the transitions have been assigned to \(\mathcal{S}tation_{i_{clean}}^{1}.\)
-
[line 19] As second option (shown in Fig. 21), Υ is assigned to \(\mathcal{P}roj_{i},\) which implies: (1) assigning all the other possible transitions between s 2 and s 4 to \(\mathcal{P}roj_i\) [line 5]; (2) assigning the transition \(\overline{s_4[init_i]}\) to \(\mathcal{P}roj_i\) (line 10).
-
[line 31] Having assigned all the transitions, it is possible to remove from \(\mathcal{S}tation_{i_{clean}}^1\) the transitions \(s_{2} \xrightarrow{\{end_j\}} s_{2} \forall j \neq i,\) also removing the events end j ∀j ≠ i from the \(|\,|_{\mathcal{M}}\) operator; the same happens with the transitions \(s_{1} \xrightarrow{rdy_i} s_{1}\) and \(s_{1} \xrightarrow{end_i} s_{1}\) in \(\mathcal{P}roj_{i}.\) The result is shown in Fig. 22.
Appendix 2: Combining the projections to make up the aspect
The following steps illustrate the process to gather together the projections of an aspect:
-
Figure 23 graphically depicts (5), that is reached after the mining algorithm has found the split of Fig. 6.
-
As shown in Fig. 24, the common set of events Ω of (5) is obtained by adding convenient unit loops to the clean component and the projection of the aspect. Footnote 7
-
Figure 25 results from reordering the artifacts of Fig. 24, applying the commutativity and associativity properties of \(|[\Lambda]|_{\mathcal{M}}.\)
-
Figure 26 shows how the models are simplified, by following the same rules applied in Fig. 22.
-
Finally, the model for the overall aspect results from composing those of its projections (see Fig. 27).
Appendix 3: Rewriting requirements
This appendix details the derivation of the requirements for the projections of the candidate aspect in the first identification round of the example (Sect. 3.5), and for the clean components and the aspect projections in the second (Sect. 3.7).
3.1 Appendix 3.1: Requirements for the aspect projections (first round)
From the split shown in Fig. 6, the requirements in \(\mathcal{S}pec (\mathcal{S}tation_{i}^{1})\) are rewritten by conveniently removing the events {rdy j }∀j ∪ {end i }, which appear in unspecified transitions from every state of the MUS model derived for \(\mathcal{P}roj_{i}.\) This operation leads to the provisional requirements of Fig. 28.
As shown in Fig. 9, \(\mathcal{R}_{2_{cross}}\) does not become part of the specification of \(\mathcal{P}roj_{i},\) because it is violated in state s 1 of its MUS model (see Fig. 6). On its part, \(\mathcal{R}_{5_{cross}}\) is removed because it does not specify anything—\(\mathcal{R}_5\) adheres to the pattern \(\mathcal{R} \Rightarrow \oplus [\neg] e\) (see Sect. 3.4). Also note that the true premise of \(\mathcal{R}_{1_{cross}}\) can be omitted.
3.2 Appendix 3.2: Requirements for \(Station_{i_{clean}}^2\)
From the split shown in Fig. 13, the requirements in \(\mathcal{S}pec (\mathcal{S}tation_{i}^{2})\) are rewritten by conveniently removing the events {rdy j , init j , end j }∀j≠i , which appear in unspecified transitions from every state of the MUS model derived for \(\mathcal{S}tation_{i_{clean}}^{2}.\) This operation leads to the provisional requirements of Fig. 29.
As shown in Fig. 14, \(\mathcal{R}_{7_{clean}}\) does not become part of the specification of \(\mathcal{S}tation_{i_{clean}}^{2},\) because it is violated in state s 2 of its MUS model. On its part, \(\mathcal{R}_{6_{clean}}\) is removed because \(\mathcal{R}_6\) adheres to the pattern \(\mathcal{R} \Rightarrow\oplus [\neg] e\) (see Sect. 3.4).
3.3 Appendix 3.3: Requirements for the aspect projections (second round)
From the split shown in Fig. 13, the requirements in \(\mathcal{S}pec (\mathcal{S}tation_{i}^{2})\) are rewritten by conveniently removing the events {rdy j }∀j ∪ {end j }∀j≠i , which appear in unspecified transitions from every state of the MUS model derived for \(\mathcal{P}roj_{i}^{2}.\) This operation leads to the provisional requirements of Fig. 30.
As shown in Fig. 15, \(\mathcal{R}_{1_{clean_{cross}}}\) does not become part of the specification of \(\mathcal{P}roj_{i}^{2},\) because it is not satisfied in state s 2 of its MUS model (see Fig. 13). \(\mathcal{R}_5\) and \(\mathcal{R}_7\) are removed because they follow the pattern \(\mathcal{R} \Rightarrow\oplus [\neg] e\) (see Sect. 3.4).
Rights and permissions
About this article
Cite this article
García-Duque, J., López-Nores, M., Pazos-Arias, J.J. et al. Guidelines for the incremental identification of aspects in requirements specifications. Requirements Eng 11, 239–263 (2006). https://doi.org/10.1007/s00766-006-0028-7
Received:
Accepted:
Published:
Issue Date:
DOI: https://doi.org/10.1007/s00766-006-0028-7