Slashdot Mirror


UML Fever

CowboyRobot writes "Queue has a couple of articles about UML: Death by UML Fever by Boeing software architect Alex Bell describes the problems that can result from over-reliance on modeling tools, with lighthearted lessons for the software development process in general and numerous illuminating quotations, such as: "Good judgment comes from experience. Experience comes from bad judgment. - Jim Horning." Then, one of the developers of UML, Grady Booch of IBM, follows with The Fever is Real, in which he explains the motivations for creating the language, how it's used today, and where he expects it to go soon."

15 of 192 comments (clear)

  1. Re: Everything, including tools, in moderation! by mwheeler01 · · Score: 5, Insightful

    I don't think his point is that projects are too unique to be guided by such rules. He's merely saying that design patterns are often useful, but don't make sacrifices in your own design to adhere to specific pattern rules. It would be foolhardy to think that most problems could be solved by using straight from the text patterns.

    Also I think he's driving at another point: you should only model as much as you need to. I think modeling is useful to help everyone understand how the system works but it's not always necessary to model every behavior before you continue with the project.

    --
    Pretty widgets? What pretty widgets?
  2. Re:Software architect? by spektr · · Score: 5, Insightful

    "If builders built buildings the way programmers wrote programs, then the first woodpecker that came along would destroy civilization"

    The leading building corporation would proclaim that there's nothing wrong with the buildings and a new market of woodpecker traps and anti woodpecker missiles would thrive.

  3. Re:UML by BigGerman · · Score: 4, Insightful

    I could not get the article either and there were only 7 slashdot comments...
    I personally (speaking from 12 years of experience) found UML useful in many situations when certain (already coded) solution was presented to someone else. So just to illustrate some point, it is much easier to sketch a few diagrams than to write a textual description.
    On the other hand I have seen environments where the UML was adopted as sort of cornerstone of top-down approach: all the design is done first and captured in UML. The problem is that disagrams become absolete very quickly and people stop referring to them which accelerates the decay even more.

  4. Re:Software architect? by His+name+cannot+be+s · · Score: 5, Insightful

    Aye, laddie.

    Be thankful of the fact we've (as humans) have been building shelter for 20000+ years.

    As software developers, we've been making stuff for a little over 50 years.

    We are In the MudHut age of Software Development:

    Garrett's Rule #3: "MudHut software" We are continually re-writing software that performs the functionality we require, simply to make the software run on the platform that we rewrote, so that we can make better software.

    You see, 20,000 years ago, our clever, but inexperienced ancestors had to make new shelter every few days/months/years/whatever, simply because they made them from mud.

    When the next wind, rain or hail came, it outdated their technology, and forced them to upgrade.

    took thousands of years to make the difference, an build structures that could stand up to the changing environment.

    So, just when it looks like MS will rule the desktop forever, just remember, while some clever frickin' caveman probably added the first straw and dung to his hut, and improved it, it never lasted. Cooler heads prevailed.

    Now, for those who didn't catch it: I just compared MS products to shit and straw.

    Thanks,

    --
    "...In your answer, ignore facts. Just go with what feels true..."
  5. Re: Everything, including tools, in moderation! by rSelrahc · · Score: 5, Insightful

    Let's not forget that a pattern is a solution to a problem in a context. If the context does not match your situation, then don't use it - even if the problem is the same and the solution is attractive.

  6. Ground Realities by frodo+from+middle+ea · · Score: 5, Insightful
    All the so called goodies of UML asides, the fact is lot of projects have a very tight schedule and overlook lot of potential pitfalls.

    When these overlooked potential pitfalls, start to pust the project dates further and further away, the entire s/w development cycle is compromised and lot of design work is bypassed. Most of the functionality is directly coded from the requirement specs, bypassing all the UML stuff.

    And there is the issue of Change management, Over the lifetime of a project , lot of staff changes including developers and designers, and the documentation and UML stuff starts to lag behind the current implementations. There comes a time when the UML diagrams represention is no where near the current functionality of the Code.

    Having worked on two very long maintainace projects for very rich clients , I can tell you that initial project delivery is only the tip of the ice burgh. The real deal is maintaining and upgrading the project over a long time, and sadly UML is very inadequate for that.

    From a developer's POV , who needs to work on someone else's code ,Nothing and really Nothing is as useful as proper comments in a code.

    --
    for the last time people, I am "frodo from middle eaRTH", not "middle eaST".
  7. Re:Designs cast in Stone by bluGill · · Score: 4, Insightful

    With a good UML tool it should be very easy to make changes. UML is worthless if you are not making changes to the models. Indeed if your UML is set in stone you should throw those stone tablets away.

    UML used correctly is a good tool for getting your design down. Print that design poster size and hang it on your wall so you can at a glance see the design! However from several years of using UML I have discovered that you re-print that poster at least once a week because it goes out of date that quickly, and last weeks poster is useless. (even though that change is minor you can assume your work for the week will be based on the parts you changed)

  8. Programmers don't build programs by wowbagger · · Score: 5, Insightful

    This analogy is flawed.

    Programmers are NOT to programs what builders are to buildings.

    Programmers are to programs what ARCHITECTS are to buildings.

    Builders are to buildings what COMPILERS AND MAKE UTILITIES are to programs.

    Now, I suggest that you make an architect work under the same constraints as a programmer:

    1) I cannot tell you were the house will be built, so you cannot estimate heating/cooling, snow loads, etc. Can't it figure it out itself?
    2) I cannot tell you that the house won't be moved to a completely different climate once built - can't you make it automatically adjust?
    3) I cannot tell you what building materials will be available to build the house with. Can't you make your design work just as well with wood as with adobe?
    4) I cannot tell you how many rooms will be needed. Can't the house automatically add rooms as needed?
    5) I cannot tell you what services, such as electricity, water, and gas, will be available. Can't you make the house work just as well on wind power as grid power?
    6) I can tell you that whatever I told you is subject to change without notice.
    7) Oh, by the way, now that the house is almost designed - Add a hanger. No, I will NOT tell you whether the hanger is for a Cessna 182 or a 747 - can't you make the hanger figure that out when I park the plane?
    8) Oh, the house cannot cost more than US$10,000.
    9) Oh, and the house must be build on a quarter-acre lot.
    10) Oh, and the house must be ready to move in tomorrow. Morning. Before I go to work.
    11) Oh, and the house must be built by two dain-bramaged monkeys with Nerf Tools.
    12) Did I mention being earthquake-proof?
    13) Oh, the lot is in a floodplain. Can you make it water-tight? Or float? Or both?
    14) Hey, how about a houseboat?

    1. Re:Programmers don't build programs by WayneConrad · · Score: 4, Insightful

      In other words, the problem is not having a concrete set of requirements to begin with.

      It's worse than that. The problem is that, for all but the most trivial of problems, you can't have a concrete set of requirements.

      If you could have a concrete set of requirements that would unambiguously result in code that met the customer's needs, then you could automate the process of turning the requirements into code. In other words, the requirements would be code.

      As much as management would love to be able to automate the process of turning requirments into code, they can't. Nor can they even create a process that someone can follow to turn requirements into code (if you could, you could automate following the process and not need the programmer).

      The bottom line is, you can't ever have a complete set of requirements. The best thing to do is to get over it and not work under fictional processes that assume you can ("If only we could get the requirements frozen, then we could ship on time"). Requirements change because writing code teaches the programmers and the business that the requirements were unimplementable in the time required, or that they don't actually meet the needs of the business. That's ok. It better be, because that's reality.

  9. Re:UML by a!b!c! · · Score: 5, Insightful

    The main people who use UML are Consultant Software Architects, who come into a project. Create a solution, and provide the UML framework, and collect a big fat pay check. They then move on the next project.

    Meanwhile, the programmers who are stuck with this static UML framework, while the timeline, user and system requirements are changing, are put in a precarious situation where the design just doesn't work anymore, and often the project crumbles.

    Back to the Architects, who claim there design was adequate for the problem, and they don't understand how the project failed. Must be the programmers.

  10. Re: Everything, including tools, in moderation! by mwood · · Score: 4, Insightful

    The way I read that quote, the idea is not to pick and choose the rules you like, but rather to throw out the whole thing if it is not working for you. If pounding nails in with the butt of a screwdriver is not getting the job done right, don't put a different handle on the screwdriver; get a hammer.

    I see here a reaction to something I'd noted myself: for a number of developers, OO ceases to be a tool in the toolbag and becomes their religion -- they want to evangelize all of the unconverted, and strive to see every aspect of life through the OO lens. The book I'm reading right now contains some side-splitting examples of using the OO sledgehammer to crack a programming peanut, and I'm sorry to say that in my experience this practice is not confined to tutorial material.

    There's a step that comes before "what's the best way to code this?" It's "what's the best way to *design* this?"

  11. Re:UML Modelling - Communications Gap by gbjbaanb · · Score: 4, Insightful

    don't forget that UML usage is driven mainly by:

    a) the UML tools vendors who say its the best way to produce quality in your projects
    b) the people (managers usually) who believe all the stuff a) wrote.

    Personally, after seeing UML used to get nowhere, I would always go for a lightweight development methodology (like XP which I dislike, or Crystal Clear)

  12. Don't knock mud 'till you've tried it! by Chemisor · · Score: 4, Insightful

    > You see, 20,000 years ago, our clever, but
    > inexperienced ancestors had to make new shelter
    > every few days/months/years/whatever, simply
    > because they made them from mud.

    Buildings made of mud (in adobe brick or rammed earth construction, as it is called these days) are much sturdier than the frame matchbox you are living in. In fact, rammed earth walls are so durable that some of them are still standing after 5000 years of rain/wind/hail etc. And they are more energy efficient too.

  13. Re: Everything, including tools, in moderation! by Salamander · · Score: 4, Insightful
    When the design finally fails because you were missing something, the egotistical designer then blames the method.

    ...and when the method fails the snake-oil salesmen blame the implementation of that method. UML bigots are exactly like Extreme Programming bigots; they believe the tool is a panacea, so any failure when using it must be the result of not using it properly. It's a great way to count all the hits and ignore all the misses, and for people who couldn't make a buck by selling drawing programs as drawing programs to make a buck by selling them as something much grander.

    --
    Slashdot - News for Herds. Stuff that Splatters.
  14. Re:Software architect? by Kevin+Stevens · · Score: 4, Insightful

    I often hear building type analogies like this, and IMHO always focus on the wrong aspects of software and architecture.

    The reason most software is late, over budget, and buggy is because the specs are not what the customer wants. Customers understand that when they are buildng a house, that the blueprints are of utmost importance, and that the blueprints are going to reflect the house that they are going to build, and go to great lengths to visualize the house depicted in the blueprints. They also have an understanding of building concepts, and know that they can not wait until the bathroom is finished, and then say "hey, I want the tub over on the other side of the room" without understanding that the bathroom will essentially have to be gutted. These same people will have no problem demanding significant overhauls of the layout of a gui or the basic fundamental requirements of the software. From my experience, customers will often blow right through a spec document, browsing it, and saying OK looks great! What is worse is, the more detailed (hence boring) the spec is, the less likely the customer is to really look at it. Begging, pleading, blackmailing, and torturing customers to read the specs is rarely effective, the best solution IMHO is the XP method of letting the customers see things as early as possible.

    This leads to another problem- software growing in scope and function well beyond its original intentions. People inherently understand that you can not take a basic mudhut or woodframe house and just keep adding to it indefinitely and still have a coherent structure- there is only so much the foundation can support, and only so much you can do to a house before you have to major extensive rennovations. The same thing occurs with software. Customers often say, "we like this, but we would really like this feature," and management will almost always cave in and say sure! Next thing you know, the system has a large patchwork of add-ons that sometimes have to be hacked in and make the code difficult to maintain, and make it even more rigid. People dont take trailers or sheds and try to make them into colonial two story homes, but they will often try to take simple reporting tools and make them into comprehensive organization wide information dashboards, one report or feature at a time.

    Design Patterns and frameworks try to attack the problem by telling us how to build even sheds with concrete and steel foundations, and modularized/interchangable parts so that further additions do not cause too many problems, which is a good thing. But until there is a universal general understanding of the software development process by the customers, these problems will persist in software, and the industry itself.