<?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">Specifying Feature-Dependent Maintainability Requirements in an Operational Manner -Results From a Case Study with Practitioners</title>
			</titleStmt>
			<publicationStmt>
				<publisher/>
				<availability status="unknown"><licence/></availability>
			</publicationStmt>
			<sourceDesc>
				<biblStruct>
					<analytic>
						<author>
							<persName><forename type="first">Philipp</forename><surname>Haindl</surname></persName>
							<email>philipp.haindl@jku.at</email>
							<affiliation key="aff0">
								<orgName type="department">Institute of Business Informatics -Software Engineering</orgName>
								<orgName type="institution">Johannes Kepler University Linz</orgName>
								<address>
									<country key="AT">Austria</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Reinhold</forename><surname>Plösch</surname></persName>
							<email>reinhold.ploesch@jku.at</email>
							<affiliation key="aff0">
								<orgName type="department">Institute of Business Informatics -Software Engineering</orgName>
								<orgName type="institution">Johannes Kepler University Linz</orgName>
								<address>
									<country key="AT">Austria</country>
								</address>
							</affiliation>
						</author>
						<title level="a" type="main">Specifying Feature-Dependent Maintainability Requirements in an Operational Manner -Results From a Case Study with Practitioners</title>
					</analytic>
					<monogr>
						<imprint>
							<date/>
						</imprint>
					</monogr>
					<idno type="MD5">B181566B634FFAFBDFBE8DEC6FF3F225</idno>
				</biblStruct>
			</sourceDesc>
		</fileDesc>
		<encodingDesc>
			<appInfo>
				<application version="0.7.2" ident="GROBID" when="2023-03-19T16:24+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>
			<textClass>
				<keywords>
					<term>Constraint Language</term>
					<term>Maintainability Requirements</term>
					<term>Quality Engineering</term>
					<term>Quality Constraint Specification</term>
				</keywords>
			</textClass>
			<abstract>
<div xmlns="http://www.tei-c.org/ns/1.0"><p>The TAICOS constraint language allows to express featuredependent non-functional requirements as quantitative constraints using a compact set of time series operations, time filters, and comparison operators. For each of these constraints, thresholds can be defined on feature-level using metrical and ordinal scales. The fulfillment of these constraints can be automatically evaluated throughout the engineering cycle and shall support data-driven decision making for improving software quality on feature-level. In this paper we present the results of an empirical case study with 14 practitioners who formulated maintainability requirements using the TAICOS constraint language for different features in an operational manner. After formulating the constraints we asked the practitioners to rate scope, expressiveness, and suitability of the constraint language and the respective practical benefits and weaknesses of the language. Also, we condensed nine recurrent maintainability aspects from the interviews and analyzed which time series operations, filters, and data types the practitioners used for each maintainability aspect. The case study reveals that the constraint language is expressive, suitable, and its scope fully sufficient to specify maintainability requirements on feature-level. Also, we observed that particularly the company specific modularization of software features has an impact on the suitability of the constraint language. The practitioners positively highlighted the ease of use, compactness, and understandability of the constraint language and remarked that additional requirements engineering support is essential to effectively utilize all language capabilities.</p></div>
			</abstract>
		</profileDesc>
	</teiHeader>
	<text xml:lang="en">
		<body>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="1">Introduction</head><p>Software features not only need to fulfill different functional but also different qualitative requirements, mainly depending on the features' usage contexts and engineering-related considerations of the manufacturer. As an example, the maintainability of a feature will likely be more important for a manufacturer if the respective feature is frequently used by its customers, plays a vital role in an important software product or is a core feature in a software product line. Likewise, in a mobile sports tracking app the feature calculating the runner's pace will demand high performance characteristics as even small performance lags lead to incorrect calculation of the pace. Contrarily, the feature which uploads the running route data after the run to a server can have more relaxed performance requirements since performance lags do not negatively affect this feature's functionality. In many software projects often the most important threshold of a non-functional requirement (NFR) is singled out among all features and defined as the common threshold that must be met by all features. Consequently this can lead to increased engineering effort to meet this common threshold for features which could also suitably provide their functionality with a more relaxed threshold. For instance, a software manufacturer might select the number of code smells as an important indicator of maintainability and that shall be low.</p><p>To address this problem we presented the TAICOS quality model <ref type="bibr" target="#b10">[11]</ref> that allows to specify NFRs on the level of individual features and introduced the concept of constraints to evaluate the fulfillment of feature-dependent NFRs quantitatively. In this context, we understand a feature as a distinct functional unit of work in a software system that satisfies a corresponding functional requirement. We also presented an operational constraint language and a concrete runtime framework <ref type="bibr" target="#b11">[12]</ref> for it which allows to automatically evaluate the fulfillment of feature-dependent NFRs in DevOps. The language defines the operationalization of quantitative measures used in the constraints and concrete evaluation criteria using individual thresholds for each feature. Particularly to ensure the suitability of the constraint language in practical settings, it is vital that the language is easily comprehensible for practitioners, provides the required language elements for their purposes, and is sufficiently expressive to let them specify NFRs and evaluation criteria for individual features. This paper complements our previous work in this context and provides an empirical validation of the constraint language in a case study with practitioners. We particularly asked practitioners from different companies and industry sectors to use the constraint language to specify maintainability requirements specific for their company in an operational manner. They were asked to define the operational acquisition of measures for their maintainability requirements as well as formulate concrete constraints which allow an operational evaluation of these measures. Afterwards we conducted interviews with the participants to examine their experiences.</p><p>The remainder of this paper is organized as follows. We give an overview of related work and the demarcation of our approach to other works in Section 2. In Section 3 we describe the research context and the study design to answer the research questions. Following, in Section 4 we succinctly describe our constraint language before we present the results from our case study in Section 5. We outline possible threats to the validity of these results in Section 6, before concluding our paper and sketching relevant future work in Section 7.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2">Related Work</head><p>We separate the related work in this field into two streams of research. The first stream covers studies examining specific quality factors of domain-specific languages (DSLs). Haugen et al. <ref type="bibr" target="#b12">[13]</ref> presented a structured questionnaire that assesses three dimensions of DSLs -expressiveness, transparency, and formalization. Merilinna and Parssinen <ref type="bibr" target="#b18">[19]</ref> examined benefits when using DSL approaches in comparison with traditional approaches. In their work the authors particularly investigated the differences in user abstraction when using either of these approaches. Kosar et al. <ref type="bibr" target="#b15">[16]</ref> compared program understanding between general-purpose programming languages and DSL approaches using a cognitive dimension framework and showed that program understanding is 15% better for DSL approaches. Hermans et al. <ref type="bibr" target="#b13">[14]</ref> performed an empirical case study using questionnaires to identify six success factors of DSLs (e.g., learnability, usability, expressiveness, reusability, development costs, and reliability). Johanson and Hasselbring <ref type="bibr" target="#b14">[15]</ref> elaborated on an empirical study that examines the potential benefits of DSL approaches over general-purpose languages. The study was conducted with domain experts who were not familiar with programming and they were asked to perform representative tasks of their domain with a general programming language and a DSL likewise. The validation quantitatively compared the effectiveness and efficiency of both approaches and showed the DSL approach being more accurate and requiring less time of the domain experts.</p><p>The second stream of relevant research pertains to empirical studies specifically examining the usability of DSLs. Concretely, the usability of a DSL is the quality that makes it easy for users to understand, learn, and apply it <ref type="bibr" target="#b1">[2,</ref><ref type="bibr" target="#b3">4,</ref><ref type="bibr" target="#b16">17]</ref>. Several studies <ref type="bibr" target="#b3">[4,</ref><ref type="bibr" target="#b6">7,</ref><ref type="bibr" target="#b7">8,</ref><ref type="bibr" target="#b16">17,</ref><ref type="bibr" target="#b19">20,</ref><ref type="bibr" target="#b20">21]</ref> have shown that any difficulties in this context might lead to higher maintenance effort of the textual artefacts developed with this DSL. To evaluate the usability of DSLs, Albuquerque et al. <ref type="bibr" target="#b1">[2]</ref> proposed an approach based on the CDN (Cognitive Dimensions of Notations) framework <ref type="bibr" target="#b5">[6]</ref>. The CDN framework defines several cognitive dimensions (e.g., consistency and error-proneness) to thoroughly evaluate the usability of a written notation such as DSLs. Most importantly, their research identified two main cognitive dimensions that predominantly influence the usability of a DSL -expressiveness and conciseness. In the CDN framework both dimensions are again subdivided into eight subdimensions in total, which in fact allows a very detailed evaluation of DSL usability for each subdimension. Barišić et al. <ref type="bibr" target="#b4">[5]</ref> proposed an usability evaluation method for DSLs that complies with iterative user-centered evaluation practices. This makes their approach especially applicable to repeatedly evaluate a DSL and to resolve any usability insufficiencies early in the development cycle. With the USE-ME framework, Barišić et al. <ref type="bibr" target="#b2">[3]</ref> presented a dedicated framework for DSL usability evaluation. It allows to model the context, goals, and evaluation procedure of a DSL or tool under study in a formal way. For the validation the authors conducted a case study in which participants needed to apply the framework, followed by an interview subsequently. The results showed the correctness of the method also under limited time and understandability and overall satisfaction with applying the framework from the participant's perspective.</p><p>In this paper we present an empirical validation of several quality characteristics of the TAICOS constraint language. These quality characteristics have been identified by other authors as being relevant for the practical applicability, usability, and suitability of DSLs, such as constraint languages. In our case study we let practitioners apply the constraint language to formulate maintainability requirements and thereby concretely examined (a) scope and expressiveness, (b) suitability, (c) the context-dependent usage of language elements, and (d) benefits and weaknesses of the constraint language.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3">Research Context and Study Design</head><p>The research presented in this paper complements our previous works <ref type="bibr" target="#b10">[11,</ref><ref type="bibr" target="#b11">12]</ref> in the context of specifying, measuring, and evaluating feature-dependent NFRs and originated from an industrial cooperation with a large-scale software manufacturer. Given this industrial context, the guiding principle behind this research was on developing a constraint language that is easily understandable and can be applied by the different roles in industrial software projects. While we observed the quantitative runtime characteristics of the different language elements in a previous study <ref type="bibr" target="#b11">[12]</ref>, in this study we solely focus on the qualitative aspects of the TAICOS language elements from a user perspective.</p><p>DSLs intend to provide language elements for expressing the requirements of a specific problem domain, using the concepts suitable for that particular domain <ref type="bibr" target="#b17">[18]</ref>. In the context of this study, this means assessing whether the TAICOS constraint language supports the concepts that are suitable from a user perspective to express maintainability requirements on feature-level. A particular benefit of DSLs is that they help their users raise the level of abstraction up to a level that is suitable to solve their problems more effectively than general-purpose languages, which in turn more actively and productively engages users in the software development process <ref type="bibr" target="#b1">[2]</ref>. Obviously, the degree that the TAICOS constraint language fulfills these aspects can only empirically be answered with the help of domain experts that concretely apply the language for their maintainability requirements. As suggested by Fabre et al. <ref type="bibr" target="#b8">[9]</ref>, an empirical validation of DSLs shall take qualitative data, e.g., users' feedback after applying the language, but also quantitative data, e.g., context-dependent usage of language elements to detect typical usage patterns, into account.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.1">Case Study Design</head><p>To gather post-usage quantitative and qualitative feedback about the constraint language from practitioners, we designed our case study to consist of three consecutive parts -an introductory, a practical, and an interview part.</p><p>Introductory Part. At the beginning, we gave the practitioners a succinct introduction into the TAICOS constraint language, i.e., the overall objective of the language and the individual purpose and functionality of each language element (cf. Section 4). Concretely we showed them how the TAICOS language allows to define the acquisition of measures for NFRs using instruments, select appropriate data types for measures, and to refine the evaluation of measures as constraints on feature-level. The practitioners were asked to raise questions during this presentations in case of any difficulties of understanding.</p><p>Practical Part. Following, the practitioners had to select three features of a single software product in their companies, whereby it was important that the selected features differ in their qualitative requirements, e.g., that individual maintainability requirements were slightly higher for one feature and more relaxed for another. We then asked the practitioners to define five maintainability requirements in a qualitative manner typical for their companies and relevant for these features. An illustrative maintainability requirement for this task would be that the number of code smells must be low.</p><p>The practitioners then used these qualitative maintainability requirements to define quantatitive measures and specify constraints for each feature in an operational manner. To accomplish this task they needed to (a) define an instrument to acquire a measure, (b) select a data type to hold this measure in a variable, (c) decide whether a maintainability requirement needs to regard the historical development of this measure and thus requires a times series operation and time filter, (d) select a comparison operator and define a threshold for this constraint. We explicitly did not help the practitioners in formulating the constraints in any way, but provided them the introductory slides as these already contained all necessary information to solve that task. The formulation of constraints was repeated until each resulting constraint was formally correct.</p><p>Interview Part. For the interviews after the practical part we designed a questionnaire based on the guidelines of Runeson and Höst <ref type="bibr" target="#b21">[22]</ref>. As suggested by Yin <ref type="bibr" target="#b23">[24]</ref> we also conducted a pilot interview with one highly experienced expert and included the gathered feedback to improve the questionnaire itself. As a result from the pilot interview we refined certain rating scores of language elements to assure a clear understanding of the answering possibilities.</p><p>The questionnaire comprised 10 open questions and 13 closed questions on a 4-point Likert scale and was separated into three parts: The first part captured industry sector of the participant's company, roles in projects, and years of experience with software engineering. In the second part, the participants rated different quality aspects such as suitability, expressiveness, and scope of the individual language elements questions. The open questions additionally intended to examine benefits, challenges, drawbacks, and practical considerations regarding suitability and applicability of the constraint language in the companies of the practitioners. Finally, in the third part, we showed the practitioners how constraint evaluation results of a popular messenger app are visualized on feature-level using the TAICOS web application. The answers to these questions serve as preliminary feedback for the continuing improvement of this application and will be presented in another paper.</p><p>We conducted 14 face-to-face interviews with software testers, quality managers, software architects and senior software engineers, DevOps engineers, and Fig. <ref type="figure">1</ref>: Research process for iteratively deriving final codes, ratings, and usage frequency of individual language elements (adapted from <ref type="bibr" target="#b22">[23]</ref>).</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>software development training experts from different companies in Austria and</head><p>Germany. The participants' companies have a median employee count of 900 and ranged from small enterprises to companies with more than 100000 employees. Industry sectors comprise public administration, banking, commerce, software consulting, property management, electronic engineering, automotive, and software product manufacturing. The participants have an average of 14 years professional experience with software engineering and each participant typically helds multiple roles in the projects. The primary roles of the participants are software development (33%), software architecture (28%), test and quality management (17%), technology training (11%), and software R&amp;D (11%).</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.2">Research Questions</head><p>The case study seeks to answer the following four research questions:</p><p>-RQ1: Are scope and expressiveness of the TAICOS constraint language appropriate to specify feature-dependent maintainability requirements? We refined this research question into two subquestions.</p><p>• RQ1.1: Are the individual constraint language elements sufficiently expressive to define feature-dependent maintainability requirements? This question focuses on the expressiveness, i.e., the semantic preciseness and clarity, of the language elements for the user. • RQ1.2: Is the scope of the individual constraint language elements appropriate to specify feature-dependent maintainability requirements? This question examines whether the language elements appropriately cover the required functionality to express maintainability requirements.</p><p>-RQ2: Is the TAICOS constraint language suitable to specify featuredependent maintainability requirements? While the previous research question focused on the individual language elements, this research question asks whether the combination of the different language elements is suitable for expressing maintainability requirements. -RQ3: What are typical usage patterns of the TAICOS constraint language depending on the maintainability aspect addressed in a constraint? This analysis is particularly important for further improving the constraint language as it makes the users' implicit understanding of the language and possible deficiencies, such as missing language elements, more tangible <ref type="bibr" target="#b8">[9]</ref>. -RQ4: What are benefits and weaknesses of using the TAICOS constraint language for specifying feature-dependent maintainability requirements? This question seeks to identify the benefits, challenges, and weak spots of the constraint language and shows limitations of the language and sketches possible directions for its further improvement.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.3">Data Analysis Procedure</head><p>Each interview took between 90 and 120 minutes and was conducted and transcribed by one researcher. Following, the interview transcripts were analyzed by two researchers and the answers to the closed questions codified quantitatively.</p><p>The answers to the open questions where coded in the transcripts but no qualitative data extracted at that point. We waited to categorize the statements until all interviews were conducted to ensure that we do not exclude potentially relevant qualitative data from the start. Figure <ref type="figure">1</ref> shows the research process we followed for the data analysis of the interviews and the formulated constraints.</p><p>Then the qualitative statements were categorized by two researchers conjointly following a grounded theory <ref type="bibr" target="#b0">[1,</ref><ref type="bibr" target="#b9">10]</ref> approach. The objective of this step was to assign each statement meaningfully to a category and we iteratively refined these categories and combined similiar statements whenever appropriate. The refinement and coding was repeated until consensus was reached among the two researchers. In addition, a second senior researcher monitored the process and cross-checked the coded transcripts but was not involved in the transcription of the interviews itself.</p><p>We coded the formulated constraints solely quantitatively, whereby we extracted the concrete language elements, their metadata, and the maintainability aspect that the constraint was formulated for. Similar to the answers to the open questions we refined the extracted maintainability aspects iteratively until consensus was reached among the two researchers.</p><p>In total, we extracted 397 statements (28 on average per interview) from the 14 interviews. After several iterations we condensed 43 categories out of the qualitative statements. Finally, we identified nine recurring maintainability aspects from the formulated constraints. Our aggregated findings from analyzing the interviews and the formulated constraints are presented in Section 5.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4">TAICOS Constraint Language</head><p>In this section we give a short introduction to the TAICOS constraint language to the extent necessary for the further understanding of the paper. For a more comprehensive presentation of the language's grammar and syntax we refer to our other publication <ref type="bibr" target="#b11">[12]</ref>. Basically, the TAICOS constraint language is a DSL for specifying feature-dependent NFRs in an operational manner using quantitative measures and fulfillment criteria. The language is conceptually based on the extended QUAMOCO meta quality model <ref type="bibr" target="#b10">[11]</ref> and distinguishes between features, for which individual constraints can be defined, and instruments, which acquire measures from external systems and make them accessible as variables in the constraints. Interests reflect coarse-grained qualitative objectives that must be taken into account by all features, e.g., that the number of code smells must be low. These objectives are refined on feature-level as quantifiable constraints, i.e., with a concrete threshold of acceptable code smells for each individual feature. The number of code smells can be directly acquired through an instrument that queries this measure from a dedicated code quality server, e.g., SonarQube. To also evaluate the development of a measure over time, the TAICOS constraint language provides time filters and basic operations for time series.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4.1">Language Elements</head><p>Following, we elaborate the relevant elements of the TAICOS constraint language used in this case study in more detail. Also, we highlight important keywords and language examples in the text that shall support its better understanding.</p><p>Instruments. Represent connectors to external systems that retrieve a specific measure from an external system using predefined software interfaces. To integrate further measures that are relevant for specifying NFRs, the set of instruments can easily be extended by implementing certain software interfaces.</p><p>Variables and Data Types. The value retrieved from an instrument can be assigned to a variable. When declaring a variable, the user also defines its data type and the corresponding instrument. The language allows three data types for variables: measure for numerical metrics, rule for the number of rule violations, and rating for 1-letter quality ratings on a scale from A to E. The type of a variable also imposes restrictions on the use of time series operations and comparison operators. Time series operations are only possible for numerical data, i.e., for variables with a declared type measure or rule. Also, the comparison of a variable's value with a threshold value inevitably requires that both values are of the same type.</p><p>The name of a variable can be arbitrarily chosen and also be reused for different constraints and features. This allows to use them very flexible similar to a programming language. For instance, one could declare a variable codeSmells for the above example as codeSmells as measure from Sonar("codeSmells"). This expresses that the numeric variable codeSmells is acquired from the SonarQube instrument, which accesses it using the key codeSmells from that system.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Time Series Operations and Time Filters.</head><p>Particularly to analyze the development of a measure over time, our language provides five time series operations: min, max, median, avg, and the (linear regression) gradient of the time series. The relevant time frame to obtain the time series of a measure is specified by time filters. Our constraint language provides the three time filters days, weeks, months with a numerical parameter indicating the number of time units to go backwards in time.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Constraints.</head><p>A constraint refines how a specific interest can be individually regarded by a feature. It defines quantitative fulfillment criteria so that the declared variable, hereon applied time series operations and time filters, can be compared with a threshold value. We differentiate three types of constraints:</p><p>(a) Constraints comparing the most recent value of a variable with a threshold. This is the simplest type of constraint and works with any type of variable. The constraint SearchFriends: cyclomaticComplexity &lt; 8 for instance requires the cyclomatic complexity of the feature SearchFriends to be lower than 8. (b) Constraints utilizing benchmark results of rule violations. This constraints evaluates whether the number of rule violations lying within a specific quartile of the benchmark base. It requires a variable of type rule and is declared by appending .benchmark to the variable name. The expression undocumentedMthds as rule from Sonar("squid:UndocumentedApi") defines a variable undocumentedMthds to hold the number of undocumented methods. The constraint SearchFriends: undocumentedMthds.benchmark &lt; Q50 demands that the number of rule violations in the SearchFriends feature is lower than in 50% of the benchmarked projects. (c) Constraints comparing the result of a time series operation with a threshold. Such constraints can only be expressed for numerical variables, i.e., of type measure or rule. They require a concrete time series operation and a time filter to be specified in the constraint. For instance, the constraint SearchFriends: median(cyclomaticComplexity, days(7)) &lt; 12 demands that the median cyclomatic complexity of this feature must not have been greater than or equal to 12 in the last 7 days.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Comparison Operators and Thresholds</head><p>The constraint language supports comparison operators such as &lt;,&gt;,&gt;=,&lt;=, and ==. Thresholds can be specified using metrical values without unit of measurement, e.g., the number of rule violations, or ordinal scaled values, such as e.g., Q25 -Q100 to express quartiles.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="5">Case Study Results</head><p>During the practical part of the case study, the participants formulated 222 feature-dependent constraints for their company-specific maintainability requirements with our constraint language. In the following we present the detailed results from our case study sequentially with the research questions.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="5.1">Scope and Expressiveness (RQ1)</head><p>Figure <ref type="figure" target="#fig_0">2</ref> illustrates that the participants consistently rated the scope of the language elements positively, either being sufficient or fully complete for specifying maintainability requirements on feature-level. In the Likert scale for rating the scope we particularly differentiated between the scores overcharged (i.e., not all language elements are relevant), fully complete (i.e., no further elements shall be added), sufficient (i.e., further non-critical language elements need to be added for more complex requirements), and not sufficient (i.e., critical language elements are missing). No participant rated the scope of any language element to not be sufficient for specifying maintainability requirements on feature-level. Among the language elements, the scope of time series operations and thresholds were rated by most practitioners as being fully complete (12 and 11 ratings respectively). One participant rating the scope of time series operations as overcharged argued that "for rule violations and quality violations in general, average and median operations are questionable, as they must never be any violations.</p><p>The number of violations always must be zero". This participant also mentioned that "this is not a limitation of the language by itself, since it does not force me to apply these operations in all contexts". The one participant rating the scope of time series operations as sufficient mentioned the sum operator as important for his projects, which the language currently does not provide. Five participants mentioned that sprints/program increments, time intervals, quartals, hours, and the number of certain events would be further relevant time filters for them. Three participants responded that they would also like to express thresholds using enumerations and intervals. Six participants mentioned boolean, similarity, and set operators as well as operators for expressing much larger/smaller than as further relevant comparison operators. The analysis of the participants' rating of the expressiveness of the language elements draws a similar picture. As shown in Figure <ref type="figure">3</ref> the vast majority of participants rated the expressiveness of the elements as very good. No participant rated the expressiveness as not sufficient. We also observed that participants who rated the scope as sufficient and elaborated missing language elements in turn also rated the expressiveness on a lower score. </p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Rating Response Count</head><p>Very Good Good Sufficient Not Sufficient</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Expressiveness</head><p>Fig. <ref type="figure">3</ref>: Ratings of the Expressiveness of the Language Elements.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="5.2">Suitability (RQ2)</head><p>We also asked the participants to rate the suitability of the TAICOS constraint language on a 4-point Likert scale and to justify their answers. Thereby we intentionally did not differentiate between individual language elements, as the language's suitability cannot be meaningfully answered on this isolated level. As depicted in Figure <ref type="figure" target="#fig_2">4</ref>, a majority of 12 participants positively rated the constraint language as either suitable or rather suitable. However, two participants rated the language as rather not suitable. They argued that due to the modularization of the features in their companies and their product-specific reuse it would be difficult to define meaningful constraints on feature-level. Also they stressed that, given a number of over 400 features in an average software product of their companies, it would be essential for them to rather define general constraints for all features and only exceptions from these general constraints. Though, both participants did not question the value of the constraint language itself, and accentuated that these additional requirements towards the language relate to their industry sectors (automotive and electronic engineering).</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="5.3">Language Usage Patterns per Maintainability Aspect (RQ3)</head><p>To answer this research question, we qualitatively coded the maintainability aspect addressed in a constraint and also extracted the quantitative data which language elements have been used in the constraint. The objective of this research question was to identify the typical usage patterns of the constraint language for the different maintainability aspects. During the final analysis of the data, we then condensed nine maintainability aspects that have repeatedly been choosen by the participants to formulate constraints for. Concretely we condensed the following maintainability aspects: technical debt (54 constraints), security ratings and vulnerabilities (6 constraints), readability of variables, method and class names (24 constraints), object-oriented design (12 constraints), dependencies such as cyclic class and external framework dependencies (9 constraints), correctness reflected through test code coverage, bug counts, or code assertions (54 constraints), documentation (21 constraints), cognitive and cyclomatic complexity (24 constraints), and coding style (18 constraints).</p><p>To allow a meaningful comparison of the language elements, we normalized their usage frequency on the level of subelements, i.e., for each individual data type, time series operation, and time filter.</p><p>Usage Patterns of Data Types. In Figure <ref type="figure" target="#fig_3">5</ref> we illustrate which data types have typically been used in constraints to address different maintainability aspects. It can be depicted that the measure data type is most intensively used for constraints targeting on technical debt and correctness. Variables of type rule dominate in documentation and coding style constraints, whereas rating variables are primarily used for technical debt and security constraints. In total, we counted 49 measure, 20 rule, 6 rating usages among all interviews once per maintainability aspect. Usage Patterns of Time Series Operations. Figure <ref type="figure" target="#fig_4">6</ref> shows how the participants applied the time series operations for the 9 extracted maintainability aspects. Interestingly, the min operation solely was used to address correctness, e.g., that a minimum of test coverage must be reached or a certain number of code assertations must be in place. The max operations primarily was used to ascertain that the technical debt not exceeds a certain threshold. Similarly, the avg operation was additionally used for readability constraints and to address correctness concerns. The median operation only was used for two maintainability aspects: readability and correctness.</p><p>Another interesting finding is that the gradient operation was evenly used for the majority of maintainability aspects. A similar usage pattern is also noticeable for the benchmark operation, which was also evenly used but for a smaller set of maintainability aspects. We also observed that participants never used time series operations in constraints for object-oriented design, but instead for this purpose solely relied on constraints that compare the most recent value of a variable with a threshold (cf. Section 4.1, type a). In total, we counted 5 min, 13 max, 11 avg, 2 median, 17 gradient, and 5 benchmark usages among all interviews once per maintainability aspect.  Usage Patterns of Time Filters. Lastly, in Figure <ref type="figure" target="#fig_5">7</ref> we visualize the results from analyzing the usage patterns of time filters in the context of the different maintainability aspects. The days filter was intensively used for constraints addressing correctness or technical debt and in a very similar way as the weeks filter. In constrast to these filters, the months filter was used more evenly also for other maintainability aspects, but predominantly for constraints addressing technical debt, readability, and correctness. In total, we counted 7 days, 20 weeks, and 20 months usages among all interviews once per maintainability aspect. </p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="5.4">Benefits and Weaknesses (RQ4)</head><p>Lastly we asked the participants to elaborate on the perceived benefits and weaknesses of the TAICOS constraint language. We qualitatively analyzed their statements and summarize them as follows: Respectively, five participants marked the ease of use and its compactness as benefits of the language, with one emphasizing that "the language could be applied as it is with little effort". Three participants highlighted the understandability and two mentioned the conceptual separation of instrument and constraint as a benefit of the language. They explained that this separation would allow to exchange instruments easily and also makes the source of a variable and its acquisition more explicit for the user of the language. Asked about the weaknesses of the language, two participants responded that additional methodological requirements engineering support is essential to effectively utilize all language capabilities throughout the product lifecycle. One participant each critized the scope of features, i.e., their definition based on directories and files, the required formal understanding to apply the language, the inability to define default thresholds for features and exceptions, and scalability issues without tool support for large numbers of features and constraints.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="6">Threats to Validity</head><p>We see a threat to construct validity in the different interpretation of the questions by the participants, which is mainly due to their different roles and experiences. We addressed this threat by showing each participant concrete definitions of the terminology and discussed any ambiguities. When summarizing their statements, we also considered background and role of each practitioner to determine from what view and with what intention the statement was given.</p><p>The foremost threat to internal validity can be seen in the participants' individual understanding of the language elements, which became apparent when they formulated the constraints. We regard this threat as negligible because as soon as we noticed any uncertainties about the language elements we showed their defintion and asked follow-up question to ascertain that the participant understood correctly.</p><p>Also, researcher-biased judgments are possible during data extraction and analysis of the interview transcripts, i.e., which codes are derived and refined thereof. We mitigated this threat by discussing the extraction and refinement of the codes among both researchers until we agreed on a solid set of codes.</p><p>We addressed the threat to external validity by selecting experts who operate in different companies and industry sectors, and also selected two experts maximum per company. However, we see a threat to the generalizability of the results to other industries due to their different maintainability requirements.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="7">Conclusion and Future Work</head><p>In this paper we presented the results of an empirical case study with 14 practitioners to examine the scope, expressiveness, and suitability, benefits, and weaknesses of the TAICOS constraint language for specifying feature-dependent maintainability requirements. The practitioners specified these maintainability requirements in an operational manner, i.e., the operational acquisition of maintainability measures as well as operational evaluation criteria on feature-level.</p><p>In total, the participants formulated 222 feature-dependent maintainability constraints. The majority of participants positively rated the scope of the language elements as fully complete to specify feature-dependent maintainability requirements, with no rating as not sufficient. Similarly, the vast majority of participants rated the expressiveness of the language elements as very good. Overall, 12 participants rated the language as suitable or rather suitable. Two participants argued that due to the modularization and product-specific reuse of features in their companies, the language is rather not suitable in their companies, i.e., automotive and electronic engineering.</p><p>We also condensed nine recurring maintainability aspects from the formulated constraints and analyzed the usage patterns of the language elements depending on the addressed maintainability aspect. The participants predominantly declared metrical variables of type measure, particularly to specify constraints evaluating the correctness of features. When analyzing time series of measures, participants frequently used the gradient operation evenly for all aspects and the avg operation particulary for evaluating technical debt. Participants preferably selected the weeks or months time filter to specify time frames, particulary in the context of correctness, readability, and technical debt.</p><p>Future work shall specially concentrate on developing advanced time filters, set-based comparison operators, tool support for large constraint specifications and on providing methodological requirements engineering support for featuredependent requirements elicitation and constraint specification.</p></div><figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_0"><head>Fig. 2 :</head><label>2</label><figDesc>Fig. 2: Ratings of the Scope of the Language Elements.</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_2"><head>Fig. 4 :</head><label>4</label><figDesc>Fig. 4: Suitability of the Constraint Language.</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_3"><head>Fig. 5 :</head><label>5</label><figDesc>Fig. 5: Usage Patterns of Data Types.</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_4"><head>Fig. 6 :</head><label>6</label><figDesc>Fig. 6: Usage Patterns of Time Series Operations.</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_5"><head>Fig. 7 :</head><label>7</label><figDesc>Fig. 7: Usage Patterns of Time Filters.</figDesc></figure>
		</body>
		<back>
			<div type="references">

				<listBibl>

<biblStruct xml:id="b0">
	<analytic>
		<title level="a" type="main">Using grounded theory to study the experience of software development</title>
		<author>
			<persName><forename type="first">S</forename><surname>Adolph</surname></persName>
		</author>
		<author>
			<persName><forename type="first">W</forename><surname>Hall</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Kruchten</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Empirical Software Engineering</title>
		<imprint>
			<biblScope unit="volume">16</biblScope>
			<biblScope unit="issue">4</biblScope>
			<biblScope unit="page" from="487" to="513" />
			<date type="published" when="2011">2011</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b1">
	<analytic>
		<title level="a" type="main">Quantifying usability of domain-specific languages: An empirical study on software maintenance</title>
		<author>
			<persName><forename type="first">D</forename><surname>Albuquerque</surname></persName>
		</author>
		<author>
			<persName><forename type="first">B</forename><surname>Cafeo</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Garcia</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Barbosa</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Abrahão</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Ribeiro</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Journal of Systems and Software</title>
		<imprint>
			<biblScope unit="volume">101</biblScope>
			<biblScope unit="page" from="245" to="259" />
			<date type="published" when="2015">2015</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b2">
	<analytic>
		<title level="a" type="main">Usability driven DSL development with USE-ME</title>
		<author>
			<persName><forename type="first">A</forename><surname>Barišić</surname></persName>
		</author>
		<author>
			<persName><forename type="first">V</forename><surname>Amaral</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Goulão</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Computer Languages, Systems &amp; Structures</title>
		<imprint>
			<biblScope unit="volume">51</biblScope>
			<biblScope unit="page" from="118" to="157" />
			<date type="published" when="2018">2018</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b3">
	<monogr>
		<title level="m" type="main">Quality in use of DSLs: current evaluation methods</title>
		<author>
			<persName><forename type="first">A</forename><surname>Barišić</surname></persName>
		</author>
		<author>
			<persName><forename type="first">V</forename><surname>Amaral</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Goulão</surname></persName>
		</author>
		<author>
			<persName><forename type="first">B</forename><surname>Barroca</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2011">2011</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b4">
	<analytic>
		<title level="a" type="main">Evaluating the Usability of Domain-Specific Languages Information</title>
		<author>
			<persName><forename type="first">A</forename><surname>Barišić</surname></persName>
		</author>
		<author>
			<persName><forename type="first">V</forename><surname>Amaral</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Goulão</surname></persName>
		</author>
		<author>
			<persName><forename type="first">B</forename><surname>Barroca</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Software Design and Development: Concepts, Methodologies, Tools, and Applications</title>
				<imprint>
			<publisher>IGI Global</publisher>
			<date type="published" when="2014">2014</date>
			<biblScope unit="page" from="2120" to="2141" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b5">
	<analytic>
		<title level="a" type="main">Cognitive Dimensions of Notations: Design Tools for Cognitive Technology</title>
		<author>
			<persName><forename type="first">A</forename><forename type="middle">F</forename><surname>Blackwell</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Britton</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Cox</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><forename type="middle">R G</forename><surname>Green</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Gurr</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Kadoda</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><forename type="middle">S</forename><surname>Kutar</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Loomes</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><forename type="middle">L</forename><surname>Nehaniv</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Petre</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Roast</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Roe</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Wong</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><forename type="middle">M</forename><surname>Young</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Cognitive Technology: Instruments of Mind</title>
		<title level="s">Lecture Notes in Computer Science</title>
		<editor>
			<persName><forename type="first">M</forename><surname>Beynon</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">C</forename><forename type="middle">L</forename><surname>Nehaniv</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">K</forename><surname>Dautenhahn</surname></persName>
		</editor>
		<meeting><address><addrLine>Berlin, Heidelberg</addrLine></address></meeting>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2001">2001</date>
			<biblScope unit="page" from="325" to="341" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b6">
	<monogr>
		<title level="m" type="main">Little languages: little maintenance? Technical Report</title>
		<author>
			<persName><forename type="first">A</forename><surname>Deursen</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Klint</surname></persName>
		</author>
		<imprint>
			<date type="published" when="1997">1997</date>
			<pubPlace>NLD</pubPlace>
		</imprint>
		<respStmt>
			<orgName>CWI (Centre for Mathematics and Computer Science)</orgName>
		</respStmt>
	</monogr>
</biblStruct>

<biblStruct xml:id="b7">
	<analytic>
		<title level="a" type="main">Domain-specific languages: an annotated bibliography</title>
		<author>
			<persName><forename type="first">A</forename><surname>Van Deursen</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Klint</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Visser</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">ACM SIGPLAN Notices</title>
		<imprint>
			<biblScope unit="volume">35</biblScope>
			<biblScope unit="issue">6</biblScope>
			<biblScope unit="page" from="26" to="36" />
			<date type="published" when="2000">2000</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b8">
	<analytic>
		<title level="a" type="main">Empirical Language Analysis in Software Linguistics</title>
		<author>
			<persName><forename type="first">J</forename><forename type="middle">M</forename><surname>Favre</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Gasevic</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Lämmel</surname></persName>
		</author>
		<author>
			<persName><forename type="first">E</forename><surname>Pek</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Software Language Engineering</title>
		<title level="s">Lecture Notes in Computer Science</title>
		<editor>
			<persName><forename type="first">B</forename><surname>Malloy</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">S</forename><surname>Staab</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">M</forename><surname>Van Den Brand</surname></persName>
		</editor>
		<meeting><address><addrLine>Berlin, Heidelberg</addrLine></address></meeting>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2011">2011</date>
			<biblScope unit="page" from="316" to="326" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b9">
	<monogr>
		<author>
			<persName><forename type="first">B</forename><surname>Glaser</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Strauss</surname></persName>
		</author>
		<title level="m">The Discovery of Grounded Theory: Strategies for Qualitative Research</title>
				<meeting><address><addrLine>New Brunswick</addrLine></address></meeting>
		<imprint>
			<publisher>Routledge</publisher>
			<date type="published" when="2000">2000</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b10">
	<analytic>
		<title level="a" type="main">An Extension of the QUAMOCO Quality Model to Specify and Evaluate Feature-Dependent Non-Functional Requirements</title>
		<author>
			<persName><forename type="first">P</forename><surname>Haindl</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Plösch</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Körner</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">45th Euromicro Conference on Software Engineering and Advanced Applications (SEAA)</title>
				<meeting><address><addrLine>Kallithea-Chalkidiki, Greece</addrLine></address></meeting>
		<imprint>
			<publisher>IEEE</publisher>
			<date type="published" when="2019">2019. 2019</date>
			<biblScope unit="page" from="19" to="28" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b11">
	<analytic>
		<title level="a" type="main">An Operational Constraint Language To Evaluate Feature-Dependent Non-Functional Requirements</title>
		<author>
			<persName><forename type="first">P</forename><surname>Haindl</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Plösch</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Körner</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">46th Euromicro Conference on Software Engineering and Advanced Applications (SEAA). accepted for publication</title>
				<meeting><address><addrLine>Portorož, Slovenia</addrLine></address></meeting>
		<imprint>
			<publisher>IEEE</publisher>
			<date type="published" when="2020">2020. 2020</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b12">
	<analytic>
		<title level="a" type="main">A multi-dimensional framework for characterizing domain specific languages</title>
		<author>
			<persName><forename type="first">Y</forename><surname>Haugen</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Mohagheghi</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceeding of the 7th OOPSLA Workshop on Domain Specific Modeling</title>
				<meeting>eeding of the 7th OOPSLA Workshop on Domain Specific Modeling</meeting>
		<imprint>
			<date type="published" when="2007">2007</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b13">
	<analytic>
		<title level="a" type="main">Domain-Specific Languages in Practice: A User Study on the Success Factors</title>
		<author>
			<persName><forename type="first">F</forename><surname>Hermans</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Pinzger</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Van Deursen</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Model Driven Engineering Languages and Systems</title>
		<title level="s">Lecture Notes in Computer Science</title>
		<editor>
			<persName><forename type="first">A</forename><surname>Schürr</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">B</forename><surname>Selic</surname></persName>
		</editor>
		<meeting><address><addrLine>Berlin, Heidelberg</addrLine></address></meeting>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2009">2009</date>
			<biblScope unit="page" from="423" to="437" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b14">
	<analytic>
		<title level="a" type="main">Effectiveness and efficiency of a domain-specific language for high-performance marine ecosystem simulation: a controlled experiment</title>
		<author>
			<persName><forename type="first">A</forename><forename type="middle">N</forename><surname>Johanson</surname></persName>
		</author>
		<author>
			<persName><forename type="first">W</forename><surname>Hasselbring</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Empirical Software Engineering</title>
		<imprint>
			<biblScope unit="volume">22</biblScope>
			<biblScope unit="issue">4</biblScope>
			<biblScope unit="page" from="2206" to="2236" />
			<date type="published" when="2017">2017</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b15">
	<analytic>
		<title level="a" type="main">Comparing General-Purpose and Domain-Specific Languages: An Empirical Study</title>
		<author>
			<persName><forename type="first">T</forename><surname>Kosar</surname></persName>
		</author>
		<author>
			<persName><forename type="first">N</forename><surname>Oliveira</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Mernik</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>João</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Pereira</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Repinšek</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Cruz</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Rangel Henriques</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Computer Science &amp; Information Systems</title>
		<imprint>
			<biblScope unit="volume">438</biblScope>
			<date type="published" when="2010">2010</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b16">
	<monogr>
		<author>
			<persName><forename type="first">B</forename><surname>Langlois</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Jitia</surname></persName>
		</author>
		<author>
			<persName><forename type="first">E</forename><surname>Jouenne</surname></persName>
		</author>
		<title level="m">DSL Classification</title>
				<imprint>
			<date type="published" when="2007">2007</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b17">
	<analytic>
		<title level="a" type="main">On domain driven design using annotation-based domain specific language</title>
		<author>
			<persName><forename type="first">D</forename><surname>Le</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Dang</surname></persName>
		</author>
		<author>
			<persName><forename type="first">V</forename><surname>Nguyen</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Comp. Lang., Systems &amp; Structures</title>
		<imprint>
			<biblScope unit="volume">54</biblScope>
			<biblScope unit="page" from="199" to="235" />
			<date type="published" when="2018">2018</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b18">
	<monogr>
		<title level="m" type="main">Comparison between different abstraction level programming: experiment definition and initial results</title>
		<author>
			<persName><forename type="first">J</forename><surname>Merilinna</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Parssinen</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2007">2007</date>
			<pubPlace>Montreal, Canada</pubPlace>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b19">
	<analytic>
		<title level="a" type="main">When and how to develop domain-specific languages</title>
		<author>
			<persName><forename type="first">M</forename><surname>Mernik</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Heering</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><forename type="middle">M</forename><surname>Sloane</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">ACM Computing Surveys</title>
		<imprint>
			<biblScope unit="volume">37</biblScope>
			<biblScope unit="issue">4</biblScope>
			<biblScope unit="page" from="316" to="344" />
			<date type="published" when="2005">2005</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b20">
	<analytic>
		<title level="a" type="main">How can a DSL for expert end-users be designed for better usability? a case study in computer music</title>
		<author>
			<persName><forename type="first">H</forename><surname>Nishino</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">CHI &apos;12 Extended Abstracts on Human Factors in Computing Systems</title>
				<meeting><address><addrLine>Austin, Texas, USA</addrLine></address></meeting>
		<imprint>
			<publisher>Association for Computing Machinery</publisher>
			<date type="published" when="2012">2012</date>
			<biblScope unit="page" from="2673" to="2678" />
		</imprint>
	</monogr>
	<note>CHI EA &apos;12</note>
</biblStruct>

<biblStruct xml:id="b21">
	<analytic>
		<title level="a" type="main">Guidelines for conducting and reporting case study research in software engineering</title>
		<author>
			<persName><forename type="first">P</forename><surname>Runeson</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Höst</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Empirical Software Engineering</title>
		<imprint>
			<biblScope unit="volume">14</biblScope>
			<biblScope unit="issue">2</biblScope>
			<biblScope unit="page" from="131" to="164" />
			<date type="published" when="2009">2009</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b22">
	<analytic>
		<title level="a" type="main">A Case Study on Testing, Commissioning, and Operation of Very-large-scale Software Systems</title>
		<author>
			<persName><forename type="first">M</forename><surname>Vierhauser</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Rabiser</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Grünbacher</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Companion Proceedings of the 36th International Conference on Software Engineering</title>
				<meeting><address><addrLine>New York, NY, USA</addrLine></address></meeting>
		<imprint>
			<publisher>ACM</publisher>
			<date type="published" when="2014">2014. 2014</date>
			<biblScope unit="page" from="125" to="134" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b23">
	<monogr>
		<title level="m" type="main">Case Study Research and Applications: Design and Methods</title>
		<author>
			<persName><forename type="first">R</forename><forename type="middle">K</forename><surname>Yin</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2017">2017</date>
			<publisher>SAGE Publications, Inc</publisher>
			<pubPlace>Los Angeles</pubPlace>
		</imprint>
	</monogr>
	<note>6th edn.</note>
</biblStruct>

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