<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>A Research Plan to Characterize, Evaluate, and Predict the Impacts of Behavioral Decay in Design Patterns</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Derek Reimanis</string-name>
          <email>derek.reimanis@cs.montana.edu</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Department of Computer Science Montana State University Bozeman</institution>
          ,
          <addr-line>MT 59717-3880 1</addr-line>
          ,
          <country country="US">USA</country>
        </aff>
      </contrib-group>
      <fpage>33</fpage>
      <lpage>38</lpage>
      <abstract>
        <p>We propose a research plan to further the understanding of design pattern evolution. Current research into design pattern evolution focuses on the structural elements of decay, which is realized as structural grime. We plan to expand the current state of research by introducing the notion of behavioral grime, or unwanted artifacts that appear at run-time in a pattern. This form of grime may be transparent to the current analysis models. We seek to classify types of grime into taxonomy, evaluate each type in terms of impacts on technical debt and quality in the pattern and system as a whole, and predict future occurrences of behavioral grime. Studies are designed for each of these respective goals. The results of this research will further the understanding of design patterns, assisting practitioners and researchers alike.</p>
      </abstract>
      <kwd-group>
        <kwd>eol&gt;Software Behavior</kwd>
        <kwd>Software Architecture</kwd>
        <kwd>Design Patterns</kwd>
        <kwd>Formalization</kwd>
        <kwd>Software Decay</kwd>
        <kwd>Technical Debt</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. INTRODUCTION</title>
      <p>
        Design patterns embody recurring solutions to common
objectoriented problems in software development. Patterns are design
decisions that are reusable, maintainable, and attempt to minimize
re-design in the future [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ]. However, the evolution of design
patterns is controversial. The original intent of the pattern may
become obscured for many reasons, including new developers
contributing to a pattern, or the unforeseen changes to elements
participating in the pattern. Empirical work has shown that the
structure of a pattern has the potential to decay as the pattern ages
[
        <xref ref-type="bibr" rid="ref14">14</xref>
        ] [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ] [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ] [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ] [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ]. Furthermore, research has shown that the
structural decay of patterns results in decreased system quality and
increased technical debt [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ].
      </p>
      <p>Copyright © 2015 for this paper by its authors. Copying permitted for
private and academic purposes.</p>
      <p>Although significant work has been made towards understanding
design pattern structural decay, little work has been made towards
understanding behavioral decay. Behavioral decay refers to the
deterioration of the runtime design of a system. Behavioral decay
is complementary to structural decay, yet a large gap and dearth of
research is evident. The exploration of behavioral decay in design
patterns will yield greater insights into the benefits and detriments
of utilizing design patterns.</p>
      <p>This paper is organized as follows: Section 2 discusses related
work. Section 3 outlines the current challenges in the field,
including research gaps and relevant problems. Section 4 outlines
research objectives. Section 5 describes the approach. Section 6
identifies the threats to the validity of the proposed study, and
section 7 provides concluding remarks.</p>
    </sec>
    <sec id="sec-2">
      <title>2. BACKGROUND AND RELATED WORK</title>
    </sec>
    <sec id="sec-3">
      <title>2.1 Technical Debt</title>
      <p>
        Technical debt (TD) is a metaphor coined by Ward Cunningham
to describe the gap between the current state of a software system
and the ideal state [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ]. TD captures the effects of decisions that
sacrifice good design principles for on-time delivery. Many times
these decisions take the form of shortcuts or workarounds in code
that complete the task at hand, but at the expense of decreased
quality. Principal and interest are two attributes of TD. Given a
task to implement, principal refers to the cost in effort to complete
the task. Interest refers to the gap between maintenance costs
under ideal conditions versus conditions where maintenance is
higher due to accrued debt from tasks where TD is not repaid.
Effectively managing TD is multi-faceted problem, where the
need to implement new features must be leveraged with the need
to refactor.
      </p>
      <p>
        Tom et al. performed a systematic literature review of the current
state of TD in academic literature [
        <xref ref-type="bibr" rid="ref29">29</xref>
        ]. The study reports that
many of the difficulties of managing TD are a result of poor
problem definition and representative models. As an outcome of
this study, Tom et al. propose a fundamental framework of TD;
this work follows this framework.
      </p>
      <p>
        Tom et al.’s framework identifies architectural technical debt
(ATD) as a specific type of TD that focuses on items originating
from the design or architecture of a software project. These are
items such as modularity violations [
        <xref ref-type="bibr" rid="ref30">30</xref>
        ], architecture dependency
issues [
        <xref ref-type="bibr" rid="ref26">26</xref>
        ], and design pattern decay [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ] [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ] [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ] [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ] [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ].
Several operational models for estimating TD have recently
surfaced in the field [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ] [
        <xref ref-type="bibr" rid="ref23">23</xref>
        ] [
        <xref ref-type="bibr" rid="ref24">24</xref>
        ] [
        <xref ref-type="bibr" rid="ref25">25</xref>
        ], however no single
method has surfaced as a clear better approach, possibly because
they fail to capture domain specific information in a system.
      </p>
    </sec>
    <sec id="sec-4">
      <title>2.2 Software Quality</title>
      <p>
        Software quality has been categorized into a set of characteristics,
each of which is composed of related sub-characteristics. The
ISO-IEC 25010 Software Quality Specification formalizes a set of
eight characteristics to form an abstract model for measuring
quality [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ]. These characteristics, or attributes, are evaluated to
the extent to which a system realizes that characteristic. Several
domain-agnostic quality models that realize this specification
have been developed. Two quality models, QMOOD and a robust
alternative QUAMOCO, have surfaced as operational quality
models [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] [
        <xref ref-type="bibr" rid="ref31">31</xref>
        ].
      </p>
    </sec>
    <sec id="sec-5">
      <title>2.3 Software Behavior</title>
      <p>Preliminary research reveals that software behavior can be of two
types; internal and external. Internal behavior refers to the interior
mechanisms and API calls that occur during system runtime.
Internal behaviors are not necessarily seen except at the point in
time in which they are executing. In this manner, internal
behaviors are more a temporary artifact that exists only for the
duration of their execution. External behavior refers to the
external and observable result that the system produces. These
may be represented as system goals, and are the consequences of
internal behaviors. That is, internal behaviors cause external
behaviors.</p>
    </sec>
    <sec id="sec-6">
      <title>2.4 Software Decay</title>
      <p>
        Code decay is a term that refers to the case where code is “harder
to change than it should be” [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ]. Similarly, software decay refers
to software that is more difficult to change than it should. Several
types of software decay have been identified, including code
smells, anti-patterns, and design pattern decay [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ] [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ] [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ]
[
        <xref ref-type="bibr" rid="ref19">19</xref>
        ]. Design pattern decay refers to implementations of design
patterns that gain undesired elements or lose desired elements as
they evolve. In this sense, the benefits that the pattern offers are
lost as its design becomes obfuscated. Studies have found that
design pattern decay negatively impacts testability and
understandability of systems [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ].
      </p>
      <p>
        Previous work in design pattern decay has focused on the
structure of patterns [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ] [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ] [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ] [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ] [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ]. These are
realized as unwanted or missing artifacts that do not follow the
structural specification of the pattern. When these artifacts
obscure the implementation of a pattern while still maintaining
some of the integrity of the original pattern, they are referred to as
design pattern grime. Alternatively, when these artifacts obscure
an implementation of a pattern to such an extent that the integrity
of the pattern is entirely lost, they are referred to as design pattern
rot. Empirical studies have only confirmed the existence of
pattern grime.
      </p>
      <p>
        Further work has classified the types of design pattern grime into
three disjoint categories: class grime, modular grime, and
organizational grime [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ] [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ] [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ] [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ]. Of these, Schanz and
Izurieta expanded the modular grime category, identifying
strength, scope, and direction as attributes of modular grime [
        <xref ref-type="bibr" rid="ref27">27</xref>
        ].
Additionally, Griffith and Izurieta expanded the class grime
category, identifying strength, scope, and direction/context as
attributes of class grime [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ].
2.4.1 Design Pattern Specification
The process of identifying pattern grime consists of recognizing
differences between a pattern instance and a pattern’s
specification. A common language used to specify patterns is the
Role-Based Meta-Modeling Language (RBML) [
        <xref ref-type="bibr" rid="ref22">22</xref>
        ]. RBML is
realized in the Unified Modeling Language (UML 2.0)1 and is an
abstract language that generalizes each actor in a pattern to a
single common role. Depending on the type of pattern, there will
be a number of possible roles. For example, the Observer pattern
has a Subject role and an Observer role. Observer pattern
instances have classes that fulfill both these roles.
      </p>
      <p>
        Dae-Kyoo Kim has shown that RBML alone is not sufficient for
specifying patterns because it lacks constraint templates that limit
the capabilities of roles [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ]. In order to combat this, the
ObjectConstraint Language (OCL) is used to provide necessary
constraints to RBML models.
      </p>
    </sec>
    <sec id="sec-7">
      <title>3. CURRENT RESEARCH CHALLENGES</title>
    </sec>
    <sec id="sec-8">
      <title>3.1 Research Gaps</title>
      <p>The current knowledge base of design pattern grime features only
structure-based disconformities, or grime that is captured from a
static snapshot of a pattern instance. This works seeks to extend
the knowledge base of pattern grime by considering
behaviorbased disconformities, or grime that is captured during the
runtime execution of a design pattern. In an effort to achieve this
goal, the authors have identified the following research gaps.
1.
2.
3.
4.</p>
      <p>Characterization of Behavioral Grime: Structural grime
is incapable of capturing whether or not a design pattern is
behaving as intended. A pattern instance may have no
structural grime, but the runtime execution of the pattern
may not match the expected runtime execution of the
pattern. Cases such as this are not captured by the current
knowledge base of pattern grime. This notion forms the
basis for this research. Given this, the characterization of
behavioral grime is a gap that needs clear definitions.</p>
      <sec id="sec-8-1">
        <title>Behavioral Grime Taxonomy: To the best knowledge of</title>
        <p>
          the authors, no attempt has been made at categorizing the
types of behavioral grime in the context of design patterns.
Impacts on Quality: Previous studies have identified the
impact of structure-based grime on quality attributes,
showing that testability and maintainability are negatively
impacted from structural grime [
          <xref ref-type="bibr" rid="ref15">15</xref>
          ] [
          <xref ref-type="bibr" rid="ref19">19</xref>
          ]. However, no
attempt has been made at quantifying the impact of
behavioral grime on these quality attributes and the
additional quality attributes featured in the ISO 25010
software quality specification.
        </p>
        <p>
          Impacts on Technical Debt: Dale and Izurieta showed
that the injection of modular grime into patterns increases
the technical debt of the pattern [
          <xref ref-type="bibr" rid="ref8">8</xref>
          ]. No work has sought
to capture the impact of behavioral grime on technical
debt.
        </p>
      </sec>
      <sec id="sec-8-2">
        <title>Relationships between Behavioral and Structural</title>
        <p>Grime: Several questions arise that are concerned with the
relationships between behavioral and structural grime. For
example: How are structural grime and behavioral grime
related? Is the appearance of structural grime causal to the
existence of behavioral grime? Is the reverse true? Are
there cases where structural grime exists but behavioral
grime does not?</p>
        <sec id="sec-8-2-1">
          <title>1 http://www.uml.org/</title>
          <p>Tool Support: Currently, there is no known tool support
to operationalize behavioral concepts. Implementing a tool
is an important contribution to the community.</p>
          <p>Predicting Pattern Decay: No research has looked into
predicting when a pattern is prone to decaying, or even if
certain patterns are more prone to decay. Bridges to these
two research gaps would give valuable insight to
developers regarding the implementation of patterns, and
even when to be aware that a pattern might be near
decaying/rotting.</p>
        </sec>
      </sec>
    </sec>
    <sec id="sec-9">
      <title>3.2 Operational Gaps</title>
      <p>
        A pilot study was performed, in the form of a controlled
experiment; in which realizations of observer patterns were
studied. Our dataset consisted of three instances of the observer
pattern that we created ourselves; one instance behaved as
defined, one instance featured Subjects that waited a significant
amount of time before updating their Observers when their state
changed, and the final instance featured Subjects that did NOT
update their Observers when their state changed. These three
instances exemplify cases where, respectively, (1) a pattern
behaves properly, (2) a pattern behaves properly but a disharmony
exists during its lifetime, and (3) a pattern behaves significantly
different from its intended usage. The SonarQube [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ] tool, used
to estimate Technical Debt, and the inCode tool2, used to identify
design flaws, were run across the pattern instances. Neither of
these tools identified a major difference between the three pattern
instances, suggesting that state-of-the-art tools used to identify
issues are not capable of detecting problems concerning design
pattern behavior. This experiment highlights the need to explore
this area further.
      </p>
    </sec>
    <sec id="sec-10">
      <title>3.3 Proposed Contributions</title>
      <p>To address current gaps, the following contributions are proposed:
1. The formal characterization of behavioral grime in
design patterns</p>
      <p>The development of taxonomy to classify behavioral
2.
grime
3. The development of empirical studies to capture the
impacts of grime on TD and quality
4. The identification of patterns that are prone to
behavioral grime
5. The creation of a tool that aids in the detection of
behavioral grime
6. The development of a method that allows predictive
capabilities for recognizing grime</p>
    </sec>
    <sec id="sec-11">
      <title>3.4 IDoESE Feedback Sought</title>
      <p>
        Advice on the following topics is sought:
1. Overall Scope: Whilst all topics presented in this paper
are interesting and necessary research items, advice on the
estimation of work and its feasibility is sought. For the scope
of a doctoral-level degree, is this plan too ambitious? If so,
what parts should be prioritized?
2. Automation: Currently, there is very little automation
of these processes. This is a result of exploring a new area of
2 https://www.intooitus.com/products/incode
research. To what extent should we focus on operationalizing
behavioral detection and quantification?
3. Pattern Dataset: The only available dataset of design
pattern instances is the Perceron’s dataset [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]. This dataset
only features instances of 10 unique pattern types, all from
the Java programming language. This means that this
research has limited generalizability. Is it necessary or worth
the effort to look at more pattern types and/or patterns
instances from other languages?
      </p>
    </sec>
    <sec id="sec-12">
      <title>4. OBJECTIVES</title>
    </sec>
    <sec id="sec-13">
      <title>4.1 Research Objectives</title>
      <p>RG1: Investigate design pattern instances for the purpose of
identifying and characterizing internal and external behavioral
grime with respect to proper pattern behavior as defined by the
design pattern specification from the perspective of the software
system in the context of design patterns in open source and
commercial software.</p>
      <p>RQ1.1: Does the behavior of a design pattern instance
deviate from the expected behavior of that pattern type?
Rationale: This is the basic question of this research. If it is
possible to identify design pattern instances where the actual
behavior deviates from expected behavior, then the need to
further explore this phenomenon is apparent.</p>
      <p>RQ1.2: Do common types of behavioral grime exist within
multiple instances of a single pattern type?
Rationale: If common grime types can be identified within a
specific pattern, other instances of that pattern may be
circumspect to the same type of grime.</p>
      <p>RQ1.3: Do common types of behavioral grime exist across
multiple instances of different pattern types?
Rationale: If common types of behavioral grime exist across
different types of patterns, we will have attained some level
of generalizability that applies to a larger set of pattern types.
RG2: Express the difference between structural and behavioral
grime for the purpose of illustrating the importance of studying
behavioral grime with respect to design pattern instances from the
perspective of design pattern instances in the context of open
source and commercial software.</p>
      <p>RQ2.1: To what extent can patterns have both structural and
behavioral grime?
Rationale: Consider the grime quadrant in Table 1. Columns
indicate whether structural grime exists in a pattern, and rows
indicate whether behavioral grime exists in the same pattern.
Current research has identified design patterns with grime,
but those patterns are constrained by cases A and B. This
research needs to be expanded to discover patterns that fall in
cases C and D. This will illustrate that this work is novel.
RQ2.2: Does the current knowledge base of structural grime
instances include cases of behavioral grime?
Rationale: There may be behavioral grime in many of the
patterns that exhibit structural grime.</p>
      <p>RQ2.3: What is the relationship between behavioral grime
and structural grime?</p>
      <p>RG3: Quantify the impact of grime in internal and external design
pattern behavior for the purpose of capturing the effects on system
quality and TD with respect to proper pattern behavior as
defined by the design pattern specification from the perspective of
the software system in the context of design patterns in open
source and commercial software.</p>
      <p>RQ3.1: To what extent does behavioral grime affect the
quality attributes of a design pattern?
Rationale: This research question seeks to quantify the
impact behavioral grime has on the quality of the pattern.
RQ3.2: Is the quality of certain types of behavioral grime
worse than other types?
Rationale: This question attempts to identify the forms of
behavioral grime that are worse than others.</p>
      <p>RQ3.3: To what extent does behavioral grime affect the TD
of a software project?
Rationale: In essence, TD captures the financial impact of
behavioral grime. Understanding this impact is crucial for
developers and project managers alike so decisions regarding
release timelines or refactorings can be made.</p>
      <p>RQ3.4: Is the TD of certain types of behavioral grime worse
than other types?
Rationale: This question attempts to identify the forms of
behavioral grime that are worse than others.</p>
      <p>RQ3.5: Are the current TD estimation and quality
measurement tools capable of capturing behavioral grime?
Rationale: Behavioral grime may have an impact on the TD
estimate and quality of the pattern. If the current tools are not
sufficient in capturing these impacts, then the tools need to
be extended in order to reflect the impact.</p>
      <p>RG4: Investigate the evolution of internal and external behavior
in design patterns for the purpose of capturing trends of
behavioral grime over time with respect to proper pattern behavior
from the perspective of the software system in the context of
pattern in open source and commercial software.</p>
      <p>RQ4.1: Can common trends of behavioral grime be captured
as a pattern evolves?
Rationale: This question identifies if patterns are more prone
to certain behavioral grime types. If we can predict which
patterns tend towards building behavioral grime, then
development efforts can be more pro-active in addressing
pattern evolution.</p>
      <p>RQ4.2: Can behavioral grime be predicted?
Rationale: This question focuses on the possibility that
underlying mechanisms may exist that allow us to predict
when a pattern will accumulate behavioral grime in the
future.</p>
    </sec>
    <sec id="sec-14">
      <title>4.2 Research Metrics</title>
      <p>
        Following the GQM approach [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ], several metrics are identified
that will be used to answer the research questions.
      </p>
      <p>M1: Structural Grime Count (SGC) – The total amount of grime
accumulated in a single pattern realization that is identified from
structural models. This metric will be used to answer RQs 2-4.
M2: Behavioral Grime Count (BGC) -- The total amount of grime
accumulated in a single pattern realization that is identified from
behavioral models. This metric will be used to answer RQs 2-4.
M3: Technical Debt Principal (TDP) – A measure of the cost
required to complete a task. This metric will be used to answer
RQ 3.</p>
      <p>M4: Technical Debt Interest (TDI) – A measure of differences in
cost required to complete tasks under ideal conditions versus the
current condition of the system. This metric will be used to
answer RQ 3.</p>
      <p>
        M5: Pattern Quality (PQ) – An aggregated measure of the eight
quality characteristics featured in the ISO 25010 software quality
specification [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ]. Each quality characteristic is further broken
down into a number of (sub)-characteristics. This metric reflects
an aggregation of the (sub)-characteristics. This metric will be
used to answer RQ 3.
      </p>
      <p>M6: Probability to Deviate (PD) – The probability that a pattern
will accumulate grime in the future, given its pattern type, past
and current SGC, BGC, TDP, TDI, and PQ. This metric will be
used to answer RQ 4.</p>
    </sec>
    <sec id="sec-15">
      <title>4.3 Working Hypotheses</title>
      <p>H1: There exist instances of behavioral grime that are not
captured by current structural grime models.</p>
      <p>H2: Common forms of behavioral grime exist within the same
pattern type.</p>
      <p>H3: Common forms of behavioral grime exist across different
pattern types.</p>
      <p>H4: Including behavioral grime in the current grime models will
allow the detection of pattern rot.</p>
      <p>H5: Quality and TD</p>
      <p>H5.1: Behavioral grime has a negative effect on the quality
of the (a) pattern realization, and (b) software system as a
whole.</p>
      <p>H5.2: Behavioral grime has a negative effect on the TD
calculation of the (a) pattern realization, and (b) software
system as a whole.</p>
      <p>H6: Given the pattern type, and past and current measurements of
SGC, BGC, TDP, TDI, and PQ, it is possible to predict whether a
pattern will accumulate grime in the future, with a degree of
uncertainty.</p>
    </sec>
    <sec id="sec-16">
      <title>5. APPROACH</title>
    </sec>
    <sec id="sec-17">
      <title>5.1 Data Collection</title>
      <p>
        Design pattern instances will be collected across a variety of open
source and commercial software systems. The Perceron’s dataset
features 4500 pattern instances from Java open source software
systems [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]. The patterns featured in this database will be
downloaded to provide an initial set of design pattern instances.
Additionally, design patterns will be manually extracted from a
commercial software system owned by a local firm with an
established relationship.
      </p>
      <p>Models of each design pattern instance will be captured using
UML class diagrams and UML sequence diagrams3. Class
diagrams capture the structural elements of the pattern instance,
and sequence diagrams capture the behavioral elements of the
pattern instance. Additionally, pattern specifications for each
pattern type will be captured in UML class and sequence
diagrams, using RBML and OCL.</p>
      <p>The PQ, TDI, and TDP of each pattern instance will be calculated.
These metrics will be calculated for both individual pattern
instances and the entire software system that the pattern originates
from. This data will be stored in a relational database.</p>
    </sec>
    <sec id="sec-18">
      <title>5.2 Research Approach</title>
      <p>
        Once the data collection process is complete, a variety of case
studies and experiments will be used to answer the research
questions. Juristo and Moreno’s guide on experimentation in
software engineering will be used to initially construct
experiments [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ].
      </p>
      <p>RQ1.1-3 will be evaluated using a case study, wherein the
taxonomy of design pattern grime will be extended to incorporate
behavioral grime types. All pattern instances will be categorized
according to their behavioral and structural conformance from the
grime quadrant of Table 1. We will manually sort through each
category, identifying design pattern violations. Violations that
share similarities (OCL or RBML) will be grouped.</p>
      <p>
        RQ2.1-3 will be evaluated using a case study. Conformance
checking algorithms will be implemented that validate the
structural conformance and behavioral conformance according to
the work done by [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ] [
        <xref ref-type="bibr" rid="ref28">28</xref>
        ]. All available pattern instances will be
categorized into one of the four groups defined in Table 1. A
binomial regression model will be fitted from the sample in order
to answer RQ2.3.
      </p>
      <p>RQ3.1-5 will be evaluated using a controlled experiment. Patterns
will be blocked according to pattern type and then randomly
selected from the available dataset. Patterns will be evaluated for
TD and quality using a suite of static and dynamic analysis tools,
as discussed in section 2. After measurements are recorded, forms
of grime will be randomly selected and injected into patterns.
After injecting, we will re-evaluate the TD and quality
measurements. To analyze the data, two ANOVA tests will be
utilized. RQ3.1-4 will be answered by fitting a two mean model,
containing a mean for non-injected patterns and a mean for
injected patterns. That is, the respective TD and quality
measurements from all tools that analyzed non-injected patterns
will be averaged. Respectively, the same analysis will be done for
injected patterns. RQ3.5 will be answered by fitting a separate
means model; that is, each quality analysis tool will have a mean.</p>
      <sec id="sec-18-1">
        <title>3 http://www.uml.org/</title>
        <p>Variance will be measured over all the analysis tools, for each of
non-injected and injected patterns.</p>
        <p>RQ4.1-2 will be evaluated using an observational study. Patterns
will be divided by pattern type and assessed for the existence of
grime across their lifetime in terms of project releases. For each
release, a record will exist documenting whether that pattern
instance has grime or not. Further, an ARIMA analysis will be
performed. This will give an indication into the tendencies of a
pattern to collect grime as it ages.</p>
      </sec>
    </sec>
    <sec id="sec-19">
      <title>6. THREATS TO VALIDITY</title>
      <p>There exist several threats to the validity of this study. Internal
validity refers to the ability to recognize a causative relationship
in the study, and not as a result of confounding variables. Internal
validity is threatened because other design defects may exist
alongside grime in a pattern; thus design defects are a
confounding variable in this study. To attempt to remove the
effect of design defects, we utilize a large number of pattern
instances in the analysis and block across pattern type. This
mitigates the chance that a design defect will affect the results of
the study.</p>
      <p>External validity refers to the ability to generalize from the results
of the study. External validity is threatened because of the limited
datasets of design pattern instances. To combat this threat, we
have utilized the Perceron’s dataset, which is the only publically
available dataset of patterns that features a large number of
instances (over 4500), and pattern instances from a local
commercial software firm. Patterns from both these datasets are
implemented in Java, and the Perceron’s dataset features only
open source patterns. Therefore, the ability to generalize the
results is limited to the population of patterns in this study.</p>
    </sec>
    <sec id="sec-20">
      <title>7. CONCLUSIONS</title>
      <p>We have outlined the work that will result in a doctoral
dissertation in hopes that we can receive feedback on the merit of
this research. Research gaps are presented and studies are
designed that fill them. We intend to contribute novel research
that strengthens the current state of empirical software
engineering.</p>
      <p>This research is in its early stages. Currently, preliminary research
has been performed, for the purpose of illustrating the research
gaps. This research includes generating pattern instances and
manually injecting grime into them, as described in section 3.2.
Additionally, two potential forms of behavioral grime have been
identified. Next steps call for the analysis of a larger number of
pattern instances that expand the taxonomy of behavioral grime.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <surname>Ampatzoglou</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Michou</surname>
            ,
            <given-names>O.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Stamelos</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          <article-title>Building and mining a repository of design pattern instances: Practical and research benefits, Entertainment Computing</article-title>
          , Volume
          <volume>4</volume>
          ,
          <string-name>
            <surname>Issue</surname>
            <given-names>2</given-names>
          </string-name>
          ,
          <string-name>
            <surname>April</surname>
            <given-names>2013</given-names>
          </string-name>
          , Pages
          <fpage>131</fpage>
          -
          <lpage>142</lpage>
          , ISSN 1875-9521, DOI= http://dx.doi.org/10.1016/j.entcom.
          <year>2012</year>
          .
          <volume>10</volume>
          .002.
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <surname>Bansiya</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ;
          <string-name>
            <surname>Davis</surname>
            ,
            <given-names>C.G.</given-names>
          </string-name>
          ,
          <article-title>A hierarchical model for objectoriented design quality assessment, Software Engineering</article-title>
          , IEEE Transactions on , vol.
          <volume>28</volume>
          , no.
          <issue>1</issue>
          , pp.
          <volume>4</volume>
          ,
          <issue>17</issue>
          , Jan 2002
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <surname>Basili</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Caldiera</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Rombach</surname>
            ,
            <given-names>H. D.</given-names>
          </string-name>
          <year>1994</year>
          .
          <article-title>The goal question metric approach</article-title>
          .
          <source>Encyclopedia of Software Engineering</source>
          .
          <volume>2</volume>
          ,
          <fpage>528</fpage>
          -
          <lpage>532</lpage>
          . DOI=http://dx.doi.org/ 10.1002/0471028959.sof142
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <surname>Bieman</surname>
            ,
            <given-names>J.M.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Wang</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          <year>2006</year>
          .
          <article-title>Design pattern coupling, change proneness, and change coupling: A pilot study</article-title>
          .
          <source>Technical Report</source>
          . Colorado State University.
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <surname>Brown</surname>
            ,
            <given-names>W. H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Malveau</surname>
            ,
            <given-names>R. C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>McCornnick</surname>
            <given-names>III</given-names>
          </string-name>
          , H. W., and
          <string-name>
            <surname>Mowbray</surname>
            ,
            <given-names>T. J.</given-names>
          </string-name>
          <year>1998</year>
          . Antipatterns: Refactoring Software, Architectures, and Projects in Crisis. Wiley &amp; Sons, NY.
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <surname>Curtis</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sappidi</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Szynkarski</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          <article-title>Estimating the Principal of an Application's Technical Debt</article-title>
          , IEEE Software, vol.
          <volume>29</volume>
          , no.
          <issue>6</issue>
          , pp.
          <fpage>34</fpage>
          -
          <lpage>42</lpage>
          ,
          <string-name>
            <surname>Nov</surname>
          </string-name>
          .-Dec.,
          <year>2012</year>
          DOI= http://doi.ieeecomputersociety.
          <source>org/10</source>
          .1109/MS.
          <year>2012</year>
          .156
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <surname>Cunningham</surname>
            ,
            <given-names>W.</given-names>
          </string-name>
          <year>1992</year>
          .
          <article-title>The WyCash portfolio management system</article-title>
          .
          <source>SIGPLAN OOPS Mess. 4</source>
          ,
          <issue>2</issue>
          (
          <year>December 1992</year>
          ),
          <fpage>29</fpage>
          -
          <lpage>30</lpage>
          . DOI=http://doi.acm.
          <source>org/10</source>
          .1145/157710.157715
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <surname>Dale</surname>
            ,
            <given-names>M.R.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Izurieta</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          <year>2014</year>
          .
          <article-title>Impacts of design pattern decay on system quality</article-title>
          .
          <source>In Proceedings of the 8th ACM/IEEE International Symposium on Empirical Software Engineering and Measurement (ESEM '14)</source>
          . ACM, New York, NY, USA, Article
          <volume>37</volume>
          , 4 pages. DOI=http://doi.acm.
          <source>org/10</source>
          .1145/2652524.2652560
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <surname>Eick</surname>
            ,
            <given-names>S.G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Graves</surname>
            ,
            <given-names>T.L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Karr</surname>
            ,
            <given-names>A.F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Marron</surname>
            ,
            <given-names>J.S.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Mockus</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          <article-title>Does code decay? Assessing the evidence from change management data, Software Engineering</article-title>
          , IEEE Transactions on, vol.
          <volume>27</volume>
          , no.
          <issue>1</issue>
          , pp.
          <fpage>1</fpage>
          -
          <lpage>12</lpage>
          ,
          <year>Jan 2001</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <surname>Fowler</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Beck</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Brant</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Opdyke</surname>
            ,
            <given-names>W.</given-names>
          </string-name>
          <year>1999</year>
          .
          <article-title>Refactoring: Improving the Design of Existing Code</article-title>
          .
          <string-name>
            <surname>Addison-Wesley</surname>
            <given-names>Longman</given-names>
          </string-name>
          , Inc., Reading, MA.
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11] France,
          <string-name>
            <given-names>R.B.</given-names>
            ,
            <surname>Kim</surname>
          </string-name>
          , Dae-Kyoo, Ghosh,
          <string-name>
            <given-names>S.</given-names>
            , and
            <surname>Song</surname>
          </string-name>
          ,
          <string-name>
            <surname>E.</surname>
          </string-name>
          <year>2004</year>
          .
          <article-title>A UML-based pattern specification technique, Software Engineering</article-title>
          , IEEE Transactions on, vol.
          <volume>30</volume>
          , no.
          <issue>3</issue>
          , pp.
          <volume>193</volume>
          ,
          <issue>206</issue>
          . DOI=http://dx.doi.org/10.1109/TSE.
          <year>2004</year>
          .1271174
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <surname>Gamma</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Helm</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          , Johnson, R., and
          <string-name>
            <surname>Vlissides</surname>
          </string-name>
          , J. Design Patterns:
          <article-title>Elements of Reusable Object-Oriented Software</article-title>
          .
          <source>Addison-Wesley</source>
          ,
          <year>1994</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <surname>Gaudin</surname>
            ,
            <given-names>O.</given-names>
          </string-name>
          <article-title>Evaluate your technical debt with Sonar, Sonar</article-title>
          , Jun,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <surname>Griffith</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Izurieta</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          <year>2013</year>
          .
          <article-title>Design Pattern Decay: An Extended Taxonomy and Empirical Study of Grime and its Impact on Design Pattern Evolution</article-title>
          .
          <source>In Proceedings of the 11th ACM/IEEE International Doctoral Symposium on Empirical Software Engineering and Measurements</source>
          , USA
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <surname>Griffith</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Izurieta</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          <year>2014</year>
          .
          <article-title>Design pattern decay: the case for class grime</article-title>
          .
          <source>In Proceedings of the 8th ACM/IEEE International Symposium on Empirical Software Engineering and Measurement (ESEM '14)</source>
          . ACM, New York, NY, USA, Article
          <volume>39</volume>
          , 4 pages. DOI=http://doi.acm.
          <source>org/10</source>
          .1145/2652524.2652570
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16] ISO/IEC 25010:
          <article-title>Systems and software engineering. Systems and Software Quality Requirements and Evaluation (SQuaRE)</article-title>
          .
          <source>System and software quality models</source>
          ,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <surname>Izurieta</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Bieman</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          <year>2007</year>
          .
          <article-title>How software designs decay: A pilot study of pattern evolution</article-title>
          .
          <source>In Proceedings of the First Symposium on Empirical Software Engineering and Measurement</source>
          (Madrid, Spain,
          <year>2007</year>
          ).
          <source>ESEM</source>
          <year>2007</year>
          .
          <volume>449</volume>
          -
          <fpage>451</fpage>
          . DOI= http://dx.doi.org/10.1109/ESEM.
          <year>2007</year>
          .
          <volume>55</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <surname>Izurieta</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          <year>2009</year>
          .
          <article-title>Decay and Grime Buildup in Evolving Object Oriented Design Patterns</article-title>
          .
          <source>Ph.D. Dissertation.</source>
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <surname>Izurieta</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bieman</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          <year>2013</year>
          .
          <article-title>A multiple case study of design pattern decay, grime, and rot in evolving software systems</article-title>
          .
          <source>J. Software Quality</source>
          .
          <volume>21</volume>
          ,
          <issue>2</issue>
          (Jun.
          <year>2013</year>
          ),
          <fpage>289</fpage>
          -
          <lpage>323</lpage>
          . DOI= http://dx.doi.org/10.1007/s11219-012-9175-x.
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20]
          <string-name>
            <surname>Juristo</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Moreno</surname>
            ,
            <given-names>A.M.</given-names>
          </string-name>
          <year>2013</year>
          . Basics of Software Engineering Experimentation. Springer, US.
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21]
          <string-name>
            <surname>Kim</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          <year>2004</year>
          .
          <string-name>
            <given-names>A</given-names>
            <surname>Meta-Modeling Approach</surname>
          </string-name>
          to Specifying Patterns,
          <source>Ph.D. Dissertation</source>
          . Colorado State University, Fort Collins, CO, USA. Advisor(s) Robert France.
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [22]
          <string-name>
            <surname>Kim</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          <article-title>The Role-Based Metamodeling Language for Specifying Design Patterns</article-title>
          . In Toufik Taibi, editor,
          <source>Design Pattern Formalization Techniques</source>
          . Idea Group Inc.,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          [23]
          <string-name>
            <surname>Letouzey</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ilkiewicz</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <article-title>Managing Technical Debt with the SQALE Method</article-title>
          , IEEE Software, vol.
          <volume>29</volume>
          , no.
          <issue>6</issue>
          , pp.
          <fpage>44</fpage>
          -
          <lpage>51</lpage>
          ,
          <string-name>
            <surname>Nov</surname>
          </string-name>
          .-Dec.,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          [24]
          <string-name>
            <surname>Marinescu</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <article-title>Assessing technical debt by identifying design flaws in software systems</article-title>
          ,
          <source>IBM Journal of Research and Development</source>
          , vol.
          <volume>56</volume>
          , no.
          <issue>5</issue>
          , pp.
          <volume>9</volume>
          :
          <issue>1</issue>
          ,
          <issue>9</issue>
          :
          <fpage>13</fpage>
          ,
          <string-name>
            <surname>Sept</surname>
          </string-name>
          .-Oct.
          <year>2012</year>
          DOI=http://dx.doi.org/10.1147/JRD.
          <year>2012</year>
          .2204512
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          [25]
          <string-name>
            <surname>Nugroho</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Visser</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Kuipers</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          <year>2011</year>
          .
          <article-title>An empirical model of technical debt and interest</article-title>
          .
          <source>In Proceedings of the 2nd Workshop on Managing Technical Debt (MTD '11)</source>
          . ACM, New York, NY, USA,
          <fpage>1</fpage>
          -
          <lpage>8</lpage>
          . DOI=http://doi.acm.
          <source>org/10</source>
          .1145/1985362.1985364
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          [26]
          <string-name>
            <surname>Sangal</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Jordan</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sinha</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Jackson</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          <year>2005</year>
          .
          <article-title>Using dependency models to manage complex software architecture</article-title>
          .
          <source>In Proceedings of the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications (OOPSLA '05)</source>
          . ACM, New York, NY, USA,
          <fpage>167</fpage>
          -
          <lpage>176</lpage>
          . DOI=http://doi.acm.
          <source>org/10</source>
          .1145/1094811.1094824
        </mixed-citation>
      </ref>
      <ref id="ref27">
        <mixed-citation>
          [27]
          <string-name>
            <surname>Schanz</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Izurieta</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          <year>2010</year>
          .
          <article-title>Object oriented design pattern decay: a taxonomy</article-title>
          .
          <source>In Proceedings of the 2010 ACMIEEE International Symposium on Empirical Software Engineering and Measurement (ESEM '10)</source>
          . ACM, New York, NY, USA, Article
          <volume>7</volume>
          , 8 pages. DOI=http://doi.acm.
          <source>org/10</source>
          .1145/1852786.1852796
        </mixed-citation>
      </ref>
      <ref id="ref28">
        <mixed-citation>
          [28]
          <string-name>
            <surname>Strasser</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Frederickson</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Fenger</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Izurieta</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          <year>2011</year>
          .
          <article-title>An automated software tool for validating design patterns</article-title>
          .
          <source>In Proceedings of the of ISCA 24th International Conference on Computer Applications in Industry and Engineering</source>
          (HI, USA, November
          <volume>16</volume>
          -18). CAINE'
          <volume>11</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref29">
        <mixed-citation>
          [29]
          <string-name>
            <surname>Tom</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Aurum</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Vidgen</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          <year>2013</year>
          .
          <article-title>An exploration of technical debt</article-title>
          .
          <source>J. Syst. and Softw</source>
          .
          <volume>86</volume>
          ,
          <issue>6</issue>
          (Jun.
          <year>2013</year>
          ),
          <fpage>1498</fpage>
          -
          <lpage>1516</lpage>
          . DOI=http://dx.doi.org/10.1016/j.jss.
          <year>2012</year>
          .
          <volume>12</volume>
          .052.
        </mixed-citation>
      </ref>
      <ref id="ref30">
        <mixed-citation>
          [30]
          <string-name>
            <surname>Wong</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Cai</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kim</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Dalton</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          <year>2011</year>
          .
          <article-title>Detecting software modularity violations</article-title>
          .
          <source>In Proceedings of the 33rd International Conference on Software Engineering (Honolulu</source>
          ,
          <string-name>
            <surname>HI</surname>
          </string-name>
          , USA, May
          <volume>21</volume>
          -28). ICSE'
          <volume>11</volume>
          ,
          <fpage>411</fpage>
          -
          <lpage>420</lpage>
          . DOI= http://doi.acm.
          <source>org/10</source>
          .1145/1985793.1985850
        </mixed-citation>
      </ref>
      <ref id="ref31">
        <mixed-citation>
          [31]
          <string-name>
            <surname>Wagner</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lochmann</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Heinemann</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kläs</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Trendowicz</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Plösch</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Seidl</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Goeb</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Streit</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          <year>2012</year>
          .
          <article-title>The quamoco product quality modelling and assessment approach</article-title>
          .
          <source>In Proceedings of the 34th International Conference on Software Engineering (ICSE '12)</source>
          . IEEE Press, Piscataway, NJ, USA,
          <fpage>1133</fpage>
          -
          <lpage>1142</lpage>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>