{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,6,19]],"date-time":"2025-06-19T04:54:51Z","timestamp":1750308891012,"version":"3.41.0"},"reference-count":14,"publisher":"Association for Computing Machinery (ACM)","issue":"2","license":[{"start":{"date-parts":[[1984,4,1]],"date-time":"1984-04-01T00:00:00Z","timestamp":449625600000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/www.acm.org\/publications\/policies\/copyright_policy#Background"}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["SIGSOFT Softw. Eng. Notes"],"published-print":{"date-parts":[[1984,4]]},"abstract":"<jats:p>This paper presents a generalization of two fundamental programming concepts, LOCAL ABSTRACTIONS and GLOBAL ABSTRACTIONS, and a survey of several mechanisms for implementing them. Global abstractions are semantic definitions (of objects) used throughout a program, whereas Local abstractions are refinement steps generated by the subdivision of a problem into subproblems. Global abstractions are very well supported in today's programming languages, but there is no mechanism entirely satisfactory for the \"natural\" development of programs using top-down step-wise decomposition techniques. Current languages lack means of expressing the hierarchical tree structure of programs. The structure of the program &lt;u&gt;must be retained explicitly&lt;\/u&gt;, and with varying degrees of detail at different levels corresponding to the way the program was developed. There is an important deficiency in the process of refining the solution to a problem: local abstractions, which describe intermediate stages of the solution, are replaced by their corresponding refinements.In particular, we discuss some inadequacies of \"the facto\" structuring constructs in modern languages, showing that, for instance, procedures should not be used for represeting refinements, since these are intended to control the \"static\" program structure (refinements may well represent non-executable pieces of code!). Finally, we propose the introduction of two new DESIGN constructs for developing structured programs which can show and maintain the solutions's structure as produced during the development process.<\/jats:p>","DOI":"10.1145\/1010925.1010930","type":"journal-article","created":{"date-parts":[[2004,7,21]],"date-time":"2004-07-21T23:30:10Z","timestamp":1090452610000},"page":"80-88","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":1,"title":["Pragmatic problems with step-wise refinement program development"],"prefix":"10.1145","volume":"9","author":[{"given":"Jorge L.","family":"Diaz-Herrera","sequence":"first","affiliation":[{"name":"State University of New York at Binghamton, Binghamton, N.Y."}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"320","published-online":{"date-parts":[[1984,4]]},"reference":[{"key":"e_1_2_1_1_1","doi-asserted-by":"publisher","DOI":"10.1145\/947886.947888"},{"key":"e_1_2_1_2_1","volume-title":"Software Engineering with Ada\" (Benjamin-Cummings 1983)","author":"Booch G.","year":"1983","unstructured":"Booch , G. ( 1983 ) \" Software Engineering with Ada\" (Benjamin-Cummings 1983) Booch, G. (1983) \"Software Engineering with Ada\" (Benjamin-Cummings 1983)"},{"key":"e_1_2_1_3_1","volume-title":"May","author":"Bowles K. L.","year":"1978","unstructured":"Bowles , K. L. ( 1978 ) \" UCSD Pascal: a (nealry) Machine Independent Software System\" (Byte , May 1978, p3). Bowles, K. L. (1978) \"UCSD Pascal: a (nealry) Machine Independent Software System\" (Byte, May 1978, p3)."},{"key":"e_1_2_1_4_1","volume-title":"Structured Programming","author":"Dahl J.","year":"1972","unstructured":"Dahl , O- J. , Dijstra, E. W. and Hoare , C. A. R . ( 1972 ) \" Structured Programming \" ( Academic Press) Dahl, O-J., Dijstra, E. W. and Hoare, C. A. R. (1972) \"Structured Programming\" (Academic Press)"},{"key":"e_1_2_1_5_1","first-page":"723","volume-title":"COMPSAC conf","author":"Diaz-Herrera J. L.","year":"1980","unstructured":"Diaz-Herrera , J. L. and R. C. Flude ( 1980 ) \" pascal\/HSD: a graphical programming system\" (IEEE , COMPSAC conf . Chicago , pp 723 -- 728 ) Diaz-Herrera, J. L. and R. C. Flude (1980) \"pascal\/HSD: a graphical programming system\" (IEEE, COMPSAC conf. Chicago, pp 723--728)"},{"key":"e_1_2_1_7_1","volume-title":"Watson school, technical report CS-83-07)","author":"Diaz-Herrera J. L.","year":"1983","unstructured":"Diaz-Herrera , J. L. ( 1983 ) \" Abstraction Mechanisms\" (SUNY Binghamton , Watson school, technical report CS-83-07) Diaz-Herrera, J. L. (1983) \"Abstraction Mechanisms\" (SUNY Binghamton, Watson school, technical report CS-83-07)"},{"key":"e_1_2_1_8_1","volume-title":"A discipline of programming","author":"Dijkstra E. W.","year":"1976","unstructured":"Dijkstra , E. W. ( 1976 ) \" A discipline of programming \" ( Prentice-Hall) Dijkstra, E. W. (1976) \"A discipline of programming\" (Prentice-Hall)"},{"key":"e_1_2_1_9_1","volume-title":"Reference manual for tha Ada programming language\" (#008-000-00394-7","author":"Do D","year":"1983","unstructured":"Do D ( 1983 ) \" Reference manual for tha Ada programming language\" (#008-000-00394-7 , Goverment Printing Office, Washington, D.C. 20402, Feb. 1983) DoD (1983) \"Reference manual for tha Ada programming language\" (#008-000-00394-7, Goverment Printing Office, Washington, D.C. 20402, Feb. 1983)"},{"key":"e_1_2_1_10_1","doi-asserted-by":"publisher","DOI":"10.1145\/988152.988158"},{"key":"e_1_2_1_11_1","first-page":"8","article-title":"Ada as Design Language","volume":"1980","author":"Waugh D. W.","year":"1980","unstructured":"Waugh , D. W. ( 1980 ) \" Ada as Design Language \" (IBM Software Engineering Exchange , Oct. 1980 , pp 8 -- 12 ) Waugh, D. W. (1980) \"Ada as Design Language\" (IBM Software Engineering Exchange, Oct. 1980, pp 8--12)","journal-title":"(IBM Software Engineering Exchange"},{"key":"e_1_2_1_12_1","doi-asserted-by":"publisher","DOI":"10.1002\/spe.4380091109"},{"key":"e_1_2_1_13_1","volume-title":"Structured System Programming","author":"Welsh J.","year":"1980","unstructured":"Welsh , J. and M. McKeag ( 1980 ) \" Structured System Programming \" ( Prentice-Hall international). Welsh, J. and M. McKeag (1980) \"Structured System Programming\" (Prentice-Hall international)."},{"key":"e_1_2_1_14_1","doi-asserted-by":"publisher","DOI":"10.1145\/362575.362577"},{"key":"e_1_2_1_15_1","volume-title":"The Programming Language Modula-2","author":"Wirth N.","year":"1983","unstructured":"Wirth , N. ( 1983 ) \" The Programming Language Modula-2 \" ( Springer-Verlag , 1983) Wirth, N. (1983) \"The Programming Language Modula-2\" (Springer-Verlag, 1983)"}],"container-title":["ACM SIGSOFT Software Engineering Notes"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/1010925.1010930","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/1010925.1010930","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,18]],"date-time":"2025-06-18T21:25:41Z","timestamp":1750281941000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/1010925.1010930"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[1984,4]]},"references-count":14,"journal-issue":{"issue":"2","published-print":{"date-parts":[[1984,4]]}},"alternative-id":["10.1145\/1010925.1010930"],"URL":"https:\/\/doi.org\/10.1145\/1010925.1010930","relation":{},"ISSN":["0163-5948"],"issn-type":[{"type":"print","value":"0163-5948"}],"subject":[],"published":{"date-parts":[[1984,4]]},"assertion":[{"value":"1984-04-01","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}