Exploiting Persistence in Build Management

A challenging issue in the construction and maintenance of large application systems is how to determine which components need to be rebuilt after change, when and in which order. Rebuilding is typically recompilation and linking, but may also include update of derivable components such as cross-reference databases and re-creation of library indexes. Type definitions or schema, and data values in a file store, database or persistent store may also need to be rebuilt. The main purpose of this paper is to describe how persistent language technology can be exploited to enhance build management. In particular, the paper describes a method for transactional, incremental linking and the implementation of its support. To help implement this method, and to make it safer and more efficient to carry out rebuild activities in general, we have defined a set of automatically checkable constraints on the software. The build management tool we have implemented, the Builder, derives rebuild dependencies automatically and offers partitioning of dependency graphs—a means to defer or avoid unnecessary rebuilding. The Builder is implemented in a persistent programming language and provides build management for applications written in the language. It exploits features such as strong typing, runtime linguistic reflection, and referential integrity provided by the language processing technology. The Builder operates over both programs and (complex) data, which is in contrast to conventional language-centred tools. © 1997 by John Wiley & Sons, Ltd.

[1]  Richard C. H. Connor,et al.  Using persistence to support incremental system construction , 1993, Microprocess. Microsystems.

[2]  Robin Milner,et al.  Definition of standard ML , 1990 .

[3]  David N. Card,et al.  Empirical Study of Software Design Practices , 2004 .

[4]  Alan Dearle,et al.  An Adaptive Graphical Browser for Napier88 , 1990 .

[5]  David Maier,et al.  Making smalltalk a database system , 1984, SIGMOD '84.

[6]  David B. Leblang,et al.  Computer-Aided Software Engineering in a distributed workstation environment , 1984 .

[7]  Susan A. Dart,et al.  Concepts in configuration management systems , 1991, SCM '91.

[8]  Peter H. Feiler,et al.  Evaluation of the Rational Environment , 1988 .

[9]  Stuart I. Feldman,et al.  Make — a program for maintaining computer programs , 1979, Softw. Pract. Exp..

[10]  Leon J. Osterweil,et al.  A mechanism for environment integration , 1990, TOPL.

[11]  Roy Levin,et al.  The Vesta Approach to Precise Configuration of Large Software Systems , 1993 .

[12]  Kim Walden Automatic generation of make dependencies , 1984, Softw. Pract. Exp..

[13]  Richard C. H. Connor,et al.  Types and polymorphism in persistent programming systems , 1991 .

[14]  William A. Wulf,et al.  DIANA An Intermediate Language for Ada , 1983, Lecture Notes in Computer Science.

[15]  John G. P. Barnes Programming in ADA plus Language Reference Manual , 1991 .

[16]  Richard C. H. Connor,et al.  The Napier Type System , 1989, POS.

[17]  Roy Levin,et al.  The Vesta Language for Configuration Management , 1993 .

[18]  Ronald Morrison,et al.  Polymorphic Names and Iterations , 1990, DBPL.

[19]  Alan Dearle Environments: a flexible binding mechanism to support system evolution , 1989, [1989] Proceedings of the Twenty-Second Annual Hawaii International Conference on System Sciences. Volume II: Software Track.

[20]  Marc J. Rochkind,et al.  The source code control system , 1975, IEEE Transactions on Software Engineering.

[21]  Quintin I. Cutts,et al.  Analysing Persistent Language Applications , 1994, POS.

[22]  Andrew W. Appel,et al.  Separate compilation for Standard ML , 1994, PLDI '94.

[23]  David B. Leblang The CM challenge: configuration management that works , 1995 .

[24]  E. F. Ferraby Change Control During Computer Systems Development , 1991 .

[25]  David B. MacQueen Modules for standard ML , 1984, LFP '84.

[26]  Jacky Estublier Software Configuration Management: ICSE SCM-4 and SCM-5 Workshops. Selected Papers , 1995 .

[27]  Mark P. Jones,et al.  Using parameterized signatures to express modular structure , 1996, POPL '96.

[28]  Mark A. Linton,et al.  Linking programs incrementally , 1991, TOPL.

[29]  Richard C. H. Connor,et al.  The Napier88 Reference Manual , 1997 .

[30]  David S. Munro,et al.  Concurrent Shadow Paging in the Flask Architecture , 1994, POS.

[31]  Michael L. Van De Vanter,et al.  Software configuration management in an object oriented database , 1995 .

[32]  Ronald Morrison,et al.  A generic persistent object store , 1992, Softw. Eng. J..

[33]  Walter F. Tichy,et al.  Smart recompilation , 1986, TOPL.

[34]  Luca Cardelli,et al.  Typeful Programming , 1989, Formal Description of Programming Concepts.

[35]  Malcolm P. Atkinson Programming Languages and Databases , 1978, VLDB.

[36]  D. Stemple,et al.  Integrating Reflection, Strong Typing and Static Checking , 1997 .

[37]  Robert W. Taylor Bridges: Tools to Extend the Vesta Configuration Management System , 1993 .

[38]  Malcolm P. Atkinson,et al.  The Persistent Workshop - a Programming Environment for Napier88 , 1997, Nord. J. Comput..

[39]  Peter Buneman,et al.  Types and persistence in database programming languages , 1987, CSUR.

[40]  Ronald Morrison,et al.  Procedures as persistent data objects , 1985, TOPL.

[41]  Luca Cardelli,et al.  On understanding types, data abstraction, and polymorphism , 1985, CSUR.

[42]  Butler W. Lampson,et al.  A Kernel Language for Abstract Data Types and Modules , 1984, Semantics of Data Types.

[43]  Mark Rain,et al.  Avoiding trickle‐down recompilation in the Mary2 implementation , 1984, Softw. Pract. Exp..

[44]  Richard M. Stallman,et al.  GNU make : a program for directing recompilation , 1996 .

[45]  Paolo Manghi,et al.  Modules and type abstraction in persistent systems , 1996 .

[46]  Ronald Morrison,et al.  Types, Bindings and Parameters in a Persistent Environment , 1988, Data Types and Persistence , Informal Proceedings.

[47]  François Bancilhon,et al.  Building an Object-Oriented Database System, The Story of O2 , 1992 .

[48]  David B. Leblang,et al.  Parallel Software Configuration Management in a Network Environment , 1987, IEEE Software.

[49]  Gail E. Kaiser,et al.  Smarter recompilation , 1988, TOPL.

[50]  Q. I. Cutts,et al.  Delivering the benefits of persistence to system construction and execution , 1993 .

[51]  Alfred L. Brown,et al.  Persistent object stores , 1988 .

[52]  Jack C. Wileden,et al.  The AdaPIC Tool Set: Supporting Interface Control and Analysis Throughout the Software Development Process , 1989, IEEE Trans. Software Eng..

[53]  Rolf Adams,et al.  The cost of selective recompilation and environment processing , 1994, TSEM.

[54]  R. Connor,et al.  Design Issues for Persistent Java: a type-safe, object-oriented, orthogonally persistent system , 1996 .

[55]  Ronald Morrison,et al.  On the Classification of Binding Mechanisms , 1990, Inf. Process. Lett..

[56]  Ronald A. Olsson,et al.  A simple technique for automatic recompilation in modular programming languages , 1989, Softw. Pract. Exp..

[57]  Alan Dearle,et al.  On the construction of persistent programming environments , 1988 .