The first goal of software program estimation is to not predict a challenge’s end result; it’s to find out whether or not a challenge’s targets are practical sufficient to permit the challenge to be managed to fulfill them. — attributed to Steve McConnell, Software program Estimation: Demystifying the Black Artwork
Introduction
That is third in a sequence of articles beginning with The Scope of Mathematical Programming Tasks. Numerous phrases are outlined exactly and ideas mentioned additional within the second article within the sequence: LAME: A Case Examine in Mathematical Programming. Within the creator’s expertise, it’s common to come across extraordinarily optimistic concepts concerning the scope of mathematical programming tasks, the place mathematical programming refers to arithmetic extra superior than the essential arithmetic utilized in enterprise purposes and different widespread programming tasks. Mathematical programming tasks are more likely to achieve success with practical concepts concerning the scope, price, schedule, efficiency, and threat stage of the challenge. This text discusses the scope of the software program improvement and mathematical analysis and improvement of the broadly used free open-source Maxima pc algebra system (CAS).
Maxima is a pc algebra system derived from the DOE (United States Division of Vitality) MACSYMA pc algebra system which started improvement on the Massachusetts Institute of Expertise (MIT) within the 1960’s. MACSYMA was one of many first pc algebra programs, a precursor to current day industrial pc algebra programs equivalent to Mathematica and Maple. MACSYMA was developed largely to be used in theoretical physics, therefore the funding by the US Division of Vitality (previously the Atomic Vitality Fee). In response to the Maxima site:
The Maxima department of Macsyma was maintained by William Schelter from 1982 till he handed away in 2001. In 1998 he obtained permission to launch the supply code beneath the GNU Basic Public License (GPL).
Maxima was chosen for this case research for a number of causes. Maxima is a profitable broadly used analysis software with sensible purposes. It’s an instance of an “synthetic intelligence” program that works, performing a variety of capabilities that was carried out solely by human mathematicians: factoring polynomials, simplifying expressions, symbolic differentiation, symbolic integration, and numerous different mathematical duties. Maxima has been hosted by the SourceForge open supply site since 2002. SourceForge maintains a file of downloads and copies of all releases of Maxima from Maxima 5.0 in Might, 2002 to the current model. The strategies developed to evaluate the scope of the LAME free open supply MP3 audio encoder challenge, which can also be hosted on SourceForge, could be instantly utilized to Maxima.
5.23.2-Home windows | 2011-02-04 | 20,833 | downloads |
5.23.1-Home windows | 2011-01-16 | 837 | downloads |
5.23.0-Home windows | 2011-01-04 | 4,171 | downloads |
5.22.1-Home windows | 2010-08-13 | 216,085 | downloads |
5.22.0-Home windows | 2010-08-04 | 3,924 | downloads |
5.21.1-Home windows | 2010-04-26 | 57,666 | downloads |
5.21.0-Home windows | 2010-04-12 | 10,266 | downloads |
5.20.1-Home windows | 2009-12-14 | 110,463 | downloads |
5.20.0-Home windows | 2009-12-08 | 5,179 | downloads |
5.19.2-Home windows | 2009-08-31 | 56,554 | downloads |
5.18.1-Home windows | 2009-04-20 | 44,359 | downloads |
5.17.1-Home windows | 2008-12-18 | 39,358 | downloads |
Desk 1 Downloads of Current Home windows Variations of Maxima
5.23.2-Linux | 2011-01-17 | 595 | downloads |
5.23.1-Linux | 2011-01-15 | 24 | downloads |
5.23.0-Linux | 2010-12-24 | 396 | downloads |
5.22.1-Linux | 2010-08-12 | 2,805 | downloads |
5.22.0-Linux | 2010-08-01 | 318 | downloads |
5.21.1-Linux | 2010-04-24 | 1,723 | downloads |
5.21.0-Linux | 2010-04-14 | 946 | downloads |
5.20.1-Linux | 2009-12-14 | 2,814 | downloads |
5.20.0-Linux | 2009-12-07 | 327 | downloads |
5.19.2-Linux | 2009-08-30 | 12,637 | downloads |
Desk 2: Downloads of Current Linux Variations of Maxima
5.23.2-source | 2011-01-17 | 4,385 | downloads |
5.23.1-source | 2011-01-15 | 69 | downloads |
5.23.0-source | 2010-12-24 | 806 | downloads |
5.22.1-source | 2010-08-12 | 5,552 | downloads |
5.22.0-source | 2010-08-01 | 955 | downloads |
5.21.1-source | 2010-04-24 | 3,750 | downloads |
5.21.0-source | 2010-04-10 | 652 | downloads |
5.20.1-source | 2009-12-14 | 6,578 | downloads |
5.20.0-source | 2009-12-07 | 2,420 | downloads |
5.19.2-source | 2009-08-30 | 4,670 | downloads |
5.17.1-source | 2008-12-15 | 4,272 | downloads |
Desk 3: Downloads of Current Supply Code for Maxima
5.21.1-MacOS | 2010-05-25 | 11,819 | downloads |
5.19.2-MacOS | 2009-09-01 | 19,049 | downloads |
5.19.1-MacOS | 2009-08-17 | 827 | downloads |
5.18.1-MacOS | 2009-04-19 | 4,297 | downloads |
Desk 4: Downloads of Current MacOS Variations of Maxima
5.15.0-Linux | 2009-07-17 | ||
5.17.0-Home windows | 2008-12-04 | 82,588 | downloads |
5.17.0-Linux | 2008-12-04 | 3,658 | downloads |
5.17.0-source | 2008-12-04 | 3,503 | downloads |
5.16.3-Home windows | 2008-08-25 | 106,713 | downloads |
5.16.3-source | 2008-08-24 | 10,946 | downloads |
5.16.3-Linux | 2008-08-24 | 6,247 | downloads |
5.16.2-Home windows | 2008-08-18 | 16,353 | downloads |
5.16.2-source | 2008-08-17 | 679 | downloads |
5.16.2-Linux | 2008-08-17 | 1,277 | downloads |
5.15.0-Home windows | 2008-04-20 | 54,046 | downloads |
5.15.0-source | 2008-04-20 | 5,674 | downloads |
5.14.0-Home windows | 2007-12-27 | 44,019 | downloads |
5.14.0-source | 2007-12-22 | 28,884 | downloads |
5.13.0-Home windows | 2007-09-10 | 50,353 | downloads |
5.13.0-source | 2007-08-25 | 6,908 | downloads |
5.12.0-Home windows | 2007-06-08 | 24,356 | downloads |
5.12.0-source | 2007-05-03 | 6,828 | downloads |
5.11.0-Home windows | 2007-02-11 | 27,251 | downloads |
5.11.0-source | 2006-12-21 | 6,466 | downloads |
5.10.0-Home windows | 2006-10-24 | 26,853 | downloads |
5.10.0-source | 2006-09-21 | 5,636 | downloads |
5.9.3-Home windows | 2006-06-07 | 40,848 | downloads |
5.9.3-source | 2006-03-19 | 7,154 | downloads |
5.9.3-Linux | 2006-03-19 | 6,038 | downloads |
5.9.2 | 2006-01-30 | 47,706 | downloads |
5.9.1 | 2004-09-24 | 102,642 | downloads |
5.9.0 | 2003-02-10 | 78,537 | downloads |
historic | 2002-05-13 | 3,056 | downloads |
Desk 5: Downloads of Variations of Maxima from 2002 to 2009
maxima-5.4-beta.tar.gz | 2002-05-13 | 2.8 | MB | 187 | downloads |
maxima-5.6.tar.gz | 2002-05-13 | 3.3 | MB | 1,054 | downloads |
maxima-5.5-beta3.tar.gz | 2002-05-13 | 3.0 | MB | 205 | downloads |
maxima-5.5-beta.tar.gz | 2002-05-13 | 3.1 | MB | 221 | downloads |
maxima-5.4.tar.gz | 2002-05-13 | 2.8 | MB | 229 | downloads |
maxima-5.4-beta-2.tar.gz | 2002-05-13 | 2.5 | MB | 186 | downloads |
maxima-5.2a-beta.tar.gz | 2002-05-13 | 2.6 | MB | 175 | downloads |
maxima-5.2.tar.gz | 2002-05-13 | 2.5 | MB | 225 | downloads |
maxima-5.1-beta.tar.gz | 2002-05-13 | 2.7 | MB | 176 | downloads |
maxima-5.0.tar.gz | 2002-05-13 | 2.5 | MB | 398 | downloads |
Desk 6: Downloads of Variations of Maxima in 2002
NOTE: The info for these tables was acquired by deciding on the tables displayed by the SourceForge net pages (comply with the hyperlinks within the desk captions) with a mouse in Mozilla Firefox 3.6.13 on a Microsoft Home windows XP Service Pack 2 PC, copying, and pasting the choice into the Notepad++ Model 5.2 textual content and code editor on Saturday, February 15, 2011. This process offers the cumulative downloads thus far within the desk within the pasted textual content. The textual content was then transformed to an HTML desk utilizing the free open-source Kompozer HTML/net web page editor. This identical trick doesn’t seem to work within the Safari net browser on the Macintosh; the pasted textual content doesn’t embody the full variety of downloads. The variety of downloads could be accessed by clicking on the graphic within the remaining column of the net web page desk.
Contributors
In contrast to many free open-source tasks, Maxima doesn’t have a distinguished listing of contributors on the internet web site or within the supply code apart from frequent point out of William Schelter. As might be mentioned futher beneath, there was in depth work on Maxima since 2001. A partial listing of contributors was collected by utilizing the DOS FIND command to go looking the recordsdata in Maxima for Copyright notices. For instance:
C:Paperwork and SettingsJohn F. McGowanDesktopmaxima-5.23.2sharevector>discover "Copyright" * ---------- RTEST_VECT.MAC ---------- VECT.DEM ---------- VECT.MAC ---------- VECT.USG ---------- VECTOR.DEM ---------- VECTOR.MAC ---------- VECTOR.USG ---------- VECTOR_REBUILD.LISP ;; Copyright (C) Nov. 2008 Volker van Nek ---------- VECTOR_REBUILD.MAC Copyright (C) Nov. 2008 Volker van Nek ---------- VECTOR_REBUILD.USG Copyright (C) Nov. 2008 Volker van Nek (van dot nek at arcor dot de) ---------- VECT_TRANSFORM.MAC
The next contributors have been listed in copyright notices in recordsdata within the src folder of Maxima 5.23.2
Copyright Holders Listed in *.lisp recordsdata in src folder (not numeric subfolder which seems to include the slatec numerical library)
"MIT" William Schelter J. Villate (Jaime E. Villate) https://villate.org/ Barton Willis https://www.unk.edu/facultyandstaff.aspx?id=669 Paul Foley Andrej Vodopivec Volker van Nek Kevin M. Rosenberg Dieter Kaiser Raymond Toy James F. Amundson (Maxima challenge chief for a number of years) David Billinghurst The share folder comprises far more of the supply code for Maxima. The next further contributors have been recognized from the recordsdata within the share folder: Numerous the contributors listed above additionally contributed to recordsdata within the share folder. share/tensor Viktor T. Toth Valerij Pipin share/simplification Wolfgang Jenkner share/numeric Mario Rodriguez Riotorto share/libfgs Robert Dodier share/draw Mark H. Weaver share/contrib Edmond Orignac Martin Rubey Thomas Baruchel Dan Stanger Salvador Bosch Perez
This isn’t an exhaustive listing of copyright holders (presumably contributors). Maxima is sort of massive and, for instance, the share/contrib folder comprises many sub-folders that weren’t searched as a result of time constraints.
That is twenty-two (22) people together with William Schelter and never together with whomever “MIT” could, in reality, confer with, presumably the unique builders of MACSYMA. A considerable quantity of labor clearly happened earlier than William Schelter grew to become concerned within the early 1980’s. Many, many recordsdata include a copyright discover of the shape:
;;; Copyright (c) 1984,1987 by William Schelter,College of Texas ;;;;; ;;; (c) Copyright 1981 Massachusetts Institute of Expertise ;;; variously MIT copyrights are 1980, 1981, 1982
The Scope of the Maxima Venture
Maxima is written largely within the LISP programming language, one of many oldest programming languages and a favourite of synthetic intelligence analysis. There may be some FORTRAN and a tiny quantity of different languages (TCL, Bourne Shell, a couple of others). Maxima was expanded extensively between 2006 and 2008. Newer work has been in including documentation.
Launch | Date | Strains of Code | Legendary Man Months | Notional Price |
maxima 5.23.2 | 2011-01-17 | 467,915 | 1,527.17 | $12,217,336.75 |
maxima 5.20.1 | 2009-12-14 | 453,151 | 1,476.61 | $11,812,894.32 |
maxima 5.16.3 | 2008-08-24 | 404,486 | 1,310.57 | $10,484,552.48 |
maxima 5.9.2 | 2006-01-30 | 233,394 | 735.71 | $5,885,663.12 |
maxima 5.6 | 2002-05-13 | 138,037 | 423.84 | $3,390,755.82 |
maxima 5.0 | 2002-05-13 | 114,453 | 348.15 | $2,785,221.69 |
Desk 7: Scope of Chosen Releases of Maxima (from 2002 to Feb. 15, 2011) The variety of strains of code have been decided by utilizing the free open-source CLOC (Rely Strains of Code) utility run from a DOS batch file:
cloc --exclude-lang=HTML --force-lang="Lisp",lisp --force-lang="Lisp",mac --force-lang="Lisp",dem -csv maxima-5.23.2 > maxima-5.23.2.csv cloc --exclude-lang=HTML --force-lang="Lisp",lisp --force-lang="Lisp",mac --force-lang="Lisp",dem -csv maxima-5.20.1 > maxima-5.20.1.csv cloc --exclude-lang=HTML --force-lang="Lisp",lisp --force-lang="Lisp",mac --force-lang="Lisp",dem -csv maxima-5.16.3 > maxima-5.16.3.csv cloc --exclude-lang=HTML --force-lang="Lisp",lisp --force-lang="Lisp",mac --force-lang="Lisp",dem -csv maxima-5.9.2 > maxima-5.9.2.csv cloc --exclude-lang=HTML --force-lang="Lisp",lisp --force-lang="Lisp",mac --force-lang="Lisp",dem -csv maxima-5.6 > maxima-5.6.csv cloc --exclude-lang=HTML --force-lang="Lisp",lisp --force-lang="Lisp",mac --force-lang="Lisp",dem -csv maxima-5.0 > maxima-5.0.csv
Maxima is written within the LISP programming language. By default, CLOC expects LISP recordsdata to have the extension lsp. The LISP recordsdata within the maxima supply have the extensions lisp, mac, and dem. The HTML documentation is excluded from the depend of the strains of code. The variety of man-months, the precise effort that will have been expended is estimated utilizing the “natural” model of the Fundamental Constructive Price Mannequin (COCOMO) from Barry Boehm’s Software program Engineering Economics. It is a very tough estimate and shouldn’t be taken too critically; the purpose is to get a ball park estimate of the dimensions of the challenge. The estimated man-months and notional price are cumulative numbers for the reason that begin of the Maxima/MACSYMA challenge within the 1960’s. Maxima contains at the least one third occasion library in supply code type, the slatec numerical FORTRAN library, which can also be subsequently included within the estimate.
The comma separated values (CSV) recordsdata of outcomes generated by the cloc utility have been analyzed utilizing an Octave script:. Octave is a free open-source numerical programming software that’s largely appropriate with MATLAB.
% analyze maxima strains of code knowledge % max5p23p2 = csvread('maxima-5.23.2.csv'); max5p20p1 = csvread('maxima-5.20.1.csv'); max5p16p3 = csvread('maxima-5.16.3.csv'); max5p9p2 = csvread('maxima-5.9.2.csv'); max5p6 = csvread('maxima-5.6.csv'); max5p0 = csvread('maxima-5.0.csv'); index = 5; sum5p23p2 = sum(max5p23p2(index:finish, 5)); sum5p20p1 = sum(max5p20p1(index:finish, 5)); sum5p16p3 = sum(max5p16p3(index:finish, 5)); sum5p9p2 = sum(max5p9p2(index:finish, 5)); sum5p6 = sum(max5p6(index:finish, 5)); sum5p0 = sum(max5p0(index:finish, 5)); % generate desk of outcomes printf("ReleasetLines of CodetMythical Man MonthstNotional Costn"); fflush(stdout); [man_months, people, time, cost] = cocomo(sum5p23p2/1000.0); printf("maxima 5.23.2tpercentdtpercent6.2ft% 9.2fn", sum5p23p2, man_months, price); fflush(stdout); [man_months, people, time, cost] = cocomo(sum5p20p1/1000.0); printf("maxima 5.20.1tpercentdtpercent6.2ft% 9.2fn", sum5p20p1, man_months, price); fflush(stdout); [man_months, people, time, cost] = cocomo(sum5p16p3/1000.0); printf("maxima 5.16.3tpercentdtpercent6.2ft% 9.2fn", sum5p16p3, man_months, price); fflush(stdout); [man_months, people, time, cost] = cocomo(sum5p9p2/1000.0); printf("maxima 5.9.2tpercentdtpercent6.2ft% 9.2fn", sum5p9p2, man_months, price); fflush(stdout); [man_months, people, time, cost] = cocomo(sum5p6/1000.0); printf("maxima 5.6tpercentdtpercent6.2ft% 9.2fn", sum5p6, man_months, price); fflush(stdout); [man_months, people, time, cost] = cocomo(sum5p0/1000.0); printf("maxima 5.0tpercentdtpercent6.2ft% 9.2fn", sum5p0, man_months, price); fflush(stdout); disp('ALL DONE');
which calls an Octave operate cocomo.m that implements the Fundamental COCOMO mannequin and estimates the fee by assuming an hourly fee of $50 per hour and {that a} man-month is 160 hours: That is an up to date model of the cocomo operate launched within the first article on this sequence.
operate [man_months, dev_time, people_required, cost] = cocomo(kloc, sort, hourly_rate) % [man_months, dev_time, people_required, cost] = cocomo(kloc [, type, hourly_rate]) % % kloc (1000's of strains of code) % sort (sort of challenge: natural, semi-detached, embedded) % hourly_rate (charges in USD per hour used to calculate challenge price) % % Implements Fundamental COCOMO (Constructive Price Mannequin), also referred to as COCOMO 81, from % Software program Engineering Economics by Barry Boehm % if nargin < 2 sort="natural"; finish if nargin < 3 hourly_rate = 50.0; % $50/hour finish c = 2.5; if strcmp(sort, 'natural') a = 2.4; b = 1.05; d = 0.38; finish if strcmp(sort, 'semi') % semi indifferent a = 3.0; b = 1.12; d = 0.35; finish if strcmp(sort, 'embedded') a = 3.6; b = 1.2; d = 0.32; finish man_months = a*(kloc)^b; dev_time = c*(man_months)^d; people_required = man_months / dev_time; price = man_months * 160 * hourly_rate; finish
The output of the maxima_anal.m Octave script was pasted into this text utilizing the Kompozer HTML editor. Kompozer has a function to transform textual content tables to HTML tables. The “Date” column was then added manually utilizing the desk enhancing options of Kompozer.
Conclusion
Maxima is clearly a considerable challenge, protecting a calendar interval from the 1960’s to the current. It in all probability included each algorithm analysis and improvement in addition to the implementation of recognized algorithms, particularly through the 1960’s when it was one of many first pc algebra programs, a topic of intense analysis on the time.
There are numerous urgent issues starting from speech recognition for cell and different gadgets to most cancers to vitality shortages that will fall to mathematical analysis and improvement and mathematical programming mixed with the large energy of recent computer systems. As could be seen from Maxima, the greenback price of such tasks is just not particularly massive. The guesstimated $12 million price of Maxima is sort of small in comparison with many publicly and privately funded actions. Nonetheless, the calendar time of such tasks is substantial, on this case over forty years. Only a few mathematical programming tasks could be accomplished in a calendar quarter (a couple of can). Usually, such tasks take between six months and several other years. Profitable real analysis tasks usually take years; Maxima/MACSYMA is an instance, being a uncommon instance of a profitable synthetic intelligence analysis and improvement challenge. Profitable mathematical programming tasks are more likely with practical targets and plans primarily based on historic expertise and knowledge.
References/Recommended Studying
Software program Engineering Economics
Barry W. Boehm
Prentice Corridor (November 1, 1981)
Software program Estimation: Demystifying the Black Artwork
Steve McConnell
Microsoft Press; 1 version (March 1, 2006)
© 2011 John F. McGowan
Concerning the Creator
John F. McGowan, Ph.D. is a software program developer, analysis scientist, and marketing consultant. He works primarily within the space of complicated algorithms that embody superior mathematical and logical ideas, together with speech recognition and video compression applied sciences. He has in depth expertise creating software program in C, C++, Visible Fundamental, Mathematica, MATLAB, and plenty of different programming languages. He’s in all probability finest recognized for his AVI Overview, an Web FAQ (Steadily 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 improvement of picture and video processing algorithms and expertise. He has revealed articles on the origin and evolution of life, the exploration of Mars (anticipating the invention of methane on Mars), and low cost entry to area. 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 Expertise (Caltech). He could be reached at [email protected].
Sponsor’s message: Math Higher Defined is an insightful e book and screencast sequence that may show you how to deeply perceive basic mathematical ideas, and see math in a brand new gentle. Get it right here.