sdl@MBUNIX.MITRE.ORG (Litvintchouk) (04/10/89)
I recently had the need to decipher what DoD Directive 3405.1 ("Computer Programming Language Policy") had to say about 4GL's, database query languages, and database scripting languages (e.g. Hypertalk). It's well known that DoD 3405.1 requires the use of Ada unless a waiver is granted. However, the Directive also contains the following curious statements: "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." Paragraph (a) is self-explanatory. Paragraph (b), however, is interesting. The term "advanced software technology" is defined in Enclosure 2 ("Special Terms and Definitions") as follows: "1. Advanced Software Technology. Software tools, life-cycle support environments (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." If you substitute the words "nonprocedural language or DBMS" for "advanced software technology" in paragraph (b), you get: "2. A waiver NEED NOT be obtained for use of: b. Commercially available *nonprocedural language* or DBMS that is not modified or maintained by the Department of Defense." Some of my colleagues do not agree that even SQL qualifies as a "nonprocedural language"; it really isn't a declarative language in the sense of, say, Prolog. And many other database manipulation languages (e.g. the one that comes with 4th Dimension on the Mac) are definitely procedural. Taken literally, paragraph (b) seems to say that a contractor could write (and deliver to the DoD) a lot of code in Prolog or other nonprocedural languages (SQL?). So long as the *language* (and, I assume, its compilers and interpreters) are not maintained by the DoD, a waiver is not required even if the code implemented in Prolog is to be maintained by the DoD. (I wonder if they really meant to say that, or if this is just bad wording. I wonder what they would do if a contractor really proposed to deliver thousands of lines of Prolog or SQL to the DoD.) Note also that the definition of "advanced software technology" only covers the DBMS, not code written in data base manipulation languages. Paragraph (c) seems self-explanatory. If you have a COTS product that requires extension in a language other than Ada, only vendor-developed extensions are permitted without a waiver. Contractor-developed extensions would still need a waiver. Thus it appears that, say, Hypertalk scripts for manipulation of Hypercard stacks would be exempt from waivers, if the scripts were vendor-supplied and vendor-maintained. A contractor intending to develop scripts to be maintained by the DoD would require a waiver. What makes this rule difficult to apply in practice, is that the mere use or tailoring of some of these packages can automatically generate scripting code. (Examples: adding a button to a Hypercard stack; linking tables in 4th Dimension.) I assume that the entire Hypercard stack will be considered software to be maintained: buttons, scripts and all. Thus does a contractor need an Ada waiver to add a button to a Hypercard stack which is to be delivered to the DoD? In conclusion, DoD Directive 3405.1 does not exempt script and query languages (e.g. Hypertalk), etc., that are bundled with COTS products from needing Ada waivers. The issue remains not the language, but who modifies and maintains the code. Whether it's Fortran, 4th Dimension or Hypertalk, contractor-developed non-Ada code to be maintained by the DoD requires a waiver. The only exemption to this appears to be code written in truly nonprocedural languages (e.g. Prolog). I believe this policy is long overdue for clarification and revision. The policy was not supposed to discourage use of new and innovative software technology. Yet Hypercard, and also some of the very newest, "object-oriented" DBMS's employ object-oriented, procedural query languages, rather than SQL. Even modern spreadsheet programs employ procedural macro languages. Why should their use require an Ada waiver? (A case might be made for having standard query languages and scripting languages--SQL and Rexx are examples--but their standardization should be dealt with in an entirely separate DoD policy directive.) Steven Litvintchouk MITRE Corporation Burlington Road Bedford, MA 01730 (617)271-7753 ARPA: sdl@mbunix.mitre.org UUCP: ...{att,decvax,genrad,ll-xn,philabs,utzoo}!linus!sdl "Ada came at the peak of confidence in computing. We believe the tide is now moving the other way." -- Bernard Carre, University of Southampton and Program Validation, Ltd.