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

Version Control

Management of changes to files. Also known as revision control, source control, or source management.

See Resources: Version Control

Configuration And Builds

Installing scientific software from source requires a system for setting up (configuring) software to compile and link (build) the code according to the user's specific platform and needs.

See Resources: Configuration And Builds

Documentation

Written text or illustration that accompanies computer software to explain how it operates or how to use it.

See Resources: Documentation

Software Engineering

Procedures and considerations for getting a well engineered, reliable and maintained software.

See Resources: Software Engineering

Refactoring

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

Development Tools

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

See Resources: Development Tools

Issue Tracking

The process of managing a collection of issues (bugs, feature requests, missing documentation, etc.) that are currently being handled, or should be handled, by a software development team.

See Resources: Issue Tracking

Software Distribution

Making software available to users and related activities. This could involve providing users with an installer, deploying the software on systems where the users can access it, or a combination of both.

See Resources: Software Distribution