Home > SD in general, The Why > Going back to the source…

Going back to the source…

During a recent masterclass in the Netherlands, Neal Ford pointed to an article by Jack W. Reeves aptly titled “What is Software Design?” and even more aptly answering that question. (You can find the article online.) Its basic premise is that software design equals source code. In other words: it’s non-sensical to try and design software in a high-level fashion beforehand and expect that writing the actual source code is something that’s comparable to the ubiquitous factory line. Well, we all know how that turned out to work, right?…

The article touches on a lot of aspects of the software creation process, one of which is the assertion that software should be expressible on all levels of detail: “What we need is a unified design notation suitable for all levels of design. In other words, we need a programming language that is also suitable for capturing high level design concepts.” Obviously, I see a role for MDSD and DSLs here 😉

Now, the funny thing is that it was published (and presumably written) in 1992, but already seems to point towards a lot of “later findings” such as Agile (in terms of “excuses to start coding earlier in the life cycle”) and modeling (in particular the distinction between modeling in the problem and solution spaces). I had the same “déjà vu-in retrospective” feeling when reading Fred Brooks’ “The Mythical Man-month”, which acutely describes the software crisis as we’re still experiencing from a mid-70’s viewpoint based on experiences from the 60’s!

Do these guys have time machines, a crystal ball or is it simply that we haven’t gotten much (or even: any) smarter in 18, resp. 35 years? Why aren’t we much (or even: any) closer to solving the software crisis despite all those advances? Are we so non-rational that even we, as software engineering professionals or as an SE profession, are incapable of learning from the past? Do our managers get prepped in such a way that we’re doomed to repeat SE history over and over again?

What do you think?

Advertisements
Categories: SD in general, The Why
  1. December 1, 2010 at 1:19 am

    Like other engineering disciplines, it takes time for practitioners to adjust themselves and find the way. Even if the “software engineering silver bullet” would be found/invented tomorrow, it would take years for the whole software engineering community to follow through.

  2. December 1, 2010 at 8:03 am

    My point (or rather: continued amazement about the current state of affairs) is that this “adjusting” is already taking us decennia, without much (or even: any) improvement. I find it amazing and even disturbing that in this day and age with its (over-)abundance of information, we have not moved more (IMHO) towards being a true engineering profession by learning from engineering history in general and software engineering history in particular.

    It seems like everyday someone comes along with the message: “forget what you know and learned so far, xxxx is the new silver bullet which solves the software crisis all at once”. And every time, xxxx is a re-hashing of pre-existing ideas, possibly wrapped in either a slick marketing package or youthful enthusiasm. But in the meantime, I hardly meet anyone these days who really has a broad understanding of our discipline, spanning the gamut from the “soft edges” to the “bare metal”. (In fact, I was truly amazed the other day that colleagues of mine were amazed at the fact that I knew hexadecimal notation…)

    Even MDSD is “just” a follow-through of the concept that you should design software at the right level of abstraction. The engineering comes into play with things like the Generation Gap pattern, combined with all the things you already know about software engineering. This is all hardly magic (unless you’re dealing with Intentional’s Domain Workbench, of course) but it provides a way of thinking which allows us to reach a right solution every time in a predictable fashion (without relying on any particular “black box silver bullet” tool).

    • December 1, 2010 at 3:55 pm

      “And every time, xxxx is a re-hashing of pre-existing ideas, possibly wrapped in either a slick marketing package or youthful enthusiasm.”

      True. But there isn’t much to invent in software engineering. Like I said, engineers will adjust themselves to the best combination of “inventions”. And it will take time. Just like a process of natural selection.

      “This is all hardly magic (unless you’re dealing with Intentional’s Domain Workbench, of course)”

      I guess you are being ironic. I’ve seen a video demo of Intentional’s product, and it’s hardly magic. It’s much more like JetBrain’s MPS…

  3. December 1, 2010 at 4:11 pm

    “But there isn’t much to invent in software engineering.”

    I disagree: there’s still much to invent which is proven by new academic research being done every day. Something which still needs solving and which comes to my mind: coupled meta model evolution.

    “I’ve seen a video demo of Intentional’s product, and it’s hardly magic. It’s much more like JetBrain’s MPS…”

    I’m sorry, but conceptually and technologically IDW and MPS are very distant (domain workbench vs. language workbench, resp.) and I’m afraid having seen a video doesn’t quite qualify you to make informed statements on this. And I wasn’t being ironic either: IDW is a truly great and game-changing (or even world-changing) product. In fact, I can see where your assertion is coming from but it’s a testimony to the maturity of IDW that it might look like MPS if you haven’t seen the internals.

    I’ve worked a bit with/in it (i.e., actual hands-on project experience, not just seeing a demo) and it is a marvel of software engineering. The price is (currently -I hope that will be changing) that in order to “program” a domain and especially the functionality around it (i.e., generators and such) your brain has to grow a few extra twists.

    • December 1, 2010 at 4:49 pm

      “and I’m afraid having seen a video doesn’t quite qualify you to make informed statements on this.”

      It was not an informed statement. I said “I’ve seen a video”… I was loosely comparing both because these two approaches (IDW and MPS) are still closer to each other than to other MDD approaches like UML/MDA.

      “The price is (currently -I hope that will be changing) that in order to “program” a domain and especially the functionality around it (i.e., generators and such) your brain has to grow a few extra twists.”

      Yes, that’s the price of “going to the next level”, increasing abstraction. That will severely limit its audience. But because of this brawback I am trying to go the opposite way with ABSE, making modeling as easy as possible, even if it’s not technically the best/most-optimized approach.

      Do you have an idea when IDW is finally coming? Because it’s starting to look like Duke Nukem Forever…

  4. December 1, 2010 at 5:10 pm

    “Yes, that’s the price of “going to the next level”, increasing abstraction.”

    No, that’s not the cause: using a workbench created with the IDW is as simple as you can/want to make it for the domain stakeholders (so that’s the same with ABSE). It’s the meta-programming (inside IDW) that requires extra brain power because you’re working/thinking in several distinct domains at the same time, which is quite specific for IDW since usually it’s only 1 meta-level down and 1 domain change (from model objects to target domain).

    IDW is already around and has been for several years but it’s not open-source/trialware which makes it somewhat invisible for the dev in the streets…

  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: