Adaptation of large-scale open source software - an experience report

Within a long-term distributed systems project we repeatedly stumbled across the well-known yet difficult question to either implement from scratch or comprehend and adapt existing software. Having tried both ways allows us to retrospectively compare the effectiveness of "from scratch" implementation versus software evolution. By using the code bases of GNU GCC and Linux for the adaptation approach we gained valuable experiences with the comprehension and adaptation of large but sparsely documented code bases. In most cases, the adaptation of existing software proved to be by far more effective than implementing from scratch. Surprisingly, the effort needed to comprehend the existing voluminous source codes repeatedly proved to be less than expected. Here we discuss our positive and negative experiences and the various factors influencing success and failure. Albeit collected in an academic setting, the observations described here might well be transferable to the maintenance of large-scale commercial environments, too.

[1]  Henri E. Bal,et al.  A comparison of two paradigms for distributed shared memory , 1992, Softw. Pract. Exp..

[2]  Claudia Eckert,et al.  Improving Resource Management in Distributed Systems using Language-Level Structuring Concepts , 2004, The Journal of Supercomputing.

[3]  Claudia Eckert,et al.  A language-based approach to construct structured and efficient object-based distributed systems , 1997, Proceedings of the Thirtieth Hawaii International Conference on System Sciences.

[4]  Jochen Liedtke,et al.  On micro-kernel construction , 1995, SOSP.

[5]  C. B. Czech Dycos-a customizable kernel architecture supporting distributed operating environments , 1997, Proceedings of 3rd International Conference on Algorithms and Architectures for Parallel Processing.

[6]  Abraham Silberschatz,et al.  Operating System Concepts , 1983 .

[7]  J. Liedtke On -Kernel Construction , 1995 .

[8]  H.-M. Windisch,et al.  The Distributed Programming Language INSEL - Concepts and Implementation , 1996 .

[9]  C. Eckert,et al.  A New Approach to Match Operating Systems to Application Needs , 1995, Parallel and Distributed Computing and Systems.

[10]  Markus Pizka,et al.  The contribution of free software to software evolution , 2003, Sixth International Workshop on Principles of Software Evolution, 2003. Proceedings..

[11]  Roy H. Campbell,et al.  Choices: a parallel object-oriented operating system , 1993 .

[12]  Henri E. Bal,et al.  Orca: A Language For Parallel Programming of Distributed Systems , 1992, IEEE Trans. Software Eng..

[13]  Richard M. Stallman,et al.  Using and Porting GNU CC , 1998 .

[14]  William J. Bolosky,et al.  Mach: A New Kernel Foundation for UNIX Development , 1986, USENIX Summer.

[15]  Pedro Manuel Moreira Vaz Antunes de Sousa,et al.  Proceedings of the Fifth European Conference on Software Maintenance and Reengineering , 2000 .

[16]  Markus Pizka Distributed Virtual Address Space Management in the MoDiS-OS , 1998 .

[17]  Keith H. Bennett,et al.  A Staged Model for the Software Life Cycle , 2000, Computer.

[18]  R. Stephenson A and V , 1962, The British journal of ophthalmology.

[19]  Vinny Cahill,et al.  The Comandos Distributed Application Platform , 1993, Comput. J..

[20]  Graham Hamilton,et al.  The Spring Nucleus: A Microkernel for Objects , 1993 .

[21]  Krzysztof Czarnecki,et al.  Generative Programming , 2001, ECOOP Workshops.

[22]  Meir M. Lehman,et al.  Rules and Tools for Software Evolution Planning and Management , 2001, Ann. Softw. Eng..

[23]  Fred P. Brooks,et al.  The Mythical Man-Month , 1975, Reliable Software.