Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
10.1145/800027.808420acmconferencesArticle/Chapter ViewAbstractPublication PagesConference Proceedingsacm-pubtype
Article
Free access

The impact of language design on the production of reliable software

Published: 01 April 1975 Publication History
  • Get Citation Alerts
  • Abstract

    The language in which programs are written can have a substantial effect on their reliability. This paper discusses the design of programming languages to enhance reliability. It presents several general design principles, and then applies them to particular language constructs. Since we can not logically prove the validity of such design principles, empirical evidence is needed to support or discredit them. Gannon has performed a major experiment to measure the effect of nine specific language design decisions in one context. Analysis of the frequency and persistence of errors shows that several decisions had a significant impact on reliability.

    References

    [1]
    Belady, L.A., and M.M. Lehman; APL/360 User's Manual; IBM Technical Publications Department, White Plains, New York, GH20-0683-1 (March 1970).
    [2]
    Belady, L.A., and M.M. Lehman; Programming System Dynamics or the Meta-Dynamics of Systems in Maintenance and Growth; IBM Thomas J. Watson Research Center, Yorktown Heights, New York, RC 3546 (September 1971).
    [3]
    Boies, S.J., and J.D. Gould; A Behavioral Analysis of Programming: On the Frequency of Syntactical Errors; IBM Thomas J. Watson Research Center, Yorktown Heights, New York, RC 3907 (June 27, 1972) pp. 1-18.
    [4]
    Clark, B.L., and J.J. Horning; The System Language for Project SUE; SIGPLAN Notices, vol. 6, no. 9 (October 1971) pp.79-88.
    [5]
    Clark, B.L., and J.J. Horning; Reflections on a Language Designed to Write an Operating System; SIGPLAN Notices, vol. 8, No. 9 (September 1973) pp.52-56.
    [6]
    Clint, M., and C.A.R. Hoare; Program Proving: Jumps and Functions; Acta Informatica, vol. 1 (1972) pp. 214-224.
    [7]
    Conway, R.W., and T.R. Wilcox; Design and Implementation of a Diagnostic Compiler; Communications of the ACM, vol. 16, no. 3 (March 1973) pp.169-179.
    [8]
    Czarnik, B., and D.C. Tsichritzis (eds.), A. Ballard, M. Dryer, R.C. Holt, and L. Weissman; A Student Project for an Operating Systems Course; University of Toronto, Computer Systems Research Group, Technical Report 29 (October 1973) pp.59-104.
    [9]
    Dahl, O.-J., K. Nygaard, and B. Myhrhaug; The Simula 67 Common Base Language; Norwegian Computing Center, Oslo, Technical Report S-22 (1970).
    [10]
    Dijkstra, E.W.; Go To Statement Considered Harmful; Communications of the ACM, vol. 11, no. 3 (March 1968) pp.147-148.
    [11]
    Freund, J.E.; Modern Elementary Statistics; Prentice-Hall, Inc., Englewood Cliffs, New Jersey (1967) pp. 1-432.
    [12]
    Gannon, J.D.; User's Manual for TOPPSII; University of Toronto, Department of Computer Science (September 1973) pp.1-53.
    [13]
    Gannon, J.D.; Language Design to Enhance Programming Reliability; University of Toronto, Computer Systems Research Group, Technical Report 47 (January 1975) pp.1-247.
    [14]
    Gordon, H.; Paragraphing Computer Programs; M.Sc. Thesis, University of Toronto, Department of Computer Science (1975) (to appear).
    [15]
    Gould, J.D., and P. Drongowski; A Controlled Psychological Study of Computer Program Debugging; IBM Thomas J. Watson Research Center, Yorktown Heights, New York, RC 4083 (October 19, 1972) pp. 1-39
    [16]
    Gould, J.D.; Some Psychological Evidence on How People Debug Computer Programs; IBM Thomas J. Watson Research Center, Yorktown Heights, New York, RC 4542 (September 26, 1973) pp. 1-530
    [17]
    Hoare, C.A.R.; Case Expressions; ALGOL Bulletin, no. 18 (October 1964) pp. 20-22.
    [18]
    Hoare, C.A.R.; Procedures and Parameters: An Axiomatic Approach; in Engeler, E. (ed.), Symposium on the Semantics of Algorithmic Languages, Springer-Verlag, New York (1971) pp.102-116.
    [19]
    Hoare, C.A.R.; Hints on Programming Language Design; Stanford University, Computer Science Department, Technical Report STAN-CS-73-403 (December 1973) pp.1-29.
    [20]
    Hoare, C.A.R.; Recursive Data Structures; Stanford University, Computer Science Department, Technical Report STAN-CS-73-400 (October 1973) pp.l-32.
    [21]
    Ichbiah, J.D., and J.P. Rissen; Directions de Travail pour un Atelier de Software, Rapport Preliminaire; Compagnie Internationale Pour l'Informatique, Paris, France (October 1971) pp.3-9
    [22]
    Igarishi, S., R.L. London, and D.C. Luckham; Automatic Program Verification I: Logical Basis and Implementation; Stanford University, Computer Science Department, Technical Report STAN-CS-73-365 (May 1973) pp.l-50.
    [23]
    Liskov, B., and S. Zilles; Programming with Abstract Data Types; SIGPLAN Notices, vol. 9, no.4 (April 1974) pp.50-59.
    [24]
    Miller, L.A.; Normative Procedure Specification; Eighty-first Annual Convention of the American Psychological Association, Montreal, Canada (1973).
    [25]
    Miller, L.A. ; Programming by Non-Programmers; International Journal of Man-Machine Studies, vol. 6, No. 2 (March 1974) pp.237-260.
    [26]
    Morgan, H.L.; Spelling Correction in System Programs; Communications of the ACM, vol. 13, no. 2 (February 1970) pp. 90-94.
    [27]
    Moulton, P.G., and M.E. Muller; DITRAN - A Compiler Emphasizing Diagnostics; Communications of the ACM, vol. 10, no. l (January 1967) pp. 45-52.
    [28]
    Nagy, G., and M.C. Pennebaker; A Step Toward Automatic Analysis of Logically Undetectable Programming Errors; IBM Thomas J. Watson Research Center, Yorktown Heights, New York, RC 3407 (June 17, 1971) pp.1-26.
    [29]
    Naur, P.; Programming by Action Clusters; BIT, vol. 9, no. 3 (1969) pp. 250-258.
    [30]
    Parnas, D.L.; On the Criteria Used in Decomposing Systems into Modules; Communications of the ACM, vol. 15, no. 12 (December 1972) pp. 1053-1058.
    [31]
    Parnas, D.L.; IBM System/360 PL/I (F) Language Reference Manual; IBM United Kingdom Laboratories, Ltd., Programming Publications, Hursley Park, Winchester, Hampshire, England, file no. S360-29, Form no GC28-8201-3 (June 1970) pp. 1-444.
    [32]
    Poole, P.C.; Debugging and Testing; in Bauer, F.L. (ed.), Advanced Course on Software Engineering, Springer-Verlag, New York (1973) pp.278-318.
    [33]
    Richards, M.; BCPL: A Tool for Compiler and System Writing; Proceedings of the SJCC, vol. 34 (1969) pp.557-566.
    [34]
    Satterthwaite, E.; Debugging Tools for High-Level Languages; Software - Practice and Experience, vol. 2, no. 3 (July/September 1972) pp. 197-217.
    [35]
    Sime, M.E., T.R.G. Green, and D.J. Guest; Psychological Evaluation of Two Conditional Constructions Used in Computer Languages; International Journal of Man-Machine Studies, vol. 5, no. 1 (1973) pp.105-113.
    [36]
    van Wijngaarden, A. (ed.), B.J. Mailloux, J.E.L. Peck, and C.H.A. Koster; Report on the Algorithmic Language ALGOL 68; Mathematical Center, Amsterdam (February 1969).
    [37]
    Weinberg, G.M.; The Psychology of Computer Programming; Van Nostrand Reinhold Co., New York (1971) pp.1-288.
    [38]
    Weissman, L.M.; A Methodology for Studying the Psychological Complexity of Computer Programs; University of Toronto, Computer Systems Research Group, Technical Report 37 (August 1974) pp.1-231.
    [39]
    Wirth, N.; The Programming Language Pascal; Acta Informatica, vol. l, no. l (1971) pp.35-63.
    [40]
    Wirth, N.; Program Development by Stepwise Refinement; Communications of the ACM, vol. 14, no. 4 (April 1971)
    [41]
    Wirth, N.; On the Design of Programming Languages; IFIP Congress 74, North-Holland Publishing Company, Amsterdam (1974) pp.386-393.
    [42]
    Wulf, W.A., D.B. Russell, and A.N. Habermann; BLISS: A Language for Systems Programming; Communications of the ACM, vol. 14, no. 12 (December 1971) pp.780-790.
    [43]
    Wulf, W.A., and M. Shaw; Global Variable Considered Harmful; SIGPLAN Notices, vol. 8, no. 2 (February 1973) pp.28-34.
    [44]
    Youngs, E.A.; Human Errors in Programming; International Journal of Man-Machine Studies, vol. 6, no. 3 (May 1974) pp. 361-376.

    Cited By

    View all

    Recommendations

    Comments

    Information & Contributors

    Information

    Published In

    cover image ACM Conferences
    Proceedings of the international conference on Reliable software
    April 1975
    567 pages
    ISBN:9781450373852
    DOI:10.1145/800027
    Permission to make digital or hard copies of part or all of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for third-party components of this work must be honored. For all other uses, contact the Owner/Author.

    Sponsors

    Publisher

    Association for Computing Machinery

    New York, NY, United States

    Publication History

    Published: 01 April 1975

    Check for updates

    Author Tags

    1. Characteristic errors
    2. Experimentation.
    3. Language design
    4. Redundancy
    5. Reliability

    Qualifiers

    • Article

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • Downloads (Last 12 months)140
    • Downloads (Last 6 weeks)28
    Reflects downloads up to 11 Aug 2024

    Other Metrics

    Citations

    Cited By

    View all
    • (2009)NeonSoftware Language Engineering10.1007/978-3-642-00434-6_4(35-53)Online publication date: 24-Mar-2009
    • (2006)Dave—a validation error detection and documentation system for fortran programsSoftware: Practice and Experience10.1002/spe.43800604056:4(473-486)Online publication date: 27-Oct-2006
    • (1982)Software Reliability Status and PerspectivesIEEE Transactions on Software Engineering10.1109/TSE.1982.2357288:4(354-371)Online publication date: 1-Jul-1982
    • (1981)PL/I SessionHistory of Programming Languages10.1016/B978-0-12-745040-7.50017-X(551-599)Online publication date: 1981
    • (1980)An intermediate level dynamic storage capabilityACM SIGPLAN Notices10.1145/954127.95412915:1(24-33)Online publication date: 1-Jan-1980
    • (1979)Experimental evaluation of programming language featuresACM SIGCSE Bulletin10.1145/953030.80954411:1(18-21)Online publication date: 1-Jan-1979
    • (1979)Experimental evaluation of programming language featuresProceedings of the tenth SIGCSE technical symposium on Computer science education10.1145/800126.809544(18-21)Online publication date: 1-Jan-1979
    • (1979)Syntactic/semantic interactions in programmer behavior: A model and experimental resultsInternational Journal of Computer & Information Sciences10.1007/BF009777898:3(219-238)Online publication date: Jun-1979
    • (1978)Toward an effective software reliability evaluationProceedings of the 3rd international conference on Software engineering10.5555/800099.803189(46-55)Online publication date: 10-May-1978
    • (1978)The early history and characteristics of PL/IACM SIGPLAN Notices10.1145/960118.80838913:8(227-241)Online publication date: 1-Aug-1978
    • Show More Cited By

    View Options

    View options

    PDF

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader

    Get Access

    Login options

    Media

    Figures

    Other

    Tables

    Share

    Share

    Share this Publication link

    Share on social media