Path: utzoo!attcan!uunet!hsi!stpstn!andyk From: andyk@stpstn.UUCP (Andy Klapper) Newsgroups: comp.software-eng Subject: Re: recap so far Message-ID: <5312@stpstn.UUCP> Date: 2 Jul 90 19:28:56 GMT References: <30852@cup.portal.com> <102100011@p.cs.uiuc.edu> <31097@cup.portal.com> <1568@oravax.UUCP> <8488@jpl-devvax.JPL.NASA.GOV> <81688@tut.cis.ohio-state.edu> <8529@jpl-devvax.JPL.NASA.GOV> Reply-To: andyk@stpstn.UUCP (Andy Klapper) Organization: The Stepstone Corporation, Sandy Hook, CT 06482 Lines: 59 In article <8529@jpl-devvax.JPL.NASA.GOV> kandt@AI-Cyclops.JPL.NASA.GOV writes: > >I reassert that any artifact that we build can provide components for >later reuse. I also assert that if we have built a component we can >adequately describe it in a formal or informal notation so that its >complete behavior is understandable by a human. I also know that >providing such information for later reuse requires much labor at great >cost. This is the impediment to software reuse. The issue is "given >that you can describe a domain, how do build a information repository in >a cost-effective manner." > >As an example, take the domain of data structures. It is a relatively >simple domain. It is well understood. There are both formal and >informal methods for describing modeling representations and storage >structures. We understand the complexity of them all, including special >cases and programming tricks. Yet to date, there is not one reusable >data structure depository. Why is that? Because the costs of putting >all the knowledge contained in existing data structure books and >articles would be incredible. > Smalltalk, Objective-C and I would be willing to bet other OOP and OOP like languages, have a set of basic data structure objects (Sets, stacks, ...) including a sorted collection that uses quicksort. It would seem that you have been looking in the wrong place. I agree with you that reuse is hard. It costs much more to write code that is really reusable and nobody gets it right the first time (even if they have written reusable code before *in a different domain*.) The places that I have currently seen the most software reuse (with Objective-C anyway) has been in software shops where the work is clearly defined and vertical (every year they produce a newer version of last year's product (faster, better, stronger ...)) telecommunications, financial, and industrial to name a few. In these shops the software that is reused is their own. In one really big shop 15,000+ classes the sharing of class libraries is across departments. In these environments the 'information repository' problem is partially solved by the fact that the next product team already knows what class libraries they used in the last product they made and how they need to be tuned (subclassed) for the current product. It is also solved by having access to the person who wrote the class so you can ask her 'does this do what I want ?' or 'what does this do ?'. The Japanese are reusing software today, and getting a great deal out of it. I do not think that they have found an easy way of solving your 'information repository' question or my 'how to design for reuse' question. I do think that they place a higher value on reuse and are willing to put the time and effort into it because they feel that they will get a higher return on this higher investment. The numbers that I have seen quoted seem to back this up. 'There ain't no such thing as a free lunch' or 'no pain, no gain' are my favorite quotes on the subject. -- The Stepstone Corporation Andy Klapper 75 Glen Rd. andyk@stepstone.com Sandy Hook, CT 06482 uunet!stpstn!andyk (203) 426-1875 fax (203)270-0106