The Software Development Process is the structured approach to developing software for a system or project. There are a number of approaches (see Software Development Approaches) that can be used to include waterfall, spiral and incremental development. These different approaches will focus the testing effort at different points in the development process. However, each is approach composed of the same basic steps of development and is better implemented by using Best Practices.
Definition: Software best practices are a set of guidelines, standards, lessons learned, and rules that represent the most efficient course of action in developing, using, or modifying software.
Software System Best Practices
The following are best practices detailed in the Defense Acquisition Guidebook (DAG) in Chapter 4.4.16 for software systems but also could be applied in general to any system: 
- Viewing the software “content,” particularly complex algorithms and functional flows, as enabling technologies requiring maturation and risk reduction before Milestone B,
- Developing architectural-based software systems that support open system concepts,
- Exploiting Commercial off-The-Shelf (COTS) computer systems products,
- Allowing incremental improvements based on modular, reusable, extensible software,
- Identifying and exploiting, where practicable, government and commercial software reuse opportunities before developing new software,
- Selecting the Programming Language in context of the systems and software engineering factors that influence system performance, overall life-cycle costs, risks, and the potential for interoperability,
- Using DoD standard data and following data administrative policies in DoD Directive 8320.02,
- Selecting contractors with domain experience in developing comparable software systems, successful past performance, and demonstrated commitment to the disciplined software development process.
- Assessing information operations risks (see DoD Directive 3600.01) using techniques such as Program Support Reviews (PSR),
- Preparing for life-cycle software support or maintenance by planning early in the system life cycle for the transition of fielded software to the support/maintenance activity, developing or acquiring the necessary documentation, host systems, testbeds, and computer-aided software engineering tools consistent with planned support concepts,
- Tracking COTS software purchases and maintenance licenses, and
- Performing system safety engineering tasks on safety-critical systems to reduce the safety risk in all aspects of a program, including the software system safety (SSS) activities involving the design, code, test, Independent Verification and Validation (IV&V), operation & maintenance, and change control functions of the software engineering development process.
Program Manager Best Software Best Practices
The Program Manager (PM) should structure a Software Development Process to recognize that emerging capabilities and missions will require modification to software over the life cycle of the system. To deliver truly state-of-the-software, this process should allow for periodic software enhancements. 
Best Practices for Non-Developmental Software (NDS)
When contemplating the use of Non-Developmental Software (NDS), consider the following: 
- Ensure decisions to use NDS are based on and are traceable to validated system architecture and design requirements.
- Include appropriate NDS activities in the program Integrated Master Plan (IMP) / Integrated Master Schedule (IMS).
- Evaluate all proposed NDS to the extent possible at the start of the development
- Establish configuration control procedures to address NDS integration, upgrades, and changes throughout the system life cycle.
- Assess suitability and manage technical risk inherent in NDS during the system development phase. · Address security/assurance concerns with COTS software.
- Track COTS software purchases and maintenance licenses.
AcqLinks and References:
-  Defense Acquisition Guidebook (DAG) – Chapter 4
- USAF Weapon Systems Software Management Guidebook
- Open Technology Development (OTD): Lessons Learned & Best Practices for Military Software – 16 May 2011