Path: utzoo!utgpu!jarvis.csri.toronto.edu!rutgers!rochester!pt.cs.cmu.edu!wb1.cs.cmu.edu!ram From: ram@wb1.cs.cmu.edu (Rob MacLachlan) Newsgroups: comp.sw.components Subject: Re: Inheritance vs. component efficienc Message-ID: <5186@pt.cs.cmu.edu> Date: 11 Jun 89 13:42:52 GMT References: <130200002@p.cs.uiuc.edu> <5731@hubcap.clemson.edu> Organization: Carnegie-Mellon University, CS/RI Lines: 27 Far be it from me to for a university research programmer to tell a real software engineer about how to develop reusable maintainable software. But... It seems to me that anyone trying to develop highly reusable software components has a thing or two to learn from object-oriented development systems. As I see it, the key barrier to reusing software is that systems don't naturally break down into atomic reusable components. Supposing I had this whizzy indexed library of frobs, and I wanted a green frobboz. But when I look, I probably won't find one. I could maybe make do with the yellow-green one, but I would have to work around it or modify it. The advantage of an o-o inheritance system is that it makes it very easy to reuse a component *with modifications*. If you have to modify a component without understanding how it works, then you are much better off with the structured modification techniques of inheritance and method combination than if you attempted arbitrary modification of the code. I personally think you are wacko if you think that there are going to be very many components reusable millions of times without modification, at least if defined in Ada. I can conceive of there being a "programming environment" someday that could substantially automate the process of customizing components, but it's going to have to pay a lot more attention to semantics than Ada does. Rob --