Skip to main content
Log in

Guidelines for the incremental identification of aspects in requirements specifications

  • Original Article
  • Published:
Requirements Engineering Aims and scope Submit manuscript

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.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Fig. 1
Fig. 2
Fig. 3
Fig. 4
Fig. 5
Fig. 6
Fig. 7
Fig. 8
Fig. 9
Fig. 10
Fig. 11
Fig. 12
Fig. 13
Fig. 14
Fig. 15
Fig. 16

Similar content being viewed by others

Notes

  1. 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].

  2. Examples of using SCTL can be found elsewhere [11, 14, 35]; here, we textually explain the meaning of the requirements for better understanding, using the symbols ∧, ∨ and ¬ to denote the logical operations AND, OR and NOT.

  3. The steps followed to reach this solution are detailed in Appendix 1.

  4. Notation: [¬] means that the operator ¬ may appear or not in the corresponding formula; as in Sect. 3.1, \(\Rightarrow\bigoplus\) denotes a temporal operator.

  5. 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.

  6. The SCTL-MUS methodology offers support to help the stakeholders identify requirements from integration analysis (see [29]).

  7. This may imply undoing the simplification made in the last step of the mining algorithm (see Figs. 21 and 22).

References

  1. 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

  2. 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

  3. 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

  4. 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

  5. Bolognesi T (2000) Toward constraint-object-oriented development. IEEE Trans Softw Eng 26(7):594–616

    Article  Google Scholar 

  6. 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

  7. Bruns G, Godefroid P (1999) Model checking partial state spaces with 3-valued temporal logics. Lect Notes Comput Sci 1633:274–287

    Article  MathSciNet  Google Scholar 

  8. 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

  9. CTAS: The Center TRACON Automation System. http://www.ctas.arc.nasa.gov/

  10. Ehrig H (1986) Towards an algebraic semantics of the ISO specification language LOTOS. In: Proceedings of the 4th workshop on abstract data type, Brunswick

  11. 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

    Article  Google Scholar 

  12. Filman R, Elrad T, Clarke S, Akşit M (eds) (2005) Aspect-oriented software development. Addison-Wesley, Boston

  13. 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

  14. 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

  15. 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

  16. Godefroid P, Huth M, Jagadeesan R (2001) Abstraction-based model checking using modal transition systems. Lect Notes Comput Sci 2154:426–440

    Article  MathSciNet  Google Scholar 

  17. Gotzhein R (1992) Temporal logic and applications—a tutorial. Comput Netw ISDN Syst 24:203–218

    Article  MATH  Google Scholar 

  18. Go K, Shiratori N (1999) A decomposition of a formal specification: an improved constraint-oriented method. IEEE Trans Softw Eng 25(2):258–273

    Article  Google Scholar 

  19. 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

  20. 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

  21. 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

  22. ISO (1989) Information Processing Systems—Open Systems Interconnection—LOTOS—a formal description technique based on an extended state transition model. ISO/IEC/8807

  23. 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

  24. 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

  25. Kleene SC (1952) Introduction to metamathematics, volume 1 of Bibliotheca mathematica. North-Holland

  26. 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

  27. Larman C, Basili VR (2003) Iterative and incremental development: a brief history. IEEE Comput 36(6):47–56

    Google Scholar 

  28. 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

  29. 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

    Google Scholar 

  30. Loughran N, Rashid A (2002) Mining aspects. In: Proceedings of the workshop on early aspects, in conjunction with AOSD, Enschede

  31. Mens K. AIRport: aspect identification and refactoring portal. http://www.2.info.ucl.ac.be/ingidocs/people/km/AIRPort/AIRPort.htm

  32. Milner R (1989) Communication and concurrency. In: International series in computer science. Prentice-Hall, Upper Saddle River

  33. Nuseibeh B, Easterbrook S, Russo A (2001) Making inconsistency respectable in software development. J Syst Softw 58(2):171–180

    Article  Google Scholar 

  34. Nuseibeh B (2004) Crosscutting requirements. In: Proceedings of the 3rd international conference on aspect-oriented software development, Lancaster, pp 3–4

  35. 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

  36. 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

    Article  Google Scholar 

  37. 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

  38. 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

  39. 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

  40. 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

  41. Sannella D (2000) Algebraic specification and program development by stepwise refinement. Lect Notes Comput Sci 1817:1–9

    Article  Google Scholar 

  42. Shin JE, Sutcliffe AG, Gregoriades A (2005) Scenario advisor tool for requirements engineering. Require Eng 10(2):132–145

    Article  Google Scholar 

  43. Spanoudakis G, Kim H (2004) Supporting the reconciliation of models of object behaviour. Softw Syst Model 3(4):273–293

    Google Scholar 

  44. Sutton SM (2002) Early-stage concern modeling. In: Proceedings of the workshop on early aspects, in conjunction with AOSD, Enschede

  45. The shuttle system case study. http://www.cs.upb.de/cs/ag-schaefer/CaseStudies/ShuttleSystem/

  46. 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

  47. 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

  48. 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

  49. van Lamsweerde A, Letier E (2000) Handling obstacles in goal-oriented requirements engineering. IEEE Trans Softw Eng 26(10):978–1005

    Article  Google Scholar 

  50. 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

  51. Zhang C, Jacobsen H-A (2003) Refactoring middleware with aspects. IEEE Trans Parallel Distrib Syst 14(11):1058–1073

    Article  Google Scholar 

  52. 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

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Jorge García-Duque.

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. 1.

    The splits that assign all the transitions to either \(\mathcal{C}_{clean}\) or \(\mathcal{P}roj\) are automatically discarded.

  2. 2.

    The algorithm keeps track of the options it has traversed, to explore others in case a solution is rejected by the stakeholders.

  3. 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 ji.

  • [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 ji 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.

Fig. 17
figure 17

The initial situation [line 1 in Algorithm 1]

Fig. 18
figure 18

Dealing with the transition \(s_{1} \xrightarrow{rdy_i} s_{2}\) [lines 4–18]

Fig. 19
figure 19

Dealing with the transition \(s_{2}\xrightarrow{init_i} s_{3}\) [lines 4–18]

Fig. 20
figure 20

From [line 4] to [line 31] with one of the transitions \(s_{2} \xrightarrow{init_j} s_{4}:\) an automatically discarded split

Fig. 21
figure 21

From [line 19] to [line 31] with one of the transitions \(s_{2}\xrightarrow{init_j} s_{4}:\) first solution

Fig. 22
figure 22

Simplification of the first solution [line 31]

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).

Fig. 23
figure 23

Combining the projections (step 1)

Fig. 24
figure 24

Combining the projections (step 2)

Fig. 25
figure 25

Combining the projections (step 3)

Fig. 26
figure 26

Combining the projections (step 4)

Fig. 27
figure 27

Combining the projections (step 5)

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.

Fig. 28
figure 28

Removing the events {rdy j }j ∪ {end i } from \(\mathcal{S}pec (\mathcal{S}tation_{i}^{1})\) to obtain the provisional requirements for \(\mathcal{P}roj_{i}\)

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 }ji , 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.

Fig. 29
figure 29

Removing the events {rdy j , init j , end j }ji to obtain the provisional requirements for \(\mathcal{S}tation_{i_{clean}}^{2}\)

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 }ji , 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.

Fig. 30
figure 30

Removing the events {rdy j }j ∪ {end j }ji to obtain the provisional requirements for \(\mathcal{P}roj_{i}^{2}\)

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

Reprints 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

Download citation

  • Received:

  • Accepted:

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1007/s00766-006-0028-7

Keywords

Navigation