Browse Prior Art Database

Meta Programming: a Software Production Method Disclosure Number: IPCOM000128903D
Original Publication Date: 1977-Dec-31
Included in the Prior Art Database: 2005-Sep-20

Publishing Venue

Software Patent Institute

Related People

Charles Sirnonyi: AUTHOR [+2]


2 1.2 Software production as a process technology 4 1.3 Design strategies when production is inexpensive 10 1.4 Process technology and software sharing 15 1.5 Measures of software productivity 19 1.6 What determines productivity? 22 CHAPTER 2: Meta-Programming 25 2.1 Introduction 26 2.2 Optimizing software productivity 26 2.3 Task orders and meta-programs 30 2.4 Abstractions and operations 34 2.5 Naming of types and quantities ' 39 2.6 Debugging as an organized activity 46 2.7 Other meta-programming conventions 54 2.7.1 Divisions in meta-programs 55 2.7.2 Naming conventions for procedures 56 2.7.3 Name hyphenation 57 2.7.4 Parameter order in procedures 57 2.7.5 Use of comments for explanation 57 2.7.6 Programming language syntax extensions 58 2.7.7 Standard operations 59 2.8 Meta-programming example 59 2.9 Comparisons and combinations with other programming methods 66 2.9.1 High level languages 66 2.9.2 Buddy system, Egoless Programming 67 2.9.3 Structured programming,goto-less programming 68 2.9.4 Chief programmer teams 68 2.9.5 Automatic program verificalion 71 CHAPTER 3: Experimental Verificatioo 73 3.1 Introduction 74 3.2 Experimental approach 74 3.3 Experimental environment 75 3.4 Experimental setup 77 3.5 Measurement methods 79 3.6 Task specifications 80 3.7 Productivity accounting 81 3.8 Potential sources of measurement errors 82 3.9 Experimental results 83 3.9.1 Early experiments group (Projects A and P) 84 3.9.2 Project C 86 3.9.3 Projects D1, D2 and D control 88

This text was extracted from a PDF file.
This is the abbreviated version, containing approximately 2% of the total text.

Page 1 of 84


©; Copyright 1977 by Xerox Corporation; used with permission

Meta Programming: a Software Production Method

by Charles Sirnonyi

CSL-76-7 December 1976

This thesis describes an organizational schema, designed to yield very high programming productivity in a simplified task environment which excludes scheduling, system design, documentation, and other engineering activities. The leverage provided by high productivity can, in turn, be used to simplify the engineering tasks.

Difficulty of communications within a production team, caused by the inherently rapid creation of problem specific local language, is posited as the major obstacle to the improvement of productivity. The thesis proposes a combination of ideas for simplifying communications between programmers. Meta programs are informal, written commu-nications, from the meta- programmer, who creates the local language, to technicians who learn it and actually write the programs.

The abstract notion of local language is resolved into the questions: what are the objects that should be named, and what should their names be? The answers involve the concept of painted types (related to types in programming languages), and naming conventions based on the idea of identifying objects by their types.

A method of state vector syntax checking for debugging the programs produced in the high productivity environment is described.

Descriptions of the relationships or contrasts between the meta-programming organization and the relevant software engineering concepts of high level languages, egoless programming, structured programming, Chief Programmer Teams, and automatic program verification are also given.

To verify the predictions of the meta-programming theory, a series of experiments were performed. In one of the projects, three programs were produced from the same specifications, by three different groups in a controlled experiment. During the longest experiment 14,000 lines of code were written, at an average rate of 6.12 lines/man-hour. The controlled experiments showed that comparable results can be obtained by different persons acting as meta- programmers. The difficult experimental comparisons of the meta-programming and conventional organizations, however, yielded interesting, but inconclusive, results.


Software engineering, management of software production, measurement of program-ming productivity, meta-programming, painted types, naming conventions, state vector syntax checking


Dec 31, 1977

Page 1

Page 2 of 84

Meta Programming: a Software Production Method

1.53, 2.2, 2.42, 2.43, 3.50, 4,22

XEROX PALO ALTO RESEARCH CENTER 3333 Coyote Hill Road / Palo Alto,' Ca!itornia g Copyright 1977 by Charles Simonyi


First. I would like to thank my parents for their courageous support, which was tendered often under difficult circumstances. I am also extremely grateful to Mr. Nie...