MDSD

...now browsing by tag

 
 

How ABSE came to be

Wednesday, July 29th, 2009

This is my historical note about ABSE, Atom-Based Software Engineering, and how a simple idea evolved into a new Model-Driven Software Development methodology.

I’ve been for years researching ways to develop software in a way that I would be more productive, more organized, more effective. After a first attempt in 2000-2001, and with limited, isolated ideas for a couple of years, a “click” came around 2005 that took me on a trip to a new way of thinking about software development.

I was thinking of a more declarative way to do things. I was thinking in not doing the same things over and over again. I was thinking of transforming my development experience into an automated library. Essentially, I wanted to duplicate myself. I wanted to have the work strength of a small team.

This was the initial rationale behind the development of ABSE. I wanted to have a model of my software project and then, by the switch of some buttons, I would be able to change code, and this code would adjust itself to the specification I ordered. And things could be specified at an unlimited higher- or lower-level. A project would be made of some or millions of small things… and the ABSE Atom was born.

ABSE first evolved as CodeGen4, a simple string-substitution template-based system. Then I thought it would be much powerful if each Atom could be a program in itself. This way the model could “think” according to the specification. Cool! Many new things could now be done.

In January 2007 I started building an IDE that would help me fulfill this dream of mine. A few months later I abandoned the IDE’s development and started again. But this time I wanted to do it right: The IDE should be built using an ABSE model! But how? I didn’t have a tool to build an ABSE model… So I used Leo, a scriptable outline editor. After many hours building scripts and auxiliary tools, I was able to develop AtomWeaver, an IDE that implements ABSE, using ABSE!

I knew that many hours would be spent developing code and scripts that would be thrown to the electronic dumpster once AtomWeaver would become usable. But software development is sometimes like that: you must give one step backward so that you can give two steps forward.

ABSE and AtomWeaver are currently being polished to a point that they can be understood, used, supported, (and I hope) loved by the community. The initial release is near. Stay tuned!