Abstract
Layered software development has demonstrably good reuse properties and offers one of the few promising approaches to addressing the library scalability problem. In this paper, we show how one can develop layered software using common Unix (Linux/Solaris) dynamic libraries. In particular, we show that, from an object-oriented design standpoint, dynamic libraries are analogous to components in a mixin-based object system. This enables us to use libraries in a layered fashion, mixing and matching different libraries, while ensuring that the result remains consistent. As a proof-of-concept application, we present two libraries implementing file versioning (automatically keeping older versions of files for backup) and application-transparent locking in a Unix system. Both libraries can be used with new, aware applications or completely unaware legacy applications. Further, the libraries are useful both in isolation, and as cooperating units.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
Apache HTTP Server Documentation Project, “Version 2.0: Dynamic Shared Object (DSO) Support”, available at http://httpd.apache.org/docs-2.0/dso.html.
D. Batory and S. O’Malley, “The Design and Implementation of Hierarchical Software Systems with Reusable Components”, ACM TOSEM, October 1992.
D. Batory, V. Singhal, M. Sirkin, and J. Thomas, “Scalable Software Libraries”, ACM SIGSOFT 1993.
D. Batory and B.J. Geraci, “Component Validation and Subjectivity in GenVoca Generators”, IEEE Trans. on Softw. Eng., February 1997, 67–82.
D. Batory, “Intelligent Components and Software Generators”, Software Quality Institute Symposium on Software Reliability, Austin, Texas, April, 1997.
I.D. Baxter, “Design maintenance systems”, Communications of the ACM 35(4): 73–89, April 1992.
T. Biggerstaff, “The Library Scaling Problem and the Limits of Concrete Component Reuse”, 1994 International Conference on Software Reuse.
G. Bracha and W. Cook, “Mixin-Based Inheritance”, ECOOP/OOPSLA 1990, 303–311.
K. Brockschmidt, Inside OLE (2nd. ed.), Microsoft Press, 1995.
K. Czarnecki and U. Eisenecker. Generative Programming: Methods, Techniques, and Applications. Addison-Wesley, 2000.
A. Gierth (ed.), Unix Programming FAQ, available at http://www.erlenstar.demon.co.uk/unix/faq_toc.html.
J. Goguen, “Reusing and interconnecting software components”, IEEE Computer, February 1986, 16–28.
M. Golm, J. Kleinoeder, F. Bellosa, “Beyond Address Spaces-Flexibility, Performance, Protection, and Resource Management in the Type-Safe JX Operating System”, 8th Workshop on Hot Topics in OS (HotOS-VIII), 2001.
G. Hamilton, P. Kougiouris, “The Spring Nucleus: A Microkernel for Objects”, Sun Microsystems Laboratories Tech. Report, TR-93-14.
R. Johnson and B. Foote, “Designing Reusable Classes”, Journal of Object-Oriented Programming, 1(2): June/July 1988, 22–35.
J. Neighbors, “Draco: a method for engineering reusable software components”, in T.J. Biggerstaff and A. Perlis (eds.), Software Reusability, Addison-Wesley/ ACM Press, 1989.
C. Phoenix, “Windows vs. Unix: Linking dynamic load modules”, available at: http://www.best.com/~cphoenix/winvunix.html.
D. Santry, M. Feeley, N. Hutchinson, A. Veitch, R. Carton, and J. Ofir, “Deciding when to forget in the Elephant file system”, 17th ACM Symposium on Operating Systems Principles (SOSP’99).
M. Sitaraman and B.W. Weide, editors, “Special Feature: Component-Based Software Using RESOLVE”, ACM Softw. Eng. Notes, October 1994, 21–67.
Y. Smaragdakis and D. Batory, “DiSTiL: a Transformation Library for Data Structures”, USENIX Conference on Domain-Specific Languages (DSL 97).
Y. Smaragdakis and D. Batory, “Implementing Reusable Object-Oriented Components”, 5th Int. Conf. on Softw. Reuse (ICSR’ 98), IEEE Computer Society Press, 1998.
Y. Smaragdakis, Implementing Large Scale Object-Oriented Components, Ph.D. Dissertation, University of Texas at Austin, December 1999.
W. Tracz, “LILEANNA: A Parameterized Programming Language”, in Ruben Prieto-Diaz and William B. Frakes, editors, Advances in Software Reuse: Selected Papers from the Secomd Int. Work. on Softw. Reusability, 1993, IEEE Computer Society Press, 66–78.
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2002 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Smaragdakis, Y. (2002). Layered Development with (Unix) Dynamic Libraries. In: Gacek, C. (eds) Software Reuse: Methods, Techniques, and Tools. ICSR 2002. Lecture Notes in Computer Science, vol 2319. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-46020-9_3
Download citation
DOI: https://doi.org/10.1007/3-540-46020-9_3
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-43483-2
Online ISBN: 978-3-540-46020-6
eBook Packages: Springer Book Archive