Mapping/Understanding System Complexity? 63
thesandbender asks: "I've recently inherited a project to 'simplify' the application environment for a company that has 1600+ service offerings (many of these are product 'foobar' that has options (like 'Alpha', 'Bravo', 'Charlie', and so forth) available. I am trying to map out the applications' dependencies from a technological and a business standpoint. I would like to designate a group of applications as depending on concepts, technologies (like SAN, DB2 and AIX), specific customers (like 'Bravo' and 'Charlie') and legacy applications. Basically, I want to define any number of arbitrary dependencies and then be able to map them out in a graphical format. With those maps I can show the business oriented staff how removing one application will affect other applications, and I can show the technically oriented staff how removing one system will affect other systems or applications. Has anyone in the Slashdot community run across such a tool? If you haven't, have you run across the need for such a tool? What would you want from it so that I can fashion a usable tool that addresses everyone's needs and not just my own?"
"The most appropriate tool-sets I've found to date are 'mind mapping' or 'concept mapping' tools. All of the tools I've found so far only allow me to create any number of ideas or concepts and don't allow for arbitrary, searchable and/or mappable attributes (e.g. Application 'foo' maps to attributes 'SAN', 'Java', 'Solaris' and 'Buy-Side') that would allow me to create hard and soft groupings that were based on defined attributes (e.g. I could ask for a cloud of all objects that share a specific technical attribute, and another cloud of objects that share a specific business attribute)."
Re:degfbdsgf (Score:3, Insightful)
Re:degfbdsgf (Score:2)
Agreed - slashdot may not be a good (or sane) place for legal advice, but if there's FOSS out there to do a task, someone on
Although not designed for that problem (Score:4, Informative)
These tools map attributes in records to other attributes in other records. They're designed to then turn these maps into SQL code, but that part isn't important here. What is important is that you can create a full relationship mapping between entities. If you then treat the direction of the relationship as showing the dependency, you can map all the dependencies in the system.
Managers like diagrams to be of a format that are familiar to them, so anything that is "better" from a technical standpoint but "less familiar" to managers from an experience standpoint is, in fact, not as good of a solution.
Re:Although not designed for that problem (Score:2)
Re:Although not designed for that problem (Score:1)
Graphviz (Score:5, Informative)
To use it, you create a text file that defines all your dependencies, it'll look something like this:
digraph thingies {
"app1" -> "SAN";
"app1" -> "Java";
"client1" -> "app1";
}
You can then go on to group things together so they show up in meaningful locations on the diagram,
associate pictures with certain nodes, put labels on things, make things in colour, etc.
GraphViz takes care of the laying out parts (where best to put nodes and edges). Sometimes it takes
a while to define everything in format that gets draw neatly, the results are often impressive and
very useful.
On coming to a new job, I've used it to draw all the dependencies between a collection of a couple
of hundred SQL stored procedures in our database. The locals were horrified to have what they all
knew in their gut depicted to them on 35 A3 sheets of paper on a wall
identifying things recursive calls ("Oh, *thats* why that proc sometimes never ends...").
Re:Graphviz (Score:2)
Re:Graphviz (Score:1)
I'd imagine it would look something like this [venganza.org]
Re:Graphviz (Score:1)
Thankfully I have access to 48x60 plotters and I know I'll be using them
Re:Graphviz (Score:2)
can come out of GraphViz can be huge (i.e. 100,000x100,000 pixels), they can be quite difficult to deal
with sometimes, the GUI these guys have written can deal with even huge graphs pretty snappily.
Re:Graphviz (Score:2)
I've recently been using Graphviz with gprof and gprof2dot.awk to map out some really crufty old code. It's really illuminating.
However, what I'd really like to be able to do is have it animated, showing nodes and edges in the graph as they become activated (slowed down from real time, of course and reducing super-repetitive actions logarithmically).
A web application for this kind of graph layout and animation using SVG would be widely applicable, not just to visualizing call trees for computer programs,
Re:Graphviz (Score:1)
Relicore Clarity (Score:1)
Re:Relicore Clarity (Score:2)
Thanks for pointing thi
Why don't you just use a wiki? (Score:1)
I recomend one that handles "backlinks" (ie: what are the pages that point to this page?)
Using a wiki, I would add one page per Application, describing it and linking to its neighbor applications. I would also add one page for each attribute (like: Java, or Windows, or something like that), one page for each software group (might be related to the one before) and one page for each type of category (for instance: platform, application, development group).
You can even use the hability of some wikis to do
Re:Why don't you just use a wiki? (Score:2)
I installed a wiki for the helpdesk and decided to create another one for the SA team. The linking alone has helped us tremendously. I've also created a system profile template wiki entry that can be copied and pasted and used by operators to help us document the systems.
Let me know if anyone wants a copy of the tem
"Complexity kills" (Score:2, Interesting)
There is actually a rigorous definition of complexity that is actually stated in terms of software: Kolmogorov complexity. Kolmogorov complexity is the size of the shortest program that produces, precisely, a given output. The number of bits in that program is the Kolmogorov complexity of the output. This is actually a very useful way of viewing system complexity in the case o
Re:"Complexity kills" (Score:2)
Re:"Complexity kills" (Score:2)
My statement about the quality of knowledge being defined by its approximation to the Kolmogorov complexity of the world it represents holds.
A program specification is executable "in theory" (I did put it precisely that way for a reason). Programmers still have jobs to do and the closer they come to the Kolmogorov complexity of the specification within the computation constraints, the better quality their implementation.
Re:"Complexity kills" (Score:2)
An analogy, I read that every Rubic's cube is solvable in N steps (24 moves or something) but that humans have to use more elaborate chains of steps so they can get their heads around the solution.
Even though a smaller program is better just because there's less to comprehend for the human brain. Sometimes smallness creates its own complexity from
Re:"Complexity kills" (Score:2)
Rubic's cube isn't really a very good example of the kinds of problems people solve in the real world. It has too many "group symmetries". I like symmetry as much as the next guy -- believe me, more actually [kuro5hin.org] -- but be reasonable.
But even in those special instances where one has a Rubic's cube kind of problem, the proof that it is solvable in a
Re: "Complexity kills" (Score:3, Insightful)
Re: "Complexity kills" (Score:2)
Second, if you followed the links you'll see that I did discuss using the multi-lingual aspect of Wikipedia to discover language independent properties
bollocks (Score:2)
this is utter crap. you know little to nothing about what you're talking about.
the troll, and i agree it is a troll, asks for a compressed form of a given large natural language text. nothing is said about compressing or analysing for compression any given input. this is not NP-hard, and indeed has nothing to do with NP. there is no input, no input size and no reference at all made to computation cost.
any CS student with some programming knowledge and a text
Re:"Complexity kills" (Score:1)
I just have a problem with the architect of Lotus Notes proclaiming: "Complexity kills".
Re:"Complexity kills" (Score:3, Informative)
I've yet to see any "cannnonical" representation that can be used for this purpose. "Kolmogorov complexity" is not useful for the
Re:"Complexity kills" (Score:2)
Re:"Complexity kills" (Score:2)
Re:"Complexity kills" (Score:2)
But for large programs, the size of the encoding is not significant, and decreases to irrelevant with increasing program size.
Put simply, if you have a really efficient encoding ("A") of some program, you can use it to represent the program in any other encoding that's required ("B") by using your efficient encoding as data, input to an interpreter for that encoding (you might also view the interpreter as a decompressor).
You mention lambda calculus as something that's way too long a
Re: "Complexity kills" (Score:2)
Could you give us a source on that theorem, please?
Simple (Score:5, Funny)
When I get an assignment like this, I try to take a proactive stance. First, I add the project to my action item list. Then I formulate a list of stakeholders in the project. Then I call a meeting to open a dialog between the stakeholders and myself. After drilling down and making sure we're all on the same page, I draft a scope document. When I'm satisfied with the scope document, I hold a sidebar meeting to touch base with the shareholders and verify the document meets their requirements.
Usually by that time the project gets assigned to someone else.
Freemind (Score:1)
Re:Freemind (Score:2)
Visio (Score:1)
Re:Visio (Score:2)
I think the user is looking more for a simple programming language or layout specification (like you do in TeX) in which he can write his stuff easily and orderly. Then the output gets automagically and dynamically generated and all he needs to do is make it look nice (for manager
Cytoscape (Score:1)
ModelA-Charlie dependsOn ModelQ
ModelQ requires Java
etc.
You can visualize, interact with and edit the resulting network and even do some advanced analyses, such as network clustering which would tell you which families of projects you have.
It is written in Java and is LGPL.
How About System Tools Like Causal Loop Modeling? (Score:1)
The Method (Score:2)
beware though, it's a method, not a bible, use from it what works for you.
Can't help you to links, find a buddy who works there.
Graph Visualization & Layout problem (Score:2)
Some of the better commercial packages are from Tom Sawyer, AiSee, Ilog and yWorks.
ITIL : CMDB (Score:1)
Re:ITIL : CMDB (Score:1)
Maping Complexity (Score:1)
Programs:
Agna (Benta, I. (2002, 2003). Agna Proj
Been there, done that, don't wanna go back, but: (Score:2)
My company is a polyglot conglomerated transmogrification of several gov't contracts, divisions of previous contractors whose contracts were consolidated, organizational divisons both on gov't and corp sides. We had the same problem as budget cuts forced us to compress.
The data trail identifies sets of data from their origin points thru every app and person that touches the data, making special note of decision points. A decision p
Mod parent up... (Score:1)
APM (Score:1)
This is called application portfolio management (APM). As other people have said in the thread, it basically involves mapping the applications and their dependencies onto a graph. Then you can use the graph to build reports, perform searches, visualize the structure, etc. The company I work for (http://www.metallect.com/ [metallect.com]) does exactly this, and the website has much more info about it.
Mindmapping and concept mapping (Score:1)
3D Topicscape; Aviz Thought Mapper; Axon Idea Processor; BrainMine; Claro Concepts; Concept X7; ConceptDraw Mindmap; Conception & InterModeller; Freemind (SourceForge); Headcase; Hypersoft-net; I-Navigation; InfoPro (ZPAY); InfoRapid KnowledgeMap 2005e; Inspiration Software