This file contains the text of DoD DIRECTIVE 3405.1, Computer Programming Language Policy (Ada IC Point of Contact: Fred Yu) * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Department of Defense DIRECTIVE April 2, 1987 NUMBER 3405.1 ASD(C) SUBJECT: Computer Programming Language Policy References: (a) DoD Instruction 5000.31, "Interim List of DoD Approved Higher Order Programming Languages (HOL)," November 24,1976 (hereby canceled) (b) DoD Directive 7740.1, "DoD Information Resources Management Program," June 20, 1983 (c) DoD Directive 5000.1, "Major System Acquisitions," March 12, 1986 (d) DoD Directive 5000.29, "Management of Computer Resources in Major Defense Systems," April 26, 1976 (e) through (j), see enclosure 1 A. PURPOSE This Directive supersedes reference (a) and supports references (b) and (c) by establishing policy for computer programming languages used for the development and support of all DoD software. B. APPLICABILITY AND SCOPE This Directive: 1. Applies to the Office of the Secretary of Defense (OSD), the Military Departments (including the National Guard and Reserve), the Organization of the Joint Chiefs of Staff (OJCS), the Unified and Specified Commands, the Inspector General of the Department of Defense (IG, DoD), the Defense Agencies, and nonappropriated fund activities (hereafter referred to collectively as "DoD Components"). 2. Covers all computer resources managed under reference (d) or DoD Directive 7920.1 (reference (e)). 3. Need not be applied retroactively to systems that have entered full-scale development or have passed Milestone II of references (c) and (e), and for which a documented language commitment was made in compliance with previous policy. C. DEFINITIONS Special terms used in this Directive are explained in enclosure 2; otherwise, refer to the "American National Dictionary for Information Processing Systems" (reference (f)). D. POLICY It is DoD policy to: 1. Satisfy functional requirements, enhance mission performance, and provide operational support through the use of modern software concepts, advanced software technology, software life-cycle support tools, and standard programming languages. 2. Achieve improvements in DoD software management through the implementation of processes for control of the use of higher order languages, including specification of standards and waiver procedures. 3. Limit the number of programming languages used within the Department of Defense to facilitate achievement of the goal of transition to the use of Ada* (reference (g)) for DoD software development. a. The Ada programming language shall be the single, common, computer programming language for Defense computer resources used in intelligence systems, for the command and control of military forces, or as an integral part of a weapon system. Programming languages other than Ada that were authorized and being used in full-scale development may continue to be used through deployment and for software maintenance, but not for major software upgrades. b. Ada shall be used for all other applications, except when the use of another approved higher order language is more cost-effective over the application's life-cycle, in keeping with the long-range goal of establishing Ada as the primary DoD higher order language (HOL). c. When Ada is not used, only the other standard higher order pro- gramming languages shown in enclosure 3 shall be used to meet custom-developed procedural language programming requirements. The use of specific HOL's shall be based on capabilities of the language to meet system requirements. Guidance in selecting the appropriate HOL to use is provided in NBS Special Publication 500-117 (reference (h)). 4. Prefer, based on an analysis of the life-cycle costs and impact, use of: a. Off-the-shelf application packages and advanced software technology. b. Ada-based software and tools. c. Approved standard HOL's. 5. Consider the potential impact on competition for future software and/or hardware enhancements or replacement when selecting Defense, public domain, or commercially available software packages, or advanced software technology. 6. Use life-cycle management practices, as required by DoD Directive 7920.1 (reference (e)) and DoD Directive 5000.29 (reference (d)), for the development, support, and use of software, whether custom-developed or commercially acquired. 7. Reduce software obsolescence and the cost of software maintenance through use of approved programming languages and appropriate advanced software technology during all phases of the software life-cycle. E. RESPONSIBILITIES 1. The Assistant Secretary of Defense (Comptroller) (ASD(C)) and the Under Secretary of Defense (Acquisition) (USD(A)) shall jointly: a. Ensure that the policy and procedures in this Directive are implemented. b. Assign responsibility to a specific DoD Component to act as the DoD language-control agent for each DoD-approved standard HOL. c. Process nominations for changes to the list of approved HOL's. 2. The Assistant Secretary of Defense (Comptroller) shall: a. For automated information systems, establish programs, as appropriate, for the enhancement of the software engineering process and the transition of such technology from the marketplace and research programs to application within general purpose automated data processing systems. b. Define research and development requirements for automated information systems after consultation with DoD Components and provide such requirements to USD(A) for inclusion in their research and development program. 3. The Under Secretary of Defense (Acquisition) shall: a. Establish and support a software and information technology research and development program that is responsive to the identified needs. b. Manage the DoD Ada program and maintain and Ada Joint Program Office (AJPO) to oversee the maintenance of the Ada language and the insertion of Ada-related technology into the Department of Defense. c. Establish research programs, as appropriate, for the enhancement of software engineering technology and transferring such technology to use in intelligence systems and systems for the command and control of military forces, and to computer resources that are an integral part of a weapon system. 4. The Head of Each DoD Component shall: a. Implement and execute internal procedures consistent with the policy and procedures in this Directive. b. Designate a language-control agent for each approved HOL for which the DoD Component is assigned responsibility and ensure compliance with the procedures in enclosure 4. c. Institute a process for granting waivers to the use of approved HOL's in accordance with section F., below. d. Specifically address in the Component's overall computer resources planning process: (1) The use of appropriate advanced software technology for developing new applications and technological upgrades of existing systems. (2) The current use of assembly languages, nonstandard HOL's, vendor extensions, and enhancements of standard HOL's, and actions taken to ensure that such use is minimized. e. Establish a program for evaluating, prototyping, and inserting advanced software technology into the development, modification, and maintenance process, and hold operational software managers accountable for investment in and migration to advanced software technology for their particular environment. f. Establish and maintain training, education, and career development programs that will ensure that DoD personnel are fully able to use new advanced software technologies. F. WAIVER PROCEDURES 1. Waivers to the policy in subsection D.3., above, shall be strictly controlled and closely reviewed. Authority for issuing waivers is delegated to each DoD Component. a. Each proposed waiver shall contain full justification and shall, at a minimum, include a life-cycle cost analysis and a risk analysis that addresses technical performance and schedule impact. Each waiver granted by the DoD Component shall apply to only one system or subsystem. b. Justification for granted waivers shall be provided to USD(A) or ASD(C) within the scope of their individual responsibilities, as periodically requested for review. 2. A waiver NEED NOT be obtained for use of: a. Commercially available off-the-shelf applications software that is not modified or maintained by the Department of Defense. b. Commercially available off-the-shelf advanced software technology that is not modified or maintained by the Department of Defense. c. Computer programming languages required to implement vendor-provided updates to commercially supplied off-the-shelf software. Use of such languages shall be restricted to implementing the vendor updates. 3. A waiver IS REQUIRED for use of unmodified Defense or public domain software that does not conform to the language requirements of subsection D.3., above. Maintenance of the software shall be specifically addressed in the waiver request to include life-cycle maintenance costs and the availability of source codes and necessary software tools. G. EFFECTIVE DATE AND IMPLEMENTATION This Directive is effective immediately. Forward one copy of implementing documents to the Assistant Secretary of Defense (Comptroller) and one copy to the Under Secretary of Defense (Acquisition) within 120 days. William H. Taft, IV Deputy Secretary of Defense Enclosures - 4 1. References 2. Special Terms and Definitions 3. DoD-Approved Higher Order Programming Languages 4. Procedures for Controllong Higher Order Languages (HOL) *Ada is a Registered Trademark of the U.S. Goverment (Ada Joint Program Office). ------------------------------------------------------------------------------- 3405.1 (Encl 1) REFERENCES, continued (e) DoD Directive 7920.1, "Life Cycle Management of Automated Information Systems (AIS)," October 17, 1978 (f) National Bureau of Standards (NBS) FIPS Publication 11-2, "American National Dictionary for Information Processing Systems," May 9, 1983 (g) ANSI/MIL-STD-1815A-1983, "Ada Programming Language," February 1983 (h) National Bureau of Standards Special Publication 500-117, "Selection and Use of General Purpose Programming Languages," October 1984 (i) DoD 4120.3-M, "Defense Standardization and Specification Program Policies Procedures and Instructions," August 1978, authorized by DoD Directive 4120.3, February 10, 1979 (j) DoD Directive 5010.19, "Configuration Management," May 1, 1979 ------------------------------------------------------------------------------ 3405.1 (Encl 2) SPECIAL TERMS AND DEFINITIONS 1. Advanced Software Technology. Software tools, life-cycle support environ- ments (including program support environments), nonprocedural languages, modern data base management systems, and other technologies that provide improvements in productivity, usability, maintainability, portability, etc., over those capabilities commonly in use. 2. Automated Information Systems. A collection of functional user and automatic data processing personnel, procedures, and equipment (including automatic data processing equipment(ADPE)) that is designed, built, operated, and maintained to collect, record, process, store, retrieve, and display information. 3. Major Software Upgrade. Redesign or addition of more than one-third of the software. ------------------------------------------------------------------------------ 3405.1 (Encl 3) DoD-Approved Higher Order Programming Languages --------------------------------------------------------------------------- | | | | Industry | | Language | Standard Number | DoD Control Agent| Control | | | | | Agent | --------------------------------------------------------------------------- | Ada | ANSI/MIL-STD-1815A-1983 | Ada Joint Program| ANSI | | | (FIPS 119) | Office | | --------------------------------------------------------------------------- | C/ATLAS | IEEE STD 716-1985 | Navy | IEEE | --------------------------------------------------------------------------- | COBOL | ANSI X3.23-1985 (FIPS 21-2) | Air Force | ANSI | --------------------------------------------------------------------------- | CMS-2M | NAVSEA 0967LP-598-2210-1982 | Navy | N/A | --------------------------------------------------------------------------- | CMS-2Y | NAVSEA Manual M-5049, M-5045| Navy | N/A | | | M-5044-1981 | | | --------------------------------------------------------------------------- | FORTRAN | ANSI X3.9-1978 (FIPS 69-1) | Air Force | ANSI | --------------------------------------------------------------------------- | JOVIAL (J73)| MIL-STD-1589C (USAF) | Air Force | N/A | --------------------------------------------------------------------------- | Minimal | ANSI X3.60-1978 (FIPS 68-1) | Air Force | ANSI | | BASIC | | | | --------------------------------------------------------------------------- | PASCAL | ANSI/IEEE 770X3.97-1983 | Air Force | ANSI | | | (FIPS 109) | | | --------------------------------------------------------------------------- | SPL/1 | SPL/1 Language Reference | Navy | N/A | | | Manual, Intermetrics Report | | | | | No. 172-1 | | | --------------------------------------------------------------------------- Note. See NBS Special Publication 500-117 (reference (h)). ------------------------------------------------------------------------------ 3405.1 (Encl 4) PROCEDURES FOR CONTROLLING HIGHER ORDER LANGUAGES (HOL) 1. All Ada compilers that are used for creation of software to be delivered to or maintained by the Government shall be formally validated in accordance with procedures and guidelines set by the AJPO. 2. Each DoD-approved HOL shall be assigned to a DoD language-control agent, as shown in enclosure 3, who shall: a. Have the authority and responsibility for proper support of all language-control activities needed to provide for necessary modification and improvement of the assigned HOL. The agent shall operate in accordance with DoD 4120.3-M (reference (i)). b. Provide configuration control for DoD HOL's in accordance with DoD Directive 5010.19 (reference (j)). For HOL's controlled under industry (e.g.,Institute for Electrical and Electronic Engineers or American National Standards Institute) procedures, the agent shall represent the Department of Defense to the controlling body. c. Maintain a single standard definition of the assigned HOL and make this definition document available as a Federal, DoD, military, or adopted industry standard. The agent shall also gather and disseminate appropriate information regarding use of the HOL, its compilers, interpreters, and associated tools. 3. A DoD Component may nominate a language for removal from the list of approved languages by submitting a justification document, which presents the rationale for the proposed deletion and an impact analysis, to the ASD(C), who will coordinate it with USD(A). 4. A DoD Component may also nominate a language for inclusion on the list of approved languages by submitting a justification document to the ASD(C), who will coordinate it with USD(A). The justification document shall include the following: a. A detailed rationale for using the language, including how the candidate language meets specific DoD requirements that are not satisfied by the approved languages. b. A description of the language and the environment and a detailed unambiguous specification of the language. c. An economic analysis of the impact of the language over its expected life-cycle. d. A detailed plan for implementing and supporting the language, including identification of the DoD Component that will accept designation as control agent for the language. -----------------------------------------------------------------------------