Archive for July, 2010

Modelling

Modelling is a very unique ability of humans. The concept of abstracting something, reusing it, and reapplying it to another instance. The ability to close our eyes and imagine watching ourselves from a different corner of the room. The ability to empathise with another human being. It has allowed us to develop language, advance technology and mature civilisation. So how can we continue to use modelling today, in technology, socialising and day to day business?

The Modelling Hierarchy

There are four layers in the modelling hieararchy formerly designated as M0, M1, M2 and M3. If we start from the M0 layer, this is what is real, the keyboard you are touching, the screen you are looking at and the chair you are sitting in.

The M1 layer is the first layer of abstraction. For example, the chair that you are sitting in probably has a design drawing created by the manufacturer and this drawing can be reused to mass produce that same chair, likewise with the keyboard and the computer screen.

The M2 layer is yet another abstraction of the M1 layer. In this case, the drawing may have been constructed with a software CAD tool, or hand drawn by a designer. In both instances, the software CAD tool would have been designed and developed for the use of creating designs for real life objects. For the hand drawn design, pencils, paper, rulers and other drawing tools would have needed to be developed to create the drawing. The tools used to create the design could also be used to create designs of other things like a rubbish bin or a car tyre.

The next layer, M3, is where things get a bit tricky, it is an abstraction of the M2 layer. The best way I can explain this, for the current example, is that it represents the concept of creating real-world objects with raw materials. Alternatively, the M0 layer could also be described as a model of a model of a model, or meta-meta-model.

To make things clearer, let’s apply the modelling hieararchy to another concept, language. Starting at the concept of language and communication, the M3 layer. We can instantiate this by creating rules for language. i.e. there should be nouns, verbs, pronouns etc. Essentially, we create a model for creating any language, the M2 layer.

We can then instantiate the M2 layer creating the M1 layer, we could instantiate both French and English as an example. A statement in french might be structured:

[subject pronoun] [conjugated verb] [preposition][definite article][noun][adjective]

However, a statement in English might be structured:

[subject pronoun] [conjugated verb][adjective][definite article][noun]

Finally, we can instantiate the M0 layer by constructing the sentences in both languages. “He ran to the green shop” or “il courut à la boutique verte”.

We can see from the example above that, even at the M2 layer, we could have defined a musical layer of communication, and then gone to define notes and chord structures and instantiated that by creating a song.

In the case of computing, the Meta Object Facility (MOF) is the M3 layer which describes the structure of the Unified Modelling Language (UML), M2. A class diagram, behavioural diagram and use case diagram would be examples of instances of the UML. The models can then be used to create the software code, M1. Note that UML is a modelling language, it is a syntax for modelling. While some people complain about its many shortfalls, its one advantage is that it is a well known standard and meta-model. A non-english speaking russian could essentially communicate an entire software design to a non-russian speaking Australian.

Posted By:
calc July 27, 2010

I would like to share with you some of my favourite resources for knowledge growth, career development and personal development.

Personal Development and Knowledge Growth

http://sethgodin.typepad.com/ – he has fantastic ideas in regards to marketing.

http://www.danpink.com/ – he has a great talk on intrinsic motivation.

http://ted.com – awesome keynote speakers donate cutting edge information for free. All speeches can be downloaded as free mpeg files or simply streamed online. I highly recommend Hans Rosling. Other keynotes include Bill Clinton, Bill Gates, Jamie Oliver and Steve Jobs.

Software Development and Engineering

http://joelonsoftware.com – a great blog for software engineers.

http://codinghorror.com – another great blog for software engineers.

http://stackoverflow.com – a revolutionary forum or question/answer based site for software engineers. It is currently in the process of being applied to all domains.

http://area51.com – a launch platform for the stackoverflow concept into new domains other than software. If you have a great idea then propose it. This could have the potential to be the next layer between the web of data and google. You still have a chance to say “I knew about it before everyone else did!”.

Posted By:
calc July 03, 2010