Back to FAQ

DoD DIRECTIVE 3405.1
COMPUTER PROGRAMMING LANGUAGE POLICY
APRIL 2, 1987


NOTE: This directive was cancelled by ASD(C3I) Paige memorandum, "Use of the Ada Programming Language," April 29, 1997, which is now cited in its place in DoD 5000.2-R, Change Three, 23 March 1998.
An update to this directive was drafted in 1996, but never issued. It appeared in Appendix A of the 1997 NRC report "Ada and Beyond".

                            DoD DIRECTIVE 3405.1
                    COMPUTER PROGRAMMING LANGUAGE POLICY
                                APRIL 2, 1987

                            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
programming 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.


NOTE: The AJPO office was transferred to DISA in 1994, and
closed October 1, 1998.
       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 Controlling Higher Order Languages (HOL)


*Ada is a Registered trademark of the U.S. Government (Ada Joint Program
Office).

NOTE: The AJPO Ada Trademark registration was allowed to lapse on November 30, 1987, and is no longer in force.

------------------------------------------------------------------------------
                                                                Apr 2, 87
                                                                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

------------------------------------------------------------------------------
                                                                Apr 2, 87
                                                                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.

------------------------------------------------------------------------------
                                                                Apr 2, 87
                                                                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)).

------------------------------------------------------------------------------
                                                                Apr 2, 87
                                                                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.
-----------------------------------------------------------------------------