<?xml version="1.0" encoding="UTF-8"?>
<TEI xml:space="preserve" xmlns="http://www.tei-c.org/ns/1.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.tei-c.org/ns/1.0 https://raw.githubusercontent.com/kermitt2/grobid/master/grobid-home/schemas/xsd/Grobid.xsd"
 xmlns:xlink="http://www.w3.org/1999/xlink">
	<teiHeader xml:lang="en">
		<fileDesc>
			<titleStmt>
				<title level="a" type="main">REAssistant: a Tool for Identifying Crosscutting Concerns in Textual Requirements</title>
			</titleStmt>
			<publicationStmt>
				<publisher/>
				<availability status="unknown"><licence/></availability>
			</publicationStmt>
			<sourceDesc>
				<biblStruct>
					<analytic>
						<author>
							<persName><forename type="first">Alejandro</forename><surname>Rago</surname></persName>
							<email>arago@exa.unicen.edu.ar</email>
							<affiliation key="aff0">
								<orgName type="department">Instituto Superior de Ingeniería de Software (ISISTAN-UNICEN) Tandil</orgName>
								<address>
									<settlement>Buenos Aires</settlement>
									<country key="AR">Argentina</country>
								</address>
							</affiliation>
							<affiliation key="aff1">
								<orgName type="institution">CONICET</orgName>
								<address>
									<country key="AR">Argentina</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Claudia</forename><surname>Marcos</surname></persName>
							<email>cmarcos@exa.unicen.edu.ar</email>
							<affiliation key="aff0">
								<orgName type="department">Instituto Superior de Ingeniería de Software (ISISTAN-UNICEN) Tandil</orgName>
								<address>
									<settlement>Buenos Aires</settlement>
									<country key="AR">Argentina</country>
								</address>
							</affiliation>
							<affiliation key="aff2">
								<orgName type="institution">CIC</orgName>
								<address>
									<settlement>Buenos Aires</settlement>
									<country key="AR">Argentina</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">J</forename><surname>Andrés Diaz-Pace</surname></persName>
							<affiliation key="aff0">
								<orgName type="department">Instituto Superior de Ingeniería de Software (ISISTAN-UNICEN) Tandil</orgName>
								<address>
									<settlement>Buenos Aires</settlement>
									<country key="AR">Argentina</country>
								</address>
							</affiliation>
							<affiliation key="aff1">
								<orgName type="institution">CONICET</orgName>
								<address>
									<country key="AR">Argentina</country>
								</address>
							</affiliation>
						</author>
						<title level="a" type="main">REAssistant: a Tool for Identifying Crosscutting Concerns in Textual Requirements</title>
					</analytic>
					<monogr>
						<imprint>
							<date/>
						</imprint>
					</monogr>
					<idno type="MD5">DEB26AC452A8775593286B1B9D12C99C</idno>
				</biblStruct>
			</sourceDesc>
		</fileDesc>
		<encodingDesc>
			<appInfo>
				<application version="0.7.2" ident="GROBID" when="2023-03-24T14:23+0000">
					<desc>GROBID - A machine learning software for extracting information from scholarly documents</desc>
					<ref target="https://github.com/kermitt2/grobid"/>
				</application>
			</appInfo>
		</encodingDesc>
		<profileDesc>
			<abstract>
<div xmlns="http://www.tei-c.org/ns/1.0"><p>Use case modeling is very useful to capture requirements and communicate with the stakeholders. Use cases normally have textual specifications that describe the interactions between the system and external actors. However, since use cases are specified from a functional perspective, concerns that do not fit well this decomposition criterion are kept away from the analysts' eye and might end up intermingled in multiple use cases. These crosscutting concerns (CCCs) are generally relevant for analysis, design and implementation activities and should be dealt with from early stages. Unfortunately, identifying such concerns by hand is a cumbersome and error-prone task, mainly because it requires a semantic interpretation of textual requirements. To ease the analysis of CCCs, we have developed an automated tool called REAssistant that is able to extract semantic information from textual use cases and reveal candidate CCCs, helping analysts to reason about them before making important commitments in the development. Our tool performs a series of advanced NLP analyses based on the UIMA framework. Analysts can define concern-specific queries in the tool to search for CCCs in the requirements via a flexible SQLlike language. In this article, we briefly discuss the technologies behind the tool and explain how an end user can interact with REAssistant to analyze CCCs in use case specifications. A short video explaining the main features of the tool can be found at https://youtu.be/i3kSJil_2eg. The REAssistant tool can be downloaded from https://code.google.com/p/reassistant.</p></div>
			</abstract>
		</profileDesc>
	</teiHeader>
	<text xml:lang="en">
		<body>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>I. INTRODUCTION</head><p>Most software systems have certain concerns that are key for the success of a project <ref type="bibr" target="#b0">[1]</ref>. These concerns are often related to business goals of the system (e.g., profit, market opportunities or brand positioning, etc.) and quality attributes (e.g., performance, fault tolerance or security, etc.) <ref type="bibr" target="#b1">[2]</ref>. Since many requirements modeling techniques (e.g., use cases) are based on a functional decomposition criterion, some concerns are likely to be hidden in textual specifications, tangled with functionality and scattered across documents. These concerns are referred to as crosscutting concerns (CCCs) <ref type="bibr" target="#b0">[1]</ref>. For example, an access control policy (part of a security quality attribute) can subtlety appear in multiple use cases, and might be overlooked by analysts and architects during the system design. Since requirements are commonly documented in natural language, analysts and developers must peruse textual specifications to reveal CCCs of interest for further analysis. Still, searching for latent concerns in requirements is a difficult and time-consuming task, mainly due to the semantics and ambiguities of natural language.</p><p>In this context, is useful for analysts to rely on tool support for processing requirements and identifying CCCs. Such a tool should be able to quickly gather a list of candidate CCCs from the text and present it to the analysts (e.g., integrity, synchronization, access control, etc.). Then, it is up to the analysts to inspect the list to determine which CCCs are actually relevant. There are several concern mining tools available that use Natural Language Processing (NLP) techniques and domain-specific dictionaries (e.g., taxonomies of quality attributes) <ref type="bibr" target="#b2">[3]</ref>- <ref type="bibr" target="#b4">[5]</ref>. Unfortunately, these tools have trouble to identify portions of functionality implicitly (or indirectly) affected by CCCs because they have poor semantic capabilities when processing textual requirements.</p><p>To overcome these limitations, we have developed the REAssistant (REquirements Analysis Assistant) tool <ref type="bibr" target="#b5">[6]</ref>. Our tool supports the search of latent CCCs by relying on advanced NLP modules and domain knowledge about use cases.</p><p>REAssistant uses an annotation-based representation of use cases that holds lexical, syntactical, semantical and domain information of the text. Furthermore, our tool is equipped with a NLP pipeline assembled with the UIMA framework that decorates the use cases with annotations <ref type="bibr" target="#b6">[7]</ref>. The pipeline performs several linguistic analyses in the text, such as: dependency parsing, semantic role labeling and domain actions classification <ref type="bibr" target="#b5">[6]</ref>. To find candidate concerns, the tool provides customizable concern-specific rules that can query the annotations generated earlier to extract not only CCCs but also their crosscutting relations (i.e., requirements affected by CCCs). The rules take advantage of the so-called "domain actions", which are a taxonomy of domain-neutral classes applicable to use cases. Finally, our tool is implemented as a set of Eclipse plugins that provide mechanisms for the analysis of concerns, including special views for visualizing CCCs at different levels of granularity.</p><p>The rest of this article is organized in 3 sections. Section II explains the concern discovery problem with a motivating example. Section III briefly discusses the architectural design of the tool and its components. Finally, Section IV provides a quick tour of the working of REAssistant from the viewpoint of an analyst. </p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>II. REVEALING LATENT CONCERNS IN USE CASES</head><p>Identifying CCCs in use case specifications demands a careful manual inspection by analysts, as well as a dosage of domain experience. There are three main activities that analysts should do: i) finding candidate concern(s), ii) determining the "real" concerns and specifying them, and iii) identifying the points of the specification (e.g., use case steps) affected by each concern, i.e., finding its crosscutting relations or impacts. Let us consider the excerpts from three use cases shown in Figure <ref type="figure" target="#fig_0">1</ref>. The sentences of UCS1 and UCS3 qualify functionality with phrases such as "in less than 10 seconds" and "as fast as possible", which are hints of a PERFORMANCE concern. Thus, an analyst can interpret that there is a PERFORMANCE CCC at play, and search for performance-related words to quickly expose the concern. We call these explicit references in the text direct impacts of the concern. Several tools currently support keyword-based searches to mine them [3]- <ref type="bibr" target="#b4">[5]</ref>.</p><p>However, there might be other use cases implicitly affected by the same concern as well. For instance, an experienced analyst could determine that one of the steps of UCS2, referring to a "computation", is also constrained by the PERFORMANCE CCC. This relation can be discovered after making a semantic analysis of the text, rather than a lexical or syntactical analysis. We call these implicit relations in the text indirect impacts of the concern. Indirect impacts are usually harder to detect because they require an interpretation of the semantics in textual requirements. From an automation viewpoint, indirect impacts can be (approximately) detected by uncovering associations between specific concerns and "abstract" actions (e.g., compute, calculate, perform, execute) expressed in use cases, because such associations often hold the key for recognizing concern impacts. However, it is the analysts' responsibility to determine if a sentence is truly affected by a CCC. The role of tool support is then to recommend potential CCCs and let the analyst make the final decisions. Unfortunately, existing tools for mining concerns have problems to detect indirect impacts, because their semantic-level features are limited. </p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>III. ARCHITECTURE OF REAssistant</head><p>REAssistant is built on the Eclipse IDE as a set of plugins that support both the linguistic analysis of textual use cases and the execution of search rules for identifying concerns <ref type="bibr" target="#b5">[6]</ref>. Figure <ref type="figure" target="#fig_1">2</ref> shows the main components of the architecture, namely: UIMAProcessingEngine, QueryingEngine, and REAssistant-GUI. The communication among these components take place through files that contain (serialized) EMF<ref type="foot" target="#foot_0">1</ref> models. Use cases are first imported into the UIMAProcessingEngine via the UseCaseReader component, which gathers text from varied sources, such as PDF, DOC, HTML files, or directly from the use case editor bundled in REAssistant. Then, the text is stored in the AnnotationSchema, which is a shared data structure that allows the communication of text analytic modules. Once imported, a pipeline of Annotators takes the text from use cases and breaks them into individual sentences (e.g., behavior steps), and automatically generates different annotations for these sentences. There are two kind of annotators. The first set of annotators run a series of NLP tasks that include standard linguistic analyses (e.g., stemming, POS tagging). The second set of annotators runs more complex analyses (e.g., semantic role labeling) for extracting the predicate structure of the sentences and for mapping these predicates to domain actions. The computation of domain actions is performed with a special classifier reported in <ref type="bibr" target="#b5">[6]</ref>. Furthermore, a NLP specialist can configure annotators via UIMA before running the pipeline. The resulting annotations are later exported to an EMF model. The QueryingEngine is equipped with the concern-specific searching rules that were defined beforehand by experts. By analyzing the use cases and their annotations, the QueryingEngine executes the searching rules on the text of use cases. At last, the REAssistantGUI features different views for browsing candidate CCCs and their impacts. This component provides edition and visualization support for the analyst to explore and refine the concerns found. REAssistant leverages on the UIMA framework 2 <ref type="bibr" target="#b5">[6]</ref>, <ref type="bibr" target="#b7">[8]</ref>. UIMA is an extensible architecture for building analytic applications that process unstructured information. The architecture of our tool makes extensive use of the annotation mechanisms provided by UIMA. An annotation identifies and labels a specific region of a text document. Figure <ref type="figure" target="#fig_2">3</ref> shows a linguistic analysis of a use case step from a requirements specification. The annotations of level 1 correspond to tokens. Direct impacts would be typically discovered by analyzing information at this level. The annotations of levels 2 and 3 provide richer information, such as the predicate structure and domain actions, respectively. Indirect impacts can be discovered by querying information at level 3.</p><p>The QueryingEngine is implemented on top of the EMF Query2 3 project, which serves as an SQL-like language for searching through EMF models. The rule syntax is simple to understand and powerful enough to express concernrelated queries. In addition, we have developed an abstraction layer that allows analysts to seamlessly incorporate UIMAgenerated annotations in the queries. There are two types of rules: i) direct rules, responsible for detecting a CCC; and ii) indirect rules, for detecting domain actions that are potentially related to that concern. Direct rules are focused in finding explicit references to a particular CCC, for example, the word "server" or "database". Complementary, indirect rules are focused in finding more subtle associations that come from a semantic interpretation of the use cases. Figure <ref type="figure">4</ref> illustrates a PERFORMANCE rule composed of three queries. Query #1 would find parts of the text related to PERFORMANCE through the analysis of token lemmas such as "response" and "second", similarly to keyword-based approaches. Queries #2 and #3 make use of domain actions to reveal indirect impacts, looking for actions such as "calculation" and "process". For more information about the architecture of the tool, the NLP pipeline and the concern ruleset, the reader is referred to <ref type="bibr" target="#b5">[6]</ref>. In this 2 http://uima.apache.org/ 3 http://www.eclipse.org/modeling/emf/downloads/?project=query2 </p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>IV. REAssistant IN ACTION</head><p>The REAssistant tool offers analysts functionality for editing use cases, performing a linguistic analysis of the use cases, and applying searching rules for identifying CCCs. In this section, we discuss the operation of the tool from the perspective of an analyss who is using it and explain how she/he interacts with the tool in the concern identification and analysis process (see a video at https://youtu.be/i3kSJil_2eg). Initially, the analyst needs to provide the text of use case specifications. Our tool has a form-based editor that handles the documentation of use cases and stores them in a persistent file with extension "ucs". The internal structure of "ucs" files are based on a standard use case template that contains sections to describe actors, main flow, alternative flows, supplementary requirements, etc. Once the "ucs" file is complete, analysts can automatically run a series of NLP analyses on the use cases. From the user's viewpoint, the linguistic analyses will produce all kinds of meta-information for the use cases in the form of layers of annotations, which are later stored in a persistent file with extension "uima". This file holds the results of the semantic analysis of the text. After the text is processed, users can open a new editor to conduct analyses for the CCCs and their relations with the use cases. The editor will create a persistent file with extension "rea". Figure <ref type="figure">5</ref> shows a snapshot of this editor, where the analysts are free to accept, modify or delete any of the concerns detected, based on their understanding of the requirements. In order to identify CCCs, users just have to press a button labeled "Rule Mine CCC" to execute the predefined queries loaded in REAssistant with the rule-based engine. The queries codify knowledge about concerns and how they relate semantically to natural language expressions, and were defined by experienced analysts to cover a wide range of software domains. Anyway, our tool has an editor in which analysts can customize the rules at any time. Let us assume that the analyst selects the rules associated to the PERFORMANCE concern. The execution of the rules will mark the sentences that are potentially crosscut by the concern. The tool can display the crosscutting relations using different colors on the text and at two levels of granularity: at the level of use cases (global view, Figure <ref type="figure">7a</ref>), or at the level of behavior steps for a given use case (detailed view, Figure <ref type="figure">7b</ref>). There is also another view within the concern editor that computes a traceability matrix among the use cases and the concerns. In this way, the analyst can easily get insights on: how a given concern impacts on the use cases, whether a concern is wellmodularized (in terms of a narrow set of use cases), or how a given use case gets affected by several concerns.</p></div><figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_0"><head>Figure 1 .</head><label>1</label><figDesc>Figure 1. Concern impacts in use cases</figDesc><graphic coords="2,80.35,63.65,188.29,168.78" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_1"><head>Figure 2 .</head><label>2</label><figDesc>Figure 2. Overview of the Architecture of REAssistant</figDesc><graphic coords="2,343.36,63.65,188.30,173.19" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_2"><head>Figure 3 .</head><label>3</label><figDesc>Figure 3. Annotations in a use case sentence</figDesc><graphic coords="3,80.35,63.65,188.30,175.92" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_3"><head>Figure 4 .Figure 5 .</head><label>45</label><figDesc>Figure 4. Rule syntax for searching CCCs</figDesc><graphic coords="3,355.91,63.65,163.19,155.92" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_4"><head>Figure 6 .</head><label>6</label><figDesc>Figure 6. Views provided in REAssistant for analyzing CCCs</figDesc><graphic coords="4,48.96,63.65,251.05,168.38" type="bitmap" /></figure>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="1" xml:id="foot_0">http://www.eclipse.org/modeling/emf/</note>
		</body>
		<back>
			<div type="references">

				<listBibl>

<biblStruct xml:id="b0">
	<monogr>
		<title level="m">Aspect-Oriented Requirements Engineering</title>
				<editor>
			<persName><forename type="first">A</forename><surname>Moreira</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">R</forename><surname>Chitchyan</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">J</forename><surname>Araujo</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">A</forename><surname>Rashid</surname></persName>
		</editor>
		<meeting><address><addrLine>Berlin Heidelberg</addrLine></address></meeting>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2013">2013</date>
			<biblScope unit="volume">XIX</biblScope>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b1">
	<analytic>
		<title level="a" type="main">Software Architecture in Practice</title>
		<author>
			<persName><forename type="first">L</forename><surname>Bass</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Clements</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Kazman</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">ser. SEI Series in Software Engineering</title>
				<imprint>
			<publisher>Addison-Wesley Professional</publisher>
			<date type="published" when="2012-10">October 2012</date>
		</imprint>
	</monogr>
	<note>3rd ed</note>
</biblStruct>

<biblStruct xml:id="b2">
	<analytic>
		<title level="a" type="main">Discovering early aspects</title>
		<author>
			<persName><forename type="first">E</forename><surname>Baniassad</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Clements</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">IEEE Software</title>
		<imprint>
			<biblScope unit="volume">23</biblScope>
			<biblScope unit="issue">1</biblScope>
			<biblScope unit="page" from="61" to="70" />
			<date type="published" when="2006">2006</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b3">
	<analytic>
		<title level="a" type="main">EA-Miner: towards automation in aspect-oriented requirements engineering</title>
		<author>
			<persName><forename type="first">A</forename><surname>Sampaio</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Rashid</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Chitchyan</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Rayson</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Transactions on Aspect-Oriented Software Development III</title>
		<imprint>
			<biblScope unit="page" from="4" to="39" />
			<date type="published" when="2007">2007</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b4">
	<analytic>
		<title level="a" type="main">Uncovering quality-attribute concerns in use case specifications via early aspect mining</title>
		<author>
			<persName><forename type="first">A</forename><surname>Rago</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Marcos</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Diaz-Pace</surname></persName>
		</author>
		<idno type="DOI">10.1007/s00766-011-0142-z</idno>
		<ptr target="http://dx.doi.org/10.1007/s00766-011-0142-z" />
	</analytic>
	<monogr>
		<title level="j">Requirements Engineering</title>
		<imprint>
			<biblScope unit="volume">18</biblScope>
			<biblScope unit="issue">1</biblScope>
			<biblScope unit="page" from="67" to="84" />
			<date type="published" when="2012-03">March 2012</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b5">
	<analytic>
		<title level="a" type="main">Assisting requirements analysts to find latent concerns with REAssistant</title>
	</analytic>
	<monogr>
		<title level="j">Automated Software Engineering</title>
		<imprint>
			<date type="published" when="2014-06">June 2014</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b6">
	<analytic>
		<title level="a" type="main">UIMA: an architectural approach to unstructured information processing in the corporate research environment</title>
		<author>
			<persName><forename type="first">D</forename><surname>Ferrucci</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Lally</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Natural Language Engineering</title>
		<imprint>
			<biblScope unit="volume">10</biblScope>
			<biblScope unit="issue">3-4</biblScope>
			<biblScope unit="page" from="327" to="348" />
			<date type="published" when="2004">2004</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b7">
	<analytic>
		<title level="a" type="main">Identifying duplicate functionality in textual use cases by aligning semantic actions</title>
		<author>
			<persName><forename type="first">A</forename><surname>Rago</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Marcos</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Diaz-Pace</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Software and Systems Modeling</title>
				<imprint>
			<date type="published" when="2014-08">August 2014</date>
		</imprint>
	</monogr>
</biblStruct>

				</listBibl>
			</div>
		</back>
	</text>
</TEI>
