- Feature Articles
- CodeSOD
- Error'd
- Forums
-
Other Articles
- Random Article
- Other Series
- Alex's Soapbox
- Announcements
- Best of…
- Best of Email
- Best of the Sidebar
- Bring Your Own Code
- Coded Smorgasbord
- Mandatory Fun Day
- Off Topic
- Representative Line
- News Roundup
- Editor's Soapbox
- Software on the Rocks
- Souvenir Potpourri
- Sponsor Post
- Tales from the Interview
- The Daily WTF: Live
- Virtudyne
Admin
Paula did not write this It is NOT in VB It is NOT in XML It is NOT on a wooden table This post is FIRST If I squint, it reminds me a little of "Irish Girl"
It is PERFECT!
Admin
not FRIST darn
Admin
Ok, which one of those central classes is named "String"?
Admin
It's a map of Europe!
Admin
No, it's a map of the Falkland Islands, oddly enough.
Admin
seriously... how can i missed that... i can see my house from here...
Admin
"Number of classes" is a pretty blurry metric for measuring code maintainability IMO. For example, which would you rather have: 20 classes that are very limited in responsibility, or 1 behomoth that does the job of those 20? A lot of classes is not a problem if your dependency diagram is relatively flat. Now, if your graph looks like the Empire State Building or a buckyball, you may have a problem.
Admin
Admin
I must not fear. Fear is the mind-killer. Fear is the little-death that brings total obliteration. I will face my fear. I will permit it to pass over me and through me. And when it has gone past I will turn the inner eye to see its path. Where the fear has gone there will be nothing. Only I will remain.
Repeat the mantra:
I must not fear. Fear is the mind-killer. Fear is the little-death that brings total obliteration. I will face my fear. I will...
Arrrgh! Again, again... must. not. give. hope.
I must not fear. Fear is the....
Hey, wait a minute, it's not so bad. I am not the one in charge of that mess. Oh, I love my life.
Admin
The pic initially reminded me of when the Death Star destroyed Alderaan. Maybe the bits at the bottom could be imperial cruisers parked nearby to watch the 'show'.
Admin
Why can't I click on it for a full-sized version?
Admin
Preservation of sanity.
Admin
Remember more enterprisey systems meaning more employment. Simple economics diktate that we must have complex system so that entire civilisaton will stay employed.
Idle minds are workships for Shaitan. That is means that we must keep all minds ocupied and this diagram just does that.
Who's for employment? Madarchod!!!
Admin
Holy crap, there's a class for each symbol on the ASCII table there.
Admin
Looks like the results of a "I read on the internet that patterns are good, so I implemented them all" kind of reasoning.
How do you like my Model-View-View-Presenter-Model-View-Controller enterprise bus factory concern-separated service oriented piece of overexpensive unworking junk? Yes you have to press "Retry" when windows fail to load or when your screen starts to cry tears of blood, and the texts are in cyrillic, but it's just a small bug in the asynchronous transvertical resource manager service.
But see, when you turn the mouse wheel, it switches from WPF to Silverlight then Metro then WinForms then Telescript then back to WPF again. Nice isn't it?
Admin
That's a good point. One of the nice things about Scala compared to Java is that in Scala it's trivial to create a ton of classes that do something trivial, at no extra maintainance overhead. Not requiring a file per class is an enormous help there.
I doubt that's really the case here, though.
Admin
1700 classes aren't that many. I've worked on far larger systems that were mostly OK.
But those three classes that seem to have at least a hundred dependencies each... those scare me.
Admin
Admin
On the first sight, I thought I was looking at a map of some unknown country.
Admin
Good points.
Also makes you wonder about the "easy-to-support legacy system which had around 100 classes". While I agree on the dangers of over-architecting, 100 classes sounds like the other end of the spectrum. Easy-to-support doesn't necessarily translate to quality code.
Executives don't typically fund wall-to-wall rewrites unless there's a real need. If may have been easy-to-support, but did it scale to the performance and availability needs? How much maintenance did it require? How easy was it to add new feature blocks?
Admin
Deep within the bowels of the system Codethulhu sleeps, waiting till the epoch time is right.
Captcha: odio - The spanish version of the "Day-o" song
Admin
If you stare at it's miserable heart long enough, you can faintly make out something which looks like "V...GER".
Admin
Admin
This raises so many pressing questions, like what's with the tiny, logical section at the bottom, and when will this be made available in desktop size?
Admin
I imagine one of the code reviews went like this:
Q: "Where did you get the IEnterpriseAuthenticationProvider?"
A: "It fell of a IEnterpriseAuthenticationProviderFactory"
Q: "Where did the IEnterpriseAuthenticationProviderFactory come from?"
A: "It fell off of a IEnterpriseAuthenticationProviderFactoryManagementFactory"
Admin
Creating a new Java class in a modern IDE is an absolute triviality and a matter of seconds (still no laughing matter, though ;-)
And the Java requirement of a file per class is something you have invented.
A file can contain as many private java classes as you like.
Even the requirement of only one public class per file is not really enforced by the Java Language Specification:
Admin
It's actually a fractal, so it looks the same at all levels of zoom.
Admin
Seriously, Next Generation. Who's gonna question that?
Admin
Factories inside factories?
Factory-ception.
Or, if you prefer:
Hey dawg, I heard you like factories, so I put a factory in your factory so you can create objects while you create objects!
Admin
It's possible the the legacy system had poor architecture but was decently coded in other respects. Someone who is capable of transforming 100 classes into 1700 probably suffers from at least a little hubris and that may have lead them to condemn the legacy code.
Admin
Admin
The point is that complexity within a class and complexity of relationships between classes are both matters of concern. It seems to have become very fashionable to worry mostly about the first and hardly at all about the second. And that is every bit as bad as doing it vice versa.
Admin
The company needs an architect to derive abstract models from the full picture. That will reduce complexity of the mapped problem to a reasonable level. There seem to be systematic naming conventions, suggesting the implementors were disciplined and rigorous. Design Patterns are a public domain, which aids comprehension and eases up maintenance.
There should be apparent a set of independent isolated autonomous coherent units as separate jars (Java Archives) that are later imported and used by other code. I'd like the job of re-engineering the architecture for this project from what there is. It's the Divide & Conquer kind of a game, which is fun.
Admin
You mean a class for every Unicode code point, surely?
There's FAR too many classes to cover just the ASCII table :)
Admin
Admin
I once worked in a project with such a graph... but it was a dependency graph! I didn't know there were so many Java libraries until that moment.
Admin
You know, for all the flak that "enterprisey" code gets, keep in mind it's a GOOD thing to have abstractions. True, you don't need the
type of things, but it's usually considered good practice to have a lot of interfaces that get passed around - in fact doing such things is the foundation of good design (see Robert C. Martin's SOLID principles).Having few classes is often worse than having many, because chances are those classes violate the SRP and do more than one thing. Granted, something like the illustration here is outright ridiculous and way too complicated, but it's not always a bad thing to have a lot of abstractions.
Admin
I don't remember what I used before Visual Studio or Eclipse to write my code under Windows (probably UltraEdit), but I'm quite sure it wasn't Notepad. Actually now that I have absolutely no reason to use it, I started to like it, in a nostalgic way: it's there to remind me why I hated Windows so much (while still using it) back in the days: it does the smallest subset of things it is supposed to do, but in the worse possible way.
Doesn't know how to cancel. Well yes it does, but just one time. Next time you cancel, it cancels the cancellation. Deeeep!
Doesn't lock files when modifying it. You can open it, and it can get deleted. You still have it. It won't tell you anything if you save a deleted file: if you modified it, it will recreate it. If you didn't, it will just do nothing, keeping you in the warm illusion that your file still exists.
Uses Ctrl+keystrokes. But if you're in a foreign language OS, it's all wrong. In Spanish for instance, Ctrl-G saves, Ctrl-A opens, Ctrl-B finds, Ctrl-R replaces, Ctrl-E selects all. Try to work with this. To its defense, some other Microsoft apps (Explorer, Office) use this retarded way of thinking localization.
Doesn't know how to select a word by double-clicking it. Well yes it does, but the set of characters it considers as word separators is completely different for that of any other existing tool.
Also, it has absolutely no functionality, but it has this entry in a menu to insert the current date and time. So it's a completely useless program, unless you want to rapidly insert the current date and time in a text file. In this case, it's the bomb.
Admin
I think they have misunderstood the term "cloud computing". It looks like one, but...
Admin
Good luck printing that out. I don't think it would be legible as an E size engineering drawing.
Admin
This looks like my latest outbreak of HPV.
Admin
Admin
Admin
If you look closely, you can see the Higgs-Boson.
Admin
Enterprise Shrubbery
Admin
Europe is abstract too. It's a fading concept.
Admin
Hubris, check.
Don't get me wrong, I agree with the general thread that the thing looks like an over-engineered beast. Doesn't seem to be any agile 'build what you know you need' evident. My point is that large systems do this kind of refactoring, and get funding, for a reason -- not just because someone thinks its cool.
Admin
Admin
Wait a bit and all that will be left will be the fake smile of phony politics.
Admin
You ask how well the old system scaled to performance and availability needs, maintenance, ease of adding new features, blah blah, but these things are rarely, if ever, measured correctly and impartially when considering a Shiny New Technology. The novelty of something new is too much to resist; people who buy into the hype (executives and programmers alike) will convince themselves they are being fair, when they're unwittingly misrepresenting the actual costs of the current system, and vastly underestimating the total costs of the new system.
I'm not saying you're wrong, just that it happens more often than you'd think.