Providing expertise in software engineering informed by integrating researchers with software engineers means PNNL scientists can spend more time solving complex scientific problems, observing behaviors computationally that cannot be probed experimentally, with less time worrying about software development. PNNL provides guidance on the software process and quality activities expected of internally developed scientific software. Scientific software is properly engineered and validated. Thus, the research is repeatable, the software extensible, and the products usable.
Research and Scientific Software
PNNL offers expertise for developing scientific software solutions in many areas. By training scientists in the fundamentals of software engineering, our research produces more robust scientific software.
Scientific software engineers implement various models to solve research problems. This development expertise applies to many different types of modeling, including graph algorithms, combinatorics, quantum computing, uncertainty quantification, and multiscale modeling, to name a few. By engineering software developed for these models, the software can be used for years and built upon for further research.
Software is developed for ingesting and adding value to raw data coming off live instruments. This software is designed for performance—to keep up with production instrumentation data. Software engineers take advantage of scalable data storage with technologies, such as DynamoDB on Amazon Web Services.
Software engineers develop client and web applications for custom data management. When available, they employ open-source software. They also have expertise in OpenStack (Infrastructure as a Service) for horizontal scaling of data applications—sometimes in the cloud or on a cluster.
System and Analytic Tools
Technology innovation to support science is the goal. Experts in system administration help scientists optimize codes to run faster, affording additional computational runs for the allotted cluster time. Software engineers working closely with domain scientists take commercial off-the-shelf (COTS) or open-source software and add capabilities in new areas, extending the productivity of scientific tools. Developers leverage standards and technologies in communities of interest and influence standards going forward. They are active in use-case development in working groups for standards in the World Wide Web Consortium (W3C).
Production Software Solutions
Expertise and solutions for assuring the viability of software, including:
- Software Architectures
- Systems Integration
- Automated, Manual, and Exploratory Testing
- Visual Analytics
- Data Sciences and Analytics
- Cyber Security.
Software Platforms and Technologies
PNNL software engineers can target a multitude of platforms, including:
- Android, Windows, and Apple Mobile Applications
- Embedded Software and Sensors
- Reactive Web Applications
- Azure and Amazon Web Services Cloud-based Architectures
- Traditional Database or NoSQL Data-driven Applications.