Skip to main content

Layered Development with (Unix) Dynamic Libraries

  • Conference paper
  • First Online:
Software Reuse: Methods, Techniques, and Tools (ICSR 2002)

Part of the book series: Lecture Notes in Computer Science ((LNCS,volume 2319))

Included in the following conference series:

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.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Apache HTTP Server Documentation Project, “Version 2.0: Dynamic Shared Object (DSO) Support”, available at http://httpd.apache.org/docs-2.0/dso.html.

  2. D. Batory and S. O’Malley, “The Design and Implementation of Hierarchical Software Systems with Reusable Components”, ACM TOSEM, October 1992.

    Google Scholar 

  3. D. Batory, V. Singhal, M. Sirkin, and J. Thomas, “Scalable Software Libraries”, ACM SIGSOFT 1993.

    Google Scholar 

  4. D. Batory and B.J. Geraci, “Component Validation and Subjectivity in GenVoca Generators”, IEEE Trans. on Softw. Eng., February 1997, 67–82.

    Google Scholar 

  5. D. Batory, “Intelligent Components and Software Generators”, Software Quality Institute Symposium on Software Reliability, Austin, Texas, April, 1997.

    Google Scholar 

  6. I.D. Baxter, “Design maintenance systems”, Communications of the ACM 35(4): 73–89, April 1992.

    Google Scholar 

  7. T. Biggerstaff, “The Library Scaling Problem and the Limits of Concrete Component Reuse”, 1994 International Conference on Software Reuse.

    Google Scholar 

  8. G. Bracha and W. Cook, “Mixin-Based Inheritance”, ECOOP/OOPSLA 1990, 303–311.

    Google Scholar 

  9. K. Brockschmidt, Inside OLE (2nd. ed.), Microsoft Press, 1995.

    Google Scholar 

  10. K. Czarnecki and U. Eisenecker. Generative Programming: Methods, Techniques, and Applications. Addison-Wesley, 2000.

    Google Scholar 

  11. A. Gierth (ed.), Unix Programming FAQ, available at http://www.erlenstar.demon.co.uk/unix/faq_toc.html.

  12. J. Goguen, “Reusing and interconnecting software components”, IEEE Computer, February 1986, 16–28.

    Google Scholar 

  13. 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.

    Google Scholar 

  14. G. Hamilton, P. Kougiouris, “The Spring Nucleus: A Microkernel for Objects”, Sun Microsystems Laboratories Tech. Report, TR-93-14.

    Google Scholar 

  15. R. Johnson and B. Foote, “Designing Reusable Classes”, Journal of Object-Oriented Programming, 1(2): June/July 1988, 22–35.

    Google Scholar 

  16. 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.

    Google Scholar 

  17. C. Phoenix, “Windows vs. Unix: Linking dynamic load modules”, available at: http://www.best.com/~cphoenix/winvunix.html.

  18. 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).

    Google Scholar 

  19. M. Sitaraman and B.W. Weide, editors, “Special Feature: Component-Based Software Using RESOLVE”, ACM Softw. Eng. Notes, October 1994, 21–67.

    Google Scholar 

  20. Y. Smaragdakis and D. Batory, “DiSTiL: a Transformation Library for Data Structures”, USENIX Conference on Domain-Specific Languages (DSL 97).

    Google Scholar 

  21. Y. Smaragdakis and D. Batory, “Implementing Reusable Object-Oriented Components”, 5th Int. Conf. on Softw. Reuse (ICSR’ 98), IEEE Computer Society Press, 1998.

    Google Scholar 

  22. Y. Smaragdakis, Implementing Large Scale Object-Oriented Components, Ph.D. Dissertation, University of Texas at Austin, December 1999.

    Google Scholar 

  23. 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.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints 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

Publish with us

Policies and ethics