Is there a "Large Scale Python Software Design" ?
aleaxit at yahoo.com
Tue Oct 19 22:05:21 CEST 2004
Josiah Carlson <jcarlson at uci.edu> wrote:
> > Heh. "Large" depends on a lot of things, particularly connectedness,
> > but I really can't picture 10k being large under any circumstances.
> Ok, so what is large? How many orders of magnitude larger than 10k
> lines does it take for a piece of software to be large? And why should
> you be the judge?
My definition of a large software system is: a system that cannot
sensibly be developed and maintained by just one developer, but requires
a team of developers. Among the factors defining where the boundaries
lie are such things as deployment issues (how many platforms, how
diverse), function points, analysis/requirements, etc, etc, but SLOC
(properly counted/normalized lines of code) are the main determinant.
For a reasonably experienced programmer, with decent tools, and without
hair-raising problems of deployment, optimization, continuous fast
changes to specs, etc, etc, 10k SLOC should be within the threshold of
"can be sensibly developed and maintained by one person"; 100k SLOC
won't be; the threshold is somewhere in-between. Of course, if you're
talking freshman programming trainees, or special problems of the
various sorts mentioned, the thresholds do shift downwards.
> I'd let it slip to medium, but I wouldn't say that the project was small.
> Small is something you can do in a weekend because you've been putting
> it off. Small is something a newb to the language can do in a week
> while they are learning the language.
OK, that's your definition of "small", I guess. I don't know that
there's a commonly accepted one. On the other hand, moving from a
project that can all fit in your head, one you can fully develop and
actively maintain by yourself, to a team situation, _is_ a crucial
threshold, as teams have such different strengths and problems than
individuals on their own; and the "Large Scale" monicker is typically
tagged onto projects requiring a team.
We can quibble about special cases (is a 2-people team, with one of them
developing half-time and the rest of the time out selling the system,
comparable to a more typical case of 6-10 people working full-time on
development and maintenance of a system?), but that's always so for
taxonomies, and doesn't add much to the discussion IMHO.
More information about the Python-list