Slashdot Mirror


How Do OOP Programmers Flowchart?

Lew Pitcher queries: "I recently attended a presentation of a code documentation tool that, among other things, produced a flowchart of the analyzed code. The vendor sells this one product for analyzing both mainframe code (COBOL, 390 Assembler, PL1, etc.) and 'distributed' code (C#, Java, C++, Smalltalk, etc). I haven't kept up with the 'modern' techniques (I prefer Nassi-Shneiderman charts, but I still have my flowcharting template), and wondered if modern 'OOP' programmers use flowcharts. If they don't, what is the preferred technique for diagramming an OOP program?"

134 comments

  1. Legos by Anonymous Coward · · Score: 5, Funny

    I build my objects out of legos.

    1. Re:Legos by Frequency+Domain · · Score: 1
      I build my objects out of legos.
      Laugh-a while you can, monkey boy!
  2. In uml by sporty · · Score: 4, Informative

    In uml, with activity diagrams, and class diagrams.

    --

    -
    ping -f 255.255.255.255 # if only

    1. Re:In uml by Rick+the+Red · · Score: 1

      What softwear, preferably Free/Open, would you recommend for this?

      --
      If all this should have a reason, we would be the last to know.
    2. Re:In uml by sporty · · Score: 1

      http://gentleware.com/ has a software called poseidon.

      It's a good tool, not suber uper, the best, but it's pretty neat.

      -s

      --

      -
      ping -f 255.255.255.255 # if only

    3. Re:In uml by Rick+the+Red · · Score: 1

      Thanks. The "community edition" is free, not Free or Open, but I'll give it a try. Looks like a good tool for learning, at least.

      --
      If all this should have a reason, we would be the last to know.
    4. Re:In uml by mlc · · Score: 1

      You can use dia for all kinds of things.

    5. Re:In uml by Anonymous+Brave+Guy · · Score: 1

      I downloaded the month-long free trial version of Pacestar UML Diagrammer at work recently. I only used it for class diagrams, although it obviously does many other types as well, but it produced nice output and was very ease to use. I'd certainly recommend giving it a try.

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    6. Re:In uml by Brandybuck · · Score: 1

      There are two kinds of tools. One is a drawing tool. Great for diagrams you have to drop into documentation. dia is a great example of this. The other kind generates the code for you, but the diagramming is more primitive. Umbrello and Argo are examples of this.

      I personally hate things that try to generate code for me, so I prefer the former style of tool.

      --
      Don't blame me, I didn't vote for either of them!
    7. Re:In uml by sporty · · Score: 1

      ... is free, not Free ...

      ?? it is free.. they say so. No. It's not open.

      --

      -
      ping -f 255.255.255.255 # if only

    8. Re:In uml by Rick+the+Red · · Score: 1

      It's free, as in beer, not Free, as in Libre. Nor is it Open, as you observe. In other words, the features they've crippled in the free version can't be fixed, because it's not Free.

      --
      If all this should have a reason, we would be the last to know.
    9. Re:In uml by ksheff · · Score: 1

      There are some code generators or sql table generators for dia, but since it was originally made to be a diagramming tool, I'm not sure how good these add-ons are.

      --
      the good ground has been paved over by suicidal maniacs
    10. Re:In uml by sporty · · Score: 1

      Last time i went to the store, beer was most certainly not free. The binary is free, not the source. Now you are mincing words. Are you trying to sell me something?

      --

      -
      ping -f 255.255.255.255 # if only

    11. Re:In uml by EsbenMoseHansen · · Score: 1

      The only opensource (GPL) UML modeller I'm aware off is Umbrello, from the KDE suite. But it needs some more work before it is really useful, IMHO. But do check it out; I use it for class diagrams, and have submitted 2 patches so far. If everyone does that... what am I saying?

      --
      Religion is regarded by the common people as true, by the wise as false, and by rulers as useful.
    12. Re:In uml by cratermoon · · Score: 1

      ArgoUML is the tool you want. BSD License.

    13. Re:In uml by Rick+the+Red · · Score: 1

      Wow, thanks. This could be just what I'm looking for!

      --
      If all this should have a reason, we would be the last to know.
    14. Re:In uml by cratermoon · · Score: 1

      You're welcome. Let me know how it works out.

  3. If you've got any sense you don't use flowcharts by WolfWithoutAClause · · Score: 4, Informative
    The nearest thing to flowcharts that are used in OO are:
    • state diagrams
    • message sequence charts
    Neither are flowcharts, and if you try to use them as flowcharts (which I have seen done :-( ), bad things (tm) happen to your design. (States on state diagrams are states that parts of the system are supposed to be in for extended periods- message sequence charts are different because the flow is usually multitasking/parallel processing).

    Personally, if I see somebody drawing a flowchart, I know they aren't currently up to scratch (which doesn't mean that they can't get better).

    Actually, flowcharts are good for telling users what to do, and for similar reasons, might be appropriate for designing test scripts. But for the system- nope.

    --

    -WolfWithoutAClause

    "Gravity is only a theory, not a fact!"
  4. UML Sequence diagrams by cogpp · · Score: 4, Informative

    UML sequnce diagrams can be pretty useful to show these things. Especialy if you have asyncronus events, or multiple threads or processes, which ordinary flow charts dont model very well. PDF on sequnce diagrams.

  5. Nobody uses flowcharts any more by Cthefuture · · Score: 0, Flamebait

    Flowcharts are a throwback to when computer programming was considered the same as other disciplines like mathematics or engineering.

    As we know now, computer programming is something else. It's a combination of stuff and software is almost a living entity that is always changing.

    The only people I see using flowcharts are engineers that think they can program or old farts who refuse to accept new ideas.

    --
    The ratio of people to cake is too big
    1. Re:Nobody uses flowcharts any more by abrotman · · Score: 3, Informative

      You dont use them because you're a programmer. There's a big difference between a software programmer and a software engineer.

      Please try going to IBM/HP/Oracle and tell them to implement you a 10 million dollar software solution but tell them you don't want them to spend time doing any actual planning. You'd just like them to start coding immediately.

      Every large project should use some sort of diagramming/planning. Can you get away with no flow-chart for a website or maybe even a 100,000 line program .. sure. Try something 10-100 times larger. While you're at it .. don't bother commenting your code either.

      Programming/Developing/Engineering is still a science. There is a certain inherent "art" which makes some people better than others. But it is still a science.

    2. Re:Nobody uses flowcharts any more by Cthefuture · · Score: 1

      Whoa, hold on there bud.

      I didn't say anything about designing, planning, or whatnot. I specifically said FLOWCHARTS .

      Note that a flowchart is not a design.

      --
      The ratio of people to cake is too big
    3. Re:Nobody uses flowcharts any more by Anonymous Coward · · Score: 0

      Engineering is not science. Where did you get that idea?

    4. Re:Nobody uses flowcharts any more by Twylite · · Score: 3, Insightful

      You're probably a troll, but I'll bite.

      Flowcharts are an incredibly useful tool, but as with all tools the trick is not knowing how to use them, but when to use them.

      There are at least two core areas where flowcharts are still pertinent in modern development:

      1. Modeling user interaction.
        UML does not offer an adequate solution for modeling user interaction. A Use Case gives a high level name to interaction, and can be described, but often the description is inadequate to satisfy the user's requirements. Sequence and collaboration diagrams present the message flow between objects, but do not succinctly present the user experience.
        In the analysis phase, understanding the user expierience is vital. Developers and non-technical customers can easily understand Use Case diagrams (what you can do with the system) and flowcharts of interaction explaining the Use Cases (how you do it).
      2. Modeling atomic processes or algorithms.
        Under the hood, every OO language has a core that provides for sequential execution of instructions with branching and looping. A flowchart can graphically clarify a complex process or algorithm that cannot be further reduced into objects (at best it may be functionally decomposed), and would be poorly described by pseudocode.

      Web interfaces and embedded systems are examples of other areas where flowcharting can be invaluable.

      In the case of user interaction (the more common use of flowcharts Information Systems) a developer will seldom see or directly use the flowchart. Instead the interaction described by the flowchart will be translated by a designed into class, sequence and collaboration diagrams that describe the implementation of the operation the user is trying to achieve.

      --
      i-name =twylite [http://public.xdi.org/=twylite], see idcommons.net
    5. Re:Nobody uses flowcharts any more by Anonymous Coward · · Score: 0

      wheres the flowchart for the 2+ million lines of code in the linux kernel?

      eh? wat u got to say now dumbass?

    6. Re:Nobody uses flowcharts any more by Anonymous Coward · · Score: 0

      please mod this UP

    7. Re:Nobody uses flowcharts any more by Mr.+Slippery · · Score: 3, Insightful
      Every large project should use some sort of diagramming/planning.

      Planning, of course; diagramming, not so much. Design should be done primarily using English (or your local language) text, supplimented with diagrams.

      Software is a linguistic construction; blueprints or schematic diagrams are not as useful as they are in electronics or building construction. The fetish for diagrams over text usually indicates someone who can't write decent prose. And if you can't write decent prose well, you can't write decent code. (Besides a mathematical inclination, an exceptionally good mastery of one's native tongue is the most vital asset of a competent programmer. -- Dijkstra)

      --
      Tom Swiss | the infamous tms | my blog
      You cannot wash away blood with blood
    8. Re:Nobody uses flowcharts any more by Anonymous Coward · · Score: 0

      In a filing cabinet somewhere in Utah?

    9. Re:Nobody uses flowcharts any more by JimMcCusker · · Score: 1

      Sorry, but flowcharting isn't used in interaction design. Part of this is because so little of user interaction is garden-pathed anymore (at least the stuff done properly) that traditional flowcharting isn't appropriate. I refer you to Garrett IA, which is much more appropriate.

    10. Re:Nobody uses flowcharts any more by halosfan · · Score: 1

      While I am not necessarily disagreeing with you, a couple points come to mind...

      Please try going to IBM/HP/Oracle and tell them to implement you a 10 million dollar software solution but tell them you don't want them to spend time doing any actual planning. You'd just like them to start coding immediately.

      IBM/HP/Oracle, as every big company, tend to have many clueless managers who need to attend meetings with other clueless managers. I am not necessarily saying that all diagrams are created solely for the sake of dumb managers looking smart in their meetings, but a lot of them are.

      Another point, I am wondering how many diagramming is done in large distributed open-source projects? Do Linux/BSD/Postgres/whatever developers often exhange diagrams? Or does plain English suffice for them? Not being a developer on any of these projects, I don't know, but I would think that there is a lot less diagramming going on than there is in a big fat corporation, yet the results are often comparable, especially considering the difference in manpower. Would be interesting to hear from somebody with a first-hand knowledge...

      --
      My only problem with Microsoft is the severity of bugs in their software.
    11. Re:Nobody uses flowcharts any more by angel'o'sphere · · Score: 1


      I didn't say anything about designing, planning, or whatnot. I specifically said FLOWCHARTS .

      Note that a flowchart is not a design.


      OOPS, ok, I got it. You don't use flowcharts. But you do design? So what do you use for analysis then? No flwo charts right? So what is left? Text only?

      Software comes from:
      analysis: WHAT do we want
      design: HOW do we do it
      implementation: SO it will work
      test: DOES it WHAT it was intended for in a way HOW it was intended?

      I think diagrams might indeed help there :D

      angel'o'sphere

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    12. Re:Nobody uses flowcharts any more by angel'o'sphere · · Score: 1

      The human mind is a image processor.

      You will understand a diagram easyly 100 times faster than the equivalent two pages of text description.

      Why do you think street signs are "symbols" and not just white boards with some text on it?

      For two pages english text you need at least 4 minutes to read it.

      Ever read the famous GOF book? Any idea what a design pattern is? Just open the book and read one chapter .... its about 10 pages per design pattern. The equivalent UML diagram is most of the time a quarter of a page.

      And if you can't write decent prose well, you can't write decent code. Well, saying that on /. :D

      I would like to turn that around: if you can not draw a diagram of what you want to code, you can not think. If you can not think you can't code either. I would not want your code then.

      angel'o'sphere

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    13. Re:Nobody uses flowcharts any more by Cthefuture · · Score: 1

      Note that all diagrams are not flowcharts.

      English is usually what I use by the way.

      --
      The ratio of people to cake is too big
    14. Re:Nobody uses flowcharts any more by Twylite · · Score: 1

      Thanks for the information -- I wasn't aware of Garrett's work before, and his vocabulary is rather interesting.

      That said, I have to make several counter-points:

      • First up, I never said "traditional flowcharting". If you ask Google for a definition or check the Wikipedia you will find that a flowchart is a concept indicating a graphical representation of a sequence of operations in a process.
      • Garrett's vocabulary includes a number of notations to contextualise a process, but the process itself is depicted graphically using blocks and arrows/connectors, with specific notation for choice points. At its core, this is pretty clearly a flowchart notation.
      • One issue I have with Garrett's vocabulary is that labelling (of connectors) appears to be discouraged.
        Connectors and arrows can also be labeled, but the use of these should be limited to cases in which the action taken by the user needs to be clarified
        This, IMHO, makes the diagram less readable; it is necessary to inspect all navigable blocks to determine what actions the user has available. There also an assumption made that the action required to navigate to a particular block is obvious from the description of the block -- this is not always true.
      • The lack of labels weakens the notation. State Diagrams (Finite and Nondeterministic) use a concept of states and transitions. When labels (transitions) are removed it is necessary for states to assume a dual role -- a state can be a transition ("You clicked 'Help' so go this way"), a state ("You are now in 'Help' mode"), or both ("This is 'Help' mode so you must have clicked 'Help'").
        Garrett's Figure 10 illustrates this uncertainty. Looking at this figure in the context of web pages (the intended use of Garrett's vocabulary) it would be reasonable to assume that an error during login will take you to an error page, whereas success will take you to the member home. Now consider the following scenarios:
        A. There is no error page; you are returned to the login page with an error message. This vocabulary cannot describe that situation without using labels.
        B. There is a Help page after the decision point. How does the developer know when to display the Help page instead of the Error page?
        Reflecting on this we find that labels are vital in many places to avoid assumptions and/or to clarify (as permitted by Garrett). We then have an inconsistency in notation -- sometimes the navigation must be assumed from the target block, and sometimes it is explicit in the label.
      • Finally we have to acknowledge that flowcharting in any form (even if you don't want to call it flowcharting) is a form of communication. The purpose of this communication in software development is to precisely describe a process so that it may be agreed upon and understood by various role-players, including the end-user, customer, architectect, designer and developer.
        The need is thus for the communication to be simple, obvious and deterministic. It has to be understandable to a wide audience including non-technical personnel, and must not leave any ambiguity or room for interpretation by the implementor.
        Having spoken to a few friends and colleagues, I am not convinced that Garrett's vocabulary is sufficiently understandable to non-technical personnel, not that it is unambiguious in its description of a process. It does however provide context (which is missing from many other notations) and various aspects of it make it more suited to the web environment (which is of course its target environment) than other notations. But I wouldn't use this vocabulary for any other form of user interface.
      --
      i-name =twylite [http://public.xdi.org/=twylite], see idcommons.net
    15. Re:Nobody uses flowcharts any more by JimMcCusker · · Score: 1

      Actually, one problem that I have with Garrett's system is that it's so stateful (modal). I try to avoid modes in my software as much as I can, which makes Garrett's system (which was designed for web pages) of limited usefulness to me as a Swing developer. So I instead tend to create really rough mockups as a first step towards a UI.

      Also, the problem that I have with flowcharts is the idea that it is a sequence of events. Garrett makes no claims about there being any sequence, only relations, links and similar structure. To me a flowchart denotes progression, but if what you're writing is an event-driven tool, then there is minimal progression - the user is the one who supplies the progress.

  6. UML State (or Activity) Diagrams by sl956 · · Score: 2, Informative
    If they don't, what is the preferred technique for diagramming an OOP program?
    Most of us probably use UML State (or Activity) Diagrams.

    UML State Diagrams come from David Harel's work on Statecharts. Statecharts constitute a broad and popular extension of finite state diagrams
    While there are some differences between original statecharts and UML state diagram, the best introduction remains imho David Harel's paper : Statecharts: A Visual Formalism for Complex Systems (Science of Computer Programming 8-3, 1987). It is available onlline here on David's home page.
    You can also rely on any good book about the UML (i recommend Addison-Wesley Object Technology Series).
    1. Re:UML State (or Activity) Diagrams by LauraW · · Score: 1
      You can also rely on any good book about the UML (i recommend Addison-Wesley Object Technology Series).

      My favorite is UML Distilled by Martin Fowler. It tells you what all the symbols and diagrams mean, without getting bogged down in lots of methodology that most people don't care about. If you're just going to use UML as a standard way of drawing design diagrams, you don't really need a 2" thick book on it.

  7. Never used them by Scarblac · · Score: 5, Insightful

    I've been programming for 19 years now; started my CS study 12 years ago; programming professionally for a few years. I used Java, and fast development languages like Python. I've never seen a flow chart in practice, let alone used one. So it's a bit hard to say.

    Somehow flow charts seem fit only for relatively short programs, that have a clear flow from A to B. My programs are web apps that constantly react to requests from web forms that are sent in, supported by a bunch of scripts running from cron to periodically update database stuff. Program-wide, there is no single flow.

    On the method-level (or the Action level, I build a large J2EE app with Struts), we could use flow charts I suppose. But they look pretty cumbersome; mostly I just write out what the method is going to do in a comment in English and/or pseudocode, and from that I write down the code.

    What each action is supposed to do, and what each method of an object is supposed to do, that is (should be) designed beforehand. There you get tools like UML, if you want to use something like that. What we design is the data objects, and the interface they should expose, and so on.

    How those methods do their work is decided at coding time, and is the only place where traditional flow charts seem applicable.

    Just some thoughts, I don't know if I'm making sense, since mostly I get very little time for any design at all, in reality...

    --
    I believe posters are recognized by their sig. So I made one.
    1. Re:Never used them by ClosedSource · · Score: 1

      At first I was surprised that with 19 years of experience you had never seen a flowchart in practice, then I read your post again and saw "programming professionally for a few years" . That explains it.

      10 or 20 years from now programmers may be saying "UML, nobody but old farts use that anymore". And so it goes.

    2. Re:Never used them by arkanes · · Score: 1

      I've seen a tool that produces flowcharts from individual functions in a variety of languages. Now, as a modelling tool it's pretty useless, but as an aid to documentation and as a debugging tool it was great. Note that it doesn't REPLACE english language docs, but a quick graphical overview of a complicated function made it alot easier to get up to speed on someone elses code.

  8. It's pretty straightforward... by stienman · · Score: 2, Interesting

    OO programming can be procedural, and follow a normal flow chart. All OO does is make it easy to create data structures with built in rules/procedures on how to perform various operations on them (such as addition on strings). It's just as simple flowcharting an OO program as any other procedural language.

    Event triggered programs can be a little different, but each event is simply a string of operations - a procedure which is easy to flow chart. You simply have lots of little flowcharts instead of one large one.

    OO does have data structures which are handy to document in a visual way. These would not be flowcharts, but they may include flowcharts to properly document the methods/functions/operations effective on the data. The documentation of the data itself would not be flow chartable - this is where UML is handy.

    Since a program is a sequence of instructions with loops and conditional operators, whether it's procedural or event triggerred, it's fairly strightforward to flow chart it. The mere definition of a program also defines a flow chart. It's going to be awhile before we get reasonable processors which perform work without following a logical sequence of steps - mainly because it's hard for us humans to understand how something can be done in a way that we can't easily visualize or do ourselves. The real machine intelligence won't happen because machines will be smarter at doing the things we do, it's because they will do things we can't do.

    -Adam

  9. Here's the new "modern technique" by illuminatedwax · · Score: 5, Funny
    Here's the new "modern technique"... pay attention, it gets complicated!
    .______________.
    | o o o o o o o|
    | Outsource to |
    | o .India. o o|
    |______________|
    o o o o|o o o o
    o o o .V. o o o
    o o o END o o o

    --Stephen

    --
    Did you ever notice that *nix doesn't even cover Linux?
  10. as already mentioned by others by jeffy124 · · Score: 3, Informative

    The Unified Modeling Language.

    Start Here, then try google for more introductory articles that are out there.

    If you want books on the topic, I recommend UML Distilled by Martin Fowler for a quick intro, then branch out from there. (There's hte Object Technology series from Addison-Wesley, which are usually very good, but they're not the only UML books out there) I also recommend you download a UML tool (there are a bunch out there - free as in beer, Open Source, or try a commercial trial version)

    As for flowcharting, there are several model types in UML to handle it. Activity diagrams come immediately to mind (these are very close to the classic flowcharting techniques), but state charts and sequence diagrams are useful also to supplement an activity chart. Also look into the structural models - class diagrams, deployment charts, etc. when assembling/designing your program.

    UML is language independent - meaning it's not explicitly tied down to one specific language. Although, it is useful to keep in mind what language you plan on using when authoring in UML.

    --
    The One Rule Of Chess You'll Ever Need: Don't play someone who carries a kit in their bookbag.
  11. the flowchart lie by RodeoBoy · · Score: 0, Troll
  12. OOP coders don't flowchart by aminorex · · Score: 1

    because OOPrograms don't have flow control.
    The flow just sort of hops around with no
    real relationship between what is written in
    the code and the flow of control. You see
    one of the great advantages of OO'ation is
    that code no longer corresponds to flow of
    control. This is usually called dynamism
    or genericity, but you may also know it as
    job security.

    --
    -I like my women like I like my tea: green-
    1. Re:OOP coders don't flowchart by rmohr02 · · Score: 4, Funny

      Thanks
      for
      adding
      your
      own
      newlines
      it
      make s
      things
      so
      much
      easier
      to
      read.

    2. Re:OOP coders don't flowchart by Anonymous Coward · · Score: 0

      A
      s

      D
      o
      e
      s

      Y
      o
      u
      r
      s

  13. KISS by Salamander · · Score: 2, Interesting

    I've tried a lot of the fancy UML tools, but they're really not any better than a very simple drawing program. The purpose of a diagram is to convey information. For that purpose simpler is usually better, and a diagram that uses too many specialized symbols to denote subtle nuances is not simple; that stuff should be described in the text. Maybe a case can be made for the extra symbology in a class diagram, but not in a flowchart or timeline. If your flowchart has more than about twenty items, or more than four types of items, or can't be drawn without crossing lines, it needs to be broken apart into a top-level flow and separate diagrams for secondary flows. Any simple box-and-line drawing program should be able to handle that, though a little bit of intelligence in routing lines doesn't hurt. Focus on the information, not the tools.

    --
    Slashdot - News for Herds. Stuff that Splatters.
    1. Re:KISS by angel'o'sphere · · Score: 2, Interesting

      Hm,

      A UML tool can do two things a simple diagramming tool can't:
      * generate source code
      * reverse engineer source code

      As a standard compliant CASE system usually supports XMI export (a defined XML standard) you are free to transform the XMI with XSLT into any form of code.

      Furthermore: how much time do you spend analizing? How much time designing? How much time coding?

      You sound as if you would analyze/design one week and code after that 6 weeks. So you spend in total 7 weeks.

      I prefer to analyze one week and to design one week and to generate 80% of the source code then and to code a further week. With an aditional 3 days of testing I made a 24 days sprint where you made a ~49 days coding marathon.

      Productivity with the right tool is so much higher :D and the long term benefit of a well done design is priceless.

      My current project is done by a team of 6 coders. We made during one year about 1600 classes, including JUnit tests. We did it the traditional way: Use Cases, Scenarios, acivity diagrams and some rare sequence diagrams. From that informatin gatehred we generated teh raw classes and filled in the required code.

      If we had not done that we had up to today probably 300 to 500 classes finsihed. Far from a successfull project.

      angel'o'sphere

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    2. Re:KISS by Salamander · · Score: 2, Insightful
      A UML tool can do two things a simple diagramming tool can't: * generate source code * reverse engineer source code

      The poster wasn't asking about source-code generators. He was asking about diagrams. In terms of diagrams the UML-oriented tools are no better than simple alternatives, even if they offer other features as well. Is a text editor no good just because it's not a full-blown IDE? Not if you just want to edit text.

      Furthermore: how much time do you spend analizing? How much time designing? How much time coding? You sound as if you would analyze/design one week and code after that 6 weeks. So you spend in total 7 weeks.

      You have absolutely no basis for that self-serving assumption. FYI, I'm the chief software architect at my company, with technical oversight for the work of 30-some engineers, and that work seems to be going rather well. Don't expect me to be intimidated by your empty claims.

      With an aditional 3 days of testing I made a 24 days sprint where you made a ~49 days coding marathon.

      I haven't had to do a 24-day "sprint" for years. Anybody who does screwed up earlier in the process. Of course you push UML tools because you have a business interest in doing so; maybe you should have skipped that dozenth UML class and taken an ethics class instead.

      --
      Slashdot - News for Herds. Stuff that Splatters.
    3. Re:KISS by angel'o'sphere · · Score: 1


      Of course you push UML tools because you have a business interest in doing so; maybe you should have skipped that dozenth UML class and taken an ethics class instead.

      Probably you should have taken an ethics class?
      I have no interest in pushing UML tools, I'm not in an UML tool company. I'm an OO consultant, focusing on software processes, teaching to use the right tool for the job. If you process level is so "low" that UML -- not even talking about an UML tool -- is out of scope for you ... then we simply speak different languages here.

      If you dont know what a sprint is and why 24 days is perfectly appropriated for doing a sprint, probably you should get some education first(rather than insulting me).

      If you don't know the golden rule: 30% analysis, 30% design, 30% coding, 10% terst ... you likely have the wrong job anyway. Be glad to have it and be glad that no one like me is showing you how to increase productivity by 50% or 200% ... depending how low you are.
      Sorry, but I'm slightly pissed to get insulted like you did for nothing.


      In terms of diagrams the UML-oriented tools are no better than simple alternatives,


      Wrong.

      Either you can generate code or you can't. A simple tool can't, so you miss 80% of the productivity I have if I follow the 30/30/30/10 rule as the first 60% of your work yield nothing besides graphics.

      A simple UML tool can use at least class and sequence diagramms to generate code. A good tool can also generate code from activity and state diagrams and a very good tool can even do that from use case diagrams.

      A perfect tool is able to generate 90% of your application code in 10% of the time -- or less -- than you need with your "drawing" tools.

      I don't blame you for taking an opposite position, but I blame you for:
      a) not knowing that I'm right ( claiming to be a chief engineer ...)
      b) for insulting me to follow my 'business interests' rather than my ethics

      angel'o'sphere

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    4. Re:KISS by Salamander · · Score: 1
      I have no interest in pushing UML tools...I'm an OO consultant

      Those two statements are inconsistent.

      teaching to use the right tool for the job.

      Obviously not.

      If you process level is so "low" that UML -- not even talking about an UML tool -- is out of scope for you ... then we simply speak different languages here.

      Ahhh, another gratuitous insult. You're the one who started with the condescending attitude, buddy. Don't whine when it rebounds on you. Our process level is doing just fine, and you have NO EVIDENCE that you could improve our productivity one iota. Any so-called "mentor" or consultant who came across as such an arrogant prick would get shown the door pretty quickly in any real-world business environment, and you'd know that if you really had any of the experience you claim.

      Once again, this was about diagramming/flowcharting tools, not code generation. What part of "in terms of diagramming" are you having trouble with? Do you speak English? Do you understand the concept of a qualifying phrase?

      --
      Slashdot - News for Herds. Stuff that Splatters.
    5. Re:KISS by angel'o'sphere · · Score: 1

      Well, you started to take my post out of context.
      You said diagrams are enough ... UML tools are not needed. I said UML tools give you more than just diagrams ... you continued claiming that I need to say that out of business inerests :D .... I could continue, but the posts are easy to follow for everyone.

      Sorry that I'm arrogant. I know that. And I don't need a job ... my customers stand at my door and want me :D

      Why, you ask? Because I gave all my customers an independent objective councel. I refuse at least 3 times a month a job because I can tell my customer: sorry for that I not suited. And guess what? The same customer askes me again about something different some weeks later ... because they honour that.

      BTW: why should I give you any evidence that I can improve your efficency? I'm not looking for a job, and you gave no evidence that I can't either .. so we are on pair here I guess :D

      angel'o'sphere

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    6. Re:KISS by Anonymous Coward · · Score: 0

      >Furthermore: how much time do you spend analizing?

      I'm guessing this was a freudian typo... unless you really meant "making [the program] more anal," the word you were looking for is analyzing.

  14. Legos are for start-ups. Duplos are the future!!! by Tactical+Skyrider · · Score: 1, Funny

    Legos?!?

    HAH!

    Your Legos are FAR inferior to my Duplos! *cough*ASP.NET*cough*

    --
    In Soviet Redmond, software programs you!
  15. Java by Bluelive · · Score: 1

    For me at least the code is so much more abstract and readable then it used to be in the old days, that it doesnt really need information outside of the code to understand its functioning, it still needs documentating ofcourse :) Designing is another story, but a would never use a flowchart for that because it would never fit in one.

  16. Re:If you've got any sense you don't use flowchart by laughing_badger · · Score: 3, Interesting
    Personally, if I see somebody drawing a flowchart, I know they aren't currently up to scratch (which doesn't mean that they can't get better).

    [Looks up from flowchart] None taken...


    Actually, flowcharts are good for telling users what to do, and for similar reasons, might be appropriate for designing test scripts. But for the system- nope.


    This depends strongly on the system.

    For a system that takes in data, performs computations, and spits out answers, a structured design using flowcharts is often appropriate.

    That said, implementing part of that design using OO code can be useful. For example, using C++ with a matrix class to do geometry based processing. The actual process may best be described as a flowchart though.

    OOA/OOD/OOP are not the silver bullets. I've seen a major revision of a large commercial computational program wither on the vine due to misunderstanding how to best apply object based thinking. 'Everywhere' is not the right answer.

    --
    Help children born unable to swallow - www.tofs.org.uk
  17. UML for flow charts? by Anonymous Coward · · Score: 0

    The UML (unified modelling language) is the general diagramming technique for OO developers. It has no construct explicitly intended to model the code inside a programm, although you could (ab)use activity diagrams and/or state diagrams for this, which was mentioned already.

    It is expected (although not always followed) that OO programs are segmented into much smaller pieces than classic COBOL monoliths, so the need for a flow chart kind of diagram is less obvious.

    A sequence diagram (also mentioned in earlier posts) is not suitable as a flow chart replacement, because it is (by definition) sequential, depicts just one scenario and does not support branches and loops very well (except through non-standard annotations). It can be used to model a scenario for the interaction between pieces of the program however. The same applies to the UML collaboration diagram.

    A state diagram might be used to model the possible states of an object (or an interface) and the possible transitions between them. This is not an "inside view" of the code, however, but rather a model of an object's or an interface's behaviour from the outside perspective.

  18. Re: How Do OOP Programmers Flowchart? by manavendra · · Score: 3, Informative
    OO programming defines and to some extent mandates more concrete and phased flow-control diagrams than a regular flowchart.

    In typical structured programming, there is more emphasis on control flow. Furthermore, for any modestly sized software, you will need flowcharts withy varying detail - those depicting the overall flow, flow for a particular user, flow within a particular module, and so on. This essentially leaves the decision of detail to each organization and/or author, and we can thus argue this approach introduces a certain vague-ness.

    OOP, on the other hand, provides more detailed and clearer demarcation for each of these entities.

    • Use Cases - model the functionality of system and the path of interaction of different users with it.
    • Activity Diagrams - depict the dynamism of the system and model the control flow from activity to activity. You can use these to model workflow and business processes.
    • Statechart Diagrams - depicts the dynamic response of the system in response to external stimuli.
    • Sequence Diagram - describes the interactions between different components (classes) in terms of message/data exchange over time.
    • Class Diagram - some call it the backbone of OOP. These diagram depict the various entities in your system and the relationships/associations among them.
    • Object Diagram - describe the snapshot of entities in the system at a given time. You can use these to examine the overall system state at any time, and verify your class diagram
    • Package Diagram - More useful for teams/people responsible for managing deployment and building the system, package diagrams describe the grouping and packaging of your classes.
    • Deployment Diagram - depicts the physical resources in the system and how they are deployed (locally, remotely, whether as nodes, connections, etc.)
    --
    http://efil.blogspot.com/
  19. Modern techniques by Blnky · · Score: 1

    Judging by what I see in the code at my work place, flowcharts are in the same realm as internal documentation. In other words, not used at all. To code in the modern environment, you just write obtuse poorly designed code and rely on the statement "code should be self documenting". This doesn't mean your code actually has to be self documenting. You just give that excuse whever anyone mentions actually expending effort to produce inline documentation. I suppose the parallel statement for you would be "code describes its own flow" instead of actually putting down an analysis of what leads to what. In emergencies you can always provide the equivalent of the occasional comment for one hundered lines of code: Start->GetData->ProduceData->End.

    Welcome to modern programming. Good luck.

    1. Re:Modern techniques by hInstance · · Score: 1

      Exactly! The bulk of the work of modern software development is carried out by QA testers. ;)

      "Umm... we'll take care of that in post-production."

  20. Ha Ha Ha by Euphonious+Coward · · Score: 1
    There is a U.S. "ANSI" (now "NCITS", I think) official standard for defining flowchart formats. ANSI standards come up for review and revision, or retirement. every five years.

    Each time the flowcharting standard comes up, there is some discussion about whether to retire it. They always decide not to, because there are many contracts that specify a flowchart, and would have to be renegotiated if there were no such standard. The most reasonable change, were it to be changed, would be to allow a single blank sheet to qualify as describing any program.

    Most contractors nowadays run a program over the completed source code, and produce a several-inch-thick line-printer listing. It gets stuck in a warehouse with all the other ones, stored for N decades, and then shredded on schedule, all at government expense.

  21. Re:If you've got any sense you don't use flowchart by sartin · · Score: 4, Informative
    For a system that takes in data, performs computations, and spits out answers, a structured design using flowcharts is often appropriate

    This goal is often achieved with a Data Flow Diagram which many people mistake for a flow chart. Structured analysis/design techniques from the 1970s and 1980s developed the DFD concept as part of the problem analysis phase. Search for the likes of Coad, Yourdon, DeMarco, Gane and Sarson. Some of these names are still familiar in the OO design world. The key differences between a DFD and a flow chart are:

    • DFD does not imply sequencing of operations. Processes in a DFD can run in parallel.
    • Definition of the data stores. A DFD typically includes definitions of the data stores and not simply the steps that will be taken to process the data.

    In the 1980s, lots of people tried to slap object-oriented deisgn onto structured analysis using various techniques (like making the processes or data stores the objects). It didn't work out so well. Eventually, we got to UML from there after 10-15 years of haggling and stumbling; some argue that it still isn't working out so well.

  22. Re:If you've got any sense you don't use flowchart by WolfWithoutAClause · · Score: 1
    Well, I kind of think of it as a 'goto considered harmful' sort of deal. There's probably situations where a flowchart is exactly the right diagrammatic tool to use for the task in hand; in which case you still shouldn't use it because everyone will laugh at you :-)

    Actually, in situations like you are describing pseudocode is good.

    I've seen a major revision of a large commercial computational program wither on the vine due to misunderstanding how to best apply object based thinking.

    Lots of people don't seem to be able to hack it for some reason- with OO systems (and non OO too), knowing what makes a good object/structure is an art.

    --

    -WolfWithoutAClause

    "Gravity is only a theory, not a fact!"
  23. Re:If you've got any sense you don't use flowchart by Glog · · Score: 1

    This is not entirely correct - there ARE, in fact, flowcharts in OOP. Besides the Rational model IS extensible so you can create your own diagram types. It depends on the vendor that supplied your modeling tool - some vendors don't offer the flowcharting diagrams. I am not saying that flowcharts should be used for modeling designs. But they are very useful when you are doing presentations in front of customers.

  24. Consistency is OO's biggest buggaboo by Anonymous Coward · · Score: 0

    OO programming can be procedural, and follow a normal flow chart. All OO does is make it easy to create data structures with built in rules/procedures on how to perform various operations on them (such as addition on strings).

    Other OO proponents will describe OO differently. The biggest problem with OO, and this leaks into UML also, is that there is generally very little consistency from one practitioner to another. OO is just plain wishy-washy. I find procedural and RDBMS more consistent overall. Even bad procedural tends to fit certain patterns. However, bad OO can look very different between the various culprits.

    OO "patterns" are supposed to fix this, but they don't, partly because they do things in code that are best left to the database in my opinion, and because one has to mix patterns in practice, making it hard to know where one ends and the other starts. The end result is a big tangled web of classes and objects with no underlying theory or forest-level pattern between different practicioners. At least one generally knows that procedural code is divided up by tasks and events, and the noun model is mostly in the database, not in the code. It is a fairly predictable division of labor between nouns and verbs. (Whether this is good or not is perhaps another discussion, but *at least* it offers consistency.)

    I am posting this anonymously because pro-OO people don't like to hear this, and mod me down. Truth hurts.

    1. Re:Consistency is OO's biggest buggaboo by Anonymous Coward · · Score: 0

      If you are who I think you are . . I think that your web site is a great public servce. And yup, this is another Anonymous Coward, only one who needs to keep his job . . .

  25. Re:If you've got any sense you don't use flowchart by Moeses · · Score: 2, Funny

    I prefer a less formal design approach best exemplified by this guiding principle:

    A design should be written on the smallest napkin possible, but not smaller.

    Anything more than that is gravy. ;)

  26. Two COBOL Stories???? by Nissyen · · Score: 0, Offtopic

    Hmm... let's check out developers.slashdot.org to see what the latest developer news is. Hmm... COBOL... COBOL again, I really should check out this COBOL language. Maybe my FORTRAN just isn't cutting it anymore.

    1. Re:Two COBOL Stories???? by Nissyen · · Score: 1

      Offtopic? No sense of humor.

  27. Twisted technique... by JediTrainer · · Score: 3, Funny

    What if I outsourced my *own* job to India? Pay some guy $100 per month to do my job, so I can sit on my ass all day and play games? Heck - get two guys - it's time for a raise!

    Anybody try it? Can it be done?

    --

    You can accomplish anything you set your mind to. The impossible just takes a little longer.
    1. Re:Twisted technique... by CelloJake · · Score: 1

      Do you realize that you are a genious?

      This is why outsourcing is good for the economy. If we all did it, we would all be rich.

      American companies are more productive if jobs can be more cheaply done overseas. Americans that work for American companies can make more money if American companies are more productive. You just have to do something that you can do better than 5 guys in India.

      If you can't find something that you can do better than someone else who will do it cheaper - then who owes you anything?

      -Jacob

    2. Re:Twisted technique... by Rick+the+Red · · Score: 2, Insightful

      Sure, it can be done. What you're describing is setting up your own consulting firm and outsourcing the technical work to India. So you're traiding your technical job for one in Sales and Marketing, something that can't be easily outsourced. But if you think you'll "sit on my ass all day and play games" you're sadly mistaken.

      --
      If all this should have a reason, we would be the last to know.
    3. Re:Twisted technique... by Anonymous Coward · · Score: 0

      American companies are more productive if jobs can be more cheaply done overseas.

      But who is going to buy all this stuff that is now slightly cheaper? Nobody will have jobs except managers, marketers and McWorkers.

  28. Hi, I'm Twylite, PLEASE mod me up!! by Anonymous Coward · · Score: 0

    NOT

  29. UML by whiteSanjuro · · Score: 1

    At my school, they teach the students to use UML.

  30. Chart the data by Y+Ddraig+Goch · · Score: 1

    Not the source code. In today's business environment most of the development we do involves databases and complex relationships. Use a flowchart to analyze where the data starts, what needs to happen to it and where it needs to wind up. The UI and the code will take care if it's self.

    --
    Meddle thou not in the affairs of Dragons, for thou art crunchy and with most anything.
    1. Re:Chart the data by whitroth · · Score: 1

      Whereas the diagrams that show relationships between fields, sorry, "columns" in RDBMs look so much like ants that had been chased through spilled ink that *no* *one* can make head or tail of 'em.

      This younger gen'ration just don't understand multi=level flow charts.

      Aside: Do meddle in the affaird...? Y'know, if they're crunchier, some like to roll 'em in powdered sugar, which is bad for their fangs.

      y Ddraig Goch, eh? Cymry?

      mark, y Ariandrake, cymrophile

    2. Re:Chart the data by Anonymous+Brave+Guy · · Score: 1
      In today's business environment most of the development we do involves databases and complex relationships.

      In your business environment, and many others, no doubt that is true. However, "enterprise applications" (or databases, as we used to call them) represent only a significant fraction of development work, not by any means all of it. A lot of real programs still use real algorithms that do more than construct a SQL query and whizz it off to some server via the latest and greatest RPC trick, y'know. :-)

      In programs that do non-trivial processing of data, it's definitely useful to represent the algorithm itself in some concise and scannable form as well. Personally, I prefer pseudocode for this, but I could understand using flow charts, particularly if the algorithm is being developed by a group sitting around a whiteboard.

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
  31. Whiteboard... by SuperChuck69 · · Score: 5, Insightful
    When I have a complicated problem that requires some design (which is, unfortunately, not very often), I use a very complex system which involves sketching some boxes on a whiteboard, often connecting them with vague lines. I occasionally jot some method names down next to or inside the boxes

    Personally, I'm wary of any formalized system of object design (UML being the prevailing method at the moment). UML is a beast designed to design the hell out of anything that got in its path. Learning UML is roughly as complicated as learning Hebrew, with the drawback that more people actually understand Hebrew.

    Most of my experience with UML and other formal object languages involve one individual scrawling archaic symbols (which may well be astrology charts) on a whiteboard whilst everyone else in the room constantly ask "what does that symbol mean?" The designer invariably explains the symbol, in as condescending a tone as possible.

    I don't believe I've actually met anyone who uses formal modelling languages because it makes design easier; most seem to learn them solely for demeaning those who don't know them.

    Given that the goal of these languages is to communicate design, they must be failures. Rather than simplify the communication of a design, they complicate it. Really, it makes no more sense than me using Latin for all my design notes, just to insult my barbarus coworkers. Well, that does no good.

    I've found that using simple symbols such as "abstract" to denote an abstract class works just fine. Works fine for me, saves explaining what a lambda symbol means, and clearly explains its intent as an abstract class...

    --
    :wq
    1. Re:Whiteboard... by ClosedSource · · Score: 1

      Well, guys like the three Amigos have to make a living. If they just said "draw a few simple diagrams and describe in text how the system is designed" how can they make money?

      The fact is that the (human) language a software team speaks is the most powerful and effective way to communicate overall. Diagrams can be helpful, but they'll always be a supplement.

    2. Re:Whiteboard... by HR · · Score: 1

      I think both you and the parent overlook the value of having a standard notation in which to capture the design. Granted, I'm not into the more esoteric stuff like trying to come up with executable UML but I really do like the idea of picking up someone's document and knowing what they are trying to communicate - even after they're long departed from the company.

      Nothing beats face-to-face discussion with the original designer but that's very often not possible.

    3. Re:Whiteboard... by ClosedSource · · Score: 1

      A standard notation is better than a non-standard one certainly. Diagrams can act as a shorthand to those that understand them but spoken or written language is still the most reliable way to communicate IMHO.

      This discussion reminds me of a conversation I had about 10 years ago with the regulatory affairs director of the medical device company I was working for.

      I gave her a detailed data flow diagram for our software to include with her FDA submission. She gave it back to me and said she was afraid that if she gave it to the FDA they would think that we didn't know what we were doing.

      We ended up giving them a diagram with a circle for each major function of the device surrounding a larger circle with the product name in it and a line connecting each small circle to the larger one.

      I guess you have to know your audience.

  32. Why do you need a graphical representation? by CatGrep · · Score: 5, Interesting

    A lot of folks will tell you that they use UML in place of flowcharts for OO design. I say that the UML emperor is naked.

    Chip designers (I used to be one) in the old days (before about '92) used to use schematics which are pictorial representations of their designs. But in the early 90's HDLs (hardware description languages) bagan to creep in. Now you rarely find schematics used for digital design. It's all done in HDLs. Why did this happen? Mainly because it's a whole lot easier and more powerful to describe a circuit with an HDL. You don't have to draw all those wires to connect everything. You can describe things at a very high level, such as an adder to add two 32bit values: A + B (where A and B are 32 bit vectors). What could be simpler.

    Another reason that schematics were abondoned is that it's a lot easier to parse text than graphics. The UML promoters should take note.

    Now the UML folks are essentially trying to take software design back to the schematic age. The hardware people learned that schematics are not the best representation.

    The answer is to program at a higher level of abstraction. This might mean chosing a higher-level language to prototype in (I like prototyping in Ruby) or it might mean using techniques like state machines, for example.

  33. Does anyone use "Collaboration Graphs" ? by kisielk · · Score: 1

    One of the instructors at my University is getting us to use "Collaboration Graph Notation". (Note that this appears to be different from UML Collaboration Diagrams). I'm just wondering if anyone ever uses these in practice because they, and the book that introduces them seem like the biggest bunch of BS ever. The book reads more like something written b y a philosopher rather than a software developer.

    So does anyone actually use this? What's the advantage over UML?

    1. Re:Does anyone use "Collaboration Graphs" ? by Anonymous Coward · · Score: 0

      My UML BS smells better than your CGN BS.

    2. Re:Does anyone use "Collaboration Graphs" ? by fm6 · · Score: 1

      The "U" in "UML" stands for "Unified". One of the things that got Unified into UML is Use Case Diagrams.

  34. Re:Why do you need a graphical representation? by Nyarly · · Score: 1
    Mainly because it's a whole lot easier and more powerful to describe a circuit with an HDL. You don't have to draw all those wires to connect everything.

    While that may be so, for software design of any significance, you're going to need to express relationships that will be difficult to predict a priori. Using a design language might be easier to produce, but it's certainly no more expressive of the overall design than a diagram.

    Another reason that schematics were abondoned is that it's a lot easier to parse text than graphics. The UML promoters should take note.

    Gee, I'd wondered why there was this whole XMI thing that was running around the UML editor industry. Seems like it's not just text but XML, so there's not even the trouble of writing their own parsers. How novel! For humans, on the other hand, it's much easier to parse the graphical representations of UML, from the rough conceptual level of "so how does this work" all the way down to the specification level, thanks to the rigidity of UMLs definitions. (Granted, yes, a set of UML diagrams does not a spec make, but you need very little in the way of supporting documents to round out a very usable spec.)

    The answer is to program at a higher level of abstraction. This might mean chosing a higher-level language to prototype in (I like prototyping in Ruby) or it might mean using techniques like state machines, for example.

    If that's your answer, I'm not entirely sure you caught the question. While yes, I completely agree that a Ruby prototype is an enjoyable and useful execisize, and that your programs might even be completely literate in Ruby, they aren't a substitute for diagramming (or spec) of some kind.

    A prototype and a spec are two completely different things. They each have their place, and they aren't wisely exchanged.

    --
    IP is just rude.
    Is there any torture so subl
  35. On the mac... by ABaumann · · Score: 1, Informative

    this is really easy to do with Omni Graffle. It's a sweet program for UML design, and it comes with OS X

    1. Re:On the mac... by Joe+Tennies · · Score: 3, Informative

      OmniGraffle doesn't come w/ OSX. It's either $70 or $120 (standard or professional).

    2. Re:On the mac... by AndyElf · · Score: 1

      It does, or at least it did with my Jag. Not the Pro, but still is a great product.

      --

      --AP
    3. Re:On the mac... by angel'o'sphere · · Score: 1


      OmniGraffle doesn't come w/ OSX. It's either $70 or $120 (standard or professional).

      It does.
      My Mac had it preinstalled. And my OS X 10.3 Upgrade CD containes it as well. Furthermore the upgrade from the Web Site is free also.
      angel'o'sphere

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    4. Re:On the mac... by tim1724 · · Score: 1

      "My Mac had it preinstalled" != "It comes with Mac OS X"

      When you buy the hardware, you not only get a free copy of Mac OS X but you also get free copies of whatever software Apple happens to be bundling with that particular model this week. (or rather, whenever yours happened to be manufactured.)

      They typically bundle things like AppleWorks or games like Otto Matic or Bugdom with consumer machines (iMac, eMac, iBook) and things like Graphic Converter or OmniGraffle with professional machines (PowerMac, PowerBook)

      The software bundle is tied to the hardware you bought, not Mac OS X. Mac OS X doesn't include any bundled third party software. (Except for Internet Explorer, Stuffit Expander, and some web browser plugins.)

      --
      -- Tim Buchheim
  36. Re:Why do you need a graphical representation? by CatGrep · · Score: 2, Insightful

    I'd wondered why there was this whole XMI thing that was running around the UML editor industry

    OK, so UML editors are now able to spit out XML. That makes the concept a bit more usable. Now we have something to grep.

    A prototype and a spec are two completely different things. They each have their place, and they aren't wisely exchanged.

    Perhaps, but add 'test-first' development with unit tests to the mix and you've got an executable spec. If I can use the same set of unit tests for both my prototype and my final code (which I can) then I know that my final code behaves exactly as it should according to the executable spec.

    What good does the graphical representation do me, I've got to keep my graphical representation in sync with my actual code. The two representations could be completely different at some point if I'm not careful and when that happens the graphical representation is worse than useless.
    This continual syncing between code and pictures becomes burdensome at some point. Unless you can use UML to completely genereate your code this will be a problem (I realize that this is now possible to some extent, but not completely.

    There were similar issues in the hardware world when synthesis tools came on the scene: If your representation wasn't synthesizable to hardware then you were doing twice as much work - you had to keep your schematics up to date with your synthesizable HDL code, eventually people wondered why they were drawing the schematic at all and it wasn't long after that that they stopped drawing schematics. The holdouts wanted to hold onto schematics as documentation, but soon people realized that the code itself was documentation.

  37. Consider Activity Diagrams by tamills · · Score: 2, Informative

    There is no straight analogy in OO for a flow chart or DFD. But activity diagrams (here, here, and here) serve a similar function. They provide a high level of abstraction that can be done with a picture.

    One poster said to use a "high level language". I agree, at least with the first two words. I mildly disagree at the word "language". Some people think better in words, others think better in pictures.

    What's important is that you don't try write your detailed code using pictures. People who map one set of things to a picture will map a different set of things to a language. So it is difficult to draw pictures that then create exactly the code (language) desired.

    Keep the pictures (activity diagrams) high level but leave the details for coding by hand.

    Having said that, I shall now waffle: If you're very good at thinking in pictures, UML does provide some detailed diagrams for run-time aspects of software.

    are all ways to describe run-time state and behavior. I tend to believe programmers generally are better with languages when they need to describe details.

    Drew

    --

    Be careful what you wish for...

    Where your treasure is there is your heart also...

  38. OOP Flowcharts? by malachid69 · · Score: 1

    When whiteboarding, we sometimes flowchart -- usually just the simple (and thus VERY QUICK to draw) boxes and arrows. Rarely have we used other types, as they take more time.

    However, without the whiteboard, I would have to say that I rarely do so.

    --
    http://www.google.com/profiles/malachid
  39. Re:If you've got any sense you don't use flowchart by joto · · Score: 1
    This goal is often achieved with a Data Flow Diagram ...[snip]... Eventually, we got to UML from there after 10-15 years of haggling and stumbling; some argue that it still isn't working out so well.

    Yeah, well. Some of us are complaining about the lack of dataflow diagrams in UML ;-) If it doesn't even support that, what do we need a standardized notation for? Drawing stick-figure men?

  40. The scary thing is... by joto · · Score: 1

    You are probably being serious. Oh, well...

  41. What design? by Anonymous Coward · · Score: 3, Insightful

    I haven't worked with an OOP programmer yet who has used flowcharts, let alone a design beforehand. Heck, I haven't interviewed with a company yet that used designs to model a program. These days, it's all seat-of-the-pants.

    That's not to say that there aren't real engineers out there, or that designs are a bad thing. Just that whenever I talk of actually designing a product/project to nail it down, people look at me like I'm crazy. Who would have thought that wanting a specific goal to shoot for was so foreign a concept.

    Nobody wants to do research. Employers change feature lists with the whim of the customer du jour on the phone. Programmers waste time by throwing useless gadgets and doo-dads into software that never works properly, and would never have gotten past the design stage.

    In these insane times, you get your head handed to you if you demand designs, documentation, and working code. Fix or make reliable software and you're out of a job.

    1. Re:What design? by hInstance · · Score: 2, Insightful

      My experiences have been very similar. As a rule my employer (now ex-employer, because as you suggest, I'm out of a job) would always prefer/reward programmers who produced shoddy work quickly (with some unspecified amount of QA time needed afterward) over programmers who spent more time planning up front (with very few bugs in the implementation).

      Hidden costs are a bitch. (Or as Robert Glass puts it more eloquently in Facts and Fallacies of Software Engineering, "the hard drives out the soft").

  42. Re:If you've got any sense you don't use flowchart by WayneConrad · · Score: 2, Insightful

    A design should be written on the smallest napkin possible, but not smaller.

    That's as insightful as it is funny.

    Programmers should resist the urge to pull out a computerized tool when modeling. If it doesn't fit on a napkin, it's probably not abstracted enough to be useful to those who need it. If you need to "zoom in" on one of the boxes on the napkin, pull out another napkin.

    Do you need to archive it on a computer, perhaps on an internal Wiki? Scan it. Does it need to be prettier than a scanned napkin? Ask why. Those who want it prettied up are usually those who wouldn't know what to do with it in any format.

    Don't overlook the enormous mnemonic value of a napkin. That stain on the side where Jim spilled his drink immediately brings back memories of the meeeting, including all the things that were said but aren't written on the napkin.

    For those who find napkins hard to draw on, use small sheets of paper instead. Just don't reach for that drawing tool! You'll end up spending all of your time figuring out how to make that font bigger and how to keep the lines from crossing inappropriately rather than just getting on with it and drawing the model.

  43. UML by Anonymous Coward · · Score: 0

    Are you coming out of a fucking cave??? What the hell is this bullshit about flowcharts as if we still used them!!! I can't believe this shit!

  44. Re:If you've got any sense you don't use flowchart by angel'o'sphere · · Score: 1


    The nearest thing to flowcharts that are used in OO are:
    * state diagrams
    * message sequence charts


    Not quite right. The nearest thing are activity diagramms. Basicly they *are* flow charts.
    Activity Diagrams support more even, they can be mixed with states and have event sources and sinks and can show object flow (work flow).

    Personally, if I see somebody drawing a flowchart .... Actually, flowcharts are good for telling users what to do, and for similar reasons, might be appropriate for designing test scripts. But for the system- nope.

    Come on, get serious :D or scratch you from my friends list :D
    If you have a large system or a complicated system, the high level design should be done with flowcharts/activity diagrams.
    Of course you very likely won't use it for coding, as a good coder likely does not need that. But often you might want to have a reverse engineered activity diagram from your code. Think about fluctuating staff. New guys comming in, having to extend the software or to fix a bug ... the easyst way to do that is to ahve a well documented software: Use Case/Scenario -> Activity Diagram/State Chart/Sequence Chart -> Class Diagram -> source code. So if you change a requirement on UC level or find a bug on UC level you are imediatly at the code.

    How do you do that if you don't have every line of code in your mind?

    angel'o'sphere

    --
    Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
  45. Re:If you've got any sense you don't use flowchart by angel'o'sphere · · Score: 1

    DFDs can eb doen with Activity Diagrams.
    If you use stereotypes and load appropriated pictures into your CASE system, they even look like DFDs.

    UML stands for Unified Modelling Language. My I emphasize: Language.

    Its a language like C++ and Java and Ada or what ever your personal prefered language is. You can do everythign with it as long as yoour CASE system is at least a little bit up to date.

    That means you can define your own meaning for structures, and you can defeine your own graphics for stuff you miss.

    If you are a windows user google for Enterprise Architect ... one of the best CASE systems out tehre, for jsut ~200 bucks.

    angel'o'sphere

    --
    Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
  46. Re:If you've got any sense you don't use flowchart by Anonymous+Brave+Guy · · Score: 2, Informative
    For those who find napkins hard to draw on, use small sheets of paper instead. Just don't reach for that drawing tool! You'll end up spending all of your time figuring out how to make that font bigger and how to keep the lines from crossing inappropriately rather than just getting on with it and drawing the model.

    While I have a lot of sympathy for the view that pencil and paper are an under-rated combination these days, I think that's going a bit far.

    I've recently spent a fair amount of time drawing reasonably complex class diagrams to document the major design features of one of our systems. To give an idea of scale, these probably have 10-20 classes per page, and can usefully indicate a few key methods and data members on some of the classes.

    I found having a good diagramming tool (in this case, the Pacestar UML Diagrammer I mentioned elsewhere in this thread) to be a great timesaver. It has the key advantage that you can adjust things after you've sketched most of the diagram. That might mean moving classes up a bit so you can fit another layer of a hierarchy in at the bottom, or extending one of the boxes to highlight where a couple of methods are over-ridden, for example. If I start using pencil and paper, I frequently find myself drawing the same diagram twice, once where I expected it to fit, and then a second, better laid out copy when I've seen which parts didn't fit the first time.

    A good diagramming tool also produces better looking output, and in a more convenient form which can easily be included with design documentation if you like. That beats a cramped diagram with illegible handwriting scanned into a fixed graphic any day.

    Of course, it's taken me several years to find a decent UML diagramming tool. Most of the freebies are bug-ridden and hard to use, and produce horrible output. Actually, some of the expensive ones (Rational Rose being a prime example) are among the worst. Certainly pen and paper is better than these...

    Does it need to be prettier than a scanned napkin? Ask why. Those who want it prettied up are usually those who wouldn't know what to do with it in any format.

    If it's going to be in serious documentation, then yes, it should be smarter than a scanned napkin. Good visual layout that reflects the logical structure is half the value of something like a class or state diagram. Without that, you might just as well write it in words or a big table.

    --
    If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
  47. Re: How Do OOP Programmers Flowchart? by Anonymous+Brave+Guy · · Score: 1

    Please don't confuse OO with UML. None of the things you mention is necessary for OO (although some variation on things like class diagrams usually arises sooner or later) and some of them are equally applicable to other design methodologies.

    --
    If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
  48. Design: language or diagrams? by Anonymous+Brave+Guy · · Score: 1
    Design should be done primarily using English (or your local language) text, supplimented with diagrams.

    Didn't anyone ever tell you that a picture is worth a thousand words?

    (Of course, it has to be a good picture to be worth a thousand good words.)

    Software is a linguistic construction;

    Is it? We usually choose to represent it in a linguistic way, and attempts to use more graphical means have generally turned out pretty badly. However, it's debatable whether that failure was because software design is inherently more linguistic, or whether it just happened that the current linguistic notation was more concise and thus more efficient in use.

    Languages are inherently linear. Structured programming (in the sequence, repetition and conditional sense) is a non-linear process: it has forks and loops. Simple functional decomposition is non-linear: it represents a tree of function calls. The relationships between modules in systems are more complex still, with class dependencies in an OO system a prime example.

    Today, we happen to project these concepts onto a linear series of grammatical constructions in most languages, but that's only because you can't support anything more than a one-dimensional representation of the underlying structure in a text file. There are other ways, including plenty of research into alternatives to old school plain text representations, and the IDEs and diagramming tools used by many developers today are the current industrial results.

    --
    If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
    1. Re:Design: language or diagrams? by Mr.+Slippery · · Score: 1
      Didn't anyone ever tell you that a picture is worth a thousand words?

      Draw me a picture of the Gettysburg address. Or one of Basho's haiku - that should only take about 1/100 of a picture, right?

      For some things, pictures are very useful. For example, circuit digrams are great for figuring out electronics.

      For other things, they're useless. You can't draw me a picture that explains why Tennyson's Ulysses is beautiful. (Any more than you could write prose or a poem that gets anywhere near Escher's drawing hands - witness the literal description on the linked page.)

      Diagramming software is about as useful as diagramming a plots in a discussion of a novels, or the grammar of sentances - an occasional useful adjunct, but by no means the primary mode of presentation.

      Languages are inherently linear.

      To the contrary, programming languages took conditionals and iteration from natural language. In a written work, one can skip around amd cross-reference; prose is random-access. And viewing a diagram is just as linear - your attention only focuses on one element at a time, and you trace connections - lines - between them.

      --
      Tom Swiss | the infamous tms | my blog
      You cannot wash away blood with blood
  49. Re:If you've got any sense you don't use flowchart by WolfWithoutAClause · · Score: 1
    If you have a large system or a complicated system, the high level design should be done with flowcharts/activity diagrams.

    In my experience they are rarely useful. They manage to fall in the no mans land between accuracy and useful approximation; getting the worst of all worlds. Pseudocode is generally better.

    How do you do that if you don't have every line of code in your mind?

    Simple. I don't work on subsystems with more than 200,000 lines of code.

    --

    -WolfWithoutAClause

    "Gravity is only a theory, not a fact!"
  50. Re:If you've got any sense you don't use flowchart by angel'o'sphere · · Score: 1


    Simple. I don't work on subsystems with more than 200,000 lines of code.

    Fine. And I would asume a system composed of lets say 25 such subsystems might be a perfect case for using high level activity diagrams as documentation or as start of planning(before coding).
    You still owe me the answer how you like to shift over such a subsystem to a new worker taking over your position when you move on to the next challange ... he only has code and pseudo code.

    How far away from true code is that pseudo code, anyway?

    angel'o'sphere

    --
    Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
  51. Re:If you've got any sense you don't use flowchart by Skjellifetti · · Score: 1

    Data Flow Diagrams are a great tool for mediating between your customers and your programmers. The customer sees his business processes laid out in a format they can understand while the programmer sees those processes laid out in a way that clearly describes the requirements and boundries of the problem. I typically use UML class diagrams and sequence diagrams for design work once I have done a DFD for the customer. There may well be UML diagrams that can allow the customer and programmer to communicate with one another, but DFDs do the job so well that I have never bothered to look into them.

  52. Re:Why do you need a graphical representation? by Brandybuck · · Score: 1

    We're talking software here, not hardware. If you have some objections to UML, please state them in software terms.

    p.s. There are valid objections to UML, it's just that your analogy isn't one of them.

    p.p.s. And no matter how many valid objections you come up with, management likes to see UML, so it's all pointless.

    --
    Don't blame me, I didn't vote for either of them!
  53. Here Here by babylon93 · · Score: 0

    You said it, brother.

  54. Re:Why do you need a graphical representation? by CatGrep · · Score: 1

    We're talking software here, not hardware. If you have some objections to UML, please state them in software terms.

    I'm just relating what I saw happen in another design community. Creating hardware these days, btw, is very much like creating software. Design languages, compilers, etc. I do software for hardware design automation.

    p.s. There are valid objections to UML, it's just that your analogy isn't one of them.

    Why not? as someone who has been on the other side of the wall, I'm telling you about a major shift away from pictoral descriptions toward textual ones in the hardware design world. It's quite relevant.

    Drawing schematics (or UML diagrams) is very time consuming and you have to question whether or not you're getting any increased productivity for the time spent - I contend you aren't.

    You want other more 'software oriented' objections - how about, how do I grep for a string in pages of UML? Can I write a quick & dirty Perl script to change all of the instances of some variable to another name? Someone else mentioned that most UML tools now export XML, a textual description. Why not just use XML in the first place? How do I write scripts to automate the process of UML creation? You can't beat text when it comes to the ease of parsing, generation and automation via scripts.

    p.p.s. And no matter how many valid objections you come up with, management likes to see UML, so it's all pointless.

    That's apparently what's driving all of this. PHB's want pretty pictures to look at.

  55. Re:Why do you need a graphical representation? by Brandybuck · · Score: 1

    I'm telling you about a major shift away from pictoral descriptions toward textual ones in the hardware design world.

    In my company we do a lot of hardware. A heck of a lot. When it comes to programming the chips the do use compilers. But that doesn't do them a damned bit of good when they're laying out a couple hundred chips on a four layer PCB board.

    We still use visual diagrams of all sorts on the hardware side. If there's a shift away, then it's definitely not universal.

    Drawing schematics (or UML diagrams) is very time consuming and you have to question whether or not you're getting any increased productivity for the time spent - I contend you aren't.

    At the level Rational "recommends", you aren't. It's simply overkill. Their view seems to be to design it down to such a low level that you never need to write any code. They also seem to want to to put everything into one humongous diagram. That's ridiculous. The best way to use UML is to keep it high level. Just like writing a function, if a diagram won't fit on one sheet of paper, break it up.

    Why not just use XML in the first place?

    Because XML is not easily readable by mortals. XML is not an end product, no matter what the glassy eyed disciples at xml.org tell you. It's middle-ware. You render, transform, process, fold, spindle and mutilate XML, but you do not read it. And you certainly don't give it to your partner saying "here's the design".

    Rational (among others) seems to think of UML as a code generation tool. They're nuts in my opinion. I, the software developer, am the code generation tool! With UML we're still at the analysis and design phase. We don't start implementing until much later.

    PHB's want pretty pictures to look at.

    So does everyone else. Well, maybe not you. But most everyone else does. The pretty pictures should definitely not be the only documenation, but they make a fine addition to it.

    It's much easier to get a grasp of a complex software construct with a couple of pages of UML then it is with fifty pages of monospaced XML.

    --
    Don't blame me, I didn't vote for either of them!
  56. Process vs. Capability by sgt101 · · Score: 1

    I guess this is a key fissure in computing at the moment.

    Tools for designing workflows, like ARIS, don't go together with tools for designing programs, like Rose. At the moment there is a big movement to intergrate service, process and computation in the GRID and Web-Services communities. These discussions are mirrored in the Agent community and OMG's MDA. Languages like BPML4WS do not sit well with activity diagrams and class diagrams.

    I think this is because in the workflow world one type of event (a transition) is assumed, where as in the OO world many types of events are possible, but the language doesn't model them. This is a break in the notation that we have. Does anyone have a good solution?

    --
    --------------------------------------------- "In the end, we're all just water and old stars."
  57. Re:If you've got any sense you don't use flowchart by WolfWithoutAClause · · Score: 1
    You still owe me the answer how you like to shift over such a subsystem to a new worker taking over your position when you move on to the next challange ... he only has code and pseudo code.

    I wouldn't know, I've never been in that position; I usually hand them an inch thick document as well as the code. It just doesn't contain any significant flow charts because they suck.

    From what I can tell, the systems you work on are so heavily constrained that a flowchart actually makes sense.

    The systems I have worked on in my career tend to be simultaneously huge, embedded, realtime, persistent, concurrent *and* multitasking- at the same time. And I am *not* just throwing buzzwords at you. I also had to work on projects with 500+ people working on the same product or several versions of the product. In situations like that I have not found flowcharts to be especially useful.

    In fact, in that environment, I have found *detailed* documentation to be counterproductive. Sure I can draw the flowcharts and all the other diagrams- but reviewing and reading the multi-inch documents becomes a practical impossibility; even an inch is almost too big. So we have to get rid of the cruft. And flow charts are cruft.

    --

    -WolfWithoutAClause

    "Gravity is only a theory, not a fact!"
  58. Re:If you've got any sense you don't use flowchart by joto · · Score: 1
    Interesting. Last time I heard, on some UML course I was forced to participate in, at my last job, the hired expert said that the UML gang didn't like dataflow diagrams, because of some ideas they had about use of model checking (use of formal methods) in the case tool, or something like that, which basically meant that DFD would break UML somewhat. Not that I've really investigated this issue myself, as I'm happy to draw DFD's on napkins anyway, and never really saw the point of having one unified notation for every OO design issue, unless that notation is the same thing you would use to implement the darn thing in (i.e. C++, java).

    But if they are now at least somewhat supported, that is a good thing.

    But despite your post, I fail to see how it can be done, as a dataflow diagram has completely different semantics from an activity diagram, and just loading some fancy graphics to replace the fancy graphics in an activity diagram won't change that. If you can post a link to an example, I would be very happy. Preferably of the napkin variety, as you shouldn't need a $200 windows-only case tool, just to mock up a dataflow diagram for a simple control system.

  59. Unified Process and UML by gothmog666 · · Score: 1

    For analisys and design the trend today is all about two things:
    UP - Unified Process
    http://www.amazon.com/exec/obidos/tg/deta il/-/0201 571692?v=glance
    and
    UML - Unified Modeling Language
    http://www.amazon.com/exec/obidos/tg/det ail/-/0201 65783X?v=glance

    --
    I intend to live forever. So far, so good.
  60. Here's $5.00, go buy yourself a clue by Rick+the+Red · · Score: 1

    A common phrase in the Open/Free software movement, especially in connection with Linux, is "Free as in Beer," meaning you don't pay for the software any more than you pay for free beer. When Linux was first released, software was usually not free any more than beer was free.

    --
    If all this should have a reason, we would be the last to know.
    1. Re:Here's $5.00, go buy yourself a clue by sporty · · Score: 0, Flamebait

      Here's $1, go buy yourself a clue. Don't assume people speak your terminology, and don't mince words at the same time.

      --

      -
      ping -f 255.255.255.255 # if only

    2. Re:Here's $5.00, go buy yourself a clue by Rick+the+Red · · Score: 1

      With a five digit ID, I figured you'd been here long enough to know the lingo. Sorry if I offended you.

      --
      If all this should have a reason, we would be the last to know.
    3. Re:Here's $5.00, go buy yourself a clue by heliocentric · · Score: 1

      Sporty flies off at nothing most times.

      I used to hang out with him on an IRC server, then one day he up and quit. He also deleted all of his /. JEs one day and un-friended everyone. Don't let him get to you.

      --
      Wheeeee
  61. it's self??? by Anonymous Coward · · Score: 0

    The UI and the code will take care if it's self.

    My god.
    Not only did you break "itself" into two words, but you also added an apostrophe.
    There has to be some kind of an award for that kind of mangled spelling.

  62. WHY flowchart? Evidence that it helps? by dpbsmith · · Score: 1

    About a decade ago, I believe in Gerald M. Weinberg's The Psychology of Computer Programming, I read about a research study that tested the hypothesis that flowcharting is beneficial. They found that it was of no benefit at all. (If I recall correctly, what they found was beneficial was delineating chunks of code by separating them from each other with blank lines).

    If traditional flowcharting isn't beneficial for traditional programming, why would O-O flowcharting be beneficial for O-O programming?

  63. Aside... by Y+Ddraig+Goch · · Score: 1

    Powdered sugar is too sweet. Most Americans like their food way to sweet. Being an American (and a Dragon), I can say this with confidence. If you doubt me look at the ingredients on a bottle of salad dressing... About Cymry, yes as an ethnic group(my last name is Owen), with a good dose of German as well. I have tried learing Welsh on the Web but...

    --
    Meddle thou not in the affairs of Dragons, for thou art crunchy and with most anything.
  64. Activity diagrams by sartin · · Score: 2, Informative

    UML lets you use an Activity Diagram for this as well. Typically activity diagrams are used to document a business process. Activity diagrams explicitly include synchronization and timing information. Sometime that's better than using a DFD as you know that a particular action must complete before its successor starts. Sometimes, it's worse because you may represent synchronization in the model that is simply an artifact of the current process. For example, I worked on cell phone point of sale system that would not let the sales rep take money until the phone activation was completed. This syncrhonization point was't really required for the business process (and actually caused lost sales when the activation system was slow or down), but had crept in through an activity diagram that listed activation as a pre-requisite for billing.

    Activity diagrams are actually part of the UML replacement for flowcharts. State diagrams and sequence diagrams (plus, to a lesser extent collaboration diagrams (which are sort of a translation of sequence diagrams mapping objects spatially and time through notation) nostly complete the picture of UML things that replace flowcharts.

  65. Re:Why do you need a graphical representation? by Nyarly · · Score: 1
    OK, so UML editors are now able to spit out XML. That makes the concept a bit more usable. Now we have something to grep.

    Honestly, with exception of the pricey (but apparently bery usable) Rational products, most of the UML editors I've worked with (not counting Visio, which shouldn't come as a surprise) have produced some form of XML document. None of them are exactly human parseable, though. It is nice to be able to CVS the whole thing though.

    Perhaps, but add 'test-first' development with unit tests to the mix and you've got an executable spec.

    I think we both agree that test-first is an excellent paradigm, and I quite agree that a good set of unit tests help round out any specification. But the fact is that not having some kind of a diagram makes it especially difficult to understand the overall structure of any significant project.

    his continual syncing between code and pictures becomes burdensome at some point. Unless you can use UML to completely genereate your code this will be a problem (I realize that this is now possible to some extent, but not completely.

    Actually, a historical goal of UML was that it be generated from existing code (i.e. the other way around). The big feature in the UML arena right now is what's called Round-Trip Engineering, which is marketdroid for being able to make changes either in code or in diagram and then sync it up safely.

    Basically, there are two cases where UML is most useful. The first is large projects with several developers, since it's very easy to show someone a diagram and let it Just Make Sense, or be able to express overall structural proposals quickly.

    The second is starting any project bigger than a dozen objects. Mapping everything out ahead of time can mean big savings in refactoring later (which takes more time even in prototype), and the dicipline inherent to UML means that you can be confident that a well structured UML representation will result in good relationships in the eventual code. Then you've got a rough document of the eventual result that can be updated if it's needed. Otherwise, a literate program with good tests can sometimes be its own specification.

    --
    IP is just rude.
    Is there any torture so subl
  66. Re:If you've got any sense you don't use flowchart by angel'o'sphere · · Score: 1

    Sounds like a challange.
    So how do you transfer knowledge then? I completely agree that a one inch document is invalid before one is able to read and understand it.
    If your prblem domain is that complex I would asume you use message charts or sequence charts (instead of activity diagrams/flow charts), but using no graphics at all seems strage to me. So, do you use them? Or what do you use else? How often do requirements change, or new features come up?

    angel'o'sphere

    --
    Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
  67. Re:If you've got any sense you don't use flowchart by angel'o'sphere · · Score: 1

    Then I woul dsugest to google for magicdraw (I think nomagic.com).

    Its a Java based case tool, also with XMI export.

    To transform an activity diagram into a Flow Charting tool or a Data Flow Diagramming tool you only need to look at the configuration options.

    Define an stereotype for an activity and a stereotype for a flow, load the appropriated graphics into the tool for the stereotypes you defined. A lot of CASE tools support that.

    Yeah, you are right, its a pitty that EA is for windows only. That tool is better than any other CASE system I ever saw and it is for less than 1% of the price (comparing it with Rational Rose or Together or Meta Case).

    Formal methods in CASE tools have nothing to do with DFDs or model cheking of DFDs. I don't see teh relation. Formal methods in CASE tools usually are bound to OCL (object constraint language). And thats an add on and it does not contradict a DFD or something.
    I mean, isn't it formal enough to say: this is a data source, objects of type A, B, C are comming from it, and this is a data sink and objects of type S are going there and this is a process transforming objects A x B to S using C as descider?

    I guess your "hired expert" was not such an expert :D or you got him on the wrong foot.

    angel'o'sphere

    --
    Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
  68. Re:If you've got any sense you don't use flowchart by WolfWithoutAClause · · Score: 1
    In a real sense; the documentation is just introductory and/or a summary of the system from a few different angles.

    Ultimately, it's just a map, and the map is not the territory.

    I've written the documents, I've done week long teaching on the system; I've given a sort of apprenticeship to students (generally given them bugs to fix helps quite a lot.)

    They all work to a degree.

    Ultimately though; the code is the real deal; people just have to learn it; it takes months/years.

    --

    -WolfWithoutAClause

    "Gravity is only a theory, not a fact!"
  69. Re:If you've got any sense you don't use flowchart by joto · · Score: 1
    I have no trouble accepting that you can coax your CASE tool into drawing something that looks like a DFD, I can't see how you can preserve it's semantics in UML. I can probably coax my CASE tool to write modernist art too, but it has absolutely no meaning in UML (not that modernist art is particulary meaningful for anyone, but that's besides the point).

    Since activity diagrams are basically flowcharts, and flowcharts and DFD's are totally different things, I can't see how activity diagrams can be DFDs too, no matter how much you "stereotype". That was my question.

  70. Re:If you've got any sense you don't use flowchart by angel'o'sphere · · Score: 1

    Ah, ok.

    Understood :-), I think at least.

    The elements on UML diagrams are just the building blocks of the graphical language. Just like "int", "if" and "class" are the building blocks of your programming language.

    As you can use an int to code a date, or an age or a length in millimeters you can use an activity from an activity diagram to express everything e.g. a process in a DFD.

    The CASE system does not interpret your usage. The reader of your diagram does. Just as the compiler in a programming language uses your ints as 'ints' and does not care what "meaning" that int has. That means: the CASE system does not care if you connect an activity to an objct or if you connect an activity with stereotype 'process' to an object with stereotype 'datasink'.

    In case you where able to load your own .WMF/.BMP or .GIF images for the stereotypes, you won't see any difference between such an 'activity' diagram and a true DFD.

    What is tricky, and depends strongly on the capabilities of the CASE system is: is it allowed to draw a connection from one object with stereotype 'datasink' to an object with stereotype 'datasource'? Or is it allowed to connect two processes (activities) together? In an DFD it is not allowed. A good CASE system like Meta Case can be configured to define a connection in a way that it knows that it is only allowed from process to datasink and from datasource to process. Is your CASE system able to make such definitions, then you can configure it to support EVERY thinkable graphical notation.
    Basicly: modern case systems have their build in diagrams configured in exactly that way! All nodes are equal and all connections as well, deep inside of a case system an activity, a class and a use case are all the same. With constraints (who may connect to whom) and tool bars (which image to display for what) the case system vendor configures his diagrams to support the 9 UML diagrams.

    Basicly you use stereotypes to define your own language. Its a definition just like a typedef on c++. You agree in your team to use certain stereotypes, which you invent your own, to express something which has meaning to you or your team only. Then you configure the CASE system to support the needed graphics .. and finally if possible you configure it with constraints to restrict the free drawing options to things which make sense for you or the desired graphical notation.

    Very finally and very optional: you anotate your diagrams with tags and more specific stereotypes, generate XMI from it, add a profile and generate source code with MDA or XSLT or velocity or something. But thats of course bleeding edge right now and not a solid method. Look on sourceforge for MDA, there are a lot of tools for that, but they basicly use class diagrams as source and no other diagrams.

    angel'o'sphere

    --
    Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
  71. Re:If you've got any sense you don't use flowchart by Anonymous Coward · · Score: 0
    its a pitty that EA is for windows only. That tool is better than any other CASE system I ever saw and it is for less than 1% of the price

    Learn some math. EA is $225. Pricing for Rational Rose starts at $1600. That's quite a big gap, but not 100x. "Mentor" my ass.