Our modern infrastructure relies increasingly on computation and computers. Accompanying this is a rise in the prevalence and complexity of computer programs. Current software systems (composed of an interacting collection of programs, functions, classes, etc.) implement a tremendous range of functionality, from simple mathematical operations to intricate control systems. Software systems are inherently extendable and tend to gain new functionality over time. Modern computers and programming languages are Turing complete and, thus, capable of implementing any computable function no matter how complex. The interdependencies between the elements of a software system form a network, and, therefore, we believe software systems can provide useful prototypic examples of how to build complex networked systems which require minimal maintenance, are robust bugs to and yet are readily extendable. Thus we ask: What makes for good design in software systems? We are particularly interested in open source software (OSS)—software with source code that is freely available for download and modification. A typical OSS project is a collaborative effort by volunteers, with no central authority assigning development tasks. Instead individuals, or self-organized teams of developers, fix bugs and maintain and extend the code. In OSS, modularity is essential (1; 2), and remarkably, the software resulting from an OSS process can rival or even surpass the quality of commercial software [3; 4].
CITATION STYLE
Wen, H., D’Souza, R. M., Saul, Z. M., & Filkov, V. (2009). Evolution of apache open source software. In Modeling and Simulation in Science, Engineering and Technology (Vol. 42, pp. 199–215). Springer Basel. https://doi.org/10.1007/978-0-8176-4751-3_12
Mendeley helps you to discover research relevant for your work.