Computing Reviews
Today's Issue Hot Topics Search Browse Recommended My Account Log In
Review Help
An analysis of inheritance hierarchy evolution
Wood M., Ivanov L., Lamprou Z.  EASE 2019 (Proceedings of the Evaluation and Assessment on Software Engineering, Copenhagen, Denmark,  Apr 15-17, 2019) 24-33. 2019. Type: Proceedings
Date Reviewed: Apr 13 2021

This is a refreshing paper on ten open-source systems and their use of “inheritance” programing concepts. Computer languages have evolved with the type-safe extensibility concept of inheritance, which is embodied in object-oriented (OO) languages. The two dominate OO patterns are analyzed: (1) type inheritance and (2) module reuse (the authors’ terms). Results are shown through innovative graphic feedback charts, showing modifications over the life of the system. The authors also include historical approaches to inheritance using the Liskov substitution principle (LSP), while discussing insight from OO giants like Barbara Liskov, Bertrand Meyer, Grady Booch, and Gamma et al.’s “patterns” work.

The paper analyzes ten open-source Java systems, with a total of 665 inheritance hierarchies across 262 versions over time. This includes projects like Ant, ArgoUML, JGraph, and FreeMind across ten domains. The analysis looks at the depth of subtree hierarchies, and especially how they changed over time from shallow to deep (sometimes 39 levels). This led to identifying design qualities of these “complex, multi-branching, ‘subtree’ inheritance hierarchies.” They provide a nice framing of the issues faced by complex frameworks and systems.

Four main system attributes are analyzed: (1) change in size, (2) hierarchy age, (3) hierarchy shape, and (4) stability of shape. The study’s instrumentation is interesting as they used Eclipse integrated development environment (IDE) tools to look at size, depth of hierarchy, age of hierarchy, shape (“fan,” “line,” “subtree,” “branch”), and the stability of the hierarchy through change. Using visual hierarchy tools highlights how the size of hierarchies evolved as they were refactored or extended.

Ant, ArgoUL, and FreeCol have their subtree use analyzed, showing interesting class cluster diagrams and those relationships over time. For example, Ant evolved from six subtrees, but only three of those survived more than one version. Other characteristics, like a shape morphing from a fan shape to a subtree shape, are classified.

Their high-level goal “is to improve the guidance relating to object-oriented inheritance hierarchy design.” They mainly want to identify how inheritance features change over the lifetime of a system. The final section tries to answer this by classifying the different effects of type inheritance versus composition after analyzing hundreds of classes.

The authors do recognize the issue with only being able to examine open-source systems, so they are concerned about the validity of their results. It seems their analysis could still help end-user application development, which uses large-scale frameworks (such as Apple iOS libraries). These frameworks expose hundreds of inheritance features and composition tools (protocols and so on). While the guts are hidden, the applications are still very complex and exhibit all the OO design challenges (that is, “fragile base classes”). The presented visual tools could help identify future issues and characterize the shape and complexity of their application.

It’s also interesting that a recent issue of CACM included Niklaus Wirth’s discussion of the Pascal language at age 50 [1]. Object-oriented and especially inheritance were the natural progressions from type-safe Pascal, which eventually included a type-safe procedure pointer (similar to today’s OO mix-in or protocol inheritance).

Reviewer:  Scott Moody Review #: CR147239
1) Wirth, N. 50 years of Pascal. Communications of the ACM 64, 3(2021), 39–41.
Bookmark and Share
  Editor Recommended
General (D.2.0 )
Object-Oriented Programming (D.2.3 ... )
Organization And Design (D.4.7 )
Would you recommend this review?
Other reviews under "General": Date
Parallel cost analysis
Albert E., Correas J., Johnsen E., Pun K., Román-Díez G.  ACM Transactions on Computational Logic 19(4): 1-37, 2018. Type: Article
Apr 2 2021
CPS design with learning-enabled components: a case study
Hartsell C., Mahadevan N., Ramakrishna S., Dubey A., Bapty T., Johnson T., Koutsoukos X., Sztipanovits J., Karsai G.  RSP 2019 (Proceedings of the 30th International Workshop on Rapid System Prototyping, New York, NY,  Oct 17-18, 2019) 57-63, 2019. Type: Proceedings
Mar 29 2021
Towards the use of machine learning algorithms to enhance the effectiveness of search strings in secondary studies
Cairo L., de ., Monteiro M., e Abreu F.  SBES 2019 (Proceedings of the XXXIII Brazilian Symposium on Software Engineering, Salvador, Brazil,  Sep 23-27, 2019) 22-26, 2019. Type: Proceedings
Mar 26 2021

E-Mail This Printer-Friendly
Send Your Comments
Contact Us
Reproduction in whole or in part without permission is prohibited.   Copyright © 2000-2021 ThinkLoud, Inc.
Terms of Use
| Privacy Policy