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.
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.
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.
The ultimate plot reveals the relative error between the precise effort and the estimated effort utilizing the fitted mannequin.
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