The Return of the Legendary Man Month

Underestimation of the associated fee, schedule, and threat of tasks is widespread in software program growth and particularly prevalent in mathematical software program growth. It is not uncommon to come across extraordinarily optimistic concepts in regards to the length and problem degree of mathematical software program tasks, satirically one of many tougher sorts of software program growth, in addition to magical concepts about arithmetic.

There may be comparatively little publicly obtainable data on the scope and problem degree of software program tasks of any sort. Some data is offered in books and papers by varied self-styled software program engineering specialists comparable to Barry Boehm, Donald Reifer, Capers Jones, and several other others. These specialists normally have consulting companies and don’t disclose their uncooked knowledge and make restricted disclosures of the outcomes of analyses of their knowledge.

Open supply software program tasks can present a superb supply of knowledge on some points, such because the variety of traces of laptop code, of assorted software program and mathematical software program tasks. This data may be independently verified by downloading the supply code of an open supply challenge and inspecting it, utilizing instruments just like the CLOC utility to depend the traces of code if wanted.

Sadly, it’s tough to get correct estimates of the particular effort expended on an open supply challenge. It’s tough to confirm if a contributor labored part-time, full time, or greater than full time on the challenge. Some contributors will not be credited.

This text examines an information set of ninety-three NASA tasks between the years 1971-1987 that was collected by Jairus Hihn of the NASA Jet Propulsion Laboratory (JPL). The info is the NASA 93 knowledge set from the PROMISE Software program Engineering Repository on the College of Ottawa.

The info lists the variety of supply traces of code (SLOC) for every challenge, the precise effort expended in workers months (SM), and categorised the tasks in response to software program engineering knowledgeable Barry Boehm’s COCOMO I (Constructive Price Mannequin). The info used for Boehm’s COCOMO I mannequin can be obtainable as an information set within the PROMISE repository.

A Word on Strains of Code

Strains of code is a really imperfect measure of the dimensions and scope of a software program challenge. For instance, these are each one line of code within the C Programming Language:


a = 1;

and


a = (1.0/sqrt(2.0*M_PI))*exp(-(x - imply)*(x-mean)/(sigma*sigma));

There are a number of totally different definitions of traces of code used within the literature on software program price and schedule estimation. In further, there are a number of options which were proposed to traces of codes, comparable to perform factors (at the moment in style).

Nonetheless, traces of code are considerably harking back to Winston Churchill’s quote about democracy:


It has been mentioned that democracy is the worst type of authorities besides all of the others which were tried.

Perform factors had been developed for enterprise functions and rely closely on counting the variety of inputs and outputs to a program. This usually works effectively for enterprise functions the place the functions are sometimes comparatively easy and the complexity scales with the variety of inputs and outputs. Mathematical software program comparable to video codecs usually have few inputs (one compressed file or knowledge stream) and outputs (uncompressed video) however a really advanced inner implementation (tens of 1000’s of traces of code). This has been acknowledged as a weak spot of perform factors for a while and there are some variations comparable to so-called “characteristic factors” that try to handle this drawback.

Additional, strategies like perform factors require substantial coaching and examine to measure and study to make use of. They aren’t comparatively intuitive like traces of code. There may be way more knowledge on software program tasks obtainable in traces of code than perform factors.

One great way to consider traces of code is that every line of code is sort of a single transferring half in a posh machine like a grandfather clock. Some components are easy like the primary line of code above. Some components are extra advanced just like the second line of code above. Basically, traces of code would correspond to transferring components if one tried to implement a pc program as a mechanical gadget like Victorian period English mathematician Charles Babbage’s steam pushed distinction engine.

In mathematical software program comparable to video compression, speech recognition, or different superior functions, a line of code is normally straight equal to a single line of a mathematical method or equation {that a} math trainer or professor may write on a blackboard or dry erase board in school. Most examples of arithmetic taught in highschool or school math programs cowl at most a dozen blackboards. These are sometimes constructing blocks of the mathematical options to real-world issues or leading edge analysis issues. Most real-world examples of mathematical software program comparable to video codecs such because the H.264, Flash, or Microsoft Silverlight video compression utilized by internet sites immediately are many 1000’s of traces of code and correspond to a whole bunch or 1000’s of blackboards full of mathematical equations and formulation.

Evaluation of the NASA 93 Knowledge

The plots under present varied points of the NASA 93 knowledge on the scope and energy of those software program tasks.

NASA 93 RAW DATA

NASA 93 Software program Tasks

Project Size in Staff Years (Man Years)

Venture Measurement in Workers Years (Man Years)

Project Size in Thousands of Lines of Code

Venture Measurement in Hundreds of Strains of Code

Project Years

Venture Years

NASA 93 Shown by COCOMO Mode

NASA 93 Proven by COCOMO Mode

The COCOMO mannequin divides software program tasks into three normal classes or “modes”. These are the embedded, semi-detached, and natural. Embedded mode tasks comparable to flight avionics software program are most related in problem to mathematical software program tasks. Certainly, attributable to questions of safety, flight avionics software program may be extra demanding, requiring larger high quality, than industrial functions comparable to video compression for leisure. The software program productiveness in traces of code per workers month is now proven for the three sorts of tasks.

Software Productivity for Organic Mode Projects (NASA 93)

Software program Productiveness for Natural Mode Tasks (NASA 93)

Software Productivity for Semi-Detached Projects (NASA 93)

Software program Productiveness for Semi-Indifferent Tasks (NASA 93)

Software Productivity for Embedded Projects (NASA 93)

Software program Productiveness for Embedded Tasks (NASA 93)

The subsequent plot compares the NASA 93 knowledge to Barry Boehm’s Primary COCOMO I mannequin for Embedded Tasks (crimson line) and to a linear match to the NASA 93 knowledge (inexperienced line). As may be seen, there may be appreciable variation between precise and estimated effort, though the fashions are on common roughly right and normally inside an element of three of precise effort.

Comparison of Data to Fitted Models

Comparability of Knowledge to Fitted Fashions

The ultimate plot reveals the relative error between the precise effort and the estimated effort utilizing the fitted mannequin.

Relative Error (NASA 93)

Relative Error (NASA 93)

Conclusion

On common, the software program productiveness for demanding software program functions comparable to embedded aerospace functions tends to be fairly low, within the vary of two-hundred (200) traces of code per workers month (legendary man month). Nevertheless, there may be broad variation between precise and estimated effort. The best productiveness (outlined as traces of code per workers month) among the many embedded tasks within the NASA 93 knowledge set was about 700 traces of code monthly, and the bottom round 50 traces of code monthly. Given the difficulties in defining traces of code and measuring the standard of the delivered software program, it’s not possible to judge the importance of those variations with out extra detailed data on the tasks.

It is very important understand that numbers like two-hundred traces of code per workers month don’t refer to only typing two-hundred traces of code which may take as little as a couple of minutes. They seek advice from your complete software program growth course of, normally together with necessities evaluation, software program design, precise coding, and particularly debugging to realize the excessive ranges of high quality required for these functions.

There are a number of instances the place a single error in a single line of mathematical software program has resulted within the lack of a multi-million greenback mission or human lives. The lack of the Mariner I probe to Mars is continuously attributed to a small error in copying a mathematical method into the probe’s laptop software program. In 1991 a refined error within the mathematical software program for a PATRIOT missile system resulted in an Iraqi SCUD missile penetrating to a US base in Dahran, Saudi Arabia and killing 28 troopers. On June 4, 1995 the European Area Company’s first launch of the brand new Ariane 5 rocket exploded attributable to an error changing a 64 bit floating level quantity incorrectly to a 16 bit integer quantity in software program. The lack of NASA’s Mars Local weather Orbiter (MCO) in 1999 has been attributed to an incorrect conversion between English items (foot-pounds) and metric items (meters-Newtons). Aviation and rocketry have particularly demanding necessities for the standard of software program.

Whereas industrial functions of mathematical software program comparable to video compression for leisure usually are not at all times as demanding as mission-critical aerospace software program, they will nonetheless be fairly demanding. Viewers of compressed video comparable to Netflix, YouTube, BluRay, or DVD video have a reasonably restricted tolerance for seen artifacts and errors within the video. Nearly any error within the implementation of a video codec can introduce seen artifacts or errors, so the codecs should, normally, obtain very excessive ranges of high quality, although not essentially excellent.

Credit

Sayyad Shirabad, J. and Menzies, T.J. (2005) The PROMISE Repository of Software program Engineering Databases. College of Info Know-how and Engineering, College of Ottawa, Canada . Accessible: https://promise.web site.uottawa.ca/SERepository

© 2012 John F. McGowan

In regards to the Writer

John F. McGowan, Ph.D. solves issues utilizing arithmetic and mathematical software program, together with growing video compression and speech recognition applied sciences. He has in depth expertise growing software program in C, C++, Visible Primary, Mathematica, MATLAB, and plenty of different programming languages. He’s in all probability finest identified for his AVI Overview, an Web FAQ (Continuously Requested Questions) on the Microsoft AVI (Audio Video Interleave) file format. He has labored as a contractor at NASA Ames Analysis Heart concerned within the analysis and growth of picture and video processing algorithms and expertise. He has printed articles on the origin and evolution of life, the exploration of Mars (anticipating the invention of methane on Mars), and low-cost entry to house. He has a Ph.D. in physics from the College of Illinois at Urbana-Champaign and a B.S. in physics from the California Institute of Know-how (Caltech). He may be reached at [email protected].


Appendix I: Supply Code for Evaluation

The evaluation was carried out utilizing a program written within the free open supply Octave numerical programming setting which is generally appropriate with MATLAB. Right here is the code. It generates further plots past those highlighted within the physique of this text. The uncooked knowledge file nasa93_raw_data.txt, which is extracted from the PROMISE knowledge file follows.


% Evaluation of NASA 93 software program effort knowledge
%
% (C) 2012 John F. McGowan, Ph.D.
% E-Mail: [email protected]
%

data93 = dlmread('nasa93_raw_data.txt');

% COCOMO (Barry Boehm's Constructive Price Mannequin) MODE CODES (1=ORGANIC, 2=SEMI-DETACHED, 3=EMBEDDED)

[e_row, e_col] = discover(data93(:,7) == 3);
[semi_row, semi_col] = discover(data93(:,7) == 2);
[org_row, org_col] = discover(data93(:,7) == 1);


actuals = data93(:,end-1:finish);

ksloc = actuals(:,1); % thousand (kilo) supply traces of code
staff_months = actuals(:,2); % also referred to as man month, work month, individual month


printf('making determine 1n');
fflush(stdout);

determine(1);
loglog(ksloc, staff_months, 'o');
title('NASA 93 SOFTWARE PROJECT DATA');
xlabel('Hundreds of Strains of Code (KSLOC)');
ylabel('Workers Months (SM)');
print('nasa93_raw_data.jpg');


logloc = log10(ksloc);
log_staff_months = log10(staff_months);

[p_nasa93, s_nasa93] = polyfit(logloc, log_staff_months, 1); % match polynomial mannequin to the information

pred_logloc = polyval(p_nasa93, logloc);

delta = 10.^pred_logloc - staff_months; % distinction between predicted workers months and precise workers months

relative_error = delta ./ staff_months; % (Estimated Workers Months - Precise Workers Months)/Precise Workers Months

cocomo_x = 1:10:max(ksloc(:));
y = polyval(p_nasa93, log10(cocomo_x));

cocomo_org = 2.4 * (cocomo_x).^1.05; % Barry Boehm's Primary COCOMO 81 (Natural) mannequin
cocomo_semi = 3.0 * (cocomo_x).^1.12; % Barry Boehm's Primary COCOMO 81 (Semi-detached) mannequin
cocomo_e = 3.6 * (cocomo_x).^1.2; % Barry Boehm's Primary COCOMO 81 (Embedded) mannequin

printf('making determine 2n');
fflush(stdout);

determine(2);
% loglog(ksloc, staff_months, 'o', ksloc, 10.^pred_logloc, '*');
loglog(ksloc, staff_months, 'o', cocomo_x, 10.^y, '-', "linewidth", 3, cocomo_x, cocomo_e, 'r-', "linewidth", 3);
title('FIT TO NASA 93 SOFTWARE PROJECT DATA');
xlabel('Hundreds of Strains of Code (KSLOC)'); % thousand supply traces of code
ylabel('Workers Months (SM)'); % workers month
legend("NASA 93 DATA", "FIT 93", "COCOMO 81 (EMBEDDED)");
print('nasa93_fit.jpg');


A = 10.^p_nasa93(2);
B = p_nasa93(1);

x = 1:100:5000;
x = x / 1000.0;
y = A.*(x.^B);

printf('making determine 3n');
fflush(stdout);


determine(3);
%plot(x,y);
hist(relative_error, 20);
title('Relative Error of Estimates');
xlabel('(Estimated Workers Months - Precise Workers Months)/Precise Workers Months');
ylabel('Variety of Tasks');
print('nasa93_relative_error.jpg');


max_ksloc = max(ksloc(:));
mean_ksloc = imply(ksloc(:));
min_ksloc = min(ksloc(:));

max_mm = max(staff_months(:));
mean_mm = imply(staff_months(:));
min_mm = min(staff_months(:));

mean_are = imply(abs(relative_error(:))); % generally known as MMRE Imply Magnitude of Relative Error
max_are = max(abs(relative_error(:)));
min_are = min(abs(relative_error(:)));

prod = 1000.0*ksloc ./ staff_months;

max_prod = max(prod(:));
mean_prod = imply(prod(:));
median_prod = median(prod(:));
min_prod = min(prod(:));
std_prod = std(prod(:)); % customary deviation of software program productiveness

printf('making determine 4n');
fflush(stdout);

determine(4);
hist(prod, 20);
title('Software program Productiveness of NASA 93 Tasks');
xlabel('Strains of Code per Workers Month (SLOC/SM)');
ylabel('Variety of Tasks');
print('nasa93_prod.jpg');


% PRED(30) is variety of actuals inside 30% of predicted worth

ind = discover(abs(relative_error(:) 

nasa93_raw_data.txt


1,de,avionicsmonitoring,g,2,1979,2,h,l,h,n,n,l,l,n,n,n,n,h,h,n,l,25.9,117.6
2,de,avionicsmonitoring,g,2,1979,2,h,l,h,n,n,l,l,n,n,n,n,h,h,n,l,24.6,117.6
3,de,avionicsmonitoring,g,2,1979,2,h,l,h,n,n,l,l,n,n,n,n,h,h,n,l,7.7,31.2
4,de,avionicsmonitoring,g,2,1979,2,h,l,h,n,n,l,l,n,n,n,n,h,h,n,l,8.2,36
5,de,avionicsmonitoring,g,2,1979,2,h,l,h,n,n,l,l,n,n,n,n,h,h,n,l,9.7,25.2
6,de,avionicsmonitoring,g,2,1979,2,h,l,h,n,n,l,l,n,n,n,n,h,h,n,l,2.2,8.4
7,de,avionicsmonitoring,g,2,1979,2,h,l,h,n,n,l,l,n,n,n,n,h,h,n,l,3.5,10.8
8,erb,avionicsmonitoring,g,2,1982,2,h,l,h,n,n,l,l,n,n,n,n,h,h,n,l,66.6,352.8
9,gal,missionplanning,g,1,1980,2,h,l,h,xh,xh,l,h,h,h,h,n,h,h,h,n,7.5,72
10,gal,missionplanning,g,1,1980,2,n,l,h,n,n,l,l,h,vh,vh,n,h,n,n,n,20,72
11,gal,missionplanning,g,1,1984,2,n,l,h,n,n,l,l,h,vh,h,n,h,n,n,n,6,24
12,gal,missionplanning,g,1,1980,2,n,l,h,n,n,l,l,h,vh,vh,n,h,n,n,n,100,360
13,gal,missionplanning,g,1,1985,2,n,l,h,n,n,l,l,h,vh,n,n,l,n,n,n,11.3,36
14,gal,missionplanning,g,1,1980,2,n,l,h,n,n,h,l,h,h,h,l,vl,n,n,n,100,215
15,gal,missionplanning,g,1,1983,2,n,l,h,n,n,l,l,h,vh,h,n,h,n,n,n,20,48
16,gal,missionplanning,g,1,1982,2,n,l,h,n,n,l,l,h,n,n,n,vl,n,n,n,100,360
17,gal,missionplanning,g,1,1980,2,n,l,h,n,xh,l,l,h,vh,vh,n,h,n,n,n,150,324
18,gal,missionplanning,g,1,1984,2,n,l,h,n,n,l,l,h,h,h,n,h,n,n,n,31.5,60
19,gal,missionplanning,g,1,1983,2,n,l,h,n,n,l,l,h,vh,h,n,h,n,n,n,15,48
20,gal,missionplanning,g,1,1984,2,n,l,h,n,xh,l,l,h,h,n,n,h,n,n,n,32.5,60
21,X,avionicsmonitoring,g,2,1985,2,h,l,h,n,n,l,l,n,n,n,n,h,h,n,l,19.7,60
22,X,avionicsmonitoring,g,2,1985,2,h,l,h,n,n,l,l,n,n,n,n,h,h,n,l,66.6,300
23,X,simulation,g,2,1985,2,h,l,h,n,n,l,l,n,n,n,n,h,h,n,l,29.5,120
24,X,monitor_control,g,2,1986,2,h,n,n,h,n,n,n,n,h,h,n,n,n,n,n,15,90
25,X,monitor_control,g,2,1986,2,h,n,h,n,n,n,n,n,h,h,n,n,n,n,n,38,210
26,X,monitor_control,g,2,1986,2,n,n,n,n,n,n,n,n,h,h,n,n,n,n,n,10,48
27,X,realdataprocessing,g,2,1982,2,n,vh,h,vh,vh,l,h,vh,h,n,l,h,vh,vh,l,15.4,70
28,X,realdataprocessing,g,2,1982,2,n,vh,h,vh,vh,l,h,vh,h,n,l,h,vh,vh,l,48.5,239
29,X,realdataprocessing,g,2,1982,2,n,vh,h,vh,vh,l,h,vh,h,n,l,h,vh,vh,l,16.3,82
30,X,communications,g,2,1982,2,n,vh,h,vh,vh,l,h,vh,h,n,l,h,vh,vh,l,12.8,62
31,X,batchdataprocessing,g,2,1982,2,n,vh,h,vh,vh,l,h,vh,h,n,l,h,vh,vh,l,32.6,170
32,X,datacapture,g,2,1982,2,n,vh,h,vh,vh,l,h,vh,h,n,l,h,vh,vh,l,35.5,192
33,X,missionplanning,g,2,1985,2,h,l,h,n,n,l,l,n,n,n,n,h,h,n,l,5.5,18
34,X,avionicsmonitoring,g,2,1987,2,h,l,h,n,n,l,l,n,n,n,n,h,h,n,l,10.4,50
35,X,avionicsmonitoring,g,2,1987,2,h,l,h,n,n,l,l,n,n,n,n,h,h,n,l,14,60
36,X,monitor_control,g,2,1986,2,h,n,h,n,n,n,n,n,n,n,n,n,n,n,n,6.5,42
37,X,monitor_control,g,2,1986,2,n,n,h,n,n,n,n,n,n,n,n,n,n,n,n,13,60
38,X,monitor_control,g,2,1986,2,n,n,h,n,n,n,n,n,n,h,n,h,h,h,n,90,444
39,X,monitor_control,g,2,1986,2,n,n,h,n,n,n,n,n,n,n,n,n,n,n,n,8,42
40,X,monitor_control,g,2,1986,2,n,n,h,h,n,n,n,n,n,n,n,n,n,n,n,16,114
41,hst,datacapture,g,2,1980,2,n,h,h,vh,h,l,h,h,n,h,l,h,h,n,l,177.9,1248
42,slp,launchprocessing,g,6,1975,2,h,l,h,n,n,l,l,n,n,h,n,n,h,vl,n,302,2400
43,Y,application_ground,g,5,1982,2,n,h,l,n,n,h,n,h,h,n,n,n,h,h,n,282.1,1368
44,Y,application_ground,g,5,1982,2,h,h,l,n,n,n,h,h,h,n,n,n,h,n,n,284.7,973
45,Y,avionicsmonitoring,g,5,1982,2,h,h,n,n,n,l,l,n,h,h,n,h,n,n,n,79,400
46,Y,avionicsmonitoring,g,5,1977,2,l,n,n,n,n,l,l,h,h,vh,n,h,l,l,h,423,2400
47,Y,missionplanning,g,5,1977,2,n,n,n,n,n,l,n,h,vh,vh,l,h,h,n,n,190,420
48,Y,missionplanning,g,5,1984,2,n,n,h,n,h,n,n,h,h,n,n,h,h,n,h,47.5,252
49,Y,missionplanning,g,5,1980,2,vh,n,xh,h,h,l,l,n,h,n,n,n,l,h,n,21,107
50,Y,simulation,g,5,1983,2,n,h,h,vh,n,n,h,h,h,h,n,h,l,l,h,78,571.4
51,Y,simulation,g,5,1984,2,n,h,h,vh,n,n,h,h,h,h,n,h,l,l,h,11.4,98.8
52,Y,simulation,g,5,1985,2,n,h,h,vh,n,n,h,h,h,h,n,h,l,l,h,19.3,155
53,Y,missionplanning,g,5,1979,2,h,n,vh,h,h,l,h,h,n,n,h,h,l,vh,h,101,750
54,Y,missionplanning,g,5,1979,2,h,n,h,h,h,l,h,n,h,n,n,n,l,vh,n,219,2120
55,Y,utility,g,5,1979,2,h,n,h,h,h,l,h,n,h,n,n,n,l,vh,n,50,370
56,spl,datacapture,g,2,1979,2,vh,h,h,vh,vh,n,n,vh,vh,vh,n,h,h,h,l,227,1181
57,spl,batchdataprocessing,g,2,1977,2,n,h,vh,n,n,l,n,h,n,vh,l,n,h,n,l,70,278
58,de,avionicsmonitoring,g,2,1979,2,h,l,h,n,n,l,l,n,n,n,n,h,h,n,l,0.9,8.4
59,slp,operatingsystem,g,6,1974,2,vh,l,xh,xh,vh,l,l,h,vh,h,vl,h,vl,vl,h,980,4560
60,slp,operatingsystem,g,6,1975,3,n,l,h,n,n,l,l,vh,n,vh,h,h,n,l,n,350,720
61,Y,operatingsystem,g,5,1976,3,h,n,xh,h,h,l,l,h,n,n,h,h,h,h,n,70,458
62,Y,utility,g,5,1979,3,h,n,xh,h,h,l,l,h,n,n,h,h,h,h,n,271,2460
63,Y,avionicsmonitoring,g,5,1971,1,n,n,n,n,n,l,l,h,h,h,n,h,n,l,n,90,162
64,Y,avionicsmonitoring,g,5,1980,1,n,n,n,n,n,l,l,h,h,h,n,h,n,l,n,40,150
65,Y,avionicsmonitoring,g,5,1979,3,h,n,h,h,n,l,l,h,h,h,n,h,n,n,n,137,636
66,Y,avionicsmonitoring,g,5,1977,3,h,n,h,h,n,h,l,h,h,h,n,h,n,vl,n,150,882
67,Y,avionicsmonitoring,g,5,1976,3,vh,n,h,h,n,l,l,h,h,h,n,h,n,n,n,339,444
68,Y,avionicsmonitoring,g,5,1983,1,l,h,l,n,n,h,l,h,h,h,n,h,n,l,n,240,192
69,Y,avionicsmonitoring,g,5,1978,2,h,n,h,n,vh,l,n,h,h,h,h,h,l,l,l,144,576
70,Y,avionicsmonitoring,g,5,1979,2,n,l,n,n,vh,l,n,h,h,h,h,h,l,l,l,151,432
71,Y,avionicsmonitoring,g,5,1979,2,n,l,h,n,vh,l,n,h,h,h,h,h,l,l,l,34,72
72,Y,avionicsmonitoring,g,5,1979,2,n,n,h,n,vh,l,n,h,h,h,h,h,l,l,l,98,300
73,Y,avionicsmonitoring,g,5,1979,2,n,n,h,n,vh,l,n,h,h,h,h,h,l,l,l,85,300
74,Y,avionicsmonitoring,g,5,1982,2,n,l,n,n,vh,l,n,h,h,h,h,h,l,l,l,20,240
75,Y,avionicsmonitoring,g,5,1978,2,n,l,n,n,vh,l,n,h,h,h,h,h,l,l,l,111,600
76,Y,avionicsmonitoring,g,5,1978,2,h,vh,h,n,vh,l,n,h,h,h,h,h,l,l,l,162,756
77,Y,avionicsmonitoring,g,5,1978,2,h,h,vh,n,vh,l,n,h,h,h,h,h,l,l,l,352,1200
78,Y,operatingsystem,g,5,1979,2,h,n,vh,n,vh,l,n,h,h,h,h,h,l,l,l,165,97
79,Y,missionplanning,g,5,1984,3,h,n,vh,h,h,l,vh,h,n,n,h,h,h,vh,h,60,409
80,Y,missionplanning,g,5,1984,3,h,n,vh,h,h,l,vh,h,n,n,h,h,h,vh,h,100,703
81,hst,Avionics,f,2,1980,3,h,vh,vh,xh,xh,h,h,n,n,n,l,l,n,n,h,32,1350
82,hst,Avionics,f,2,1980,3,h,h,h,vh,xh,h,h,h,h,h,h,h,h,n,n,53,480
84,spl,Avionics,f,3,1977,3,h,l,vh,vh,xh,l,n,vh,vh,vh,vl,vl,h,h,n,41,599
89,spl,Avionics,f,3,1977,3,h,l,vh,vh,xh,l,n,vh,vh,vh,vl,vl,h,h,n,24,430
91,Y,Avionics,f,5,1977,3,vh,h,vh,xh,xh,n,n,h,h,h,h,h,h,n,h,165,4178.2
92,Y,science,f,5,1977,3,vh,h,vh,xh,xh,n,n,h,h,h,h,h,h,n,h,65,1772.5
93,Y,Avionics,f,5,1977,3,vh,h,vh,xh,xh,n,l,h,h,h,h,h,h,n,h,70,1645.9
94,Y,Avionics,f,5,1977,3,vh,h,xh,xh,xh,n,n,h,h,h,h,h,h,n,h,50,1924.5
97,gal,Avionics,f,5,1982,3,vh,l,vh,vh,xh,l,l,h,l,n,vl,l,l,h,h,7.25,648
98,Y,Avionics,f,5,1980,3,vh,h,vh,xh,xh,n,n,h,h,h,h,h,h,n,h,233,8211
99,X,Avionics,f,2,1983,3,h,n,vh,vh,vh,h,h,n,n,n,l,l,n,n,h,16.3,480
100,X,Avionics,f,2,1983,3,h,n,vh,vh,vh,h,h,n,n,n,l,l,n,n,h,6.2,12
101,X,science,f,2,1983,3,h,n,vh,vh,vh,h,h,n,n,n,l,l,n,n,h,3,38