From: graham@bangalore.esf.de (Graham Samuel)
Newsgroups: comp.software-eng
Subject: Software Factory (was: Re: Do Software Engineers Actualy Do So Badly?)
Date: 8 Oct 1992 10:34:13 -0500
Organization: ESF Headquarters, Berlin, FRG
Reply-To: graham@esf.de, tholome@esf.de
NNTP-Posting-Host: cs.utexas.edu

I was interested to read in article <1992Oct6.185140.10259@news.arc.nasa.gov>
of comp.software-eng Hugh LaMaster's comment that he thinks that:

 `many people have deluded themselves into falsely applying models that come
  from manufacturing... there is no such animal [as a Software Factory], and
  never has been.  The proper model for software is "project", not "factory",
  and in fact, most of the costs are "project design-like" costs, not
  "construction-like" costs.'

As Director of a project that actually uses the word `Factory' in its title, I
must defend the usage!  The point is that the construction of software does
bear some analogy with manufacturing.  This is worthy of a longer discussion,
but in brief, two of the key ideas from manufacturing which we feel could be
re-used (to coin a phrase!) in software production are those of componentry and
process.

One of the biggest breakthroughs in the industrialisation of society came when
people started to put together standardised components.  Manufacturing today is
completely dependent on standardised components and on the whole system that
creates and maintains the standards.  When was the last time you ordered a
screw with a non=standard pitch?  I doubt if even General Motors does this. I
imagine also the market for railway wagons with a non=standard wheelbase is
pretty limited too.  And we all know the concept of a standard component has
reached the world of microelectronics in hundreds or maybe thousands of ways.

People effortlessly combine thousands of predefined pieces to put together
totally new objects: the lack of effort comes from the fact that they know what
to expect.  Sure, sometimes people have to convert from centimetres to inches
or whatever, but at least nobody has any doubt what a centimetre or an inch is.
One part of a "Software Factory" therefore is a facility for storing,
cataloguing and putting together predefined pieces of software (or
specifications, or User Interfaces or any other product of the software
production process), and one of the key jobs of researchers in this area is to
devise and promote standards and mechanisms to make standardised componentry
possible.  If we could get this right, we could vastly increase the confidence
of users of CASE in general and thus create a far bigger market for software
components (both those used to construct construction systems - Factory
building blocks as it were - and those used to construct the applications which
are the products of Software Factories) that exists today.  There are many de
facto movements in the world working in this direction - PCTE for example, or
maybe the rise and rise of Windows should be cited - and to my mind this all
comes under the heading of industrialising the software making process.

Which brings us to the second analogy: process itself.  A modern factory in
manufacturing does not operate on the 19th and early 20th-century model of
endless repetition with people reduced to machines: but to make it work at all,
the work of people and machines has to be ordered and harmonised.  Ideally,
each person is given the right tools and the right instructions to carry out
the right task at the right time to fit in with the overall manufacturing
scheme.  At the same time the machines in the factory have the right raw
materials, pre-fabricated components etc available plus the right robotic
programs, the right transportation of finished goods etc. to operate in an
optimal way.

The key to this sort of efficiency is explicit understanding of process.  What
actions/tasks should be carried out when, with what tools and producing what
outputs to meet the manufacturing objectives of the factory.  If the process is
sufficiently explicit, it can be automated.

We cannot and do not wish to automate people, but nevertheless the analogy
holds.  By having an explicit model of process (really an extension of the
project plan - much of it re-usable because if follows standard procedures laid
down for example in an enterprise's quality systems), with suitable computer
support we can offer to a person taking on a particular role in the factory
(programmer, project manager, quality manager, unit tester, documentor...) the
right documents, files and tools to do his or her job, presented in a clear and
user friendly way right there on the screen of the workstation.  Such a
collection of information is usually called a work context.  The process model
is enacted, that is to say it is operated in real time to provide the
appropriate work context for each role holder (of course one person can hold
many roles and can be assigned several tasks at any one time).  The enactment
allows for feedback, so that the whole system (ultimately supervised by the
project manager) can react to events such as delays, difficulties, changes of
plan... and be altered accordingly.  This may be more flexible than life at
Volvo, but it is essentially a factory-like process.

Of course none of this addresses directly the `Chunnel' problem - how do you
make difficult and essentially innovative work predictable?  I would submit
however that it helps, because it reduces the unpredictable part to a mimimum;
and it puts the best tools in the hands of the people doing the work.

Of course there is more to say, but I hope this gives some idea why in this
project we are still happy to use the term `Factory'.
 
 
 
 
 
   Graham Samuel
   Project Director
 
+---------------------------------------------------------------+
| ESF Headquarters                    Tel : ++49+30-820 903 12  |   
| Hohenzollerndamm 152                Fax : ++49+30-820 903 19  |   
| D-1000 Berlin 33                    Internet: graham@esf.de   |  
| Germany                                                       | 
+---------------------------------------------------------------+
Newsgroups: comp.software-eng