comp.lang.ada
 help / color / mirror / Atom feed
From: dkenny@actrix.gen.nz (Des  Kenny)
Subject: Re: Real OO
Date: 1996/03/16
Date: 1996-03-16T00:00:00+00:00	[thread overview]
Message-ID: <dkenny-1603960304000001@dkenny.actrix.gen.nz> (raw)
In-Reply-To: 4i455s$ijq@watnews1.watson.ibm.com

In article <4i455s$ijq@watnews1.watson.ibm.com>, ncohen@watson.ibm.com wrote:

> In article <Do3F1K.4xG@assip.csasyd.oz>, donh@syd.csa.com.au (Don
Harrison) writes: 
> 
> |> Notice what is happening here. Now that Person_Type is distinct, it
now becomes
> |> more reusable than it was when it was co-encapsulated. By
generalising, you have
> |> have increased reusability. If you take the process a step further
and separate
> |> Pairing_Type into a distinct abstraction (because it relates to other
domains than
> |> family trees), you increase reusability further. If you keep on
going, you end up
> |> with a pure OO model of the problem domain in which reusability has
been maximised.
> |> Although the software still does the same job, it is much more
reusable with this
> |> structure.
> 
> I wish I could remember the author of this quote:  "Every problem is a
> special case of some more general problem, and we usually discover this
> fact much too soon for our own good."
> 
> One may write many different applications all of which have a class named
> Person, but these classes may have little or nothing in common.  Even if
> they all share a Name attribute, it may be more sensible to define a new
> class from scratch each time than to burden each application with a
> Person class general enough to be shared by all of them.  Reusability
> pays off for large chunks of software, but the payoff does not scale down
> to microscopic fragments.
> 
> I am fully sympathetic with trying to anticipate other uses for the
> software components we are building, and trying to make them general
> enough to be reused, but generality usually comes at the expense of
> efficiency and simplicity, so it can be carried too far.  Sometimes there
> is a specific problem, such as the recording of a family tree, to be
> solved, and the most economical choice is just to go ahead and solve the
> problem at hand rather than a broader class of problems that may never
> arise.
> 
> True, ignoring reuse can lead to wasteful duplication of effort and more
> diffcult and expensive maintenance, but blindly repeating the mantra of
> reusability can lead to absurd choices.
> 
> --
> Norman H. Cohen    ncohen@watson.ibm.com


  Large scale reuse benefits from both tools and organisational roles.

  Customer product development project team(s) are focused on 
  product project milestones, product quality and cost;  and the 
  class library architecture team(s) who are focused on longer term
  benefits and large scale investment.

  These teams need to work together to achieve the short term objectives
  of producing a quality product on time and budget and the longer term 
  objective of continuously improving the process of future product development.
  
  Developing any item for a variety of product uses is not an easy design task
  and that is why the class library architecture team have different
skills and a
  longer term focus than the customer product team.

  These kinds of separations of roles are not unique to software production. 
  In hardware manufacturing engineering there are fitters and turners that
  use lathes to make a wide range of customer products; then there are other
  mechanical engineers who design the lathes so that they may be used for 
  product development.

  In the music area there are violin players that play an almost limitless
  range of music and then there are the people that design the violins
  so that the music can be played.

  Throughout history these types of roles have existed, there have always
  been tool users and tool makers. 

  Class libraries that have a long life are best built by the tool makers
  who are generalists and customer products are best built by the tool users
  who are trying to satisfy a specific customer need.

  The boundary is not always sharp and it changes over time with experience. 
  There will always be design iterations of the product development and the
  process used to make the product.

  Many of the most common constructs are already available in the Eiffel 
  class libraries. These are tools that are readily available. 

  If I am working on a customer product development I first look at the class 
  libraries to see what tools are available for the task at hand.

  If I can find a suitable set of classes I will consider them first. It may be
  that they are not all suitable and some extensions and redefinitions are
  required; which is fine. The experience of this project is then fed back to
  the class library architects and they consider what , if anything, should be
  done to the library architecture for future projects. They are focused on the
  longer term investment and continuous improvement of the production process.

  So to my way of thinking the work for the classs Family_Tree is almost
  all done for me; because I have done my homework and studied the Eiffel class 
  libraries carefully. I know, immediately, that the Collection cluster has
  a number of tree classes which are worth considering.

  So I can at once get a preliminary sketch of the design:


  Class Family_Tree[G] inherit
        Tree[T]


  ..... 
  .....

  end --Family_Tree


  And depending on the maturity of the class library and the skill of its
  designers I have a reasonable chance that 80% of my work is done already.

  Of course, 20%, or so, of the time I have to do more work because there
  are special circumstances that are not so easily taken care of by the past
  experience of the class architects.

  It's not perfect but its pretty good 80% of the time - and that's not a bad
  thing. It leaves you more time to focus on the harder/novel parts because
  the well defined parts are done already.

  This is also nothing new, most other professions : Mathematicians, Scientists,
  Engineers, Lawyers ... behave like this all the time.

  Maybe it is an accident of history related to the ease with which software
  developers can generate millions of lines of source code text at unprecedented
  speed that they have this illusion that they are always creating something
  new. They do not need to be economic in generating source text because they 
  seem to have unlimited machine resources at their disposal.

  Compare this to any other profession in history , before text processors,
  they had to be economic and reuse what was already done by others because
  there was simply not enough time to recreate everthing from scratch all over
  again. So they developed classification systems for Periodic Tables of the
  elements, for Legal statutes, for Mathematical Algebras, for Physical laws,
  Engineering designs. No Mathemetician or Lawyer would dream of reinventing
  anything, unless they had not done their homework! It is just not
economic,there
  isn't time to do it all over again every day!

  Maybe the text editor and the word processor are our undoing, because we can
  reinvent the basic structures of almost every application and computer science
  construct all over again every day!

   Software developers have just figured out a way to be uneconomic much faster
   than anyone else. Like in Alice in Wonderland they have found out how
to make 
   the world go as fast as they do so they can run faster to stay in the
same place.
   Pretty clever eh!

  Maybe we need to go back to contemplation of the works of others, as people
  were compelled to do before text processors, and learn to write less source
  text not more.

  And it's good night from him!

 
  Cheers

  Des Kenny
  Objective Methods Ltd
  Email: dkenny@actrix.gen.nz




  parent reply	other threads:[~1996-03-16  0:00 UTC|newest]

Thread overview: 191+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <4hneps$1238@watnews1.watson.ibm.com>
     [not found] ` <Do3F1K.4xG@assip.csasyd.oz>
     [not found]   ` <4i455s$ijq@watnews1.watson.ibm.com>
1996-03-15  0:00     ` Real OO Don Harrison
     [not found]       ` <DoBH80.9u9@world.std.com>
1996-03-15  0:00         ` Mark A Biggar
1996-03-15  0:00         ` Richard Pitre
1996-03-16  0:00     ` Des  Kenny [this message]
1996-05-02  0:00 Bob Crispen
     [not found] <DoDLr7.JDB@world.std.com>
     [not found] ` <4if7s5$bfk@ra.nrl.navy.mil>
     [not found]   ` <DoDqH4.29v@world.std.com>
1996-03-26  0:00     ` AdaWorks
1996-03-29  0:00   ` Brian Rogoff
     [not found] <4id031$cf9@dayuc.dayton.saic.com>
1996-03-18  0:00 ` Norman H. Cohen
1996-03-18  0:00   ` The Right Reverend Colin James III
1996-03-19  0:00     ` Norman H. Cohen
1996-03-21  0:00       ` Don Harrison
1996-03-20  0:00 ` Don Harrison
1996-03-20  0:00 ` Norman Cohen giving IBM a bad name The Right Reverend Colin James III
1996-03-20  0:00   ` Real OO Dale Stanbrough
1996-03-21  0:00     ` Richard Pitre
1996-03-20  0:00   ` Colin James III giving humans a bad name (was Re: Norman Cohen giving IBM a bad name) Mark R Okern - F95
1996-03-20  0:00     ` Real OO John G. Volan
1996-03-21  0:00       ` Scott Leschke
1996-03-21  0:00         ` Norman H. Cohen
1996-03-21  0:00         ` Robert A Duff
1996-03-22  0:00         ` Don Harrison
1996-03-22  0:00 ` Don Harrison
1996-03-22  0:00   ` Norman H. Cohen
1996-03-26  0:00     ` Don Harrison
1996-03-26  0:00       ` Norman H. Cohen
1996-03-29  0:00         ` Don Harrison
1996-03-27  0:00       ` Thomas Beale
1996-03-28  0:00         ` Don Harrison
1996-03-22  0:00   ` Norman H. Cohen
1996-03-27  0:00     ` Don Harrison
1996-03-27  0:00       ` Norman H. Cohen
1996-03-28  0:00         ` Jacob Gore
1996-04-04  0:00         ` Don Harrison
1996-04-04  0:00           ` Robb Nebbe
1996-04-04  0:00           ` Laurent Guerby
1996-04-04  0:00           ` Jon S Anthony
1996-04-04  0:00           ` Tucker Taft
1996-04-04  0:00             ` Tucker Taft
1996-04-12  0:00               ` Don Harrison
1996-04-12  0:00             ` Don Harrison
1996-04-15  0:00               ` Robert I. Eachus
1996-04-19  0:00                 ` Don Harrison
1996-04-19  0:00                   ` Matt Kennel
1996-04-20  0:00                     ` Bob Hathaway
1996-04-23  0:00                     ` Don Harrison
1996-03-23  0:00   ` Joachim Durchholz
1996-03-26  0:00     ` Norman H. Cohen
1996-04-04  0:00       ` Don Harrison
1996-04-04  0:00         ` Jon S Anthony
1996-04-12  0:00           ` Don Harrison
1996-04-17  0:00             ` Jon S Anthony
1996-04-19  0:00               ` Don Harrison
1996-04-19  0:00                 ` Jon S Anthony
1996-04-23  0:00                   ` Don Harrison
1996-04-24  0:00                     ` Don Harrison
1996-04-29  0:00                     ` Jon S Anthony
1996-04-30  0:00                       ` Robert Dewar
1996-04-30  0:00                         ` Amit Patel
1996-04-30  0:00                           ` Robert A Duff
1996-05-07  0:00                             ` Amit Patel
1996-05-01  0:00                           ` Norman H. Cohen
1996-05-01  0:00                             ` Colin James III (The Rt Rev'd)
1996-05-07  0:00                             ` Amit Patel
1996-04-30  0:00                         ` Robert A Duff
1996-04-30  0:00                           ` Robert Dewar
1996-05-01  0:00                             ` Richard Bielak
1996-04-30  0:00                           ` Amit Patel
1996-05-01  0:00                           ` Adam Beneschan
1996-05-02  0:00                             ` Ell
1996-05-01  0:00                         ` Don Harrison
1996-05-01  0:00                           ` Don Harrison
1996-05-02  0:00                             ` Robert A Duff
1996-05-03  0:00                               ` Don Harrison
1996-05-03  0:00                                 ` Robert A Duff
1996-05-06  0:00                                   ` Don Harrison
1996-05-06  0:00                                     ` Robb Nebbe
1996-05-06  0:00                                     ` Robert A Duff
1996-05-01  0:00                           ` David Hopwood
1996-05-03  0:00                             ` Don Harrison
1996-05-02  0:00                           ` Robert A Duff
1996-05-03  0:00                             ` Don Harrison
1996-05-10  0:00                             ` Don Harrison
1996-05-01  0:00                         ` AdaWorks
1996-05-08  0:00                         ` Joachim Durchholz
1996-05-03  0:00                       ` Don Harrison
1996-05-03  0:00                         ` Dave Fitch
1996-05-07  0:00                         ` Jon S Anthony
1996-04-30  0:00                     ` Jon S Anthony
1996-05-01  0:00                       ` Matt Kennel
1996-05-03  0:00                         ` Don Harrison
1996-05-02  0:00                       ` Don Harrison
1996-05-02  0:00                         ` Robert I. Eachus
1996-05-02  0:00                         ` Jon S Anthony
1996-05-03  0:00                           ` Don Harrison
1996-05-06  0:00                             ` Jon S Anthony
1996-05-06  0:00                         ` Jon S Anthony
1996-05-06  0:00                       ` Don Harrison
1996-05-06  0:00                         ` Don Harrison
1996-05-07  0:00                         ` Jon S Anthony
1996-05-13  0:00                           ` Don Harrison
1996-05-09  0:00                         ` Jon S Anthony
1996-04-30  0:00                     ` Joachim Durchholz
1996-04-24  0:00                 ` Joachim Durchholz
1996-05-01  0:00                   ` Matt Kennel
1996-05-02  0:00                     ` Don Harrison
1996-05-07  0:00                   ` Joachim Durchholz
1996-05-08  0:00                   ` Jon S Anthony
1996-05-09  0:00                   ` Robert I. Eachus
1996-04-30  0:00                 ` Jon S Anthony
1996-05-03  0:00                   ` Don Harrison
1996-05-07  0:00                     ` Jon S Anthony
1996-04-30  0:00                 ` Joachim Durchholz
1996-05-08  0:00                   ` Joachim Durchholz
1996-05-10  0:00                   ` Jon S Anthony
1996-05-02  0:00                 ` Jon S Anthony
1996-05-06  0:00                 ` Jon S Anthony
1996-04-08  0:00         ` Norman H. Cohen
1996-04-08  0:00           ` Robert A Duff
1996-04-09  0:00             ` Norman H. Cohen
1996-04-10  0:00           ` Don Harrison
1996-04-11  0:00           ` Jacob Gore
1996-04-12  0:00           ` Don Harrison
1996-04-12  0:00             ` Jon S Anthony
1996-04-13  0:00               ` Robert A Duff
1996-04-12  0:00             ` Matt Kennel
1996-04-15  0:00               ` Don Harrison
1996-04-16  0:00             ` Jon S Anthony
1996-04-12  0:00           ` Don Harrison
1996-04-12  0:00             ` Jacob Gore
1996-04-16  0:00               ` Don Harrison
1996-04-09  0:00         ` Valery CROIZIER
1996-04-09  0:00         ` Jon S Anthony
1996-04-09  0:00       ` Joachim Durchholz
1996-05-02  0:00       ` Joachim Durchholz
1996-05-05  0:00         ` Robert A Duff
1996-05-05  0:00           ` Robert Dewar
1996-05-06  0:00         ` Norman H. Cohen
1996-05-07  0:00           ` Don Harrison
1996-05-07  0:00             ` Jon S Anthony
1996-05-08  0:00               ` Don Harrison
1996-05-08  0:00             ` Norman H. Cohen
1996-05-08  0:00               ` Robert A Duff
1996-05-10  0:00                 ` Matt Kennel
1996-05-10  0:00                   ` Robert A Duff
1996-05-14  0:00                     ` Matt Kennel
1996-05-15  0:00                       ` Robert A Duff
1996-05-07  0:00         ` Amit Patel
1996-05-07  0:00           ` The Right Reverend Colin James III
1996-05-08  0:00           ` Don Harrison
1996-05-08  0:00             ` Juergen Schlegelmilch
     [not found]               ` <Dr4538.D27@assip.csasyd.oz>
1996-05-09  0:00                 ` Juergen Schlegelmilch
1996-05-09  0:00                 ` Richard Riehle
1996-05-10  0:00                   ` Tucker Taft
1996-05-13  0:00                     ` Don Harrison
1996-05-13  0:00                       ` Tucker Taft
1996-05-14  0:00                         ` Don Harrison
1996-05-14  0:00                           ` Robert A Duff
1996-05-14  0:00                           ` Steve Tynor
1996-05-14  0:00                             ` Robert A Duff
1996-05-15  0:00                             ` Don Harrison
1996-05-15  0:00                           ` Steve Tynor
1996-05-15  0:00                             ` Robert A Duff
1996-05-16  0:00                           ` James McKim
1996-05-18  0:00                             ` Matt Kennel
1996-05-20  0:00                               ` James McKim
1996-05-22  0:00                                 ` Matt Kennel
1996-05-14  0:00                         ` Roger Browne
1996-05-14  0:00                         ` Joachim Durchholz
1996-05-15  0:00                         ` Alexander Kjeldaas
1996-05-15  0:00                         ` Steve Tynor
1996-05-19  0:00                         ` Piercarlo Grandi
1996-05-14  0:00                   ` James McKim
1996-05-15  0:00                     ` Juergen Schlegelmilch
1996-05-20  0:00               ` Joachim Durchholz
1996-05-07  0:00       ` Joachim Durchholz
1996-05-09  0:00         ` Don Harrison
1996-05-09  0:00           ` Joachim Durchholz
1996-05-09  0:00           ` Jon S Anthony
1996-03-28  0:00   ` Joachim Durchholz
1996-03-29  0:00     ` Norman H. Cohen
1996-03-30  0:00       ` John G. Volan
1996-03-26  0:00 ` Jon S Anthony
1996-03-29  0:00 ` Joachim Durchholz
1996-04-04  0:00   ` Don Harrison
1996-04-04  0:00     ` Steve Tynor
1996-04-08  0:00       ` Norman H. Cohen
1996-04-09  0:00         ` Matt Kennel
1996-04-04  0:00     ` Dominique Colnet
1996-04-08  0:00     ` Matt Kennel
1996-04-09  0:00       ` Norman H. Cohen
1996-04-09  0:00     ` Robert C. Martin
1996-04-10  0:00     ` J. Kanze
     [not found] <JSA.96Mar13143956@organon.com>
1996-03-15  0:00 ` Don Harrison
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox