Abstract
The component-based model of code execution imposes some requirements on the software components themselves, and at the same time lays some constraints on the modern run-time environment. Software components need to store descriptive metadata, and the run-time system must access this ‘reflectively’ in order to implement dynamic linking. Software components also undergo dynamic evolution whereby a client component experiences the effects of modifications, made to a service component even though these occurred after the client was built.
We wanted to see whether the dynamic linking mechanism implemented in Microsoft’s .NET environment could be utilized to maintain multiple versions of components. A formal model was developed to assist in understanding the .NET mechanism and in describing our way of dealing with multiple versions. This showed that .NET incorporates all the features necessary to implement such a scheme and we constructed a tool to do so.
Chapter PDF
References
Ancona, D., Zucca, E.: A Primitive calculus for module systems. In: PPDP Proceedings (September 1999)
Anderson, R.: The End of DLL Hell (January 2000), http://msdn.microsoft.com/
Rausch, A.: Software Evolution in Componentware using Requirements/Assurances Contracts, Limerick, Ireland, May 2000, pp. 147–156. ACM Press, New York (2000)
Cardelli, L.: Program Fragments, Linking, and Modularization. In: POPL 1997 Proceedings (January 1997)
Diller, Z.: An Introduction to Formal Methods. John Wiley & Sons, Chichester (1994)
Drossopoulou, S.: An Abstract Model of Java Dynamic Linking, Loading and Verification. In: Types in Compilation (September 2001)
Duggan, D.: Sharing in Typed Module Assembly Language. In: Preliminary Proceedings of the Third Workshop on Types in Compilation (TIC 2000). Carnegie Mellon, CMUCS- 00-161 (2000)
Jackson, D., Schechter, I., Shlyakhter, I.: Alcoa: the Alloy Constraint Analyzer, Limerick, Ireland, May 2000, pp. 730–733. ACM Press, New York (2000)
Eisenbach, S., Drossopoulou, S.: Manifestations of the Dynamic Linking Process in Java (June 2001), http://www-dse.doc.ic.ac.uk/projects/slurp/dynamic-link/linking.htm
Eisenbach, S., Sadler, C.: Ephemeral Java Source Code. In: IEEE Workshop on Future Trends in Distributed Systems (December 1999)
Eisenbach, S., Sadler, C.: Changing Java Programs. In: IEEE Conference in Software Maintenance (November 2001)
Eisenbach, S.: Alloy Model of .NET Evolution. Technical report (August 2003), http://www.doc.ic.ac.uk/~sue/alloymodel
Fisher, K., Reppy, J., Riecke, J.: A Calculus for Compiling and Linking Classes. In: ESOP Proceedings (March 2000)
Hicks, M., Weirich, S., Crary, K.: Safe and Flexible Dynamic Linking of Native Code. In: Harper, R. (ed.) TIC 2000. LNCS, vol. 2071, p. 147. Springer, Heidelberg (2000)
Holzmann, G.: The Model Checker Spin. IEEE Transactions on Software Engineering 23(5) (May 1997)
Jackson, D.: Micromodels of Software: Lightweight Modelling and Analysis with Alloy. Technical report (February 2002), http://sdg.lcs.mit.edu/~dng/
Jurisic, V.: Deja-vu.NET: A Framework for Evolution of Component Based Systems (June 2002), http://www.doc.ic.ac.uk/~ajf/Teaching/Projects/DistProjects.html
Meijer, E., Szyperski, C.: Overcoming independent extensibility challenges. Communications of the ACM 45(10), 41–44 (2002)
Mezini, M., Lieberherr, K.J.: Adaptive Plug-and-Play Components for Evolutionary Software Development. In: Proc. of OOPSLA, pp. 97–116 (1998)
Pietrek, M.: Avoiding DLL Hell: Introducing Application Metadata in the Microsoft .NET Framework. In: MSDN Magazine (October 2000), http://msdn.microsoft.com/
Pratschner, S.: Simplifying Deployment and Solving DLL Hell with the .NET Framework. In: MSDN Magazine (November 2001), http://msdn.microsoft.com/
Mens, K., Steyaert, P., Lucas, C., D’Hondt, T.: Reuse Contracts: Managing the Evolution of Reusable Assets. In: Proc. of OOPSLA (1996)
Sewell, P.: Modules, Abstract Types, and Distributed Versioning. In: Proc. of Principles of Programming Languages, January 2001. ACM Press, New York (2001)
Drossopouloum, S., Lagorio, G., Eisenbach, S.: Flexible Models for Dynamic Linking. In: Proc. of the European Symposium on Programming, March 2003. Springer, Heidelberg (2003)
Wragg, D., Drossopoulou, S., Eisenbach, S.: What is Java binary compatibility? In: Proc. of OOPSLA, vol. 33, pp. 341–358 (1998)
Eisenbach, S., Drossopoulou, S., Wragg, D.: A Fragment Calculus: Towards a Model of Separate Compilation, Linking and Binary Compatibility. In: Logic in Computer Science, pp. 147–156 (1999)
Eisenbach, S., Sadler, C., Shaikh, S.: Evolution of Distributed Java Programs. In: IFIP/ACM Working Conf on Component Deployment (June 2002)
Wells, J., Vestergaard, R.: Confluent Equational Reasoning for Linking with First- Class Primitive Modules. In: ESOP Proceedings (March 2000)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2003 IFIP International Federation for Information Processing
About this paper
Cite this paper
Eisenbach, S., Jurisic, V., Sadler, C. (2003). Managing the Evolution of .NET Programs. In: Najm, E., Nestmann, U., Stevens, P. (eds) Formal Methods for Open Object-Based Distributed Systems. FMOODS 2003. Lecture Notes in Computer Science, vol 2884. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-540-39958-2_13
Download citation
DOI: https://doi.org/10.1007/978-3-540-39958-2_13
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-20491-6
Online ISBN: 978-3-540-39958-2
eBook Packages: Springer Book Archive