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.
The process of improving internal attributes of a software product (e.g. readability, maintainability) without modifying any of its existing external functionality.
Procedures and considerations for developing well-engineered, reliable and maintainable software.
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).
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.
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.
Approaches for versioning, packaging, releasing, and deploying software, documentation, or data for users to then obtain, install, and use.
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.