Stories
Slash Boxes
Comments

News for nerds, stuff that matters

Slashdot Log In

Log In

[ Create a new account ]

A Unified Theory of Software Evolution

Posted by CmdrTaco on Mon Apr 08, 2002 08:39 AM
from the stuff-to-read dept.
jso888 writes "Salon has a nice article today on Meir Lehman's work on how software evolves and is developed. Lehman's investigation of the IBM OS/360 development process became the foundation for Brooks' Law: "Adding manpower to a late software project makes it later." He is hopeful that his work will make software development less of an art and more of an engineering science."
This discussion has been archived. No new comments can be posted.
Display Options Threshold:
The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
  • Evolution is a MYTH!!! (Score:3, Funny)

    by Mr. Neutron (3115) on Monday April 08 2002, @08:43AM (#3302647) Homepage Journal
    Software doesn't evolve by chance, folks, it is DESIGNED by its CREATORS.

    Please check your crackpot theories and psuedo-science at the door. /. is a site for SERIOUS INTELLECTUAL DISCUSSION.

    Thank you.
  • Brooks' Law (Score:2, Interesting)

    by TheToon (210229) on Monday April 08 2002, @08:44AM (#3302648) Journal
    Brooks' Law: "Adding manpower to a late software project makes it later."

    This can be simplified: "Adding manpower to a software project makes it later."


    There's rarely that many programmers needed for a given task anyway. You need a project leader and lots of monkeys to test it... very few projects should have more than 10 programmers (if any).
    • Re:Brooks' Law (Score:4, Funny)

      by flynt (248848) on Monday April 08 2002, @08:49AM (#3302665)
      very few projects should have more than 10 programmers (if any).

      You realize you just suggested that very few software projects should have any programmers. How is the project going to get completed without anyone working on it?
      [ Parent ]
    • Re:Brooks' Law by jeffy124 (Score:2) Monday April 08 2002, @09:04AM
      • Re:Brooks' Law by TheToon (Score:1) Monday April 08 2002, @05:13PM
      • 1 reply beneath your current threshold.
    • Re:Brooks' Law by ACK!! (Score:3) Monday April 08 2002, @09:19AM
    • Re:Brooks' Law by Yunzil (Score:1) Monday April 08 2002, @09:28AM
    • Re:Brooks' Law by angel'o'sphere (Score:1) Monday April 08 2002, @11:14AM
      • Re:Brooks' Law by angel'o'sphere (Score:1) Monday April 08 2002, @11:20AM
    • Re:Brooks' Law by gweihir (Score:2) Monday April 08 2002, @01:10PM
    • Re:Brooks' Law by Vanders (Score:1) Monday April 08 2002, @02:18PM
  • Brook's law can't be used (Score:4, Insightful)

    by blirp (147278) on Monday April 08 2002, @08:50AM (#3302666)
    While "Brook's law" might be a law, it's only useful in retrospect. Most software projects have no idea how far behind they really are. So basically, you can always add manpower, you're really only half way through anyways...
  • Can We Say... (Score:1)

    by KingAdrock (115014) on Monday April 08 2002, @08:50AM (#3302670) Journal
    Mythical Man Month???
    • Re:Can We Say... by Surak (Score:1) Monday April 08 2002, @09:02AM
      • Actually... by KingAdrock (Score:1) Monday April 08 2002, @09:07AM
    • 1 reply beneath your current threshold.
  • by Anonymous Coward on Monday April 08 2002, @08:51AM (#3302672)
    Where's the guy with the .sig "it takes nine months to bear a child, no matter how many women you assign to the task" when you need him?!?!?!?!?

  • Seek and thou shalt find??? (Score:1, Funny)

    by HiQ (159108) on Monday April 08 2002, @08:51AM (#3302674)
    First it's : "You'll have to forgive me," apologizes Lehman at one point, sifting through a pile of research papers on a nearby shelf. "Since I lost my secretary, I can't seem to find anything." . And in the last sentence of the article it says: ...a man in search of both fulfillment and a little revenge"
    Poor, poor man; he'll never find it I'm afraid!
  • mirror anyone? (Score:1)

    by fabiolrs (536338) on Monday April 08 2002, @08:53AM (#3302685) Homepage
    the site is slashdoted already... does anyone have a mirror?
  • Whow! He's still living? (Score:3, Interesting)

    by software_non_olet (567318) <software@non.olet.de> on Monday April 08 2002, @08:58AM (#3302705)

    "When I first wrote about this topic, nobody took a blind bit of notice."

    No, sir, I did and many collegues who were also interested in good timely work. We lent your books to each other with the notion "that's something you should read".

    Great to hear that you are still alife and enjoying to give programmers and their managers something to look at and something worth to read and think about.

    Youngsters, better pay respect to this old software camel with the hole in the sole of his shoe (and probably also in his all-too British pullover), or I DDOS your toilet!

  • The key point is paragraph 9 (Score:5, Insightful)

    by gelfling (6534) on Monday April 08 2002, @08:58AM (#3302706) Homepage Journal
    "Unless IBM programmers had suddenly figured out a way to write error-free code -- an unlikely assumption -- Lehman made a dire prediction: OS/360 was heading over a cliff. IBM, in stressing growth over source-code maintenance, would soon be in need of a successor operating system."

    Which means that commerical systems don't so much evolve as stub their growth paths out and switch direction or spawn new generations because embedded complexity has killed off the feasibility of maintaining it. In other words, all new releases are the cause of and ultimately an attempt to escape from, the chimera that is overly complex code. In commercial terms this should be astounding. We're paying to gronk up our own because we erroneously believe the NEXT version will be something radically new and elegant which of course it can't be.

    New Version "x+1.y" is simply an ejection seat.
  • Blame it on C++ (Score:3, Insightful)

    by Caractacus Potts (74726) on Monday April 08 2002, @09:01AM (#3302719)

    I'm not attempting to flamebait here, just submitting an observation. It seems to me that many of the complexity issues can be overcome by designing better languages. I've never stopped scratching my head over the perseverance of old languages like C++ and FORTRAN. Sure, they are extremely useful in the hands of experienced folks, but they need to die. They were good solutions to problems decades ago, but so much has been learned since then and the constraints of sparse computer resources and CPU speed have moved a lot.

  • I have always seen programming as something magical but thats probably more because of lack of knowledge than because it really is magic. Maybe its time to straighten the myth behind big software projects and get a bit more grip on how it works and why. The intent is noble and given current state of software capabilities and performance in comparison to hardware its about time. Imagine having an os that had evolved like your hardware? ...... Think *SCREEEEAAAAMMMMM* woshing numbers like nothing you have EVER seen.
  • i want to see (Score:2)

    by mark_lybarger (199098) on Monday April 08 2002, @09:03AM (#3302724)
    a standard printed book value of time estimates for projects. the auto repair industry has standard estimates for certain repairs, why doesn't the software repair industry. i know they're worlds apart, but it sure would help out a little to be able to pull out a little book and say, well, you need a gui interface consisting of 15 screens to maintain 20MB of data, it's going to be 10,000 hours for developing, testing and documenting. if you want to cut the documentation, we can do that, but you're really slitting your throat there.
  • Open source (Score:5, Interesting)

    by bunyip (17018) on Monday April 08 2002, @09:04AM (#3302729)
    From the article:

    Michael Godfrey, a University of Waterloo scientist, is equally hesitant but still finds the Lehman approach useful. In 2000, Godfrey and a fellow Waterloo researcher, Qiang Tu, released a study showing that several open-source software programs, including the Linux kernel and fetchmail, were growing at geometric rates, breaking the inverse squared barrier constraining most traditionally built programs. Although the discovery validated arguments within the software development community that large system development is best handled in an open-source manner, Godfrey says he is currently looking for ways to refine the quantitative approach to make it more meaningful.

    It would have been interesting had they delved deeper into this finding. Yeah, I know, the true believers in open source all feel superior (we are, aren't we?), but exploring the reasons why it works would be interesting.

    Is it the large-scale peer-review process? Is it that we occasionally rewrite parts (filesystems, VMM, etc)? Something else?
  • by David Kennedy (128669) on Monday April 08 2002, @09:08AM (#3302752) Homepage
    Good article; I think the description of the sociological basis of the "laws" is correct. My experience suggests that the slowest development paths are those that cross other people's areas.
    (And yes, I know about XP's "All code is shared.")

    As for the maintenance, it's my normal experience, but the prohects I've been involved in may be atypical. (*cough*Canadian*cough*telecommunications*cough*gi ant*)
    We spend a *lot* of time reworking old code to (a) fix obscure bugs, many of which are slow leaks shown up by weeks serving live traffic (b) adapt the code to support new releases of underlying hardware product and (c) adding new features to satisfy users.
  • by 3-State Bit (225583) on Monday April 08 2002, @09:09AM (#3302758)
    Although the performance audit showed that IBM researchers were churning out code at a steady rate, Lehman found the level of debugging activity per individual software module to be decreasing at an equal rate; in other words, programmers were spending less and less time fixing problems in the code. Unless IBM programmers had suddenly figured out a way to write error-free code -- an unlikely assumption -- Lehman made a dire prediction: OS/360 was heading over a cliff. IBM, in stressing growth over source-code maintenance, would soon be in need of a successor operating system.
    Except that the "[dire] need of a successor operating system" isn't so dire at all: the world's richest man didn't get where he got by writing code that didn't need to be replaced by a successor operating system, did he? The whole premise is to produce something that works now, and when it stops working later, you sell a later version. Heck, just a couple of months ago, Billy announced that 92.3% of the calendar year would focus on new code, leaving the rest [slashdot.org] for the old.
    What's smarter, coding the Microsoft way, or coding a server that's been up since before Windows NT was released, without a patch in 7 years, handling half a megabit of data both upstream and down, every second of every day forever. Where's the revenue?

    ~r~

    Note: the 92.3% figure might only be for the year 2002, with later years being still closer to 100%.
  • No theory in Software Engineering? (Score:2, Insightful)

    by RatOmeter (468015) on Monday April 08 2002, @09:14AM (#3302774)
    From the article:
    "In software engineering there is no theory,"

    I don't buy that... at least not completely. I would say something more like, "In software engineering, theory is extremely underutilized."

    I believe there are many instances of engineered software, but not necessarily high-profile stuff. A lot of DoD conscripted code may never the the civilian light of day, but there are procedures and documentation requirements that, flawed or not, enforce certain practices. Can we call that "theory"? Anyhow, defense suppliers can afford the extra development time, 'cause the government is forking over big bucks for the code to right.

    For the mainstream (read desktop) apps, where all the money is, the time to market and feature pressures will continue to suppress even the best "unified theory" of software development.
  • Software Engineering (Score:2, Informative)

    by MightyMicro (111816) on Monday April 08 2002, @09:22AM (#3302797)
    Manny Lehman is credited with coining the expression "Software Engineering". About 1968, I think. See also the website of the company he founded Imperial Software Technology [ist.co.uk].
  • That's the point (Score:1)

    by carm$y$ (532675) on Monday April 08 2002, @09:26AM (#3302812) Homepage
    "Whenever I talk, people start off with blank faces," Lehman admits. "They say, 'But you haven't told us anything we didn't already know.'

    99% of the consultants do this for a living. Get used to it. :)
  • by qurob (543434) on Monday April 08 2002, @09:26AM (#3302814) Homepage

    10,000 people working on Windows XP?

    No wonder they have so many problems! The should have a smaller team of say, 20 or 25 people

    (ugh)
  • We are only Human. (Score:2, Interesting)

    by gnalre (323830) on Monday April 08 2002, @09:30AM (#3302829)
    I was interested in the fact that some researchers have only recently come to the conclusion that software is written by people.

    It is questionable how useful purely statistical methods are in these situation.

    One thing I would be interested in knowing is how staff turnover effects development. For matainable software to be possible a consistent approach must be maintained on adding new functionality, this usually requires deep understanding of alrge code base, and if your programmers keep changing, the newbies may not follow the rules.
    • humans? by fantomas (Score:1) Monday April 08 2002, @12:38PM
    • Re:We are only Human. by frank_adrian314159 (Score:2) Monday April 08 2002, @01:57PM
  • by fruey (563914) on Monday April 08 2002, @09:31AM (#3302838) Homepage Journal
    Included within the new set of laws are the Law of Continuing Growth ("The functional capability of E-type systems must be continually increased to maintain user satisfaction over the system lifetime")

    - The functional capability of the OS too, since new hardware keeps coming out

    and the Law of Declining Quality ("The quality of E-type systems will appear to be declining unless they are rigorously adapted, as required, to take into account changes in the operational environment").

    Exactly what is happening to windows? And why Linux is so successful -> Open Source like fetchmail et al being more linear in their development, all users get a stab at getting the environment right.

    But users who aren't prepared to do any work to make things better in their environment for their PC are always going to lose. But it's the same as those people who make their desks tidy and optimise them for work, and those that don't. The difference on your virtual desktop is that you can't easily hope someone else will tidy it for you...:)

  • it's all in the design (Score:2, Interesting)

    by bilbobuggins (535860) <bilbobuggins@juntjunt. c o m> on Monday April 08 2002, @09:32AM (#3302840)
    it just goes to show that 99% of the work in creating software is in the design.
    you have to try to map out not only what you will need but what you might need in the future.
    yes, it's a near impossible task but it's the only way to avoid automatically commiting yourself to an endless cycle of patches and hacks.
    the good part is, if you can plan the project well enough then the actual coding becomes nearly trivial.
    the problem arises when the boss says 'i don't care about scalability or flexibility, i just want code now' and i have to try to explaining that i'm trying to save his ass 8 months down the line when clients (and not to mention, the boss himself) bombard us with feature requests, etc.
  • by joshv (13017) on Monday April 08 2002, @09:51AM (#3302966)
    Creating common APIs allows seperate development projects to proceed at their own pace. You don't need OO for this, but it helps.

    I think one of the reasons that Linux has been so successful is because Linus decided long ago to take a modular approach to designing his monolithic kernel.

    -josh
  • No Interest in 'Doing It Right' (Score:3, Insightful)

    by Anonymous Coward on Monday April 08 2002, @10:03AM (#3303051)
    Back in the early 1980s I headed up a small team that developed 'industrial strength' applications.
    Our firm licenced this software to major manufacturing firms with a Money Back Guarantee. As in, "If you are not satisfied, for any reason, we will either fix the problem or give you back your money. Your choice." We were never asked for a refund.

    It was semi-open source. You could have the source any time you wanted, but asking for the source voided your warranty, since problems in your data might have been caused by your own temporary code changes.

    Funny thing. I've had that on my resume for many years, but no prospective employer has ever asked how I did it.

    No one has hired me specifically to help them produce similar quality code. Much of the time their reaction to my resume is, 'but you don't know c++' (or their other favorite). I know enough about c++ to know that I want to stay away from that second generation language for all but the most specialized situations.

    I have also been told, on numerous occasions, that I'm not qualified to lead a particular project because I lack experience mannaging the large team that will be needed. I've never gained that experience because I've never needed a large team to accomplish anything.

    As an MBA, as well as being an application designer & a coder, I know that large teams do have a place -- mostly where you have a blank cheque and are earning a percentage of the total billing. (:-)
    • Right on! by epepke (Score:2) Monday April 08 2002, @04:02PM
      • Congratulations! by Morris Schneiderman (Score:1) Monday April 08 2002, @04:29PM
  • Software craftsmanship (Score:4, Interesting)

    by crouchingpenguin (322034) on Monday April 08 2002, @10:11AM (#3303083)
    A quick warning... I consider myself a relative newborn in the world of software development. I present these opinions under the consideration that my opinions can change at any moment. =]

    A lot of the dire predictions of software atrophy and such are a result of applying the wrong methodology to a project. Yes there are uses for Software engineering, but I think this approach is overkill for even large scale projects. Check out Software Craftsmanship: The New Imperative [barnesandnoble.com] for a different perspective. A perspective I think is in need of serious consideration. The gist is returning to the days of master craftsman and apprenticeships. This focuses a bit more on the learning aspect than actual development methodologies, but you can always go to The Pragmatic Programmer [barnesandnoble.com] to fill in that gap.

    "As time passes, the system becomes less and less well-ordered. Sooner or later the fixing ceases to gain any ground. Each forward step is matched by a backward one. Although in principle usable forever, the system has worn out as a base for progress."

    This is where "refactoring" (see Fowler's Refactoring [barnesandnoble.com]) really shines. I find it difficult to believe that refining the software base is not progress. An initial revision where the code functions by its contract (if your into designing by contract), then you refactor the body of the function/method for speed / elegance. Then you can run your unit tests on the function / method to test that the refactoring session did not break any of the design contracts (whew).

    I think they may be trying to restate the broken window theory (see Pragmatic Programmer), were a broken window (or bug) in a building (or system) leads to delapidation elsewhere in the building (or system).

    And then there are the agile methods [agilemanifesto.org], including XP [extremeprogramming.org]. I think these answer a lot of the limitations and issues with Software Engineering practices. Interacting with clients (having a client there during each iteration) gives you the benefit of almost real-time feedback so that you can update your user stories on the fly, etc.

    Without rambling on any farther, my point is not too spend too much time looking for a specific unified theory. Read up about all the ideas, methods, and theories. Take the best parts from each, then crank the knob all the way up (if I may borrow that from XP =] ). Don't let anyone tell you there is a science to software development that is easy to reproduce, and that you are just a link in the overall chain. You practice and perform a craft. Enjoy it!
  • by crath (80215) on Monday April 08 2002, @11:16AM (#3303484) Homepage
    ...is that it points to an old Salon piece about Larry Wall and the creation of Perl [salon.com].
  • by jellybear (96058) on Monday April 08 2002, @11:58AM (#3303748)
    Why does making software engineering more of an engineering science necessarily make it less of an art? Can't it be both? Shouldn't it?
  • by Anonymous Coward on Monday April 08 2002, @12:37PM (#3303942)
    The problem is that most corporations have a pyramidal power structure, with bosses handing down work (delegating) to minions.


    In the software industry, it is not uncommon for the developers to be far more intelligent and knowledgable than their managers. This creates more than resentment, there is a fundamental conflict. The manager is setting the deadlines, and yet the developer is the one who knows that all deadlines are bullshit.


    This is the reason most software sucks.

  • Growing geometrically? (Score:4, Interesting)

    by catfood (40112) on Monday April 08 2002, @12:59PM (#3304101) Homepage

    From the article:

    Michael Godfrey, a University of Waterloo scientist, is equally hesitant but still finds the Lehman approach useful. In 2000, Godfrey and a fellow Waterloo researcher, Qiang Tu, released a study showing that several open-source software programs,
    including the Linux kernel and fetchmail, were growing at geometric rates, breaking the inverse squared barrier constraining most traditionally built programs.

    Is fetchmail [tuxedo.org] complex enough that it needs to be growing geometrically? I mean yeah, fetchmail does a lot, and I do know what "geometric" means. Still, I doubt the world of email is changing fast enough that you'd want to choose that as your example of out-of-control software maintenance.

    [Insert obligatory ESR goading.]

  • oxymoron? (Score:1)

    by sahala (105682) <.moc.liamg. .ta. .alahas.> on Monday April 08 2002, @01:19PM (#3304225) Homepage
    ...less of an art and more of an engineering science

    Somehow the last two words form a concept that at least from observation, doesn't really exist.

    Then again I'm only 2 years out in the "commercial world"...what do I know?

  • Godfrey speaks (Score:1, Informative)

    by Anonymous Coward on Monday April 08 2002, @04:23PM (#3305564)
    I spoke to the author for about an hour on the phone. Some of the quotes are not quite correct, but aren't too far off. Here are the major corrections:
    1. The Beagle tool is the work of my (recently graduated) M.Math student, Qiang Tu, done under my supervision. We reused the PBS landscape viewer as part of it (which is the work of my colleague, Prof Ric Holt; hence the confusion). More info about Beagle can be found in this paper [uwaterloo.ca].
    2. The study of Linux's growth and evolution is best documented in this paper [uwaterloo.ca], not the much shorter paper given in the salon.com article and elsewhere in these postings.
    3. The systems my group has looked at in some detail include the Linux kernel, GCC, and VIM. fetchmail was a quick one and the results were not terribly interesting.
    4. I am not an open source evangelist; I am a researcher :-) I did not say that "large system development is best handled in an open-source manner". I said something more along the lines that open source development seems to work very well for certain classes of systems, especially large, service-based, infrastructure-ish systems like operating systems and compilers. I might have said that I thought open source development might be the best way to engineer these kinds of systems. That would be a personal opinion, tho.
    Michael Godfrey PhD, Assistant Professor
    Nortel Networks Jr Chair, Telecommunications Software Engineering
    Univ of Waterloo, Dept of Computer Science
    email: migod@uwaterloo.ca
    URL: http://www.uwaterloo.ca/~migod
  • Height of evolution. (Score:2, Funny)

    by Jason Pollock (45537) on Monday April 08 2002, @06:05PM (#3306288) Homepage

    Where I work, it has been a commonly held belief that all software evolves until such time as it can send and receive email. If it doesn't do this, it isn't complete. :)

    Jason Pollock
  • by Mittermeyer (195358) on Monday April 08 2002, @07:36PM (#3306771) Homepage
    Here is Mittermeyer's Law-

    F x (H-Q)
    ___________________ = man-hours
    (P1+P2+P3, etc.)/nP

    where F is number of Features,
    H is Hobbling (range from 1 to 100),
    Q is Quality Assurance (range from 0 to 100),
    P1 is skill level of programmer on particular problem (skill level being from a range of .01 <script kiddie> to 1 <average competent programmer> to 10 <certified productive genius>),
    and nP is number of Programmers.

    On (H-Q), use even if a negative number (excessive quality assurance can be as hobbling as normal bureaucracy), and treat 0 as 1.

    This formula takes into account the complexity of the work the package is performing, the skill of the programmer(s) involved, the fog of bad user/organizational ineptitude, and the amount of QA work being done.

    Software should not be described in terms of lines of code or database sizes, but rather by 'feature'. A feature could be thought of most easily as the list of salable points Microsoft and others use to sell their products. A feature can also be an internal function not recognizable by the user, but which aids development, error tracking, security or maintenance.

    To use this formula in the context of the article, simply add a feature change to the feature number. Static applications will be a slight drain, but constantly changing applications will require man-hours, genius programmers and/or intensive QA work and a minimum of hobbling to reduce man-hours. Even with a fantasy level of positive factors, the complexity level will require features to be taken out, or a process to be started from scratch.

    This formula also covers why Open Source has worked so well. OS brings together programmers to work on tasks they are well suited for on modules rather then one monster product, thus avoiding insane complexity levels. The peer review aspect quickly weeds out inept behavior, thus keeping the programmer skill level relatively high, whereas a corporation may not be able to recognize incompetence quickly.

    Obviously plugging numbers into this formula is a highly subjective business, but then again so is Lehman's approach. Try this on for size- I would be very interested in hearing about real-world results.
  • by exa (27197) on Tuesday April 09 2002, @10:44AM (#3309843) Homepage Journal
    For several years, this subject has been accepted as part of Computer Science.

    However, this field is not to be taken too seriously for its purpose is to overburden the programmer rather than making software better. We must understand that while "Programming Languages", "Compilers", "Verification", "Functional Programming", etc. *is* Computer Science, "Software Engineering" hardly is a science of any sort.

    "Software Engineering" is in my understanding an icon of bigotry and inability to accomplish a good design, contrary to its popular advertisement as a means to achieve engineering goals. "Apply our methodology, and you can get 1000 monkeys to write your next OS!!"

    If you have good scientists and programmers who know how to design software and their toolbox, you will be set. Don't waste your time with this bulls***.
  • by jayant_techguy (441933) on Monday April 08 2002, @08:55AM (#3302692) Homepage
    *Software Engineering* exists already. Search Google for the phrase.
    Software Development is an art, it cannot be done by all people. Every succesful developer has his own way to evolve the software and give it powers, and no one can write a book or article on how to evolve the software to gurantee it will work better than its competitor.
    [ Parent ]
  • by Tablizer (95088) on Monday April 08 2002, @11:25PM (#3307929) Homepage Journal
    (* Just try to tell your boss that you can't add a feature a particular customer wants because you don't want to contribute to the rate of entropy of the system... *)

    That is one of the biggest problems: there is almost no factoring in of "complexity costs" in the decision process. Although it might take the same amount of time to add feature A and feature B, one may significantly complicate the system in the long wrong while the other may not.

    As long as the complexity costs are never factored into decisions, it *will* grow messy over time.

    Messy software is a management issue more than a technical one. If you (as an organization) spend complexity like a crack addict, you get what is coming to ya.

    [ Parent ]
  • 14 replies beneath your current threshold.