Software Advancement Talk

Posted by Graham Stratton Wed, 18 Jan 2006 22:56:00 GMT

In the first talk at the Cambridge group of the SPA, Steve Cook, a Software Architect in the Enterprise Frameworks and Tools group in Microsoft Visual Studio, talked about Software Factories: Assembling Applications with Patterns, Models, Frameworks and Tools.

He started with some figures showing how poorly most projects match up to their requirements. 20% of the American GDP now goes on computing, that’s $250bn. Only 18% of software projects are delivered on time and on budget, and these on average implement 42% of their requirements. Shocking figures? Maybe.

Steve went on to compare the software industry to other types of industry, saying that at the moment it is still really a cottage industry, and the days of mass-production are still to come. Then he said that manufacture was trivial with software (buring CDs), and that it was design that is hard. He said that the software industry doesn’t compare well with other manufacturing industries. I would have thought that The Machine that Changed the World showed that the car industry can’t (or certainly couldn’t) do design efficiently either. Interestingly, the Japanese approach to car design is to get all the stakeholders together at the beginning, so that the design happens without ignoring anyone’s interest. This seems to tie in to some degree with the XP ideas.

The finale of Steve’s talk was the introduction of a facility in Visual Studio to enable simple creation of domain specific languages for certain tasks. Whether these tasks are likely to be performed by different people to those implement the DSL was not clear.

I have to admit being rather dubious as to whether this is often likely to be a useful feature. It is interesting that the Ruby community seem feel strongly that everything should be done in Ruby, and creating extra languages is the wrong way to tackle problems. They argue, that, as in LISP, you should build up the language to your problem, rather than building down to the base level below.

What the talk did not address, which I would have been interested in, is the increasing use of frameworks for developing certain types of application. To me this makes a lot of sense, as generally the outisde bit of applications is the same, and it’s the middle bit which varies. I can’t help feeling that automatic code generation (other than to create a skeleton which you then flesh out) is fundamentally evil, but that’s another issue.

What I consider to be a more interesting way of looking at things is to ask what the minimum amount of information is to describe what we want a program to do. Clearly the programmer is going to have to input that information, but no more (except unexpected exception handling). If we want to say ‘like application x, but with these changes’, then we either need a framework or a library containing the essential bits of application x.

To me, the most interesting thing about the Zope3 and twisted frameworks is that they allow you to do simple things simple and complex things, well, with no more effort than necessary. With low level languages I always got the impression that that was an impossible goal, but fortunately it seems not. Just how clever you need to be in order to create such a framework is another question altogether.

Posted in  | no comments

Comments

(leave url/email »)

   Comment Markup Help Preview comment