<!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>Concern Driven Software Development</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Omar Alam</string-name>
          <email>Omar.Alam@mail.mcgill.ca</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>School of Computer Science, McGill University</institution>
          ,
          <addr-line>Montreal</addr-line>
          ,
          <country country="CA">Canada</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>Model Driven Engineering (MDE) has achieved success in many areas of software development. However, despite its success, MDE faces some key challenges in practice. One of these challenges is model reuse. Modellers usually build models from scratch instead of reusing existing models. This makes modelling a more difficult task than coding, since modern programming languages provide libraries facilitating code reuse. This paper presents concern-driven software development - a new development process that focuses on concerns as primary artifacts. A concern groups related models serving the same purpose, and provides interfaces to facilitate reuse. We discuss the vision of concern driven development and discuss how concerns can be modelled at the design phase. We also discuss how we plan to address the challenge of model reuse in concern-driven development, by using concern libraries and tool support.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1 Introduction</title>
      <p>
        This article presents concern-driven development (CDD), a development
process that allows large-scale model reuse. In CDD, we focus on key challenges
that MDE faces. One main challenge that we address is reusability. Models of
evolving complex systems grow in size to an extent that individual model views
are hard to understand and maintain. In addition, creating complex models from
scratch is time consuming and the lack of model reuse leads to the creation of
many redundant models. CDD aims at integrating Aspect-Orientation Modelling
(AOM) [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ] with MDE to overcome this challenge. AOM is a new paradigm that
has been successfully used to separate crosscutting concerns (aspects) within
software models, allowing the developer to reason about each concern
individually. The model weaver then performs an elaborate model transformation which
merges and composes related model elements from each concern to produce a
final model (in which the concerns are linked). Previous research provides
evidence that AOM can be used to build models of complex systems by composing
together many interdependent simple concern models.
      </p>
      <p>A concern addresses a domain of interest for the modeller. It encapsulates
a set of models at potentially different phases of software development that
pertain to some points of interest of a developer or stakeholder. A concern has
a root phase, i.e. it starts to be relevant at a certain point during software
development. For example, some concerns appear at the requirements phase, e.g.
security, since they are of relevance to external stakeholders. Other concerns, for
instance database integration, appear during the architecture or design phase.
For the root phase and all subsequent phases, models are built to express the
properties of relevance for that phase using the most appropriate formalism.
Models should be as general as possible, and provide a composition interface
that allows a developer to specify how to customize the models to a specific
context, as well as how to compose them with models of other concerns at
the same level of abstraction. Concern models should also include all relevant
variations/choices that are available to developers, if any, together with guidance
on how to choose among those variations when moving from one phase to the
next. Finally, a concern should also define the model transformations that link
the models established at different levels of abstraction.</p>
      <p>The rest of the paper is structured as follows. Section 2 presents concerns –
the primary artefact of CDD and discusses the concern interfaces that facilitate
reuse. Section 3 provides a methodology to realize concern-oriented reuse at the
design phase. In particular, we discuss case studies, tool support and reusable
concern library. Finally, in section 4, we draw some conclusions and provide a
future outlook.
2</p>
    </sec>
    <sec id="sec-2">
      <title>Concerns as a Unit of Reuse</title>
      <p>
        Software reuse is a powerful concept that originated in the sixties, and is defined
as the process of creating new software using existing software artifacts. To make
software reuse applicable, reusing an artifact should be easier than constructing it
from scratch. This entails that the reusable artifacts are easy to understand, find,
and apply [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ]. There are characteristics of software artifacts that facilitate reuse,
e.g., grouping, encapsulation, information hiding, and well-defined interfaces.
2.1
      </p>
      <sec id="sec-2-1">
        <title>Units of Reuse</title>
        <p>
          Until now, we focused primarily on modelling concerns at the design phase, but
we are planning to extend our study to other phases, particularly the requirement
phase. The most popular units of reuse for software designs include classes,
components, frameworks, design patterns, and software product lines (SPL). We
extended a particular unit of reuse, namely, Reusable Aspect Models (RAM) [
          <xref ref-type="bibr" rid="ref11">11</xref>
          ],
to illustrate concern-oriented software design. RAM is an aspect-oriented
multiview modelling approach for software design modelling. A RAM model consists
of a UML package specifying the structure and the behaviour of a software design
using class, sequence, and state diagrams.
        </p>
        <p>
          Reusability is a key element in RAM. Each model has a well-defined model
interface [
          <xref ref-type="bibr" rid="ref3">3</xref>
          ] (explained in more detail in the next subsection), which specifies
how the design can be (re)used within other models. Having an explicit model
interface makes it possible to apply proper information hiding principles [
          <xref ref-type="bibr" rid="ref15">15</xref>
          ]
by concealing internal design details from the rest of the application. Thanks
to aspect-oriented techniques, this is possible even if the encapsulated design
details crosscut the rest of the application design. RAM also offers the modeller
the possibility to create model hierarchies, which allows one RAM model to
reuse the structure and behaviour of another RAM model within its design.
Model composition techniques are used to flatten aspect hierarchies to create
the final software design model.
2.2
        </p>
      </sec>
      <sec id="sec-2-2">
        <title>Concern Interfaces</title>
        <p>
          Units of reuse such as the ones discussed above typically either explicitly or
implicitly define interfaces that detail how the unit is supposed to be reused.
We classify these interfaces here into three kinds: usage, customization, and
variation interfaces. We discuss in details the specific concern interfaces related
to the extended version of RAM in [
          <xref ref-type="bibr" rid="ref5">5</xref>
          ].
        </p>
        <p>Usage Interface: The usage interface for units that are used in software
design specifies the design structure and behaviour that the unit provides to the
rest of the application. In other words, the usage interface presents an abstraction
of the functionality encapsulated within the unit to the developer. It describes
how the application can trigger the functionality provided by the unit.</p>
        <p>For instance, for classes the usage interface is the set of all public class
properties, i.e., the attributes and the operations that are visible and accessible from
the outside. For components, the usage interface is the set of services that the
component provides (i.e., the provided interface). For frameworks, design
patterns, and SPLs, the usage interface is comprised of the usage interfaces of all
the classes that the framework/pattern/SPL offers.</p>
        <p>Customization Interface: Typically, a unit of reuse has been purposely
created to be as general as possible so that it can be applied to many
different contexts. As a result it is often necessary to tailor the general design to a
specific application context. The customization interface of a reusable software
design unit specifies how to adapt the reusable unit to the specific needs of the
application under development.</p>
        <p>For example, the customization interface of generic or template classes allows
a developer to customize the class by instantiating it with application-specific
types. For components, the customization interface is comprised of the set of
services that the component expects from the rest of the application to function
properly (i.e., the required interface). The developer can use this information at
configuration time to plug in the appropriate application-specific services. The
customization interface for frameworks and design patterns is often comprised
of interfaces/abstract classes that the developer has to implement/subclass to
adapt the framework to perform application-specific behaviour.</p>
        <p>
          Variation Interface: The variation interface captures the variations offered
by a concern as well as the impact of a selection of variations on high-level
goals such as non-functional application properties. Variations are best expressed
at a high level of abstraction, where details of the variation can be ignored
and the focus can be on the relationships among offered variations. Feature
modelling [
          <xref ref-type="bibr" rid="ref10">10</xref>
          ] and goal modelling of URN standard [
          <xref ref-type="bibr" rid="ref9">9</xref>
          ] have addressed these
modelling requirements, and hence we make use of feature and goal modelling
techniques in the specification of the variation interface. Software Product Lines
use feature models to express variations [
          <xref ref-type="bibr" rid="ref16">16</xref>
          ]. However, in SPL, the application
of feature models is limited to express variation of different products.
3
        </p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>Methodology</title>
      <p>To reach our goal, we will work on case studies, concern library and tool support.</p>
      <p>ConcernElement
name
id
Concern
rn 1
e
c
n
o
C
d
e
s
u
e
r</p>
      <p>variationMode1l
{subsets models}
models Model
0..*
models 0..*</p>
      <p>
        VariationMod0e..l.*
The bCMS [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] was proposed as a common case study for the AOM
community and the models of participating approaches are available in a public
repository [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]. We are planning to model the entire bCMS using CDD, including
non-functional requirements, design variations, and communication protocol.
Although the focus of our work is at design phase, we model the requirement-level
concerns using AoURN [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ]. AoURN is a notation that uses the use case maps,
allowing the modeller to capture the interaction scenarios that a system supports
as well as the impact these scenarios have on high level goals. At the design level
we will use the extended version of RAM that supports CDD as discussed earlier.
      </p>
      <p>
        We are also planning to apply our concern-driven approach to an industrial
case study – slot machines [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ]. A slot machine is used in the casino gambling
industry and its system contains significant number of crosscutting concerns.
Both bCMS and slot machines depends on other concerns related to
networking, security, workflow middleware [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] and data structures, making them good
candidates to study concern dependencies and interactions.
3.2
      </p>
      <sec id="sec-3-1">
        <title>Tool support</title>
        <p>
          One of the main success factors for the programming language Java is the
existence of an extensive standard library that contains commonly used code, such as
searching algorithms, graphical user interfaces, and data structures. Bran Selic,
one of the founders of MDE, has recently said [
          <xref ref-type="bibr" rid="ref17">17</xref>
          ]: “People complain about UML
being too big. I say Java is even bigger. But still people don’t complain about
Java, because it has an extensive library.” A similar observation was made by Jon
Whittle, who found in his large-scale quantitive study that model reuse is not a
common practice among the MDE practitioners, and companies that abandoned
MDE found that without model reuse, modelling is too time consuming [
          <xref ref-type="bibr" rid="ref19">19</xref>
          ].
        </p>
        <p>
          We are building a library of commonly reusable concerns in our tool.
Currently, we have modelled 9 design patterns presented in [
          <xref ref-type="bibr" rid="ref8">8</xref>
          ], workflow middleware,
and models related to security and networking middlewares. We continue to add
more reusable models to the library.
4
        </p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>Summary and Outlook</title>
      <p>This article presents concern-driven development (CDD) that allows modellers
to easily reuse existing models. Concern is a broad unit of reuse that groups
related models and provides the modeller with three types of interfaces that
facilitate reuse – usage, customization, and variation interfaces. We discussed how
we applied CDD at the design phase by extending RAM to support the
concern metamodel. Our approach will also provide a library of commonly reusable
concerns and a tool support.</p>
      <p>
        In future work, we plan to more tightly couple the AoURN/SPL tool
jUCMNav [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ] and the RAM tool TouchRAM [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ], so that feature configurations
selected in jUCMNav are automatically communicated to the RAM weaver.
Furthermore, we are investigating how to automate the generation of the combined
variation interface of two concerns (e.g., when an aspect of one concern reuses
features of another concern). We are also working on larger case studies involving
transaction and security concerns, and plan to undertake controlled experiments
with designers regarding the usability and cost-effectiveness of concern-oriented
software design.
      </p>
      <p>If adopted on a large scale, we believe that concern-orientation has the
potential to revolutionize software design reuse. It enables the creation of standard
design concern libraries. Vendors can sell design concerns that target specific
domains. Developers can become specialists responsible for the maintenance and
evolution of specific design concern libraries. Ultimately, libraries, reuse, and
specialization would provide a clear structure to software development, and as a
result align the practice of software engineering closer to what is done in other
engineering disciplines.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <given-names>ReMoDD</given-names>
            <surname>Model</surname>
          </string-name>
          <article-title>Repository</article-title>
          . URL: http://www.cs.colostate.edu/remodd/ (
          <year>2011</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <given-names>Al</given-names>
            <surname>Abed</surname>
          </string-name>
          ,
          <string-name>
            <given-names>W.</given-names>
            ,
            <surname>Bonnet</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            ,
            <surname>Schöttle</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            ,
            <surname>Alam</surname>
          </string-name>
          ,
          <string-name>
            <given-names>O.</given-names>
            ,
            <surname>Kienzle</surname>
          </string-name>
          ,
          <string-name>
            <surname>J.:</surname>
          </string-name>
          <article-title>TouchRAM: A multitouch-enabled tool for aspect-oriented software design</article-title>
          .
          <source>In: 5th International Conference on Software Language Engineering - SLE 2012</source>
          . pp.
          <fpage>275</fpage>
          -
          <lpage>285</lpage>
          . No. 7745
          <string-name>
            <surname>in</surname>
            <given-names>LNCS</given-names>
          </string-name>
          , Springer (
          <year>October 2012</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <given-names>Al</given-names>
            <surname>Abed</surname>
          </string-name>
          ,
          <string-name>
            <given-names>W.</given-names>
            ,
            <surname>Kienzle</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.: Information</given-names>
            <surname>Hiding</surname>
          </string-name>
          and
          <string-name>
            <surname>Aspect-Oriented Modeling</surname>
          </string-name>
          .
          <source>In: 14th Aspect-Oriented Modeling Workshop</source>
          , Denver, CO, USA, Oct.
          <year>4th</year>
          ,
          <year>2009</year>
          . pp.
          <fpage>1</fpage>
          -
          <lpage>6</lpage>
          (
          <year>October 2009</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Alam</surname>
            ,
            <given-names>O.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kienzle</surname>
          </string-name>
          , J.:
          <article-title>Designing with inheritance and composition</article-title>
          .
          <source>In: 3rd International Workshop on Variability and Composition</source>
          . pp.
          <fpage>19</fpage>
          -
          <lpage>24</lpage>
          . ACM (
          <year>2012</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Alam</surname>
            ,
            <given-names>O.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kienzle</surname>
          </string-name>
          , J.:
          <article-title>Concern-oriented software design</article-title>
          .
          <source>In: Proceedings of the ACM/IEEE 16th International Conference on Model Driven Engineering Languages and Systems</source>
          . Springer (to be published)
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Capozucca</surname>
            , A., Cheng,
            <given-names>B.H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Georg</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Guelfi</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Istoan</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Mussbacher</surname>
          </string-name>
          , G.:
          <article-title>Requirements Definition Document for a Software Product Line of Car Crash Management Systems</article-title>
          . URL: http://cserg0.site.uottawa.ca/cma2011 (
          <year>2011</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Fabry</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Zambrano</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gordillo</surname>
            ,
            <given-names>S.E.</given-names>
          </string-name>
          :
          <article-title>Expressing aspectual interactions in design: Experiences in the slot machine domain</article-title>
          .
          <source>In: MoDELS</source>
          . pp.
          <fpage>93</fpage>
          -
          <lpage>107</lpage>
          . Lecture Notes in Computer Science, Springer (
          <year>2011</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <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.,
          <string-name>
            <surname>Vlissides</surname>
            ,
            <given-names>J.: Design</given-names>
          </string-name>
          <string-name>
            <surname>Patterns. Addison Wesley</surname>
          </string-name>
          , Reading, MA, USA (
          <year>1995</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <given-names>International</given-names>
            <surname>Telecommunication Union (ITU-T)</surname>
          </string-name>
          : Recommendation Z.
          <volume>151</volume>
          (
          <issue>11</issue>
          /08): User Requirements
          <string-name>
            <surname>Notation (URN) - Language Definition</surname>
          </string-name>
          (
          <year>2008</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Kang</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Cohen</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hess</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Novak</surname>
            ,
            <given-names>W.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Peterson</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          :
          <article-title>Feature-oriented domain analysis (FODA) feasibility study</article-title>
          .
          <source>Tech. Rep</source>
          . CMU/SEI-90
          <string-name>
            <surname>-</surname>
          </string-name>
          TR-
          <volume>21</volume>
          , Software Engineering Institute, Carnegie Mellon University (
          <year>November 1990</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Kienzle</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          , Al Abed,
          <string-name>
            <given-names>W.</given-names>
            ,
            <surname>Klein</surname>
          </string-name>
          , J.:
          <article-title>Aspect-Oriented Multi-View Modeling</article-title>
          .
          <source>In: AOSD 2009</source>
          . pp.
          <fpage>87</fpage>
          -
          <lpage>98</lpage>
          . ACM Press (
          <year>March 2009</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Krueger</surname>
          </string-name>
          :
          <article-title>Software reuse</article-title>
          .
          <source>CSURV: Computing Surveys</source>
          <volume>24</volume>
          (
          <year>1992</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>Mussbacher</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Amyot</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          :
          <article-title>Extending the User Requirements Notation with Aspect-Oriented Concepts</article-title>
          .
          <source>In: 4th International SDL Conference on Design for Motes and Mobiles - SDL'09</source>
          . pp.
          <fpage>115</fpage>
          -
          <lpage>132</lpage>
          . Springer-Verlag (
          <year>2009</year>
          ), http://dl. acm.org/citation.cfm?id=
          <volume>1812885</volume>
          .
          <fpage>1812896</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14. of Ottawa, U.: jUCMNav website: http://softwareengineering.ca/jucmnav (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <surname>Parnas</surname>
            .,
            <given-names>D.L.:</given-names>
          </string-name>
          <article-title>A technique for software module specification with examples</article-title>
          .
          <source>Communications of the ACM</source>
          <volume>15</volume>
          (
          <issue>5</issue>
          ),
          <fpage>330</fpage>
          -
          <lpage>336</lpage>
          (
          <year>1972</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <surname>Pohl</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Metzger</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>Variability management in software product line engineering</article-title>
          .
          <source>In: Proceedings of the 28th international conference on Software engineering (ICSE '06)</source>
          . pp.
          <fpage>1049</fpage>
          -
          <lpage>1050</lpage>
          . ACM (
          <year>2006</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17.
          <string-name>
            <surname>Selic</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          :
          <article-title>"the theory and practice of modeling language design"</article-title>
          .
          <source>Tutorial given at MODELS</source>
          <year>2012</year>
          , Innbruck, Austria, Oct.
          <volume>1st</volume>
          <fpage>2012</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          18.
          <string-name>
            <surname>Solberg</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Simmonds</surname>
            ,
            <given-names>D.M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Reddy</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ghosh</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          , France, R.B.:
          <article-title>Using aspect oriented techniques to support separation of concerns in model driven development</article-title>
          .
          <source>In: COMPSAC (1)</source>
          . pp.
          <fpage>121</fpage>
          -
          <lpage>126</lpage>
          . IEEE Computer Society (
          <year>2005</year>
          ), http://dblp. uni-trier.de/db/conf/compsac/compsac2005-
          <fpage>1</fpage>
          .html#SolbergSRGF05
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          19.
          <string-name>
            <surname>Whittle</surname>
          </string-name>
          , J.:
          <article-title>"the truth about model-driven development in industry - and why researchers should care"</article-title>
          . http://www.slideshare.net/jonathw/whittle-modelingwizards-2012/ (
          <year>2012</year>
          )
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>