-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathdsb-report.tex
2808 lines (2217 loc) · 135 KB
/
dsb-report.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
\documentclass[11pt,final]{article}
\usepackage{fontspec}
\usepackage[final]{microtype}
\usepackage[margin=1in]{geometry}
\usepackage{multicol}
\usepackage{chngcntr}
\usepackage{url}
\usepackage{pdflscape}
\usepackage{setspace}
\usepackage[shortlabels]{enumitem}
\setmainfont[Ligatures = Common]{TeX Gyre Bonum}
% Emulate table numbering per section. Unfortunately we can't let latex
% auto-number the table despite this because the table numbers in the original
% report do not correspond precisely to the section they are in (e.g. Table 9.1
% is in Section 10 and Table 7.1 is in Section 8). So we use counterwithin*
% instead of counterwithin and manually adjust the section ID in affected
% sections to result in the appropriate table ID :(
\counterwithin{table}{section}
\begin{document}
\tableofcontents
\thispagestyle{empty}
\newpage
\pagenumbering{arabic}
\title{Report of the Task Force on Military Software}
\author{Defense Science Board}
\date{September 1987}
\maketitle
\emph{NOTE: This is a converted version of the original report. See note below.}
\footnote{This report is an adapted version of the original report from
\url{https://apps.dtic.mil/dtic/tr/fulltext/u2/a188561.pdf} which has been
semi-automatically converted to a computer-readable form for ease of access and
reference in this modern Internet-based ecosystem. The conversion was performed
by Michael Pyne. He worked with some level of care but may not have caught all
transcription errors.}
\section{Executive Summary}
Many previous studies have provided an abundance of valid conclusions and
detailed recommendations. Most remain unimplemented. If the military software
problem is real, it is not perceived as urgent. We do not attempt to prove
that it is; we do recommend how to attack it if one wants to.
We do not see any single technological development in the next decade that
promises ten-fold improvement in software productivity, reliability, and
timeliness. There are several technical developments under way which together
can be expected to yield one order of magnitude, but not two. Few fields have
so large a gap between best current practice and average current practice; we
concur with the priorities that DoD has given to upgrading average practice by
more vigorous technology transfer.
Current DoD initiatives in software technology and methodology include the Ada
effort, the STARS program, DARPA’s Strategic Computing Initiative, the
Software Engineering Institute, and a planned program in the Strategic Defense
Initiative. These five initiatives are uncoordinated. We recommend that the
Undersecretary of Defense (Acquisition) establish a formal program
coordination mechanism for them, (Rec. \#2).
The big problems are not technical. In spite of the substantial technical
development needed in requirements-setting, metrics and measures, tools, etc.,
the Task Force is convinced that today’s major problems with military software
development are not technical problems, but management problems. Hence we call
for no new initiatives in the development of the technology, some modest shift
of focus in the technology efforts under way, but major re-examination and
change of attitudes, policies, and practices concerning software acquisition.
\addcontentsline{toc}{subsection}{STARS}
\subsection*{STARS}
The DoD program for Software Technology for Adaptable, Reliable Systems,
STARS, has made little progress in recent years and has had vague and
ill-focused plans for the future. Service support and enthusiasm is lacking.
Yet it is very important that such a project-independent methodology
development effort proceed. We recommend that the STARS Joint Program Office
be moved from the Office of the Secretary of Defense to the USAF Electronic
Systems Division. (Rec. \#1) We recommend that a general officer be given
responsibility for STARS, the Ada Joint Program Office, and Software
Engineering Tnstitute (whose contracting office is already in ESD). Deputies
from the other Services should be appointed.
\addcontentsline{toc}{subsection}{Ada}
\subsection*{Ada}
It is very important for DoD to have a standard programming language; Ada is
by far the strongest candidate in sight. The 1983 mandate for Ada was
technically premature. DoD commitment to Ada since that time has been weak.
The state of Ada compiling technology is now such that it is time to commit
vigorously and wholeheartedly. The directives 3405.1 and 3405.2 are right
first steps - management follow-through on enforcement and support is now
essential.
Ada embodies and facilitates a set of new approaches to building software,
generally known as “modern software practices.” We expect these practices,
rather than yet another programming language, to make a real difference in
software robustness, reusability, adaptability, and maintenance. Ada is not
the only conceivtble vehicle for such practices, but if is here, it has been
tailored for the embedded software problem, and multiple compilers have- been
validated. We recommend against further waiting, language tuning, or
subsetting.
Achieving the benefits of modern programming practices requires the development of
unified programming environments. This work must continue to be pushed forward.
Few program managers will want to take on the headaches of being first user of a new
tool, yet it is essential that all major new programs be committed to that tool if it is to
be effective. Only top-level DoD commitment and mandate can make that happen.
We commend AJPO for its technical success in establishing the language definition and
language validation procedures. We recommend that it be moved from OSD to a unified
software joint program office in the USAF Electronic Systems Command (Recs. \#6,7).
\addcontentsline{toc}{subsection}{Acquisition}
\subsection*{Acquisition}
\paragraph{Mileu.} The civilian software market has exploded in the past decade, so that the total
civilian market for purchased software, not counting in-house-built application software, is
now more than ten times larger than the DoD market. This requires a radical update in
much DoD thinking. Some implications:
\begin{enumerate}
\item DoD can no longer create de facto standards and enforce them on the civilian market,
as it was able to do with COBOL.
\item DoD must not diverge too far from whatever the civilian market is doing in programming methodology, else it will have to support its own methodology by itself, with little
resource or training commitment from others. (The same thing is true of processor
architectures.)
\item DoD should be aggressively looking for opportunities to buy, in the civilian market,
tools, methods, environments, and application software. Whenever it can use these
instead of custom-built software, it gets big gains in timeliness, cost, reliability,
completeness of documentation, and training. But today’s acquisition regulations
and procedures are all heavily biased in favor of developing custom-built software
for individual programs.
\end{enumerate}
\paragraph{Life-cycle model.} DoD Directive 5000.29 and STD 2167 codify the
best 1975 thinking about software, including a so-called “waterfall” model
calling for formal specification, then request for bids, then contracting,
delivery, installation, and maintenance. In the decade since the waterfall
model was developed, our discipline has come to recognize that setting the
requirements is the most difficult and crucial part of the software building
process, and one that requires iteration between the designers and users. In
best modern practice, the early specification is embodied in a prototype, which
the intended users can themselves drive in order to see the consequences of
their imaginings. Then, as the design effort begins to yield data on the cost
and schedule consequences of particular specifications, the designers and the
users revise the specifications.
Directive 5000.29 not only does not encourage this best modern practice, it
essentially forbids it. We recommend that it be revised immediately to mandate
and facilitate early prototyping before the baseline specifications are
established (Rec. \#23).
DoD-STD-2167 likewise needs a radical overhaul to reflect best modern practice.
Draft DoD-STD-2167A is a step, but it does not go nearly far enough. As
drafted, it continues to reinforce exactly the document-driven,
specify-then-build approach that lies at the heart of so many DoD software
problems.
For major new software builds, we recommend that competitive level-of-effort
contracts be routinely let for determining specificatlons and preparing an
early prototype (Rec. \#26). The work of specification is so crucial, and yet
its fraction of total cost is so small, that we believe duplication in this
phase will save money in total program cost, and surely save time. After a
converged-specification has been prepared and validated by prototyping, a
single competitively-bid contract for construction is appropriate.
\paragraph{Incentives.} Defense procurement procedures discourage contractor
investment in the development of new software methodology. Any such contractor
investment made today promises low return. We recommend that the DoD
rights-in-data policy be revised to distinguish software rights from other
rights, and that the policy as it applies to software be designed to encourage
contractor investment, both with private and IRD funds, in tools, methods, and
programming environments (Recs. \#17-22).
Similarly, today’s policies actively discourage the reuse of software modules
from one system in another. We recommend a variety of policy changes, each
designed to encourage reuse, and indeed, the establishment of a public market
in reusable software parts (Recs. \#29-33).
\addcontentsline{toc}{subsection}{Personnel}
\subsection*{Personnel}
It appears that the number of software-qualified military officers has been
essentially constant over the past decade, despite exponential growth in
software. Many studies have recommended actions that need to be taken re
training, specialty codes, career paths, etc., to address the shortage of
uniformed specialists. Some of these have been taken. Nevertheless, the number
has not increased.
We doubt that it will. The powerful civilian demand for such persons will, we
expect, continue to drain them away from the Services as fast as they reach
first retirement age, or before. % the PDF is missing the word prior to
% 'before', I believe it is 'or'
Therefore we recommend that the Services now assume that there will not be more
such people, and concentrate effort on how best to use those they have (Rec.
\#34). The application-knowledgeable, technically skilled leaders are the
military’s limiting resource in using today’s computer technology.
We observe that in the best military software programs, the number of customer
software people engaged in the acquisition and program oversight approximates
10\% of the number of contractor personnel. This number does not seem too high.
Few program offices are staffed so well, however, largely due to the shortage
of qualified people. Meanwhile one observes some substantial software-building
efforts under way within the Services, usually done by a combination of
civilian and uniformed personnel, generally managed by software-qualified
officers. This is a second-best use of the available specialist officers.
We recommend phasing out this practice and concentrating the available
knowledgeable officers on acquisition (Rec. \#35). We see no other way that the
exponential growth in needed military software can be met.
\section{Introduction}
\subsection{The Charge to the Task Force}
\subsubsection*{Abbreviated Terms of Reference, (Appendix A2 contains the full text)}
\begin{enumerate}[A.]
\item Assess and unify various recent studies.
\item Examine why software costs are high.
\item Assess STARS for military software; discuss the priority of its components.
\item Recommend how to enlist industry, Service, and university efforts in a productivity thrust.
\item Assess STARS, etc., for U.S. international competitiveness.
\item Recommend how to apply R\&D funds to get the most increase in military software capability.
\item Recommend how to implement an incremental and evolutionary approach to (F).
\item Assess the wisdom of the Ada plan, especially in view of “Fourth-Generation” languages.
\end{enumerate}
\subsubsection*{What the Task Force Did Not Address}
\paragraph{Problem Seriousness Sizing.} It would be presumptuous, and appear to
be self-serving as well, for this Task Force to tell the Service commanders and
the DoD civilian authorities that your mission-critical software problem ranks
high on your present or future critical problem list. Other studies have sized
the cost and recounted software-caused delays and system malfunctions. Your own
experience will have to put this problem into proper perspective among all your
difficulties.
What the Task Force is qualified to do for you is to
\begin{itemize}
\item characterize software, its problems, and its technology
\item identify trends that will, in the course of time, make today’s
problems worse or better,
\item suggest actions to address today’s problems and avert tomorrow’s
calamities.
\end{itemize}
\paragraph{Non-Mission-Critical Software.} The Task Force largely limited
itself to mission critical systems, those wherein military software most
differs from civilian-market software. Our recommendations with respect to
procurement, however, apply to all DoD acquisition of software. In Section
\ref{sec:civ-market} we categorize DoD software according to the degree to
which it must be non-standard because of its military function.
\paragraph{Service-Specific Personnel Problems.} We did not address
Service-specific personnel and skills problems. These have been adequately
addressed in earlier studies. The career path and skills-retention problems
continue to be very real in all the Services.
\paragraph{SEI.} We did not review the Software Engineering Institute, other
than to hear a briefing on its objectives. It was in the process of being
established and finding a permanent director during our study; any review would
have been premature.
\paragraph{SDI.} The same was true of the SDI plan for developing software
methodology. At the time we were briefed by the SDI office, there was no plan
to review.
\paragraph{SCI.} We had only one briefing on the DARPA software methodology
efforts encompassed within the Strategic Computing Initiative. These efforts
are properly aimed at producing results a decade hence. The approaches are
sufficiently bold that little in the way of directly applicable short- and
mid-term results can be expected.
\paragraph{New Technological Initiatives.} We do not recommend any new
initiatives or funding for new specific research or technology-development
programs. We support the recent technological initiatives, but today’s major
unaddressed problems are not technical, but managerial.
\subsection{Military Software}
\paragraph{Role.} Software plays a major role in today’s weapon systems. The
“smarts” of smart weapons are provided by software. Software is crucial to
intelligence, communications, command, and control. Software enables
computerized systemns for logistics, personnel, and finance. The chief
“military software problem” is that we cannot get enough of it, soon enough,
reliable enough, and cheap enough to meet the demands of weapon systems
designers and users. Software provides a major component of U.S. war-fighting
capability.
\paragraph{Growth.} DoD software-intensive systems have grown exponentially,
reaching an annual software expenditure level in mission-critical computer
systems of about \$9 billion in 1985, with projections of \$30 billion annually
by 1990 [Taft, 1985]. This continuing growth has strained the ability of the
DoD to manage their development. Because software controls system function,
deficiencies in software development affect over-all weapon system performance
and cost quite out of proportion to the software cost itself.
\paragraph{Like Civilian Software.} Military software is fundamentally like
advanced civilian software, only more so. That is, the properties of real-time
operational software in civilian banking, airline reservations, or process
control, are the same as those of weapon-system software. Big civilian
database and file systems look essentially like the military logistics,
finance, and personnel software. In the operation of a ship or a base, one
finds many small computers whose tasks are essentially the same as those in
civilian businesses.
\paragraph{Only More So.} Mission-critical military software is more
universally real-time, communications-oriented, and resource-constrained than
its civilian counterparts. At any given time, the demands of weapon systems
stress the state of the software art more severely than do civilian demands.
\paragraph{Timeliness and Reliability.} Although the cost of military software
is commonly seen as the major problem, and is emphasized in our Terms of
Reference, both previous studies and our briefers suggest that software
timeliness and reliability are even more critical problems today.
Software development cycles are long, relatively unpredictable, and come at the
end of total weapon system development. Thus they frequently encounter delays,
delays usually on the critical path to operational capability. It also takes
too long to adapt running software to changing hardware or operational
requirements.
Software reliability is equally of concern. Since operational software is
complex, it usually contains design flaws, and these are hard to find and often
painful in effect.
\paragraph{Requirements-Setting Is The Hardest Part.} As is true for complex
hardware systems, the hardest part of the software task is the setting of the
exact requirements, including numbers for size and performance, and including
the relative priorities of different requirements in the designers’ inevitable
trade-offs.
We have no technology and only poor methodologies for establishing such
requirements. There are not even good ways in common use for even
\emph{stating} detailed requirements and trade-off priorities. Misjudgements in
requirements badly hurt effectiveness, cost, and schedule. Such misjudgements
abound. Most common is the specification of over-rich function, whose bad
effects on size and performance become evident only late in the design cycle.
Another common error is the mis-imagination of how user interfaces should work.
In our view the difficulty is fundamental. We believe that users \emph{cannot},
with any amount of effort and wisdom, accurately describe the operational
requirements for a substantial software system without testing by real
operators in an operational environment, and iteration on the specification.
The systems built today age just too complex for the mind of man to foresee all
the ramifications purely by the exercise of the analytic imagination.
This inherent difficulty is unnecessarily compounded in DoD by the presence of
too many intermediaries between the ultimate user and the software specifier.
\paragraph{The Big Problems Are Not Technical.} In spite of the substantial
technical development needed in requirements-setting, metrics and measures,
tools, etc., the Task Force is convinced that today’s major problems with
military software development are not technical problems, but management
problems. Hence we call for no new initiatives in the development of the
technology, some modest shift of focus in the technology efforts under way, but
major re-examination and change of attitudes, policies, and practices
concerning software acquisition.
\subsection{Why Is Software Technology Developing So Slowly?}
Participants and observers in the computer game often marvel that the software
technology develops so slowly, especially in comparison with computer hardware
technology. In our Terms of Reference we are charged with examining the
underlying nature of the software process so as to explain high costs and slow
development.
\subsubsection*{Hardware Technology Is So Fast.}
The remarkable fact is not the slow rate of development of computer software
technology, but the fast rate of hardware technology, a fact especially
striking to those of us who do both. Today’s hardware offers at least a
10,000-fold gain in price-performance over that of 30 years ago, and one can
choose at least 1000-fold of that gain in either price or performance! No other
technology has come even close to that rate of development. It reflects the
shift of computer hardware from an assembly technology to a process technology.
\subsubsection*{Software Is Labor-Intensive.}
Software development is and always will be a labor-intensive technology. The
work and the time is all in development, not production. Development is always
labor-intensive. Moreover, in the ultimate, one is developing conceptual
structures, and although our machines can do the dog-work and can help us keep
track of our edifices, concept development is the quintessentially human
activity.
\subsubsection*{The Essence Is Designing Intricate Conceptual Structures Rigorously.}
In Appendix A5, we analyze the software task. We argue that its essence is the
designing of intricate conceptual structures, rigorously and correctly. The
part of software development that will not go away is the crafting of these
conceptual structures; the part that can go away is the labor of expressing
them. The task is made more difficult by three other properties of software
products: (1) the necessity for them to conform to complex environmental,
hardware, and user interfaces; (2) the necessity for them to change as their
interfaces change; (3) and the invisibility of the structures themselves.
We believe a significant fraction of software development effort today is
expended on this essential labor, rather than on the task of expressing the
designs.
\subsubsection*{The Removal of Expression Difficulties Has Brought Much of the Past Gain.}
The essential labor itself has not always taken most of the effort. Much of the
work was formerly spent on non-essential, incidental difficulties in the
expression of the conceptual structures. The three big breakthroughs in
software methodology each have consisted of removing one of these incidental
difficulties.
First was the awkwardness of machine language. High-level languages removed
this difficulty and improved productivity ten-fold.
Second was the loss of mental continuity occasioned by slow turn-around batch
compilation and execution. Time-sharing removed this difficulty, improving
productivity 2-5 times.
Third was the utter incompatibility of files, formats, and interfaces among
various software tools. Integrated programming environments such as Unix and
Interlisp overcame this difficulty, again doubling (or better) productivity.
\subsubsection*{What’s In the Cards?}
There are stll non-essential expression difficulties, but they do not account
for most of the development effort in modern software shops. Future
methodological imprcvements will have to attack the essence - conceptual design
itself.
Examination of the most promising technological developments shows no single
technique that can be expected to yield as much as a 10-fold improvement in
productivity, timeliness, and robustness in the next ten years.
On the other hand, all of the various technological developments on the horizon
together should easily yield a 10-fold improvement in the next decade. It is
not likely that all those developments together will yield a 100-fold
improvement.
\subsection{Current Software Trends}
Five developments in the past decade have revolutionized the software scene.
DoD software practices evolved in the 60s and 70s, and they neither take
into account nor utilize these advances.
\subsubsection*{The Microcomputer Revolution and the Personal Computer}
The microcomputer, both as a component, and by its incorporation into personal
computers, has totally changed the computer field and the software field. Every
procedure for computer acquisition, etc., must now define a floor in machine
size below which it is not applicable, and machines below the floor should be
treated as commodities, components, and spare parts. (Not all procedures have
yet been so revised.)
Obviously software standards such as the Ada mandate must have such a floor as
well. The constraints on embedded microprocessors are such that their
software often must be in machine language. We do not address microprocessor
software.
We likewise do not deal with the software problems of personal computers. DoD,
like every large enterprise, needs some standards as to how such machines are
to be supplied, how they will be equipped with standard-function programs, and
how they are to interchange information. Such standardization should be
minimal and light-handed. We should not recommend that the Ada mandate cover
personal computers. % the word 'should' is hard to read but I think I see the 's'
America’s greatest comparative military advantage is the individual initiative
and ingenuity of our Service people. We are therefore greatly encouraged to see
the Services making personal computers readily available to individual units so
that individuals can solve their own simple computing problems their own way. A
personal computer and an electronic spread sheet make a powerful combination,
sufficient for countless tasks.\footnote{Jones and Brooks had the opportunity
to observe a Blue-Flag simulated Air Force-Army-Marine tactical exercise. We
saw a number and variety of personal computers that have been integrated
effectively into unit operational functions; we were pleased to see a light
dependence on massive computer systems.}
\subsubsection*{A Mass Market for Software}
The personal computer revolution has explosively fueled the development of a
mass market for third-party developed software. This is the most important
development in the software field in our time.
Each of several computer architectures (the properties of a computer that
determine what programs it will run) define a market. The biggest are those for
IBM PC-compatibles, Apple-compatibles, Macintosh, DEC VAX-compatibles,
Unix-compatibles, and IBM 370 compatibles. For each of these markets literally
hundreds of packages are available, covering an immense spectrum of functions
and costing from a few dollars to a few hundred thousand. The markets are
fiercely competitive.
\subsubsection*{Technology for Software Modularization and Reuse}
Techniques for designing software in little modules, for defining the module
interfaces precisely, and for using common file formats have come into standard
use during the decade. These methods, the backbone of so-called “modern
programming practices”, radically improve the structure and adaptability of
large programs. They also define modules, whose reuse often costs one-tenth as
much as writing another module to do the same function. Reuse is also much
quicker, and it yields better tested, more reliable code.
The Ada programming language is designed to make such modularization natural,
and to provide very powerful facilities for linking modules. Integrated
programming environments, such as Unix, provide the same kind of facility at
another level, that of the shell-script linking whole programs together.
\subsubsection*{Rapid Prototyping and Iterative Development}
As people have recognized that the requirements, and especially the user
interface, require iterative development, with interspersed testing by users,
there has developed a technology for constructing “rapid” prototypes. Such a
prototype typically executes the main-line function of its type, but not the
countless exceptions that make programming costly. It usually does not have
complete error-handling, restart, or help facilities. The prototype is often
built using a lash-up of handy components that swap performance for rapid
interconnect ability. It is usually run on a computer that is bigger and faster
than the target machine.
Commercial packages enable one to prototype graphics interfaces, for example,
so that user testing can be done quite early in the development.
\subsubsection*{Professional Humility and Evolutionary Development}
Experience with confidently specifying and painfully building mammoths has
shown it to be simplest, safest, and even fastest to develop a complex software
system by building a mninimaal version, putting it into actual use, and then
adding function, enhancing speed, reducing size, etc., according to the
priorities that emerge from the actual use. Software engineers must recognize
that we cannot specify mam~moths right the first time. In practice, Version 2
is usually under development before Version 1 is delivered, so Version 3 may be
the first to be affected by actual experience.
This procedure speeds first delivery. It also provides for the iterative
setting of requirements. It minimizes the specification of heavy function whose
performance penalties have not yet been weighed. It tends to concentrate
development effort where it will make the most difference. Seeing the minimal
version run does wonders for the morale of the development team and
substantially boosts their communication as to further development.
Evolutionary development is best technically, and it saves time and money. It
plays havoc with the customary forms of competitive procurement, however, and
they with it. Creativity in acquisition is now needed.
\subsection{Current DoD Programs on Software Technology}
Besides some substantial efforts in individual Service laboratories, DoD has
under way five programs aimed at enhancing software methodology:
\paragraph{STARS.} The program for Software Technology for Adaptable, Reliable
Systems, managed by the Undersecretary of Defense (Acquisition), was started in
ii80 to address all aspects of modern software methodology as applied
especially to mission-critical computer systems.
\paragraph{ADA.} The Ada program, managed by the Ada Joint Program Office under
the Under\-secretary of Defense (Acquisition), was started in 1975 to define
and develop a standard high-level language suitable for embedded computer
systems.
\paragraph{Software Engineering Institute.} Founded in 1964, the SEI mission is
focused on technology transfer - bringing the best modern methodology into
actual practice in the Services and among DoD contractors. The SEI is operated
by Carnegie-Mellon University under contract from the USAF Electronic Systems
Command.
\paragraph{Strategic Computing Initiative.} A software component under the
DARPA Strategic Computing Initiative is aimed at developing radically new
methods and tools, especially those based on expert systems and other
artificial intelligence techniques. The program aims at results a decade ahead
of modern practice.
\paragraph{Strategic Defense Initiative.} A software component under the
Strategic Defense Initiative is aimed at providing methodological advances for
the building of the massive distributed, ultra high performance software system
demanded by the SDI.
\subsection{Recent Previous Studies}
The Task Force reviewed the available studies done since 1982, starting with
the monumental 1982 Druffel study, which in turn summarized the results of 26
previous studies. Appendix A4 lists the recent ones.
To a surprising degree, the conclusions of these studies agree with each other
and remain valid; the recommendations continue to be wise. The chairmen of the
several study groups briefed us. All had one message: very little action, has
been taken to implement the recommendations. If the military software problem
is real, it is not perceived as urgent by most high military officers and DoD
civilian officials. Our Task Force does not undertake to prove that it is
urgent; we do tell how to attack it if one wants to.
\section{STARS -- Software Technology for Adaptable, Reliable Systems}
The STARS program objective is to achieve by 1995 a dramatic improvement in our
ability to build reliable, cost-effective defense software by applying known
new technology. STARS seeks improvement in methods, techniques, tools,
personnel practices, and business practices.
The Task Force examined the STARS program on several occasions during the past
two years. The program is floundering. Little has been achieved during the last
several years. OSD management has recognized the problems, and some remedial
steps are under way. It is too early to tell if these steps will work.
\subsection*{Findings}
\subsubsection*{STARS as originally formulated is a very good idea.}
Members of the Task Force do not expect to see dramatic near-term research
discoveries. However, many incremental improvements in software engineering
have been made over the last decade, and will continue to be made. These
advances could improve our war-fighting capability if they were practiced in
DoD programs now. STARS can accelerate their application.
\subsubsection*{OSD has not provided the vital leadership needed; until recently
STARS has lacked a director with strong technical and management ability.}
The program had no permanent program manager for over a year. Consequently, it
lacked leadership, guidance, and vitality. There has been no single vision of
program objectives, no coordination of spending, no monitor to ensure that
components of the program were complementary, and no assurance that the program
acted in response to the software problems of the Services. Strong top-down
leadership, both technical and administrative, is required. A new, permanent
director has recently been appointed.
\subsubsection*{The program plan has been fuzzy.}
The Task Force had difficulty in identifying specific goals or plans to achieve
them. The program plan does not even recognize the existence of some major
software trends, such as the personal computer revolution. STARS should enable
solutions, not develop them from first principles. It should identify possible
technical approaches and tools, harness the marketplace capability to produce
solutions, and ensure early application to real mission-critical system
developments.
The STARS Program as it stands today has become focussed at a particular,
well-defined part of the military software problem—custom systems, new or
converted, middle-sized to large, whether embedded or command and control.
STARS addresses follow-through software engineering support for ADA software.
This focusing is entirely commendable and beneficial; indeed, it was badly
needed. A corollary is that the problems STARS does not address have also
become clear. They include:
\begin{itemize}
\item personal computers, workstations, and little software systems built on them
\item acquisition of off-the-shelf commercial software
\item supercomputer calculations (still and perhaps forever in FORTRAN)
\item old systems not worth converting
\end{itemize}
To enumerate these is not to criticize the STARS program. It never really could
address all the problem; it only claimed to do so as long as it was fuzzy and
unfocussed.
\subsubsection*{Balance between program elements has been missing.}
Devising a single software engineering environment dominates the attention of
the program. In contrast, emphasis on multiple possible environments, even some
that are off-the-shelf, would serve the objectives better. Most of what the
STARS program proposes to deliver is scheduled very late in its lifetime. Early
operational milestones would better speed transfer of the technology to the DoD
and civilian practitioners.
\subsubsection*{The program is organized as uncoordinated activities; many are executed
by part-time volunteers.}
An independent committee explores each activity area; little communication
relates the committee actions. For example, there is insufficient integration
of the activities of the business practices area with each of the technical
areas.
\subsubsection*{STARS needs better coordination with the Services, the Software
Engineering Institute, AJPO, DARPA’s Strategic Computing Program and the
Strategic Defense Initiative.}
All these programs have interlocking interests and development programs. Links
have not been carefully established for the input of Service needs into STARS
planning and the output of STARS back to the Services.
It is difficult to get the needed funds allocated for software engineering; if
STARS is terminated a major opportunity will be lost.
An effective STARS Program is indeed needed to accelerate the application of
the best ideas from the laboratory to weapon systems development. If an
effective STARS Program does not materialize, software risks will remain high.
\subsubsection*{Salvage of STARS may not be possible, but it should be attempted. Drastic
action is required.}
\subsection*{Recommendations}
\label{rec:1}
\subsubsection*{\textit{Recommendation 1: Move STARS and rebuild it.}}
Create a Joint Program Office to oversee the STARS program, AJPO, and the
Software Engineering Institute. This Office should be headed by a flag-rank
military officer in order to demonstrate DoD cammitment to provide firm
oversight, resources, and control over DoD software technology efforts. This
Joint Program Office should report to the Deputy Undersecretary of Defense for
Research and Advanced Technology. Locate it at the Electronic Systems Division
in Bedford, Massachusetts, with the Air Force as executive agent.
This management organization has been an effective technique for mustering
Service cooperation on joint efforts in the past. Examples include WIS, Joint
Tactical Fusion, JTIDS, and the Joint Surveillance and Target Acquisition Radar
System. OSD retains oversight authority, and the Joint Program Office
organization will ensure that benefits accrue across all the Services.
\label{rec:2}
\subsubsection*{\textit{Recommendation 2: Task the STARS Office, the Ada Joint Program Office,
the Software Engineering Institute, the SDI software methodology program
element, and the DARPA Strategic Computing Program to produce a one-time
joint plan to demonstrate a coordinated DoD Software Technology Program.}}
This plan must ensure ongoing technical exchange among the five programs.
\label{rec:3}
\subsubsection*{\textit{Recommendation 3: Task the new STARS Director to define a new set of
program goals together with an implementation plan; emphasis should be on
visible, early milestones that have demonstrable results.}}
This plan should emphasize widespread adoption of the best that exists today.
It should provide incremental products. It should complement what the
commercial sector is doing and focus on DoD-unique requiremrents. It should be
realistic.
\label{rec:4}
\subsubsection*{\textit{Recommendation 4: Direct STARS to choose several real
programs early in development and augment their funding to ensure the use of
existing modern practices and tools.}}
\section{ADA}
DoD defined the Ada language (see MIL-STD-1815A) to be its common,
machine independent programming language for DoD-wide use in mission-critical
computer applications. This intent was established in 1981 by draft versions of
DoD Instruction 5000.31. A subsequent June 1983 memorandum from Dr. Richard
DeLauer, Undersecretary of Defense (R\&E), mandated the use of Ada on all new
DoD mission-critical computer procurements entering concept definition after 1
January 1984 or entering full-scale development after 1 July 1984. Mr. Don
Hicks, Undersecretary of Defense (R\&E), reaffirmed thie mandate to Ada in
December, 1985, as did Secretary Weinberger in November, 1986.
The Task Force discussed Ada, its compilers, and its application in military
programs with the three Services, inter-Service programs such as WIS, and the
acting Director of the Ada Joint Projects Office. The Task Force also
considered fourth-generation languages and their implication for the Ada
effort.
\subsection*{Findings}
\subsubsection*{\textit{Improved Software Engineering Techniques}}
\subsubsection*{Software engineering methods and techniques have dramatically
advanced over the last decade, yet these techniques are not generally practiced
in DoD.}
Ada is not merely a programming language; it is a vehicle for new software
practices and methods for specification, program structuring, development and
maintenance. Without enforced usage of such a vehicle, the radical improvements
in software engineering will not move rapidly into use. Standardization on a
language is the best way to introduce the new practices rapidly.
\subsubsection*{\textit{Ada, The Standard Language}}
\subsubsection*{It is a major technology step forward for the DoD to insist
that all software be built in a high-level language. It is a major management
step forward to standardize on a single high-level language.}
It is not simple to do so; Fortran and Cobol will each survive in some military
applications. The driving reasons to standardize new development in one
high-level language remain valid. Specifically, the quality of the resulting
software will be higher. Enhancement of function, adaptation to environmental
changes, and fixing of errors will be less buggy and cheaper.
Even where exceptions to the use of Ada are granted, all software can and
should be designed using Ada as a design language.
\subsubsection*{Ada was designed by the DoD to be that standard language; It is
the best candidate for standardization available today; it promises to remain
so for the foreseeable future.}
Ada’s constructs support modern software technology and discipline. Ada
supports the evolution and maintenance of reusable software, portable software,
and real-time software. The language definition is precise enough. Other
candidate languages have many more deficiencies than Ada with respect to the
DoD’s needs.
\subsubsection*{Ada is admittedly complex. This complexity has contributed
significantly to the slow maturation of the language and of its compilers and
tools.}
Enough Ada compilers now exist to demonstrate they can be built. Because of
language complexity, current compilers execute slowly in comparison to a good
Fortran compiler. However, the compilers are doing more checking, and pointing
out errors to the programmer; this is cost-effective. Engineering refinement of
compilers will yield acceptable, even good, Ada compiler speed in the near
term. Moreover, modern partial compilation techniques today reduce the impact
of raw compiler speeds.
\subsubsection*{Due to Ada’s complexity, the code generated by current Ada
compilers Is not yet highly optimized.}
Again, engineering refinement will produce optimizing compilers in the near
term. Whereas Ada application code can be quite slow if all dynamic checking
is enabled, most checking can be turned off in the production version of
application code. There is no technical obstacle to achieving optimized code
for applications written in Ada.
\subsubsection*{The DeLauer mandate to use Ada was premature; it could not be
followed In 1983 because of slow maturation of the language and its
compilers.}
Consequently it became toothless. The compilers have been developed to a point
that the mandate can be implemented now; it should be.
\subsubsection*{Switching to Ada necessitates an up-front investment In order
to reap longer term benefits.}
One cost is education. Teaching Ada also implies teaching the new software
engineering practices and disciplines. This must be done anyway. Forcing this
learning is a major motive for adopting Ada quickly and extensively.
Computer time costs will be somewhat higher because of the slower compiling.
These costs are transient and will go down as Ada programming environments are
widely installed, as the software tools mature, and as hardware
cost/performance continues to drop.
\subsubsection*{Although incurring the up-front costs is wise for DoD,
individual program managers and contractors have no incentive to do so.}
The costs of training, compiler and tool acquisition, and running the current
immature compilers are present and readily measured, whereas the benefit is
future and more difficult to measure. Adoption must therefore be mandated by
high management.
\subsubsection*{Ada is being successfully used today in military programs, such
as AFATDS.}
At least sixty-four validated compilers exist, with more in the wing. Moreover,
Ada is not just a DoD captive language. Civilian commitment to Ada is emerging.
It is noteworthy that the majority of compilers for Ada are built with private,
not DoD, funds. One cannot predict, however, that Ada will become the standard
language for civilian data proceasing, as Cobol did. Too many different forces
are at work.
\subsubsection*{\textit{Fourth-Generation Languages}}
\subsubsection*{Fourth-generation languages are application-specific program
generators; because they are not general purpose, they are not in competiton
with Ada.}
The term fourth-generation is a misnomer. It has been used to characterize a
wide variety of languages which are not descendants of the third-generation,
general-purpose languages. The term encompasses application-specific languages
such as database languages and electronic spread sheets, program generators,
non-procedural languages, and even artificial intelligence languages such as
Prolog. Each language is designed to be applied to problems in a limited
domain. Therefore the fourth-generation languages do not compete with Ada.
\subsubsection*{If an application is well-matched to a fourth-generation
language, the cost of realizing the application can be a hundredfold less
expensive than programming it in any general purpose language, Including Ada.}
Spreadsheets are routinely used to accomplish tasks in minutes that would
require hours of work in a general purpose language. Similarly, an exploratory
artificial intelligence (AI) task may be programmed in an AI language in days
versus months in any general purpose language.
\subsubsection*{A weapons system development is not one task in a single
problem domain; the Task Force is skeptical that any fourth-generation language
is well-suited to such applications.}
Note that some of the high-risk tasks in a weapons system may be advantageously
prototyped in a fourth-generation language to experiment with algorithms or
software structure before actual development commences. Similarly, some
single-domain mission critical applications, such as some intelligence data
processing, may be cost-effectively implemented in a fourth-generation language
such as a database provides.
Some efforts to develop large software systems entirely in a fourth-generation
language, such as the New Jersey Motor Vehicle Registration System, have been
unsuccessful.
\subsubsection*{\textit{DoD Management of Ada}}
\subsubsection*{Only top DoD management can sustain a policy and program for
incurring the costs and risk of early DoD use of Ada.}
Contractors incurring the up-front costs must have assurance that investment in
Ada tooling will pay off. Programs must plan for long-range cost and quality
improvements.
\subsubsection*{The Ada Joint Program Office (AJPO) is the DoD’s focal point
for policy and coordination of Ada standardization, validation, and language
control; it has done a commendable job in achieving its technical objectives.}
The AJPO has maintained a stable language definition. It has defined a
comprehensive validation suite of language conformity tests. Note that
language conformity does not ensure that, a compiler is robust, acceptably
efficient at compile time, or capable of generating correct or efficient code
for real applications. Concentrated focus on language conformity has slowed
compiler maturity along these other dimensions. The AJPO has also performed a
communication function with its Ada Information Clearinghouse.
\subsubsection*{Definition of the Ada language and development of compilers has
been successful; the next step is to implement DoD applications in Ada.}
This step is mainly acquisition management and is discussed elsewhere. AJPO can
best assist by providing truthful, complete, and candid information about
compiler and application activity.
\subsubsection*{The next technical step is to develop Ada support tools beyond
compilers and to integrate them with one another and with the underlying
operating system.}
The unclear boundary between the AJPO and the STARS programs’ charters has led
to some confusion of who should develop what support software technology.
\subsubsection*{\textit{Ada support tools}}
\subsubsection*{Ada has been overpromised.}
The Ada language embodies much current software technology. But to build
application code that is portable and reusable requires disciplined use of the
new engineering practices and tools as well. Such support tools are not yet
integrated with the compilers. Support tools are needed for such activities
as:
\begin{itemize}
\item software documentation writing and formating;
\item version and configuration control of both software and documentation;
\item maintaining development history in a way that links requirements, design specification, code documentation, source code, compiled code, problem reports, code changes, tests, and test run results;
\item debugging; and
\item project schedule and effort management.
\end{itemize}
\subsubsection*{As a consequence, non-technical managers of programs are
expecting results that no high-level language can by Itself deliver.}
Environments that integrate such tools are not yet available for Ada. They are
likewise available only piecemeal or not at all for Jovial, C, CMS, Fortran,
etc.
\subsubsection*{Acquiring these environments is the next step.}
The DoD is supporting efforts to develop such environments. Environment design
is more difficult than language definition. Efficient environments depend
integrally upon the host operating system, yet one wants tool portability and
language independence. We expect that market forces will produce a variety of
environments around Ada if the DoD maintains firm commitment to the language.
\subsection*{Recommendations}
\label{rec:5}
\subsubsection*{\textit{Recommendation 5: Commit DoD management to a serious
and determined push to Ada.}}
Management waffling is more likely to cause a failure in Ada than are technical
or acceptance problems.
Specifically, the DoD should
\begin{itemize}
\item Finalize and issue software language policy which reaffirms and
details the policy set forth in the DeLauer and Hicks memoranda, and
the Weinberger speech.
\begin{itemize}
\item The DoD should establish Ada as the common, machine-independent,
mission critical computer system programming language for DoD-wide use.
The mandate should not be limited to embedded computers in weapon
systems.
\item Each DoD component should develop and implement a plan for cutting
over to full Ada usage. These plans should provide for support
software, education, and training of military, technical, and
management personnel.
\end{itemize}
\item Stiffen practices for granting exceptions from Ada policy so that
exceptions are difficult now and become increasingly difficult with
time.
\item Mandate that where implementation exceptions are granted, software
should nevertheless be designed using Ada as the design language.
\end{itemize}
\label{rec:6}
\subsubsection*{\textit{Recommendation 6: Move the Ada Joint Program Office
into the same organization as STARS and the SEI.}}
The major objective for Ada has become one of implementation — using the Ada
language for DoD systems — now that the AJPO has technical control of the
language. Common management of these three programs will strengthen each and
permit easy coordination of common goals and objectives.
\label{rec:7}
\subsubsection*{\textit{Recommendation 7: Keep the AJPO as the technical staff support agent