• My Name (unregistered) in reply to My Name
    My Name:
    Phil:
    Herby:
    But wait there's more. This is a job for http://turbosnakedraincleaner.com/

    Somehow Akismet thinks that this is spam in a shortened form so I am including this sentence.

    turbo's naked rain cleaner?

    Just like penis land on censored.

    Sometimes, one should use the preview properly. Correct URL: http://penisland.net

    And no, it's not spam.

  • Nooooo (unregistered)

    Is that morse code at the bottom of the fish-looking one? It almost spells out "S.O.S." in long and short class/module names. Poor thing.

    Poor people whose continued employment is contingent upon being able to interact with some or all of this poor thing.

    CAPTCHA: ratis. Felis Ratis, is your taxonomic nomenclature... ah, forget it.

  • Goo (unregistered) in reply to SQLDave
    SQLDave:
    I can't get this magic eye thing to work. What's it supposed to be?
    A tyrannosaur.
  • (cs) in reply to LieutenantFrost
    LieutenantFrost:
    Amateurs. I can still see the light of day through that dependency graph. Behold our enterprise-ness and despair:

    http://img222.imageshack.us/img222/7504/tes0001.jpg

    (Warning...not for the faint of heart.)

    MY GOD! IT'S FULL OF MODULES!

  • Michel Renaud (unregistered)

    Reminds me of some graphs representing neural networks in SNNS (Stuttgart Neural Network Simulator.)

  • frits (unregistered)

    Who hasn't created a diagram like this?

  • Dorothy Sayers (unregistered) in reply to Patrick S
    Patrick S:
    John Doe:
    Looks like something a cat would LOVE to play with...

    Are you kidding? That looks like something that would eat the cat! Especially the one in the featured comments.

    It looks more like something the cat would cough up!

  • (cs) in reply to David Wright
    David Wright:
    LieutenantFrost:
    I uploaded a high-res version to imageshack earlier, but it seems that the pic was hijacked. ...

    It seems to have moved to http://img510.imageshack.us/f/tes0000.jpg/

    If you click on the image, you get the hi-res version - which if you save locally turns out to be a 6358 x 4706 image. 10 MPixels high enough res for you? And yes you CAN read the names on all the boxes.

    Your image looks like a collection of class diagrams from (possibly) a single assembly, which is a completely different thing from the article, which is a dependency graph for multiple assemblies. I'm not sure which is worse, but they both suck. At least deployment is easier for yours.

  • (cs) in reply to frits
    frits:
    Your image looks like a collection of class diagrams from (possibly) a single assembly, which is a completely different thing from the article, which is a dependency graph for multiple assemblies. I'm not sure which is worse, but they both suck. At least deployment is easier for yours.
    I hate to break your heart, but this graph actually covers about fifteen assemblies that make up the core of our system.

    And don't get me started on our deployment process. That's another bag of WTFs entirely.

  • Sock Puppet 5 (unregistered)

    Diagrams like that are the kind of garbage that they teach in Business Information Systems classes. Anyone coming from that kind of background has no business being an architect.

  • golddog (unregistered)

    When Rube Goldberg looks at your solution and says, "isn't that a bit much?", you've not come up with something which should be celebrated.

    Time to get work refactoring.

  • My Name (unregistered) in reply to LieutenantFrost
    LieutenantFrost:
    frits:
    Your image looks like a collection of class diagrams from (possibly) a single assembly, which is a completely different thing from the article, which is a dependency graph for multiple assemblies. I'm not sure which is worse, but they both suck. At least deployment is easier for yours.
    I hate to break your heart, but this graph actually covers about fifteen assemblies that make up the core of our system.

    And don't get me started on our deployment process. That's another bag of WTFs entirely.

    You seem to have quite a bunch of WTFs at hands. Why don't you go and submit some to TDWTF? That is, assuming you haven't already done that.

  • tex (unregistered)

    Reminds me the hidden dimensions of the string theory.

  • (cs) in reply to Anon
    Anon:
    I'm going to post this as Anon because: a) I'm the senior dev at my company and I should know better. b) Worst yet I implore my developers to reduce dependencies on a daily basis.

    The question is simple, how do you avoid the above situation without endlessly duplicating code in all of your assemblies?

    Group namespaces that depend on each other into the same assembly whenever possible. If you have divided responsibilities well between assemblies, this should not be too complicated.

    Having lots of intra-assembly dependencies is a good thing, though. It means you're using OOP. Just keep the abstractions to a minimum and it should be easily controlled.

  • Jerod (unregistered) in reply to bebna

    Here's the link to the Dependency Plotter program that was used to create the post's image. http://www.drewnoakes.com/code/dependancyanalyser/

  • (cs) in reply to frits
    frits:
    Who hasn't created a diagram like this?
    I hate you.
  • (cs) in reply to rycamor
    rycamor:
    My personal axe to grind in all of this is the whole concept of ORM (Object-relational mapping). For data-driven business applications, the relational model offers the only truly logical way to reduce dependencies to their pure minimums while still enforcing requirements.
    I'd rather untangle an OO hairball than a relational one any day, for this one simple reason: intellisense.
  • yetihehe (unregistered) in reply to frits
    frits:
    Who hasn't created a diagram like this?
    Me, I'm still busy making all those classes in my own project, so didn't have time yet to graph them.

    Captcha: plaga. To naprawde jakas plaga :/

  • normntaz (unregistered) in reply to SQLDave

    Looks like an Angler Fish

  • yername (unregistered) in reply to My Name
    My Name:
    My Name:
    Phil:
    Herby:
    But wait there's more. This is a job for http://turbosnakedraincleaner.com/

    Somehow Akismet thinks that this is spam in a shortened form so I am including this sentence.

    turbo's naked rain cleaner?

    Just like penis land on censored.

    Sometimes, one should use the preview properly. Correct URL: http://penisland.net

    And no, it's not spam.

    I really like their slogan.

  • (cs) in reply to LieutenantFrost
    LieutenantFrost:
    Amateurs. I can still see the light of day through that dependency graph. Behold our enterprise-ness and despair:

    http://img222.imageshack.us/img222/7504/tes0001.jpg

    (Warning...not for the faint of heart.)

    Thanks to my superior PHP skills, I was able to simplify your framework to a single function call. You're welcome.

  • Tom Rossen (unregistered) in reply to Patrick S
    Patrick S:
    John Doe:
    Looks like something a cat would LOVE to play with...

    Are you kidding? That looks like something that would eat the cat! Especially the one in the featured comments.

    Bzzt! It's obviously something the cat horked up!

  • Bob (unregistered)

    That looks like the contents of my shorts after giving Cthulhu the hairy eyeball.

    Captcha - "genitus" ... I'm still laughing

  • Kj (unregistered) in reply to LieutenantFrost

    Is that by any chance a certain bank's 'Furball'? ;-)

  • Rein (unregistered)

    TRWTF is that the 'helper class' IEnterpriseAuthenticationProviderFactoryManagementFactory (.NET environment assumed) named as being an interface (prefixed with 'I')

  • (cs)

    Look at it this way... in some circles this could be considered art.

  • (cs) in reply to Goo

    That's a relief! I thought I saw a programmer jumping of a bridge.

  • (cs) in reply to YoMama
    Goo:
    Reply Quote

    SQLDave: I can't get this magic eye thing to work. What's it supposed to be?

    A tyrannosaur.

    That's a relief! I thought I saw a programmer jumping of a bridge.

  • Wil (unregistered)

    IT'S NOT A TOOMA!

  • Mikkel (unregistered) in reply to LieutenantFrost
    LieutenantFrost:
    Amateurs. I can still see the light of day through that dependency graph. Behold our enterprise-ness and despair:

    http://img222.imageshack.us/img222/7504/tes0001.jpg

    (Warning...not for the faint of heart.)

    That looks like our database dependency graph (before the tools gave up on drawing it).

  • (cs)

    Sorry, but at first sight, this actually looks like a pretty well-organized dependency structure. Don't overestimate the possibilities of mapping out moderately nonplanar graphs onto the 2D plane.

    The WTF is in thinking that dependency graphs can be expected to be planar.

  • teemu (unregistered) in reply to LieutenantFrost

    hahahah, you sir, made my day

  • Konrad (unregistered)

    It's the script from "Syriana 2"

  • David (unregistered) in reply to SQLDave

    Ergonomic spaghetti?

  • ms (unregistered) in reply to SQLDave

    It's a schooner

    You Dumb Bastard. It's not a Schooner... it's a Sailboat!

    A schooner is a sailboat, stupid head

  • Did you try and simplify the diagram (unregistered)

    Are you sure that the dependencies don't look bad due to the diagramming tool? Its layout engine may be exacerbating the problem. For instance, something near the bottom is depended on by nearly everything. Is this your logging framework? Or something similar? Maybe just leave it off the diagram. I am not saying that your architecture doesn't need work. Just that this diagram might be overstating the case a little (in my experience they generally make the problem look a lot worse than it really is for any reasonably large system).

  • (cs) in reply to Anon
    Anon:
    I'm going to post this as Anon because: a) I'm the senior dev at my company and I should know better. b) Worst yet I implore my developers to reduce dependencies on a daily basis.

    The question is simple, how do you avoid the above situation without endlessly duplicating code in all of your assemblies?

    The answer isn't that complicated - but for many, the discipline required is difficult.

    I maintain the concept of a 'level' of a library.

    Level 0 libraries use no custom dependencies. They frequently have 'core' in their name.

    Level 1 libraries can use level 0 libraries, but otherwise cannot use custom dependencies.

    You can hopefully see where this is going.

    Also note, if you're distributing your libraries for others to use, one should also avoid using any library someone else made that uses your libraries - unless you're going to take the time to incorporate this library into your own set, such that you're maintaining it, treat it as level infinity. Move functionality from that library to your own, if you have the blessing of that library's author. But that author almost certainly won't be tracking your dependencies, and you won't be tracking his/hers, so don't touch it.

    Likewise, if one of your dependencies starts using your libraries, drop it like the plague it is.

    Most of the times I've initially thought a cyclical dependency would be helpful, I've found there's actually a way to do it better leveraging polymorphism, such that your libraries that would've been depending on each other are depending on the same lower level library.

    The rest of the time, further reflection has shown my perceived need was flawed at its conception - not only did I not need a cyclic dependency, but I didn't even need anything that worked like a cyclic dependency.

    Note: I'm not claiming that there's never a need: there's a great deal of things I have not seen that do exist. I just haven't seen them. But if you follow a discipline like this, you will at the very least be aware if you're creating a cyclic dependency mess, and will thus most likely create a much smaller problem when you do decide to dip into the dark side.

    Also note that I'm not claiming any of the earlier respondents who tried answering this question were wrong, merely that it would be possible to follow their advice and still get off the wrong track without realizing it.

  • incarnator (unregistered) in reply to LieutenantFrost
    LieutenantFrost:
    Amateurs. I can still see the light of day through that dependency graph. Behold our enterprise-ness and despair:

    http://img222.imageshack.us/img222/7504/tes0001.jpg

    (Warning...not for the faint of heart.)

    Very nice!

  • njnjj (unregistered) in reply to LieutenantFrost

    link is dead...

  • Rick Veenstra (unregistered) in reply to SQLDave

    What is a good tool to create these kind of diagrams?

  • Matthew Prestifilippo (unregistered)

    Ah. Classic spaghetti fortress.

  • Joe Blow (unregistered) in reply to LieutenantFrost

    Oh my lord.

  • GeraldDew (unregistered)
    Comment held for moderation.

Leave a comment on “The Enterprise Dependency”

Log In or post as a guest

Replying to comment #:

« Return to Article