Abstract
We begin by using a software metric tool to generate a number of software complexity measures and we investigate how these values may be used to determine subroutines which are likely to be of substandard quality.
Following this we look at how these metric values have changed over the years. First we consider a number of freely available Fortran libraries (Eispack, Linpack and Lapack) which have been constructed by teams. In order to ensure a fair comparison we use a restructuring tool to transform original Fortran 66 code into Fortran 77.
We then consider the Fortran codes from the Collected Algorithms from the ACM (CALGO) to see whether we can detect the same trends in software written by the general numerical community.
Our measurements show that although the standard of code in the freely available libraries does appear to have improved over time these libraries still contain routines which are effectively unmaintainable and untestable.
Applied to the CALGO codes the metrics indicate a very conservative approach to software engineering and there is no evidence of improvement, during the last twenty years, in the qualities under discussion.
Keywords
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.
This is a preview of subscription content, log in via an institution.
Buying options
Tax calculation will be finalised at checkout
Purchases are for personal use only
Learn about institutional subscriptionsPreview
Unable to display preview. Download preview PDF.
References
E. Anderson, Z. Bai, C. Bischof, J. Demmel, J. J. Dongarra, J. Du Croz, A. Greenbaum, S. Hammarling, A. Mckenney, S. Ostrouchov, and D. Sorensen. LAPACK: Users’ Guide. SIAM, Philadelphia, second edition, 1995.
ANSI. Programming Language Fortran X3.9–1966. American National Standards Institute, New York, 1966.
ANSI. Programming Language Fortran X3.9–1978. American National Standards Institute, New York, 1979.
B. S. Baker. An algorithm for structuring fiowgraphs. JACM, 24(1):98–120, January 1977.
J. N. Buxton and B. Randelf, editors. Software Engineering Techniques; Report on a Conference Sponsored by the NATO Science Committee, Rome, Italy, 27th to 31st October 1969., Brussels, 1970. NATO, NATO Scientific Affairs Division.
J. J. Dongarra, J. Du Croz, I. S. Duff, and S. Hammarling. Algorithm 679: A set of level 3 basic linear algebra subprograms. ACM Trans. Math. Softw., 16(1):18–28, March 1990.
J. J. Dongarra, J. Du Croz, S. Hammarling, and R. J. Hanson. Algorithm 656: An extended set of basic linear algebra subprograms Model implementation and test programs. ACM Trans. Math. Softw., 14(1):18–32, March 1988.
J. J. Dongarra, C. B. Moler, J. R. Bunch, and G. W. Stewart. LINPACK: Users’ Guide. SIAM, Philadelphia, 1979.
B. S. Garbow, J. M. Boyle, J. J. Dongarra, and C. B. Moler. Matrix Eigensystem Routines - EISPACK Guide Extension, volume 51 of Lecture Notes in Computer Science. Springer-Verlag, New York, 1977.
R. B. Grady. Successfully applying software metrics. Computer, 27(9):18–25, September 1994.
T. R. Hopkins. Restructuring software: A case study. Software — Practice and Experience, 26(8):967–982, July 1996.
T. R. Hopkins. Restructuring the BLAS level 1 fast Givens routines. Technical Report 13–96, Computing Laboratory, University of Kent, Canterbury, Kent, CT2 7NF, UK, July 1996.
T. R. Hopkins and L. Hatton. Experiences with FLINT, a software metrication tool for fortran 77. In The Symposium on Software Tools, Edinburgh, 1988. Napier Polytechnic
R. J. Hanson and F. T. Krogh. Translation of Algorithm 539: PCBLAS basic linear algebra subprograms for Fortran usage with the INTEL 8087 80287 numeric data processor. ACM Transactions on Mathematical Software, 13(3):311–317, September 1987.
ISO/IEC. Information Technology - Programming Languages - Fortran (ISO/IEC 1539:1991(E)). ISO/IEC Copyright Office, Geneva, 1991.
LDRA Group, Liverpool, UK. LDRA Test bed.
C. L. Lawson, R. J. Hanson, D. R. Kincaid, and F. T. Krogh. Basic linear algebra subprograms for Fortran usage. ACM Trans. Math. Softw., 5:308–323, 1979.
M. Lorenz and J. Kidd. Object-Oriented Software Metrics. Object-Oriented Series. Prentice Hall, Englewood Cliffs, New Jersey, 1994.
T. J. McCabe. A complexity measure. IEEE Transactions on Software Engineering, SE-2(4):308–320, 1976.
G. J. Myers. An extension to the cyclomatic measure of program complexity. Sigplan Notices, 12(10):61–64, 1977.
B. A. Nejmeh. NPATH: A measure of execution path complexity and its applications. Commun. ACM, 31(2):188–200, 1988.
Numerical Algorithms Group Ltd., Oxford, UK. NAGWare f77 Tools, second edition, September 1992.
Polyhedron Software, Oxford, UK. plusFORT, Revision B edition, 1993.
Programming Research Ltd, Hersham, Surrey. QA Fortran 6.0, 1992.
B. F. Ryan, B. L. Joiner, and T. A. Ryan Jr. MINITAB Handbook. Duxbury Press, Belmont, California, second edition, 1992.
M. Shepperd. A critique of cyclomatic complexity as a software metric. Software Engineering Journal, pages 30–36, March 1988.
M. Shepperd and D. C. Ince. A critique of three metrics. J. Systems Software, pages 197–210, 1994.
B. T. Smith, J. M. Boyle, J. J. Dongarra, B. S. Garbow, Y. Ikebe, V. C. Klema, and C. B. Moler. Matrix Eigensystem Routines - EISPACK Guide, volume 6 of Lecture Notes in Computer Science Springer-Verlag, New York, second edition, 1976.
J. H. Wilkinson and C. Reinsch. Linear Algebra, volume 2 of Handbook for Automatic Computation. Springer-Verlag, New York, 1971.
M. R. Woodward, M. A. Hennell, and D. Hedley. A measure to control flow complexity in program text. IEEE Transactions on Software Engineering, SE-5(1):45–50, 1979.
H. Zuse. Software Complexity: Measures and Methods. W. de Gruyter, Berlin, 1991.
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 1997 Springer Science+Business Media New York
About this chapter
Cite this chapter
Hopkins, T.R. (1997). Is the Quality of Numerical Subroutine Code Improving?. In: Arge, E., Bruaset, A.M., Langtangen, H.P. (eds) Modern Software Tools for Scientific Computing. Birkhäuser, Boston, MA. https://doi.org/10.1007/978-1-4612-1986-6_14
Download citation
DOI: https://doi.org/10.1007/978-1-4612-1986-6_14
Publisher Name: Birkhäuser, Boston, MA
Print ISBN: 978-1-4612-7368-4
Online ISBN: 978-1-4612-1986-6
eBook Packages: Springer Book Archive