Better Development

Aspects of scientific software development that should be systematically addressed in order to improve software productivity, quality, and sustainability.

Software development is a process of writing, maintaining, and extending source code to create software products. In a broad sense, software development includes all that is involved between the conception of the software through to the final manifestation of the software.

See Resources: Better Development

Better Development Topics


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

See Resources: Refactoring

Software Engineering

Procedures and considerations for developing well-engineered, reliable and maintainable software.

See Resources: Software Engineering

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

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


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

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

Programming Languages And Tools

Programming languages as well as tools that support various aspects of software development, such as editors, integrated development environments, performance measurement and analysis tools, and memory checkers.

See Resources: Programming Languages And Tools