Search code examples
recursionsystemnotation

Is there a general notation that can describe any IT system at any scale?


Has anyone ever heard of a general (textual) notation that can describe any IT system at any scale? It should be something that is clearly defined, minimalistic, and can be applied recursively at any scale from website mashups, to network architecture, to software services, to multiple objects and threads inside one process. Something that starts with the basic concepts of storage, communication, and processing, and apply them at all levels.

If such a notation exists, it could be used as the base for a DSL that could programmatically "manage" and "monitor" every and all part of a complex IT system. Then one would need only create a plug-in for every system component, that expose it's functionality into the DSL.

EDIT: It looks like there is no such thing, or I didn't expressed myself clearly. So I'll tell you what I want to do. I want to get into the "website business", but for me, the fun part would be to collect data about everything that happens at all levels of the system, in a central "database", and analyze that data to get insights into what is "happening", to plan my next iteration. Therefore, I want a DSL that can represent any process/structure at any level, so that I can then programmatically access that data to gain "insights". A "Big Brother" kind of thing. Since I want to do this in my new programming language of choice, Scala, something like Nagios or Zenoss Core won't help me much, IMHO.


Solution

  • Since I am not fully sure I understand what you are looking for, but perhaps I may be able to help you with some of the parts you are asking for.

    To go back to the original question

    Has anyone ever heard of a general (textual) notation that can describe any IT system at any scale?

    The answer is yes. There is a notation, both well-defined textual and graphically, named Business Object Notation, or simply BON. BON generally works on two different levels, informal and formal. The informal part basically resembles what is already known from UML, except that it has a well-defined syntax. The formal part drills a bit further down deeper and is used to formalize your system components even more precisely (implementation-wise) by applying first-order logic to define pre- and post-conditions of your components (as well as invariants).

    You should take a look at http://www.bon-method.com/index_normal.htm as well as the actual book written on the BON subjects http://www.bon-method.com/book_print_a4.pdf .

    Furthermore, I should mention that you can get a parser (as well as typechecker) for BON that will enable you to create fancy web-pages for informal charts. This can be found at http://kind.ucd.ie/products/opensource/BONc/ .

    Hope it helps!