Hierarchical modularity

To cope with the complexity of very large systems, it is not sufficient to divide them into simple pieces because the pieces themselves will either be too numerous or too large. A hierarchical modular structure is the natural solution. In this article we explain how that approach can be applied to software. Our compilation manager provides a language for specifying where individual modules fit into a hierarchy and how they are related semantically. We pay particular attention to the structure of the global name space of program identifiers that are used for module linkage because any potential for name clashes between otherwise unrelated parts of a program can negatively affect modularity. We discuss the theoretical issues in building software hierarchically, and we describe our implementation of CM, the compilation manager for Standard ML of New Jersey.

[1]  Ivar Jacobson,et al.  Object-oriented development in an industrial environment , 1987, OOPSLA '87.

[2]  Carl A. Gunter Abstracting dependencies between software configuration items , 1996, SIGSOFT '96.

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

[4]  F. W. Scheifler,et al.  X Window system: C Library and protocol reference , 1988 .

[5]  Andrew W. Appel,et al.  Modern Compiler Implementation in ML , 1997 .

[6]  Luca Cardelli,et al.  Modula-3 Report. , 1988 .

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

[8]  Geoffrey Clemm The Odin System , 1995, SCM.

[9]  Polle Zellweger,et al.  The structure of Cedar , 1985, ACM SIGPLAN Notices.

[10]  Andrew W. Appel,et al.  Standard ML of New Jersey , 1991, PLILP.

[11]  Butler W. Lampson,et al.  Practical use of a polymorphic applicative language , 1983, POPL '83.

[12]  A. Church The calculi of lambda-conversion , 1941 .

[13]  Henk Barendregt,et al.  The Lambda Calculus: Its Syntax and Semantics , 1985 .

[14]  Ken Arnold,et al.  The Java programming language (2nd ed.) , 1998 .

[15]  Matthias Blume,et al.  Dependency analysis for Standard ML , 1999, TOPL.

[16]  Frank Pfenning,et al.  Incremental Recompilation for Standard ML of New Jersey , 1994 .

[17]  Jay Lepreau,et al.  The Flux OSKit: a substrate for kernel and language research , 1997, SOSP.

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

[19]  Paul DuBois Software portability with imake , 1993 .

[20]  Brian W. Kernighan,et al.  The C Programming Language, Second Edition , 1988 .

[21]  Bjarne Stroustrup,et al.  The Annotated C++ Reference Manual , 1990 .

[22]  Frank Pfenning,et al.  A Compilation Manager for Standard ML of New Jersey , 1994 .

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

[24]  Brian W. Kernighan,et al.  The C Programming Language , 1978 .

[25]  Marvin H. Solomon,et al.  An Overview of the CAPITL Software Development Environment , 1995, SCM.

[26]  Ken Arnold,et al.  The Java Programming Language , 1996 .

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

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

[29]  Andrew W. Appel Modern Compiler Implementation in ML: Basic Techniques , 1997 .

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

[31]  B. Lampson,et al.  Organizing software in a distributed environment , 1983, SIGPLAN '83.

[32]  A. Church The Calculi of Lambda Conversion. (AM-6) (Annals of Mathematics Studies) , 1985 .

[33]  D. L. Parnas,et al.  On the criteria to be used in decomposing systems into modules , 1972, Software Pioneers.

[34]  Luca Cardelli,et al.  Program fragments, linking, and modularization , 1997, POPL '97.

[35]  John S. Baras Systems Research Center. , 1985 .

[36]  LepreauJay,et al.  The Flux OSKit , 1997 .

[37]  A. Broder Some applications of Rabin’s fingerprinting method , 1993 .

[38]  Paul DuBois Software portability with imake (2nd ed.) , 1996 .

[39]  Roy Levin,et al.  The Vesta Repository: A File System Extension for Software Development , 1993 .