• Gary (unregistered)

    Is it a planar graph? This reminds me of the excellent game at: http://www.planarity.net/ - rearrange the dots to get into a circle. Oh, the hours one could waste disentangling things like this.

  • (cs) in reply to airdrik
    airdrik:
    It looks like a puzzle game I've played called "untangle" - there are a bunch of points around a circle with lines between them; the goal being to move the points around until there are no lines crossing. I don't think there's any hope in untangling this one.
    Gary:
    Is it a planar graph? This reminds me of the excellent game at: http://www.planarity.net/ - rearrange the dots to get into a circle. Oh, the hours one could waste disentangling things like this.

    A graph is planar iff it doesn't (transitively) contain an instance of K5 (the complete graph of 5 vertices) or K3,3 (the familiar graph with three houses and three utility companies). I would expect that very few projects, let alone complex ones, have planar dependency graphs.

  • Ol' Bob (unregistered)

    Hey - are we sure that the Death Star was destroyed by a rebel attack squadron - or was it an off-by-one error in IEDeathStarStormTrooperClassFactoryKillKillKill?

    "Luke, this is the Death Star's code dependency diagram!"

    "Nooooooooooooooooo!"

  • Gary (unregistered) in reply to pjt33
    pjt33:
    I would expect that very few projects, let alone complex ones, have planar dependency graphs.

    Duh. It would be a fun requirement though. Then again if we required that for home construction we couldn't have phone, electricity and water.

  • backForMore (unregistered)

    "But Captain why would you"; "Because I can Spock"

  • (cs) in reply to Anonymous Theorist
    Anonymous Theorist:
    3rd Ferguson:
    dgvid:
    3rd Ferguson:
    No offense but a global dependency diagram for any complex system is a silly exercise. ...
    Not entirely. That diagram is potentially useful for explaining to management why it takes so long to add a feature, why we have to do so much testing, why there are bugs, etc.

    Fair point. Lacking such a diagram, I explain those things by saying "The computer can do anything--and I mean anything--with the information and tools it has. The hardest thing about what I do is making the machine only do what you want."

    which subset of "anything" includes determining whether it will go into an infinite loop?

    I'll have to ring you back on that one...

  • davee123 (unregistered) in reply to Rob
    Rob:
    That's not a moon; It's a space station.

    There's a small thermal exhaust dependency, right below the main class. The target area is only 4 lines long. A precise hit will start a chain reaction that should segfault the system. The code is wrapped in try { }, so you'll have to use proton torpedoes.

    DaveE

  • (cs) in reply to davee123

    Davee123's comment is the funniest comment so far, but quoting it makes Akismet accuse me of being a spammer.

    Addendum (2011-03-08 08:03):

    Davee123:
    Rob:
    That's not a moon; It's a space station.
    There's a small thermal exhaust dependency, right below the main class. The target area is only 4 lines long. A precise hit will start a chain reaction that should segfault the system. The code is wrapped in try { }, so you'll have to use proton torpedoes.

    DaveE

    +10, best comment of the day!

  • The Web is the Root of All Info (unregistered) in reply to ThingGuy McGuyThing
    ThingGuy McGuyThing:
    Can anyone recommend a good dependency grapher that actually groups dependencies intelligently?

    If you can export the graph info, I'd recommend a good diagramming program: http://www.yworks.com/en/products_yed_applicationfeatures.html

  • (cs) in reply to Boba Fett
    Boba Fett:
    boog:
    boog (cheap imitation):
    I'm pretty sure I'd like to strangle someone with that ball of yarn.
    Maybe the penguin?

    Oh yeah, and blah blah not too bright blah...

    Congratulations: you've managed to make yourself look less intelligent than your counterfeit.
    Sorry for intruding, I didn't realize that niche was spoken for. It's all yours.

  • (cs)

    Must be the source code of Kirby's Epic Yarn.

  • Design Pattern (unregistered) in reply to Anonymous Theorist
    Anonymous Theorist:
    3rd Ferguson:
    Fair point. Lacking such a diagram, I explain those things by saying "The computer can do anything--and I mean anything--with the information and tools it has. The hardest thing about what I do is making the machine only do what you want."

    which subset of "anything" includes determining whether it will go into an infinite loop?

    To be fair to 3rd Ferguson, he did not say how long the computer will run (and his boss didn't set a limit so far).

    Testing if a computer will go into an infinite loop is fairly trivial is the memory of the computer is limited (like it is for all normal computers) and the input data is of limited length and known in advance.

    However for this to be a practival approach the memory and the input data must be a limited to only a handful of bytes, or the program may run very, very, very long.

    CAPTCHA: erat - A rodent that was created in the marketing department of a Web1.0 company.

  • DavidB (unregistered)

    I've been on this site for several years and this is the first time I ever actually stared, wide-eyed and terrified, and audibly spoke the words, "WTF!?"

  • bar (unregistered) in reply to ThingGuy McGuyThing

    You're looking at the installation package dependency graph for it.

  • Ben (unregistered) in reply to ThingGuy McGuyThing
    ThingGuy McGuyThing:
    Can anyone recommend a good dependency grapher that actually groups dependencies intelligently?

    Sure. You need something called an "intern."

  • Dan (unregistered) in reply to amischiefr
    amischiefr:
    That is the most beautiful thing I have ever seen *tear*. That thing should be hanging next to the Mona Lisa.

    No, this is abstract art. It belongs next to that brown smear in Munich.

  • Rob Jellinghaus (unregistered)

    This probably would be a mess no matter what visualization you used, but it's a little unclear that X-Ray ever produces nice visualizations in the circle layout. http://xray.inf.usi.ch/xray.php#classDependencyViewXray.png certainly doesn't look much better than this example, and without a nice-looking example, the jury is out on whether even a beautifully layered system would look nice viewed this way....

  • bytemaster (unregistered)

    It is not the death star -- this is what happens when you try to add the iGenesisTorpedo interface onto one of your core classes.

  • (cs)

    Is there some tool you can run to produce this? I am not familiar with it. I can try and do the same on some of our apps.

    On our database we have purposely (client request) not maintained any foren key relationships. Make it easier to insert data and also all those peskey errors gone.

  • C-Octothorpe (unregistered)

    It looks like blood...

  • (cs)

    If you think that's bad, what about an enterprise application where the dependencies are hidden in various cron jobs, procmail recipes, shell scripts, Perl scripts, PHP scripts, and Java programs, none of which reference each other but all of which depend on the others to run at specific times for specific intervals. I doubt there's a code analyzer alive that could represent this mess visually.

  • Joe (unregistered)

    The little blue box that was drawn to represent what area was zoomed in on is not accurate. The box should be twice as big, and moved up and to the left a little to accurately represent the area zoomed in on.

  • (cs) in reply to Nagesh
    Nagesh:
    On our database we have ... not maintained any foren key relationships. Make it easier to insert data and also all those peskey errors gone.
    Because if you don't see the errors, they must be gone.

    That's kind of like only using scripting languages so you can avoid all those pesky compiler errors.

  • C-Octothorpe (unregistered) in reply to Nagesh
    Nagesh:
    Is there some tool you can run to produce this? I am not familiar with it. I can try and do the same on some of our apps.

    On our database we have purposely (client request) not maintained any foren key relationships. Make it easier to insert data and also all those peskey errors gone.

    I'm in a similar situation where none of the tables have relationships, have about 6 different naming conventions, and about 1/3 isn't being used anymore, maybe (and I'll let you guess which tables those are). Oh, and I'll make the code so archaic in design (if you can call it that), that it makes you want to beat the original developer with a book on programming. Oh, and the most funnest part, about 60% of the database access is done via string contatenation. Oh, oh oh, AND formatting is done at the DB-access level, meaning that calling the data access classes returns you formatted HTML...

    Don't worry guys, I've already started compiling a list of [s]fecal[s/] code samples for submission soon. I just want a few more, and to anonymize it.

    Here's a taste: a "User" object, traditiionally stored in session, actually exists as a public static variable in some base class. It's used as a session object for the currently logged in user...

    Oh, and if it wasn't obvious, it's a web application (ASP.NET).

    /rant

  • Sarah (unregistered) in reply to BlueKnot
    BlueKnot:
    I like the little red arrow at the top:

    YOU ARE HERE.

    That is not where you are, that is where you NOT want to be... Just like where every other arrow in there is pointing, you do not want to be there..

  • (cs) in reply to boog
    boog:
    Nagesh:
    On our database we have ... not maintained any foren key relationships. Make it easier to insert data and also all those peskey errors gone.
    Because if you don't see the errors, they must be gone.

    That's kind of like only using scripting languages so you can avoid all those pesky compiler errors.

    If it not broke, why fix it? It works and serving client purposes every day. I am not in favour of one over other. Foren key or no foren key doesn't matter to me. For record, I inherit maintenence work on application; did not create it.

  • (cs) in reply to C-Octothorpe
    C-Octothorpe:
    Nagesh:
    Is there some tool you can run to produce this? I am not familiar with it. I can try and do the same on some of our apps.

    On our database we have purposely (client request) not maintained any foren key relationships. Make it easier to insert data and also all those peskey errors gone.

    I'm in a similar situation where none of the tables have relationships, have about 6 different naming conventions, and about 1/3 isn't being used anymore, maybe (and I'll let you guess which tables those are). Oh, and I'll make the code so archaic in design (if you can call it that), that it makes you want to beat the original developer with a book on programming. Oh, and the most funnest part, about 60% of the database access is done via string contatenation. Oh, oh oh, AND formatting is done at the DB-access level, meaning that calling the data access classes returns you formatted HTML...

    Don't worry guys, I've already started compiling a list of [s]fecal[s/] code samples for submission soon. I just want a few more, and to anonymize it.

    Here's a taste: a "User" object, traditiionally stored in session, actually exists as a public static variable in some base class. It's used as a session object for the currently logged in user...

    Oh, and if it wasn't obvious, it's a web application (ASP.NET).

    /rant

    Sometime we inherit such things.

  • G (unregistered) in reply to pjt33
    pjt33:
    A graph is planar iff it doesn't (transitively) contain an instance of K5 (the complete graph of 5 vertices) or K3,3 (the familiar graph with three houses and three utility companies). I would expect that very few projects, let alone complex ones, have planar dependency graphs.

    LMFTFY:

    A graph is planar iff it does not contain a subgraph that is homeomorphic to K_5 or K_{3,3}...

  • Cowboy BeBop (unregistered)

    Yall are chicken s h i t. Its called job security yo.

    capcha: genitus- (add perverted joke here)

  • Fats Geronimo (unregistered) in reply to C-Octothorpe
    boog:
    Nagesh:
    On our database we have ... not maintained any foren key relationships. Make it easier to insert data and also all those peskey errors gone.
    Because if you don't see the errors, they must be gone.

    That's kind of like only using scripting languages so you can avoid all those pesky compiler errors.

    C-Octothorpe:
    Nagesh:
    Is there some tool you can run to produce this? I am not familiar with it. I can try and do the same on some of our apps.

    On our database we have purposely (client request) not maintained any foren key relationships. Make it easier to insert data and also all those peskey errors gone.

    I'm in a similar situation... (lots of words)

    /rant

    Wait...Do you guys think Nagesh is a real person?

  • Dan (unregistered)

    Would be interesting to see what this software would output when given Magento. That app's a abstracted class nightmare|!

  • Gary (unregistered) in reply to C-Octothorpe
    C-Octothorpe:

    I'm in a similar situation where none of the tables have relationships, have about 6 different naming conventions, and about 1/3 isn't being used anymore, maybe (and I'll let you guess which tables those are). Oh, and I'll make the code so archaic in design (if you can call it that), that it makes you want to beat the original developer with a book on programming. Oh, and the most funnest part, about 60% of the database access is done via string contatenation. Oh, oh oh, AND formatting is done at the DB-access level, meaning that calling the data access classes returns you formatted HTML...

    Don't worry guys, I've already started compiling a list of [s]fecal[s/] code samples for submission soon. I just want a few more, and to anonymize it.

    Here's a taste: a "User" object, traditiionally stored in session, actually exists as a public static variable in some base class. It's used as a session object for the currently logged in user...

    Oh, and if it wasn't obvious, it's a web application (ASP.NET).

    /rant

    Gosh, this sounds an awful lot like my handiwork. Glad to see it's still being worked on. The production database wouldn't be called sitdev2 would it?

  • (cs) in reply to Nagesh
    Nagesh:
    boog:
    Because if you don't see the errors, they must be gone.
    If it not broke, why fix it?
    I made no such recommendation; I was mocking the whole "if you don't see errors, they aren't there" silliness. Ever hear of this "data integrity" thing?
    Nagesh:
    For record, I inherit maintenence work on application; did not create it.
    Fair enough; then my still-valid statements apply to your predecessor instead.
  • (cs)
    Fats Geronimo:
    Wait...Do you guys think Nagesh is a real person?

    Why do you think I am not real? I am more realer than you, unregistred clown.

    Akismet, stop clowning around!!! Akismet is devil.

  • anon (unregistered) in reply to Nagesh
    Nagesh:
    On our database we have purposely (client request) not maintained any foren key relationships. Make it easier to insert data and also all those peskey errors gone.

    Why don't you allow foreign relationships in your database? Are you some kind of xenophobe?

  • (cs) in reply to boog
    boog:
    Nagesh:
    boog:
    Because if you don't see the errors, they must be gone.
    If it not broke, why fix it?
    I made no such recommendation; I was mocking the whole "if you don't see errors, they aren't there" silliness. Ever hear of this "data integrity" thing?
    Nagesh:
    For record, I inherit maintenence work on application; did not create it.
    Fair enough; then my still-valid statements apply to your predecessor instead.

    (Deadline > Data Integrity)!

  • (cs) in reply to anon
    anon:
    Nagesh:
    On our database we have purposely (client request) not maintained any foren key relationships. Make it easier to insert data and also all those peskey errors gone.

    Why don't you allow foreign relationships in your database? Are you some kind of xenophobe?

    I have six different phobias and fear of foren devil is not amongst them.

  • (cs) in reply to Sarah
    Sarah:
    BlueKnot:
    I like the little red arrow at the top:

    YOU ARE HERE.

    That is not where you are, that is where you NOT want to be... Just like where every other arrow in there is pointing, you do not want to be there..

    If you want to post unregistered, at least stop pretend to be girl.

  • (cs) in reply to Nagesh
    Nagesh:
    (Deadline > Data Integrity)!
    It's funny that you suggest the two are mutually exclusive. It speaks volumes of your design abilities.
  • C-Octothorpe (unregistered) in reply to Gary
    Gary:
    C-Octothorpe:

    I'm in a similar situation where none of the tables have relationships, have about 6 different naming conventions, and about 1/3 isn't being used anymore, maybe (and I'll let you guess which tables those are). Oh, and I'll make the code so archaic in design (if you can call it that), that it makes you want to beat the original developer with a book on programming. Oh, and the most funnest part, about 60% of the database access is done via string contatenation. Oh, oh oh, AND formatting is done at the DB-access level, meaning that calling the data access classes returns you formatted HTML...

    Don't worry guys, I've already started compiling a list of [s]fecal[s/] code samples for submission soon. I just want a few more, and to anonymize it.

    Here's a taste: a "User" object, traditiionally stored in session, actually exists as a public static variable in some base class. It's used as a session object for the currently logged in user...

    Oh, and if it wasn't obvious, it's a web application (ASP.NET).

    /rant

    Gosh, this sounds an awful lot like my handiwork. Glad to see it's still being worked on. The production database wouldn't be called sitdev2 would it?

    I wish I could attribute this pile of madness to you, or to just one person... Unfortunately this is the result of many people, all of whome have a very tenuous grasp on OOP, C#, and probably standing upright too. This is bad design, on top of terrible understanding, on top of band-aid, on top of misunderstanding, with a cherry on top.

    I mean, here is a paraphrased line of code:

    string someStringVal = "whatever";
    
    string otherString = (string)someStringVal.ToString();
    

    Now, if the above doesn't just scream "I don't know what the hell I'm doing", then I don't know what does...

  • C-Octothorpe (unregistered) in reply to Nagesh
    Nagesh:
    Sarah:
    BlueKnot:
    I like the little red arrow at the top:

    YOU ARE HERE.

    That is not where you are, that is where you NOT want to be... Just like where every other arrow in there is pointing, you do not want to be there..

    If you want to post unregistered, at least stop pretend to be girl.

    This ^^

  • (cs) in reply to Fats Geronimo
    Fats Geronimo:
    Wait...Do you guys think Nagesh is a real person?
    Of course not. Everyone knows that the real Nagesh is unregistered.
  • Mike (unregistered)

    Anyone know of a good && free tool for C# for generating such diagrams?

  • free-range user (unregistered) in reply to Nagesh
    Nagesh:
    boog:
    Nagesh:
    boog:
    Because if you don't see the errors, they must be gone.
    If it not broke, why fix it?
    I made no such recommendation; I was mocking the whole "if you don't see errors, they aren't there" silliness. Ever hear of this "data integrity" thing?
    Nagesh:
    For record, I inherit maintenence work on application; did not create it.
    Fair enough; then my still-valid statements apply to your predecessor instead.

    !(Deadline > Data Integrity)

    FTFY

  • Ãâ€Ëà (unregistered)

    That POS dependency has Nagesh written all over it.

  • Ãâ€Ëà (unregistered) in reply to anon
    anon:
    Nagesh:
    On our database we have purposely (client request) not maintained any foren key relationships. Make it easier to insert data and also all those peskey errors gone.

    Why don't you allow foreign relationships in your database? Are you some kind of racist?

    FTFY... and yes he is.

  • Alex (unregistered)

    Looks like a rubber band ball.

  • (cs) in reply to boog
    boog:
    Nagesh:
    (Deadline > Data Integrity)!
    It's funny that you suggest the two are mutually exclusive. It speaks volumes of your design abilities.

    AGREED SOMEWHAT. That's why Nagesh not make equal to 200 K US Dollars per year like boog.

  • (cs) in reply to free-range user
    free-range user:
    Nagesh:
    boog:
    Nagesh:
    boog:
    Because if you don't see the errors, they must be gone.
    If it not broke, why fix it?
    I made no such recommendation; I was mocking the whole "if you don't see errors, they aren't there" silliness. Ever hear of this "data integrity" thing?
    Nagesh:
    For record, I inherit maintenence work on application; did not create it.
    Fair enough; then my still-valid statements apply to your predecessor instead.

    !(Deadline > Data Integrity)

    FTFY

    Wow real clever use of the apostrophy mark.

  • (cs) in reply to Dan
    Dan:
    amischiefr:
    That is the most beautiful thing I have ever seen *tear*. That thing should be hanging next to the Mona Lisa.

    No, this is abstract art. It belongs next to that brown smear in Munich.

    You mean Berlin?

Leave a comment on “Enterprise Dependency: Big Ball of Yarn”

Log In or post as a guest

Replying to comment #:

« Return to Article