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
Creating, maintaining, and hosting quality documentation (written text or illustration) about the use, operation, or design of software.
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
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
Approaches for versioning, packaging, releasing, and deploying software, documentation, or data for users to then obtain, install, and use.
See Resources: Release and Deployment
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.
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
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.