<!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>Idea Paper: The Lifecycle of Software for Scientific Simulations</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Anshu Dubey</string-name>
          <email>adubey@anl.gov</email>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Lois C. McInnes</string-name>
          <email>curfman@mcs.anl.gov</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Mathematics and Computer Science Division, Argonne National Laboratory</institution>
          ,
          <addr-line>Lemont, IL 60439</addr-line>
          ,
          <country country="US">USA</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Mathematics and Computer Science Division, Argonne National Laboratory</institution>
          ,
          <addr-line>Lemont, IL 60439</addr-line>
          ,
          <institution>Flash Center for Computational, University of Chicago</institution>
          ,
          <addr-line>Chicago, IL 60637</addr-line>
          ,
          <country country="US">USA</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>-The software lifecycle is a well-researched topic that has produced many models to meet the needs of different types of software projects. However, one class of projects, software development for scientific computing, has received relatively little attention from lifecycle researchers. In particular, software for end-to-end computations for obtaining scientific results has received few lifecycle proposals and no formalization of a development model. An examination of development approaches employed by the teams implementing large multicomponent codes reveals a great deal of similarity in their strategies. This paper formalizes these related approaches into a lifecycle model for end-to-end scientific application software, featuring loose coupling between submodels for development of infrastructure and scientific capability. We also invite input from stakeholders to converge on a model that captures the complexity of this development processes and provides needed lifecycle guidance to the scientific software community.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>I. INTRODUCTION</p>
      <p>
        The software lifecycle is a well researched topic with
copious literature and many models that serve the specific
needs of different type of projects. The objective behind the
definition of lifecycle models is to decompose the software
development process into distinct stages, where each stage can
control its own quality and result in higher quality software
overall. Examples include waterfall [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ], spiral [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ], rapid
application development (RAD) [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ], agile [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ], and several
more (see [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ] for a list and general description of various
software lifecycle models). One class of software development,
that of scientific software, is not served well by any of
these models. Elements from several of them are useful, with
RAD and agile coming the closest, but by themselves none
adequately meets the needs of scientific software development.
The TriBITS [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] effort has produced an agile lifecycle model
for research-driven software development from the perspective
of software that downstream becomes a component in a larger
software collection. This model is suitable for libraries and
other software that implement research ideas. For example,
the Blue Brain Project [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ], [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ] is adapting the TriBITS model
to their computational needs. However, many projects exist in
scientific domains where software is the means for conducting
research instead of being the product or the objective of the
research. End-to-end simulation codes fall into this category.
They may use libraries and other third-party software as
components, but their users have different expectations from
the code. An examination of the development approaches
of many existing multicomponent scientific codes reveals a
great deal of similarity in lifecycle methodologies that predate
TriBITS. In this “idea” paper we propose a formalized model
based on these approaches that are already informally followed
by many groups.
      </p>
      <p>
        Codes for simulation and analysis are typically used either
to understand some phenomenon or process through
computational exploration or to help design physical experiments and
instruments for similar investigations. These codes often tend
to be interdisciplinary endeavors and need more lifecycle
elements because they have to contend with many stages that have
different levels of complexity. Among scientific simulation
codes exists a class of codes that are multiphysics, multiscale,
and multicomponent [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ]. This set of codes has its own
unique challenges, not only because of the complexity of the
codes themselves, but also because such codes typically need
high-performance computing (HPC) resources for simulation
and analysis. The successful codes among these differentiate
between infrastructure, a set of general-purpose services
provided by the code’s backbone, and scientific capabilities,
models of the physical world. These two aspects of codes also have
different lifecycle needs. The infrastructure or the framework
can follow one of the standard development models. Once
designed and developed, it typically has long-term stability.
Scientific capability development is more challenging and is
characteristic of simulation codes used for scientific discovery.
      </p>
      <p>
        In this idea paper we outline the elements of various
relevant lifecycle models and use them to create a software
lifecycle model that meets the needs of software for scientific
simulation and analysis. As previously mentioned, variations
of the model are already in use in many projects without a
formal theoretical basis [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ], [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ], [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ], [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ]. We differentiate
between submodels for infrastructure and scientific capability
development, and we loosely couple these submodels to form
a complete end-to-end lifecycle model for an entire scientific
simulation code. Our model also includes the concept of
feedback from simulation planning, an integral part of the
evolution of code requirements. For brevity, the remainder of
the document uses the term scientific software to represent
software for scientific simulation and analysis.
      </p>
      <p>II. SCIENTIFIC CAPABILITY DEVELOPMENT CYCLE
The first phase of a typical lifecycle model is requirement
gathering—a complex undertaking for science research codes
that deserves its own model. Scientific software is designed to
model phenomena in the physical world, including physical,
chemical, or biological processes or their combinations.
Scientific experts interested in studying such phenomena formulate a
mathematical model that captures the behavior of the system
as they understand it. The model may not be complete or
fully understood. Because most models do not lend themselves
readily to analytical solutions, the mathematical model is
discretized so that numerical methods may be applied to find
one or more solutions.</p>
      <p>Figure 1 shows a schematic of the process in scientific
software development that is equivalent to requirement
gathering. This example is taken from the development of a
model based on partial differential equations. The stages
roughly follow the process described above, where the first
step is formulating the mathematical model. If the model
is simple, the second stage of incorporating approximations
may not be needed, although more often approximations are
used. Sometimes approximations are introduced to make a
model tractable, while in other cases approximations save
computation time and may not make a substantive difference
to the simulation outcome. In still other cases approximations
are used because the corresponding part of the model may
not be well understood. The next two stages are discretization
and algorithm development. Existing implementations of the
needed algorithms in third-party software or libraries may
obviate the need for the algorithm development stage. In
such situations convergence and stability analysis may not
be needed. Once an implementation is available, the
computational model should be validated against some calibrated
observation. The calibration stage is where the range of valid
operation of the model is tested against the implementation.
While not every project requires a calibration stage, this phase
is often critical.</p>
      <p>
        Figure 1 shows feedback arrows from the validation stage
to three of the earliest stages. The process of verification and
validation may reflect a need to adjust approximations because
some approximations may lead to too much compromise on
model fidelity, or it may be found that more approximations
can be made without substantive loss of fidelity. Similarly
a numerical algorithm may prove to be inadequate or too
expensive for the region of interest, or the implementation
choices may make it suboptimal. Any of the these situations
can lead to resetting the state of the development to the
corresponding stage and resuming the cycle from that stage.
Thus, scientific code developers work iteratively [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ], and
requirement specifications evolve throughout the cycle.
Calibra7on
      </p>
      <p>Valida7on
Calibra7on
Valida7on
Mathema7cal
Model
Correctness
Stability
Convergence</p>
      <p>Approxima7ons
Discre7za7ons</p>
      <p>Numerical</p>
      <p>Algorithms
Target
Phenomena
Mathema7cal
Model
Correctness
Stability
Convergence</p>
      <p>Approxima7ons
Discre7za7ons</p>
      <p>Numerical
Algorithms</p>
      <p>Valida7on
Numerical
Library
Fig. 1. Schematic of requirement gathering and prototype development in
scientific simulation codes
Fig. 2. Schematic of prototype development when the model needs more
than one component. Here one component needs a new numerical algorithm,
while the other component is using a library. Discretization is the same.</p>
      <p>A change in discretization is rare for a component, and
hence the arrow is dashed. The other dashed arrows represent
the possibilities of bypassing some of the stages. For example,
if calibration is not needed, the stage is bypassed for
validation. Similarly, if a third-party or library-based numerical
algorithm is used, convergence and stability analysis of the
algorithm may be unnecessary. In multicomponent codes this
kind of cycle may exist independently for different
components, or some of the components may share a part of the
cycle. Figure 2 shows an example of a partially shared cycle
between two components with the same discretization. One
component needs calibration and a new algorithm, while the
other component can use a preexisting numerical algorithm
Simula5on
Analysis
Planning
Code</p>
      <p>Calibra5on
Valida5on</p>
      <p>Mathema5cal
Model
Correctness
Stability
Convergence</p>
      <p>Approxima5ons
Discre5za5ons</p>
      <p>Numerical
Algorithms
Infrastructure</p>
      <p>CapabiliBes</p>
      <p>Requirements
So.ware Architecture
API Design</p>
      <p>Implement</p>
      <p>Test
Maintain
Augment</p>
      <p>Model</p>
      <p>
        API
Design
Develop
Validate
Integrate
and needs no calibration. Figure 3 shows the development
cycle augmented with the needs of simulation planning and
results of scientific discovery. See [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] for an example of code
modifications to meet simulation campaign needs. Simulation
planning involves making estimates of resources needed to
complete a study, which can be based on past experience or
pathfinder runs. Ideally parameters should be built into the
code that can be used to customize the behavior of the code to
meet the simulation needs. This process can sometimes dictate
changes in the approximations and/or algorithms being used,
as indicated by the presence of feedback arrows from planning
to the corresponding two stages. Scientific discovery can lead
to adjustment of the model itself, which can either reset the
process or require incremental adjustment. In either case, the
entire cycle is affected.
      </p>
      <p>III. INFRASTRUCTURE DEVELOPMENT CYCLE</p>
      <p>Because the development of scientific software usually
responds to an immediate scientific need, the codes typically
are employed in production as soon as they have a minimal set
of capabilities for some simulation. Similarly, the development
of computational modules almost never stops through code
lifecycles because new findings in science and math almost
continuously place new demands on the codes. While the
additions may be incremental when they incorporate new findings
into existing features, the additions are often substantial when
new capabilities are added. The need for new capabilities may
arise from the need for greater model fidelity or from trying to
simulate a more complex model. Sometimes a code designed
for one scientific field may have enough in common with
another field that capabilities may be added to enable its use
for the new field.</p>
      <p>Irrespective of the cause, coexistence of development and
production/maintenance phases is a constant challenge to code
Fig. 4. Infrastructure development cycle and its coupling with the scientific
capability development cycle.
teams. While numerical algorithms and solvers can be in a
continually evolving state that reflects the advances in their
respective fields, fundamentals such as discretization methods,
I/O, and other similar supporting services generally are much
more stable from the perspective of application scientists.
While separate components for support services may not be
needed for simple codes with one or two capabilities, separate
support services are critical in codes with many capability
components that must interoperate with each other and work
as a whole. Extracting support services into common
infrastructural components is the only way to make the development
tractable for such codes. Note that common infrastructure
does not imply that every capability must adhere to the same
discretization or the same form of I/O or runtime support.
Instead, all different manifestations together form the overall
infrastructure or backbone of the code.</p>
      <p>The lifecycle model for infrastructure development can be
any of the prevalent models mentioned in Section I, depending
on what is best suited for individual projects. Among scientific
communities, the agile model is most popular because even
infrastructure is not completely devoid of incremental changes.
Not all agile methods apply, but the philosophy of the
methodology is well suited to codes that are constantly evolving.
The overall development model for such software needs to
incorporate coupling between the two modes of development.
One possible solution is shown in Figure 4.</p>
      <p>In this coupled lifecycle model, a large part of the
development cycle of each type (infrastructure and scientific
capability) proceeds independently of the other. API design,
integration, and integrated testing and maintenance are the coupling
points between the two modes of development. We have added
a stage for augmentation over and above the usual stages in the
infrastructure model to account for incremental changes that
are integral to all large scientific projects. The augmentation
stage also makes provisions for any changes imposed on the
infrastructure when a new scientific capability integrates into
the existing code or an existing capability imposes some new
constraints due to its own tweaking. Good software discipline
requires that different components interact with one another
through APIs; therefore that is another coupling point between
the two development cycles. A new scientific capability may
demand augmentation of the infrastructure API or recognition
of the API of the new capability. Both kinds of modification
to the API should proceed cooperatively.</p>
      <p>IV. DISCUSSION</p>
      <p>
        This proposed development cycle is meant to serve as a
starting point for a meaningful discussion about the unique
needs of scientific software, in particular multiphysics,
multicomponent simulation software that runs on HPC resources.
This lifecycle model does not capture some of the other aspects
of software engineering that are unique to such software.
For example, testing of scientific software needs to reflect
the layered complexity of the codes. A single box “testing”
in the model does not adequately capture that. Similarly,
porting a code to new platforms can be a challenging
undertaking requiring substantial development resources (see [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ]
for software engineering and productivity documents relevant
to computational science and engineering). Because similar
methodology has already found relatively wide use among
scientific simulation and analysis code developers, we believe
that this lifecycle model—featuring loose coupling between
distinct models for infrastructure and scientific capability
development—is a good place to start in order to converge on
a lifecycle model for the high-performance scientific software
community.
      </p>
      <p>ACKNOWLEDGMENTS</p>
      <p>This work was supported by the U.S. Department of Energy
Office of Science Office of Advanced Scientific Computing
Research.</p>
      <p>The submitted manuscript has been created by UChicago
Argonne, LLC, Operator of Argonne National Laboratory
(Argonne). Argonne, a U.S. Department of Energy Office of
Science laboratory, is operated under Contract No.
DE-AC0206CH11357. The U.S. Government retains for itself, and
others acting on its behalf, a paid-up nonexclusive, irrevocable
worldwide license in said article to reproduce, prepare
derivative works, distribute copies to the public, and perform
publicly and display publicly, by or on behalf of the Government.
The Department of Energy will provide public access to these
results of federally sponsored research in accordance with the
DOE Public Access Plan.
http://energy.gov/downloads/doepublic-access-plan.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          <article-title>[1] Agile methodology</article-title>
          . http://agilemethodology.org/.
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>R. A.</given-names>
            <surname>Bartlett</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M. A.</given-names>
            <surname>Heroux</surname>
          </string-name>
          , and
          <string-name>
            <given-names>J. M.</given-names>
            <surname>Willenbring</surname>
          </string-name>
          .
          <article-title>Overview of the TriBITS lifecycle model: A lean/agile software lifecycle model for research-based computational science and engineering software</article-title>
          .
          <source>In EScience (e-Science)</source>
          ,
          <year>2012</year>
          IEEE 8th International Conference on, pages
          <fpage>1</fpage>
          -
          <lpage>8</lpage>
          . IEEE,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>B. W.</given-names>
            <surname>Boehm</surname>
          </string-name>
          .
          <article-title>A spiral model of software development and enhancement</article-title>
          .
          <source>Computer</source>
          ,
          <volume>21</volume>
          (
          <issue>5</issue>
          ):
          <fpage>61</fpage>
          -
          <lpage>72</lpage>
          ,
          <year>1988</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <surname>CASC.</surname>
          </string-name>
          <article-title>SAMRAI structured adaptive mesh refinement application infrastructure</article-title>
          . https://computation.llnl.gov/casc/SAMRAI/,
          <year>December 2007</year>
          .
          <article-title>Center for Applied Scientific Computing</article-title>
          , Lawrence Livermore National Laboratory.
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>A.</given-names>
            <surname>Dubey</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Antypas</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Ganapathy</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Reid</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Riley</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Sheeler</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Siegel</surname>
          </string-name>
          , and
          <string-name>
            <given-names>K.</given-names>
            <surname>Weide</surname>
          </string-name>
          .
          <article-title>Extensible component-based architecture for FLASH, a massively parallel</article-title>
          ,
          <source>multiphysics simulation code. Parallel Computing</source>
          ,
          <volume>35</volume>
          (
          <fpage>10</fpage>
          -11):
          <fpage>512</fpage>
          -
          <lpage>522</lpage>
          ,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>A.</given-names>
            <surname>Dubey</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Calder</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Daley</surname>
          </string-name>
          , R. Fisher, C. Graziani,
          <string-name>
            <given-names>G.</given-names>
            <surname>Jordan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Lamb</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Reid</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D. M.</given-names>
            <surname>Townsley</surname>
          </string-name>
          , and
          <string-name>
            <given-names>K.</given-names>
            <surname>Weide</surname>
          </string-name>
          .
          <article-title>Pragmatic optimizations for better scientific utilization of large supercomputers</article-title>
          .
          <source>International Journal of High Performance Computing Applications</source>
          ,
          <volume>27</volume>
          (
          <issue>3</issue>
          ):
          <fpage>360</fpage>
          -
          <lpage>373</lpage>
          ,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>Enzo</given-names>
            <surname>Collaboration</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G. L.</given-names>
            <surname>Bryan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M. L.</given-names>
            <surname>Norman</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B. W. O</given-names>
            <surname>'Shea</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Abel</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J. H.</given-names>
            <surname>Wise</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M. J.</given-names>
            <surname>Turk</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D. R.</given-names>
            <surname>Reynolds</surname>
          </string-name>
          , D. C. Collins,
          <string-name>
            <given-names>P.</given-names>
            <surname>Wang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S. W.</given-names>
            <surname>Skillman</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Smith</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R. P.</given-names>
            <surname>Harkness</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Bordner</surname>
          </string-name>
          , J.-h. Kim,
          <string-name>
            <given-names>M.</given-names>
            <surname>Kuhlen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Xu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Goldbaum</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Hummels</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A. G.</given-names>
            <surname>Kritsuk</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E.</given-names>
            <surname>Tasker</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Skory</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C. M.</given-names>
            <surname>Simpson</surname>
          </string-name>
          ,
          <string-name>
            <given-names>O.</given-names>
            <surname>Hahn</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J. S.</given-names>
            <surname>Oishi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G. C.</given-names>
            <surname>So</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Zhao</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Cen</surname>
          </string-name>
          , and
          <string-name>
            <given-names>Y.</given-names>
            <surname>Li</surname>
          </string-name>
          .
          <article-title>Enzo: An adaptive mesh refinement code for astrophysics</article-title>
          .
          <source>ArXiv</source>
          e-prints,
          <year>July 2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>M.-O.</given-names>
            <surname>Gewaltig</surname>
          </string-name>
          and
          <string-name>
            <given-names>R.</given-names>
            <surname>Cannon</surname>
          </string-name>
          .
          <article-title>Current practice in software development for computational neuroscience and how to improve it</article-title>
          .
          <source>PLoS Comput Biol</source>
          ,
          <volume>10</volume>
          (
          <issue>1</issue>
          ):e1003376,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>IDEAS</given-names>
            <surname>Productivity - Howto Documents</surname>
          </string-name>
          . https://ideas-productivity.org/resources/howtos/.
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>D. E.</given-names>
            <surname>Keyes</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L. C.</given-names>
            <surname>McInnes</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Woodward</surname>
          </string-name>
          ,
          <string-name>
            <given-names>W.</given-names>
            <surname>Gropp</surname>
          </string-name>
          , E. Myra,
          <string-name>
            <given-names>M.</given-names>
            <surname>Pernice</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Bell</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Brown</surname>
          </string-name>
          , A. Clo,
          <string-name>
            <given-names>J.</given-names>
            <surname>Connors</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E.</given-names>
            <surname>Constantinescu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Estep</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Evans</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Farhat</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Hakim</surname>
          </string-name>
          , G. Hammond, G. Hansen,
          <string-name>
            <given-names>J.</given-names>
            <surname>Hill</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Isaac</surname>
          </string-name>
          ,
          <string-name>
            <given-names>X.</given-names>
            <surname>Jiao</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Jordan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Kaushik</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E.</given-names>
            <surname>Kaxiras</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Koniges</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Lee</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Lott</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Q.</given-names>
            <surname>Lu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Magerlein</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Maxwell</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>McCourt</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Mehl</surname>
          </string-name>
          and
          <string-name>
            <given-names>Roger</given-names>
            <surname>Pawlowski</surname>
          </string-name>
          and Amanda Peters Randles,
          <string-name>
            <given-names>D.</given-names>
            <surname>Reynolds</surname>
          </string-name>
          , B. Rivie`re, U. Ru¨de, T. Scheibe,
          <string-name>
            <given-names>J.</given-names>
            <surname>Shadid</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Sheehan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Shephard</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Siegel</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Smith</surname>
          </string-name>
          ,
          <string-name>
            <given-names>X.</given-names>
            <surname>Tang</surname>
          </string-name>
          , C. Wilson, and
          <string-name>
            <given-names>B.</given-names>
            <surname>Wohlmuth</surname>
          </string-name>
          , Multiphysics Simulations:
          <article-title>Challenges and opportunities</article-title>
          .
          <source>International Journal of High Performance Computing Applications</source>
          ,
          <volume>27</volume>
          (
          <issue>1</issue>
          ):
          <fpage>4</fpage>
          -
          <lpage>83</lpage>
          ,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>H.</given-names>
            <surname>Markram</surname>
          </string-name>
          .
          <article-title>The Blue Brain project</article-title>
          .
          <source>Nature Reviews Neuroscience</source>
          ,
          <volume>7</volume>
          (
          <issue>2</issue>
          ):
          <fpage>153</fpage>
          -
          <lpage>160</lpage>
          ,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>J.</given-names>
            <surname>Martin</surname>
          </string-name>
          .
          <article-title>Rapid application development</article-title>
          , volume
          <volume>8</volume>
          . Macmillan New York,
          <year>1991</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>J. D.</given-names>
            <surname>Moulton</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J. C.</given-names>
            <surname>Meza</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M. W.</given-names>
            <surname>Buksas</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Day</surname>
          </string-name>
          , et al.
          <article-title>Highlevel design of Amanzi, the multi-process high performance computing simulator</article-title>
          .
          <source>Technical report, ASCEM-HPC-2011-03-1</source>
          , DOE-EM, Washington, DC,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>K.</given-names>
            <surname>Petersen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Wohlin</surname>
          </string-name>
          , and
          <string-name>
            <given-names>D.</given-names>
            <surname>Baca</surname>
          </string-name>
          .
          <article-title>The waterfall model in large-scale development</article-title>
          .
          <source>In International Conference on Product-Focused Software Process Improvement</source>
          , pages
          <fpage>386</fpage>
          -
          <lpage>400</lpage>
          . Springer,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>J.</given-names>
            <surname>Segal</surname>
          </string-name>
          .
          <article-title>When software engineers met research scientists: A case study</article-title>
          .
          <source>Empirical Software Engineering</source>
          ,
          <volume>10</volume>
          (
          <issue>4</issue>
          ):
          <fpage>517</fpage>
          -
          <lpage>536</lpage>
          ,
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <article-title>Software development lifecycle tutorial</article-title>
          . http://www.tutorialspoint.com/sdlc/.
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>