Case Study of the NENE Code Project
Richard Kendall (Software Engineering Institute)
Douglass Post (DoD High Performance Computing Modernization Program)
Andrew Mark (DoD High Performance Computing Modernization Program)
January 2007
TECHNICAL NOTE
CMU/SEI-2006-TN-044
SEI Director’s Office
Unlimited distribution subject to the copyright.
This report was prepared for the
SEI Administrative Agent
ESC/XPK
5 Eglin Street
Hanscom AFB, MA 01731-2100
The ideas and findings in this report should not be construed as an official DoD position. It is published in the
interest of scientific and technical information exchange.
This work is sponsored by the U.S. Department of Defense. The Software Engineering Institute is a federally
funded research and development center sponsored by the U.S. Department of Defense.
Copyright 2007 Carnegie Mellon University.
NO WARRANTY
THIS CARNEGIE MELLON UNIVERSITY AND SOFTWARE ENGINEERING INSTITUTE MATERIAL IS
FURNISHED ON AN "AS-IS" BASIS. CARNEGIE MELLON UNIVERSITY MAKES NO WARRANTIES OF
ANY KIND, EITHER EXPRESSED OR IMPLIED, AS TO ANY MATTER INCLUDING, BUT NOT LIMITED
TO, WARRANTY OF FITNESS FOR PURPOSE OR MERCHANTABILITY, EXCLUSIVITY, OR RESULTS
OBTAINED FROM USE OF THE MATERIAL. CARNEGIE MELLON UNIVERSITY DOES NOT MAKE
ANY WARRANTY OF ANY KIND WITH RESPECT TO FREEDOM FROM PATENT, TRADEMARK, OR
COPYRIGHT INFRINGEMENT.
Use of any trademarks in this report is not intended in any way to infringe on the rights of the trademark holder.
Internal use. Permission to reproduce this document and to prepare derivative works from this document for internal use is granted, provided the copyright and "No Warranty" statements are included with all reproductions and
derivative works.
External use. Requests for permission to reproduce this document or prepare derivative works of this document for
external and commercial use should be addressed to the SEI Licensing Agent.
This work was created in the performance of Federal Government Contract Number FA8721-05-C-0003 with
Carnegie Mellon University for the operation of the Software Engineering Institute, a federally funded research
and development center. The Government of the United States has a royalty-free government-purpose license to
use, duplicate, or disclose the work, in whole or in part and in any manner, and to have or permit others to do so,
for government purposes pursuant to the copyright license under the clause at 252.227-7013.
For information about purchasing paper copies of SEI reports, please visit the publications portion of our Web site
(http://www.sei.cmu.edu/publications/pubweb.html).
Table of Contents
Abstract
vii
1
Introduction
1
2
Code Characteristics
2
3
Code Project and Team
5
4
Code Life Cycle and Workflow Management
9
5
Lessons Learned
References
12
13
SOFTWARE ENGINEERING INSTITUTE | i
ii | CMU/SEI-2006-TN-044
List of Figures
Figure 1: Schematic Illustration of NENE Development
2
Figure 2: Typical Use Pattern for NENE
3
SOFTWARE ENGINEERING INSTITUTE | iii
iv | CMU/SEI-2006-TN-044
List of Tables
Table 1:
Development Practices Deployed by the NENE Team
Table 2:
NENE Life Cycle Management Tools
7
10
SOFTWARE ENGINEERING INSTITUTE | v
vi | CMU/SEI-2006-TN-044
Abstract
The Defense Advanced Research Projects Agency (DARPA) High Productivity Computing Systems (HPCS) Program is sponsoring a series of case studies to identify the life cycles, workflows,
and technical challenges of computational science and engineering code development that are representative of the program’s participants. A secondary goal is to characterize how software development tools are used and what enhancements would increase the productivity of scientificapplication programmers. These studies also seek to identify “lessons learned” that can be transferred to the general computational science and engineering community to improve the code development process.
The NENE code is the fifth science-based code project to be analyzed by the Existing Codes subteam of the DARPA HPCS Productivity Team. The NENE code is an application code for analyzing scientific phenomena and predicting the complex behavior and interaction of individual
physical systems and individual particles in the systems. The core NENE development team is
expert, agile, and of moderate size, consisting of a professor and another permanent staff member,
five post docs, and 11 graduate students. NENE is an example of a distributed development project; the core team is anchored at a university, but as many as 250 individual researchers have
made contributions from other locations.
SOFTWARE ENGINEERING INSTITUTE | vii
viii | CMU/SEI-2006-TN-044
1 Introduction
Through the sponsorship of the Defense Advanced Research Projects Agency (DARPA) High
Productivity Computing Systems (HPCS) program, the present authors have performed a series of
case studies of high-performance code development projects. This is the fifth case study in this
series (after Falcon [Falcon 2005], Hawk [Kendall 2005a], Condor [Kendall 2005b], and Eagle
[Kendall 2006]). The shared objectives of these studies are:
•
identification of critical success factors
•
identification of issues that must be addressed by hardware and software vendors to improve
the productivity of the code development process
•
development of a reference body of case studies for the computational science and engineering community
•
documenting lessons learned from the analysis and personal team interviews
It is important in studies of this type to maintain the anonymity of the code project, the host institution, and the sponsoring agency or commercial company. “NENE” is a pseudonym and details
that might reveal the identity of this code project have been masked or omitted.
This study followed the methodology described in the previous case studies by our team:
a.
Identify the project and sponsors.
b.
Negotiate case study with team and sponsors.
c.
Complete pre-interview questionnaire process.
d.
Analyze the questionnaire and plan on-site interviews.
e.
Conduct on-site interview with the team.
f.
Analyze the on-site interview and integrate with questionnaire.
g.
Conduct follow-up to resolve unanswered questions.
h.
Write a report and iterate with code team and sponsor.
i.
Publish the report.
SOFTWARE ENGINEERING INSTITUTE | 1
2 Code Characteristics
The NENE code development project is now 25 years old and the code is still under very active
development. It began as a university research project. Stakeholders, primarily the core team and
a large community of collaborators, set the requirements. Approximately 90 percent of the requirements have been driven by the research goals of the stakeholders and sponsors, and 10 percent from the specific needs of other users. NENE had an antecedent which has become a separate
application.
NENE has evolved into a suite of modules and codes (tools) that can be combined to calculate the
complex behavior and interactions of a set of the individual physical entities and particles. The
user can trade off the accuracy of the calculations with time to solution through the selection of
the host computer and the choice of physical effects and solution algorithms for solving the problem (Figure 1). Many users download the NENE code and find that the “standard core code” has
sufficient capability to solve their problem (Figure 2). However, the “standard” effects and solution methods are sometimes inadequate. In such cases the scientist who wants to use NENE must
develop a model for another effect, or develop a new solution algorithm to be added to the existing code to solve the problem of interest. Sometimes this “new capability” is of sufficient general
interest that it becomes a candidate for inclusion in the core code. As discussed later, acceptance
of new modules into the core NENE code is carefully controlled by the core team. In this sense
NENE is a good example of a “feature-driven” code development project.
Physical Effects Solution Methods
A
α
B
β
Standard
C
χ
NENE
D
δ
code
E
ε
…..
….
+
Analysis using
existing code
B, D
Locally
Developed
enhancement
G
H
…..
Analysis using
standard code plus
locally developed
enhancements G, π
B, D, G
Figure 1:
+
+
χ, ε
+
+
π
ρ
….
+
+
χ, ε, π
+
Schematic Illustration of NENE Development
2 | CMU/SEI-2006-TN-044
No. of Systems
1
2
3
4
5
…..
Predicted
behavior
3, 5
Result
1
2
…..
Enhanced
Capability
3, 5
New
Result
There are now thousands of instantiations of NENE at various institutions and tens of thousands
of users worldwide, both academic and non-academic (Figure 2). The code is now distributed via
the Web. There is no license fee, however a registration is required to download the code. In the
early days it was distributed by tape, later by the email of many separate files, and from the mid1990s to 2000 via ftp. While, as described later, a strong effort is made to make the code as correct as possible, the code is provided “caveat emptor” to the users, with no guarantee of correctness for solving the problem of interest to the user and not much support beyond the downloaded
code and the associated extensive documentation. The quality of the code is attested by the more
than 5,000 citations to the seminal paper describing the core code system.
Download
NENE, add
Capability
and use
Download
NENE and
use as is
Download
NENE and
use as is
Core
NENE
Team
Download
NENE, add
Capability
and use
Figure 2:
Download
NENE, add
capability, use,
and add to core
NENE
Download
NENE and
use as is
Download
NENE, add
Capability
and use
Typical Use Pattern for NENE
The NENE code, with the exception of the parallel program libraries, is written in Fortran 77. The
motivation for this choice is reminiscent of several of our previous case studies (such as FALCON
and CONDOR), namely portability, ease of development, and maintenance. F77 was the best option available at the inception of NENE and even though Fortran 77 is no longer taught by university computer science departments, its fundamentals can be mastered in a week in contrast to
months or longer for C++ or other “modern,” higher-level languages. Fortran 77 is easy to learn,
intuitive to scientists, and remains highly portable, even though it is typically compiled by F90era compilers, not F77 compilers. Sticking to Fortran 77 also eliminates linking issues that plague
software written in many languages [NENE Co-PI]. Almost all the code development is done by
domain scientists with little or no software engineering or computer science assistance.
There is essentially one version of the NENE program library that executes on all commonly used
hardware platforms (all Unix environments, desktop Mac OS X, and Windows PCs). There exists
SOFTWARE ENGINEERING INSTITUTE | 3
some limited vectorization in the program library for a few platforms, and there is an optimized
Windows version.
There are approximately 760,000 lines of F77 code in the program library and approximately
26,000 lines of documentation. The message-passing API, also developed by the NENE team,
consists of approximately 10,200 lines of C code. Message passing is handled by conditional
compilation directives, and can rely on one or more of the following: TCP/IP, MPI, LAPI, and
SHMEM.
Parallelization is a key priority of the team because parallel computing is necessary to get the
level of performance needed to obtain the most innovative and important scientific results (see
Chapter 5, “Lessons Learned,” item g). On the other hand, actual demonstrations of parallel performance have been limited. The core difficulty is that domain science involves the strongly coupled interaction of many physical entities. Most solution algorithms require good communication
among all parts of the problem. Memory latency and memory hierarchy are thus key issues.
4 | CMU/SEI-2006-TN-044
3
Code Project and Team
The NENE core development team started out as one professor, two post docs, and two graduate
students. Now it consists of a professor and another permanent staff member, five post docs, and
11 graduate students. Since 1993 a growing body of collaborators, mostly former graduate students and post docs, have made contributions to the NENE code. The contributors now number
into the hundreds. The main drivers for the team are
•
ease of maintenance
•
robustness
•
modularity
•
portability
•
standards compliance
The first two are judged to be the most important. The NENE team co-principal investigator (CoPI) remarked that all of the drivers are related, but singled out the first as the most important
driver of code development (see Chapter 5, “Lessons Learned,” item b). Standards compliance,
which is enforced with the FTNCHEK tool [SourceForge 2006], is important because of the large
number of widely distributed contributors to the code. Modularity, with interfaces to the code
backbone that minimize connections to the rest of the code, also promotes ease of maintenance.
As was the case for the HAWK, CONDOR, and EAGLE projects, the relatively small size of the
team limited the degree of formality required to manage the project. Moreover, the team leader is
able to play a role in the development of the code, through supervision of graduate students, rather
than just managing the project. The sponsors are attracted to the innovative science in the NENE
code and the large user base (see Chapter 5, “Lessons Learned,” item d) and have not required
intrusive project management methods or onerous reporting requirements for the principal investigator. Milestones are required by one of the sponsors, but they are only “guidance” as is the
usual practice with grants from federal science-funding agencies. While this might be a problem
in some fields, it is not a problem with NENE. Grants must be renewed, and renewals do not occur unless there is a demonstrated record of achievement. From the formal software engineering
point of view, this project is under-constrained, which is also true of all but one of the other projects our team has studied. However, for the most part, the NENE team sets its own milestones,
which are driven by the need to enable students to graduate, and to provide publications for post
docs on the project.
Of the 20 or so software development tracking metrics [SEI 2006] that have been cited in the software engineering literature, the NENE team chose to employ
•
lines of code
•
comment lines
•
locality
•
code performance
•
parallel scaling
SOFTWARE ENGINEERING INSTITUTE | 5
•
number of users
“Lines of code” is used as a general measure of the growth of the code. Performance indicators
like runtime and number of iterations are used to validate changes. (Validation is discussed later.)
Number of users is important to funding agencies and industrial users as a measure of impact.
The fact that much of the NENE source code has been developed by a large group of external collaborators represents a risk (see Chapter 5, “Lessons Learned,” item c) to the coherence and conceptual integrity of the NENE code. This risk has been addressed in part by instituting rigorous,
centralized quality control by the code librarian over contributed code. New code must be tested
thoroughly by its submitters; it is then submitted to an alpha/beta testing process before final inclusion in the program library. There is only one official supported source for the NENE code.
Because most of the external contributions are voluntary, they do not impact the commitments
made by the core team to its sponsors.
As the code becomes more complex, the question arises: at what point does the configuration
management process itself become a bottleneck? The answer so far has been to keep the backbone
of NENE as simple as possible and confine the enhancements, especially those from outside the
core team, to the extremities.
The approach to configuration management here differs from that of any other project we have
studied. Instead of a reliance on a software solution (like the Concurrent Versions System), the
NENE project has taken the approach of assigning the task of program librarian to a Co-PI, an
individual with almost encyclopedic knowledge of the code. The program librarian does not
merely run regression tests to confirm that updates do no harm, but analyzes every line of code
that is submitted for inclusion in the program library. This often involves working side-by-side
with the developer. Also, many users select just a few key modules and use them for their calculations (Figures 1 and 2). Any new capability is often the replacement of an existing core module or
modules with a new one written by the user.
Long-lived software development projects inevitably face a succession issue—who will replace
the PI when he or she retires? A new PI has been recruited and the transition has begun.
The development style that best describes this team’s dynamic is “agile” [Agile Alliance 2006]
(see Chapter 5, “Lessons Learned,” item a). This statement should be taken to mean that the
NENE development team emphasizes practices over processes. The table below summarizes the
development practices used by the NENE team. Although the NENE core team does not use style
sheets in any formal sense, the code has a definite style that is communicated through “informal
pressure and example” to successive generations of students who work on the code (see Chapter
5, “Lessons Learned,” item e). Expertise spreads as students graduate and become professors with
students of their own. They integrate NENE into their research programs and develop extensions.
This is how the NENE code project has grown to have hundreds of collaborators.
6 | CMU/SEI-2006-TN-044
Table 1:
Development Practices Deployed by the NENE Team
Practice
Description
Degree Followed
Requirements
Development
Produce, analyze, and verify customer, project, and product requirements
Development takes place in very small
teams reducing the need for formality.
Most development is independent of the
core team.
Requirements
Management
Manage requirements of project and
identify inconsistencies with the project plan
Same as above
Project Planning
Establish and maintain plans that
define project activities
Same as above
Project Monitoring
and Control
Provide an understanding of the
project’s progress so that appropriate corrective actions can be taken if
progress deviates from plan
No formal plans or deadlines; milestones
are tied to academic year. External users
are tied to their own priorities and milestones.
Configuration
Management
Establish and maintain integrity of
work products using configuration
identification and control
Yes, tight control over program library
Process and
Product Quality
Assurance
Objectively evaluating adherence to
process descriptions and resolving
noncompliance
Tight control over contributed capabilities
Organizational
Process Definition
Follow an organization-wide process
No, distributed contributors set their own
processes; within the core team there is a
well-established process.
Organizational
Training
Develop the skills and knowledge of
people so they can perform their
roles effectively
An important output of this project is the
training of graduate students.
Risk Management
Identify potential problems before
they occur and adequately handle
those problems
Long track record of successful risk management. Core code is provided “caveat
emptor” to the users.
Peer Reviews
Software artifacts (requirements,
design, code) reviewed by peers to
improve quality
Code is reviewed by Co-PI before inclusion
in program library.
Continuous
Integration
Integrate and build system many
times a day, each time a task is
completed
No
Refactoring
Restructuring of software to remove
duplication, improve communication,
simplify, or add flexibility
Yes, in areas where new code is being
developed
Retrospective
Post-iteration review of the effectiveness of the work performed,
methods used, and estimates
No
Tacit Knowledge
Project knowledge is maintained and
updated in participants’ heads rather
than in documents
Yes, a great deal is published, but tacit
knowledge is important. There are more
than 5,000 papers published based on
results obtained from NENE calculations.
Collective
Anyone can change any code, any-
No
SOFTWARE ENGINEERING INSTITUTE | 7
Practice
Description
Ownership
where in the system, at any time
Test-Driven
Development
Module or method tests are written
before and during coding
Yes, even the core team is one of users
Feature-Driven
Development
Establish overall architecture and
feature list, then design-by-feature
and build-by-feature
Yes, in the sense that the project is driven
by new features
8 | CMU/SEI-2006-TN-044
Degree Followed
4 Code Life Cycle and Workflow Management
Much of the code in the NENE program library is in maintenance mode, but since NENE is always under continuous enhancement, there is always new development and testing. At any given
time a module in the program library may be from one month to 25 years old. It is important to
the NENE team that any new capability not be allowed to break an old capability. Literally thousands of users rely on the correctness of the core code. The workflow for this project is typical of
the other projects that we have studied, consisting of the following steps:
•
question formulation
•
formulation of development approach
•
code development
•
testing (verification and validation)
•
production
•
analysis
•
hypothesis formulation
(This is not the customary language of software engineering—i.e., requirements gathering, specifications formulation, etc.—but is more descriptive of the actual workflow management process
employed by the projects we have studied.)
The development path through these steps is iterative [Wikipedia 2006]. There is some refactoring of old modules as capabilities are replaced or enhanced. Typically two major releases of
the NENE code occur each year. Approximately six minor releases constitute a major release.
Consequently, the NENE code, like the CONDOR code, has seen dozens of releases in its lifetime. One of the most important drivers of the release schedule is that much of the work is done
by students who need to graduate and post docs and assistant professors who need to publish.
One of our goals in our case studies has been to document the tools used by the code development
teams; for NENE these are summarized in Table 2.
SOFTWARE ENGINEERING INSTITUTE | 9
Table 2:
NENE Life Cycle Management Tools
Code Development Environment
Compilers/Interpreters
Fortran, C
Scripts
C shell
Debuggers
Print+FTNCHEK
Performance Monitoring
NetPIPE, History of Runs (numerical results and
iteration counts, CPU time and parallel scaling)
Editors
Vi, emacs
Development Environments
UNIX, scripts
Execution Environment
Element/Grid Generation
Sets of basis functions
Visualization
Desktop-based in-house tools (Mac, Windows, or
Linux)
Data Analysis
Desktop-based in-house tools (Mac, Windows, or
Linux)
Code Development Process Tools
Configuration Management
manual
Bug Tracking
No formal tools deployed
Code Documentation
User’s manual, code documentation, Web site
Support Libraries
Computational Mathematics
BLAS
Parallel Programming Libraries
In-house API supporting TCP/IP, MPI, LAPI,
SHMEM
The NENE code validation strategy is tied to experiments and data that reside in National Institute
of Standards and Technology (NIST) databases. Like the HAWK team, the NENE team has established a very restrictive metric for the level of agreement between serial and parallel runs of the
same problem. This is one of the few codes in our experience to do this.
There is a very large regression test library available to confirm the proper execution of the many
features of the NENE code.
Within the core team, development is done in batch mode; there is no interactive debugging. The
core team uses the tried-and-true approach of reducing the complexity of the problem to trap
bugs. Another solution is “to use an old computer (an AXP processor) which generates a core
dump on every floating point error—much better than doing a fix-up and trying to run past the
original problem,” according to the NENE Co-PI. Bug logs are listed at the beginning of code
modules. Bugs that are reported by program alumni are taken especially seriously. Some members
of this community analyze the error, identify its likely source, and sometimes even propose a fix.
The NENE core team often develops a scalar version of the capability first, then parallel versions.
10 | CMU/SEI-2006-TN-044
There are now codes in the program library that only exist in parallel versions; they can be run
with just one processor, but are not what a serial implementation would have turned out to be. The
NENE Co-PI made a comment that has been echoed by all of our case study subjects: “Parallel
debugging is difficult” (see Chapter 5, “Lessons Learned,” item f).
SOFTWARE ENGINEERING INSTITUTE | 11
5
Lessons Learned
The NENE case study has reinforced some lessons learned in previous studies and provided some
new ones:
a.
Scientific code teams value “agility” over process; rigid software management approaches
usually are avoided, but planning and adoption of useful software practices are important to
the success of scientific software development projects.
b.
Maintainability and portability are essential.
c.
Risk management is important to the success of technical software development projects—
even those with a research orientation.
d.
Ultimately customers are critical to the long-term success of these codes.
e.
Code teams can function well with a minimum of process so long as there is adequate planning and good communication among team members.
f.
Parallel debugging is hard.
g.
Parallel performance (in fact, performance in general) is driven by the science, and not the
other way around.
h.
The focus of a scientific research code is the need to do new scientific research, not achieve
impressive performance or demonstrate new computer science. The NENE team follows the
words of Voltaire: “The better is the enemy of the good.”
12 | CMU/SEI-2006-TN-044
References
[Agile Alliance 2006]
Agile Alliance. See http://www.agilealliance.com/. URL valid as of January 2007.
[Kendall 2005a]
Kendall, R. P., Jeff Carver, Andrew Mark, Douglass Post, Susan Squires and Dolores Shaffer,
“Case Study of the Hawk Code Project,” LA-UR-05-9011, Los Alamos National Laboratory, November, 2005.
[Kendall 2005b]
Kendall, R. P., Andy Mark, Susan Squires, and Douglass Post, “Case Study of the Condor Code
Project,” LA-UR-05-9291, Los Alamos National Laboratory, December, 2005.
[Kendall 2006]
Kendall, R. P., Jeff Carver, Susan Squires, and Douglass Post, “Case Study of the Eagle Code
Project,” LA-UR-06-1092, Los Alamos National laboratory, August, 2006.
[Post 2005]
Post, D. E., R. P. Kendall and E. M. Whitney, “Case Study of the Falcon Code Project,” 2nd
Workshop on HPC Applications,” ACM/IEEE International Conference on Software Engineering,
St. Louis, MO, May 22, 2005.
[SEI 2006]
Software Engineering Institute, curriculum module.
See http://www.sei.cmu.edu/publications/documents/cms/cm.012.html. URL valid as of January
2007.
[SourceForge 2006]
SourceForge. See http://sourceforge.net/projects/ftnchek/. URL valid as of January 2007.
[Wikipedia 2006]
Wikipedia. See http://en.Wikipedia.org/wiki/Iterative_development. URL valid as of January
2007.
SOFTWARE ENGINEERING INSTITUTE | 13
Form Approved
OMB No. 0704-0188
REPORT DOCUMENTATION PAGE
Public reporting burden for this collection of information is estimated to average 1 hour per response, including the time for reviewing instructions, searching existing data sources, gathering and maintaining the data needed, and completing and reviewing the collection of information. Send comments
regarding this burden estimate or any other aspect of this collection of information, including suggestions for reducing this burden, to Washington Headquarters Services, Directorate for information Operations and Reports, 1215 Jefferson Davis Highway, Suite 1204, Arlington, VA 22202-4302, and to the
Office of Management and Budget, Paperwork Reduction Project (0704-0188), Washington, DC 20503.
1.
2.
AGENCY USE ONLY
(Leave Blank)
3.
REPORT DATE
December 2006
REPORT TYPE AND DATES
COVERED
Final
4.
TITLE AND SUBTITLE
6.
AUTHOR(S)
5.
Case Study of the NENE Code Project
FUNDING NUMBERS
FA8721-05-C-0003
Richard Kendall (Software Engineering Institute); Douglass Post (DoD HPCMPO); & Andrew Mark (DoD
HPCMPO)
7.
PERFORMING ORGANIZATION NAME(S) AND ADDRESS(ES)
9.
Software Engineering Institute
Carnegie Mellon University
Pittsburgh, PA 15213
SPONSORING/MONITORING AGENCY NAME(S) AND ADDRESS(ES)
HQ ESC/XPK
5 Eglin Street
Hanscom AFB, MA 01731-2116
8.
PERFORMING ORGANIZATION
REPORT NUMBER
CMU/SEI-2006-TN-044
10. SPONSORING/MONITORING
AGENCY REPORT NUMBER
11. SUPPLEMENTARY NOTES
12A DISTRIBUTION/AVAILABILITY STATEMENT
12B DISTRIBUTION CODE
Unclassified/Unlimited, DTIC, NTIS
13. ABSTRACT (MAXIMUM 200 WORDS)
The Defense Advanced Research Projects Agency (DARPA) High Productivity Computing Systems (HPCS)
Program is sponsoring a series of case studies to identify the life cycles, workflows, and technical challenges of computational science and engineering code development that are representative of the program’s participants. A secondary goal is to characterize how software development tools are used and what
enhancements would increase the productivity of scientific-application programmers. These studies also
seek to identify “lessons learned” that can be transferred to the general computational science and engineering community to improve the code development process.
The NENE code is the fifth science-based code project to be analyzed by the Existing Codes subteam of
the DARPA HPCS Productivity Team. The NENE code is an application code for analyzing scientific phenomena and predicting the complex behavior and interaction of individual physical systems and individual
particles in the systems. The core NENE development team is expert, agile, and of moderate size, consisting of a professor and another permanent staff member, five post docs, and 11 graduate students. NENE is
an example of a distributed development project; the core team is anchored at a university, but as many as
250 individual researchers have made contributions from other locations.
14. SUBJECT TERMS
15. NUMBER OF PAGES
High Performance Computing, Verification and Validation, Software Project
Management, Case Studies
25
16. PRICE CODE
17. SECURITY CLASSIFICATION OF
18. SECURITY CLASSIFICATION
REPORT
OF THIS PAGE
Unclassified
Unclassified
19. SECURITY
CLASSIFICATION OF
ABSTRACT
20. LIMITATION OF
ABSTRACT
UL
Unclassified
NSN 7540-01-280-5500
Standard Form 298 (Rev. 2-89) Prescribed by ANSI Std. Z39-18
298-102