Models of software development environments

We present a general model of software development environments that consists of three components: policies, mechanisms and structures. The advantage of this formalization is that it distinguishes precisely those aspects of an environment that are useful in comparing and contrasting software development environments. We introduce four classes of models by means of a sociological metaphor that emphasizes scale: the individual, the family, the city and the state models. The utility of this taxonomy is that it delineates the important classes of interaction among software developers and exposes the ways in which current software development environments inadequately support the development of large systems. Environments reflecting the individual and family models are the current state of the art. Unfortunately, these two models are ill-suited for the development of large systems that require more than, say, 20 programmers. We argue that there is a qualitative difference between the interactions among a small, “family” project and a large, “city” project and that this qualitative difference requires a fundamentally different model of software development environments. We illustrate the city model with Inscape/Infuse and ISTAR, the only two environments we know of that instantiate this model, and show that there is a pressing need for further research on this kind of environment. Finally, we postulate a state model, which is in need of further clarification, understanding and, ultimately, implementation.

[1]  Erhard Plödereder,et al.  Object management issues for software engineering environments workshop report , 1988, SDE 3.

[2]  Richard T. Snodgrass Interface description language - definition and use , 1989, Principles of computer science series.

[3]  Mark Dowson,et al.  Integrated Project Support with IStar , 1987, IEEE Software.

[4]  Carlo Ghezzi,et al.  Augmenting Parsers to Support Incrementality , 1980, JACM.

[5]  Thomas E. Cheatham,et al.  Program refinement by transformation , 1981, ICSE '81.

[6]  Gail E. Kaiser,et al.  WORKSPACES AND EXPERIMENTAL DATABASES: AUTOMATED SUPPORT FOR SOFTWARE MAINTENANCE AND EVOLUTION. , 1987 .

[7]  Dines Bjørner,et al.  Proceedings of the 36th International Conference on Software Engineering , 1989, ICSE 1989.

[8]  James E. Archer,et al.  Rational's experience using Ada for very large systems , 1986 .

[9]  Gail E. Kaiser,et al.  Intelligent Assistance without Artificial Intelligence , 1987, COMPCON.

[10]  Thomas W. Reps,et al.  The synthesizer generator , 1984, SDE 1.

[11]  Ian Thomas,et al.  PCTE interfaces: supporting tools in software-engineering environments , 1989, IEEE Software.

[12]  Richard C. Waters,et al.  Automatic programming: myths and prospects , 1988, Computer.

[13]  Guy L. Steele,et al.  Common Lisp the Language , 1984 .

[14]  Jonathan Walpole,et al.  A unifying model for consistent distributed software development environments , 1989, SDE 3.

[15]  C. Tully Proceedings of the 4th international software process workshop on Representing and enacting the software process , 1988 .

[16]  David Garlan,et al.  Views for Tools in Integrated Environments , 1986, Advanced Programming Environments.

[17]  Richard C. Waters,et al.  The Programmer's Apprentice: a research overview , 1988, Computer.

[18]  Thomas Reps,et al.  Programming Techniques and Data Structures , 1981 .

[19]  D. C. Luckham ANNA, a language for annotating Ada programs: reference manual , 1987 .

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

[21]  N H Minsky Controlling the evolution of large scale software systems , 1986 .

[22]  Jack C. Wileden,et al.  A comparative evaluation of object definition techniques for large prototype systems , 1990, TOPL.

[23]  P. A. Berstein Database system support for software engineering , 1987, ICSE '87.

[24]  Guido Persch Automating the transformational development of software , 1987 .

[25]  David Robson,et al.  Smalltalk-80: The Language and Its Implementation , 1983 .

[26]  Hans H. Kron,et al.  Programming-in-the-Large Versus Programming-in-the-Small , 1975 .

[27]  John R. Nestor Toward a Persistent Object Base , 1986, Advanced Programming Environments.

[28]  Bernard Lang,et al.  Programming Environments Based on Structured Editors: The MENTOR Experience, , 1980 .

[29]  Gail E. Kaiser,et al.  Adequate testing and object-oriented programming , 1990 .

[30]  A. Nico Habermann,et al.  Software Development Environments , 1987, Computer.

[31]  David S. Wile,et al.  Worlds: an organizing structure for object-bases , 1987, SDE 2.

[32]  Barbara G. Ryder Incremental data flow analysis , 1983, POPL '83.

[33]  William A. Wulf,et al.  HYDRA/C.Mmp, An Experimental Computer System , 1981 .

[34]  Dewayne E. Perry,et al.  Version control in the Inscape environment , 1987, ICSE '87.

[35]  Susan Horwitz,et al.  Generating editing environments based on relations and attributes , 1986, TOPL.

[36]  Peter H. Feiler,et al.  An Incremental Programming Environment , 1981, IEEE Transactions on Software Engineering.

[37]  William L. Scherlis Software Development and Inferential Programming , 1984 .

[38]  Gail E. Kaiser,et al.  Reliability in Distributed Programming Environments , 1987, IEEE International Symposium on Reliable Distributed Systems.

[39]  Leon J. Osterweil,et al.  Toolpack—An Experimental Software Development Environment Research Project , 1983, IEEE Transactions on Software Engineering.

[40]  Dewayne E. Perry The inscape environment , 1989, ICSE '89.

[41]  Robert W. Schwanke,et al.  Configuration management in BiiN SMS , 1989, ICSE '89.

[42]  GarlanDavid,et al.  Low-cost, adaptable tool integration policies for integrated environments , 1990 .

[43]  Leon J. Osterweil,et al.  Software processes are software too , 1987, ISPW.

[44]  Brian W. Kernighan,et al.  The UNIX™ programming environment , 1979, Softw. Pract. Exp..

[45]  Steven P. Reiss,et al.  Graphical program development with PECAN program development systems , 1984, SDE 1.

[46]  Stanley B. Zdonik,et al.  A shared, segmented memory system for an object-oriented database , 1987, TOIS.

[47]  Walter F. Tichy,et al.  Rcs — a system for version control , 1985, Softw. Pract. Exp..

[48]  Steven P. Reiss Working in the Garden Environment for Conceptual Programming , 1987, IEEE Software.

[49]  Larry Masinter,et al.  The Interlisp Programming Environment , 1981, Computer.

[50]  Jack C. Wileden,et al.  Arcadia, a software development environment research project , 1985 .

[51]  Hans H. Kron,et al.  Programming-in-the-Large Versus Programming-in-the-Small , 1975, IEEE Transactions on Software Engineering.

[52]  Stanley B. Zdonik,et al.  The management of changing types in an object-oriented database , 1986, OOPLSA '86.

[53]  Richard C. Waters,et al.  The programmer's apprentice , 1990, ACM Press frontier series.

[54]  Adele Goldberg,et al.  Smalltalk-80 - the interactive programming environment , 1984 .

[55]  D. W. Topham Introduction to the C Shell , 1990 .

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

[57]  Naftaly H. Minsky,et al.  A software development environment for law-governed systems , 1988, SDE 3.

[58]  Ian Thomas,et al.  An overview of PCTE and PCTE+ , 1989, SDE 3.

[59]  Ken Kennedy,et al.  The impact of interprocedural analysis and optimization in the Rn programming environment , 1986, TOPL.

[60]  Peter Lee,et al.  The ergo support system: an integrated set of tools for prototyping integrated environments , 1988, SDE 3.

[61]  Anthony I. Wasserman,et al.  Software Engineering Environments , 1983, Adv. Comput..

[62]  Masahiro Honda,et al.  Object management in a CASE environment , 1989, ICSE '89.

[63]  Jack C. Wileden,et al.  Pgraphite: an experiment in persistent typed object management , 1988, SDE 3.

[64]  Richard J. Beach,et al.  A structural view of the Cedar programming environment , 1986, TOPL.

[65]  Thomas W. Reps,et al.  Generating Language-Based Environments , 1982 .

[66]  Thomas W. Reps,et al.  Integrating noninterfering versions of programs , 1989, TOPL.

[67]  S. L. Wright,et al.  Consistent Models Enhance Software Quality , 1970 .

[68]  Elliott I. Organick,et al.  The multics system: an examination of its structure , 1972 .

[69]  Gail E. Kaiser,et al.  Infuse: a tool for automatically managing and coordinating source changes in large systems , 1987, CSC '87.

[70]  Gail E. Kaiser,et al.  Preliminary experience with process modeling in the MARVEL software development environment kernel , 1990, Twenty-Third Annual Hawaii International Conference on System Sciences.

[71]  Murray Hill,et al.  Yacc: Yet Another Compiler-Compiler , 1978 .

[72]  Mark A. Linton Implementing relational views of programs , 1984 .

[73]  Hans H. Kron,et al.  Programming-in-the-Large Versus Programming-in-the-Small , 1976, IEEE Trans. Software Eng..

[74]  Erhard Plödereder,et al.  An overview of DOD-STD-1838A (proposed) the common APSE interface set: revision , 1988, SDE 3.

[75]  T. A. Dolotta,et al.  The programmer's workbench , 1986 .

[76]  Dewayne E. Perry,et al.  Software interconnection models , 1987, ICSE '87.

[77]  Stephen Fickas,et al.  Automating the Transformational Development of Software , 1985, IEEE Transactions on Software Engineering.

[78]  Donald Cohen Automatic Compilation of Logical Specifications into Efficient Programs , 1986, AAAI.

[79]  Gail E. Kaiser,et al.  Change management for very large software systems , 1988, Seventh Annual International Phoenix Conference on Computers an Communications. 1988 Conference Proceedings.

[80]  Gail E. Kaiser,et al.  Infuse: fusing integration test management with change management , 1989, [1989] Proceedings of the Thirteenth Annual International Computer Software & Applications Conference.

[81]  Richard N. Taylor,et al.  A Metaphor and a Conceptual Architecture for Software Development Environments , 1989, SEE.

[82]  Leon J. Osterweil Toolpack - an experimental software development environment research project , 1982, ICSE 1982.

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

[84]  William E. Howden Contemporary software development environments , 1982, CACM.

[85]  S. Brinkkemper,et al.  On the derivation of method companionship by meta-modelling , 1990, SOEN.

[86]  Gail E. Kaiser,et al.  Intelligent assistance for software development and maintenance , 1988, IEEE Software.

[87]  Watts S. Humphrey,et al.  Characterizing the software process: a maturity framework , 1988, IEEE Software.

[88]  Cliff B. Jones,et al.  Systematic software development using VDM , 1986, Prentice Hall International Series in Computer Science.

[89]  Tim Teitelbaum The Cornell Program Synthesizer: a syntax-directed programming environment , 1979, SIGP.

[90]  Elaine J. Weyuker,et al.  The evaluation of program-based software test data adequacy criteria , 1988, CACM.

[91]  Olaf Owe,et al.  ANNA A Language for Annotating Ada Programs , 1987, Lecture Notes in Computer Science.

[92]  Jack C. Wileden,et al.  Foundations for the Arcadia environment architecture , 1989, SDE 3.

[93]  M Lehman,et al.  Essential properties of IPSEs , 1987, SOEN.

[94]  David Alex Lamb,et al.  IDL: sharing intermediate representations , 1987, TOPL.

[95]  Thomas Reps,et al.  The Synthesizer Generator: A System for Constructing Language-Based Editors , 1988 .

[96]  B. R. Rowland,et al.  The 3B20D Processor & DMERT operating system: Software development system , 1983, The Bell System Technical Journal.

[97]  David Notkin The GANDALF project , 1985, J. Syst. Softw..

[98]  Steven P. Reiss A conceptual programming environment , 1987, ICSE '87.

[99]  Maria H. Penedo,et al.  Prototyping a project master database for software engineering environments , 1987, SDE 2.

[100]  Bernard Lang,et al.  Document structure and modularity in mentor , 1984, SDE 1.

[101]  Lawrence A. Rowe,et al.  Report on the 1989 Software CAD Database Workshop , 1989, IFIP Congress.

[102]  Bernard Lang,et al.  Document structure and modularity in mentor , 1984 .

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

[104]  D. Luckham,et al.  ANNA: towards a language for annotating Ada programs , 1980, SIGPLAN.

[105]  Josephine Micallef,et al.  Multiuser, Distributed Language-Based Environments , 1987, IEEE Software.

[106]  Steven P. Reiss,et al.  Connecting tools using message passing in the Field environment , 1990, IEEE Software.

[107]  Peter P. Chen The entity-relationship model: toward a unified view of data , 1975, VLDB '75.

[108]  Colin Tully Software process models and programs: observations on their nature and context , 1988, ISPW '88.

[109]  Richard C. Waters KBEmacs: Where's the AI? , 1986, AI Mag..

[110]  Douglas R. Smith,et al.  Research on Knowledge-Based Software Environments at Kestrel Institute , 1985, IEEE Transactions on Software Engineering.

[111]  Gail E. Kaiser,et al.  An architecture for intelligent assistance in software development , 1987, ICSE '87.

[112]  Barbara G. Ryder,et al.  Incremental data-flow analysis algorithms , 1988, TOPL.

[113]  David Notkin,et al.  Gandalf: Software development environments , 1986, IEEE Transactions on Software Engineering.