Better Development

Improving scientific software development—a process of writing, maintaining, and extending code—in order to increase software productivity, quality, and sustainability, as key aspects of advancing overall scientific productivity.

See Resources: Better Development

Better Development Topics


Creating, maintaining, and hosting quality documentation (written text or illustration) about the use, operation, or design of software.

See Resources: Documentation

Configuration and Builds

Ensuring that users can easily configure, compile, link, test, and interoperate software packages for the various computing environments in which they are needed.

See Resources: Configuration and Builds

Revision Control

Approaches for managing changes to files (source code, documentation, data) as well as maintaining their history and attribution, especially across multiple contributors and branches of development (also known as version control).

See Resources: Revision Control

Release and Deployment

Approaches for versioning, packaging, releasing, and deploying software, documentation, or data for users to then obtain, install, and use.

See Resources: Release and Deployment

Issue Tracking

The process of capturing, reporting, tracking, and managing information about issues related to software. Issues include bugs, feature requests, missing documentation, and other problems and/or requirements.

See Resources: Issue Tracking

Programming Languages

Languages providing syntax and semantics, combined with a large set of libraries, that facilitate writing scientific algorithms and thus are widely used for scientific programming.

See Resources: Programming Languages

Development Tools

Tools that support various aspects of scientific software development, such as editors, integrated development environments, performance measurement and analysis tools, debuggers, memory checkers, and refactoring tools.

See Resources: Development Tools


The process of improving internal attributes of a software product (e.g., readability, maintainability, data structures for efficient performance) without modifying any of its existing external functionality.

See Resources: Refactoring