Fostering component evolution with C# attributes

  • Authors:
  • Carlo Ghezzi;Mattia Monga

  • Affiliations:
  • Politecnico di Milano, Piazza Leonardo da Vinci, 32, I 20133 Milano, Italy;Politecnico di Milano, Piazza Leonardo da Vinci, 32, I 20133 Milano, Italy

  • Venue:
  • Proceedings of the International Workshop on Principles of Software Evolution
  • Year:
  • 2002

Quantified Score

Hi-index 0.00

Visualization

Abstract

This paper discusses the problems arising when object oriented libraries are evolved through the subclass mechanism. The overriding of a method may in fact produce undesirable side effects in the behavior of other methods. More generally, the designer of an extension may be unaware of the dependencies among class features, which should be taken into account when a class is evolved.The paper shows how the C# language allows such dependencies to be documented using attributes. Attributes may be retrieved via reflective mechanisms that can be used by a tool --- a design assistant --- which may guide designers while they evolve and reuse existing class libraries. To facilitate the approach another tool may automatically record dependency attributes for each class.The approach is also shown to help in the case of the so-called semantic fragile base class problem that has been illustrated in the literature.