Microsoft's Burley Kawasaki: How modeling will change programming
The first betas of Visual Studio 2010 are already introducing developers to a new and powerful concept of service modeling -- an incredible new way to make applications more scalable, as Microsoft's Oslo chief explained to BetaNews.
With the next 2010 edition of the venerable Visual Studio -- the betas for which are already being used by developers, probably even for some production work -- even in the Standard Editions, there will be a prominent and much-welcomed change that is already impacting the way they work. It concerns a concept that used to be virtually the private domain of organization's such as IBM's Rational division, and around which entire philosophies of work, workflow, and even life and living have sprung forth...though fortunately, Microsoft has more practical plans for it.
It's the concept of modeling, which is essentially the idea that an application may be pre-formed in its early stages of development using either graphical tools born from the Object Management Group (which Microsoft has now joined), or an entirely new modeling language called M. Both are capable of taking very high-level instructions based around the type of work you expect your application to perform, and then actually generate frameworks of code -- eventually in any .NET language -- that you can then adapt and tailor to the job at hand.
At PDC 2008 in Los Angeles two weeks ago, M was the star of the show -- perhaps even brighter than Windows 7 among developers. M is part of Microsoft's ambitious new service-oriented platform currently code-named Oslo. While multiple people define Oslo very differently from one another, depending on their relationship with it, what it essentially enables is the use of one's choice of tools to model a service that may be deployed on any level -- from a single system to across the Web -- in such a way that other tools may be used later to explicitly define that service.
That follow-up set of tools may be a familiar .NET procedural language such as C# or C++ or Visual Basic, conceivably a dynamic .NET language such as IronRuby (work on that front is ongoing), and perhaps by another burgeoning concept: domain-specific languages. These are literally custom languages that can be adapted to specific purposes, using class libraries or modeling languages at the core, and XML to define the syntax.
It will be a very new, broad-based, and exciting world; but like every other new world that Microsoft has tried to present us with, there will be hiccups in the marketing department. Certainly there will be the problem of introducing modeling to the broader base of developers. At PDC, we sat down with Burley Kawasaki, who manages the Oslo project for Microsoft, and we asked him to explain modeling for the newcomer who will have heard multiple definitions of the concept even coming from the same conference that week:
BURLEY KAWASAKI, Dir. of Product Management, Connected Systems Division, Microsoft: I use this very broad definition of "models." A model to me is nothing but configuration or metadata that is outside of the code in your application. If something is externalized, odds are we can actually still allow that app to benefit, because we can take that existing metadata, we can do some enhanced visualization or viewing on top of that.
I use Business Intelligence as a great example. If you look back, before BI, there was this belief that, "Well, I need to take all these dozens of different instances of customer data around my enterprise, scrap it all, replace it with one single customer table." But it never happened. People can never get to the point where they could unplug customer data from whatever app was using it, and so BI was really born as an attempt to say, "Hey, leave your operational and transactional data in place, create this virtual model of what a customer looks like using cubes and using other tools and technologies to create a virtual instance of that information."
It's easier, ultimately, for somebody to visualize, to interact with...instead of the thirty different places they'd have to look, they can stay in a single place, and then there's powerful UI and visualization techniques you can put on top of it. We're basically doing the same thing with Oslo, where you're going to have all sorts of metadata -- whether it be XML files, tables in databases, policy files, you're swimming in a sea of metadata and configuration and models that surround the code in your app, being able to take all that and create a virtual description of your application that allows you to very easily take advantage of that, and then start to reuse or change it. That's how we think of our efforts in Oslo.
SCOTT FULTON, BetaNews: Five years down the road, I can see where colleges and institutions, universities, businesses that handle accreditation for new developers, are going to have to restructure their core curricula in order to incorporate concepts such as M. So do they teach it as a separate course, or should they instead simply append it as "The new way of doing C#?" "The new way of doing ASP.NET?"
BURLEY KAWASAKI: I think it's more of the latter. We really do see it as complementary to the investments people are making around languages...What we're seeing is that, over time, the amount of actual lines of code that a developer writes is actually shrinking. You're reusing things, more and more things are declarative, setting properties and config files.
We had as an example an app that was pre-written on the existing .NET Framework using our Web service technologies, using our latest and greatest workflow technologies. That app, when you counted all the lines of code -- both code and config files -- was 160 lines of code, roughly. So we took that and we wrote the same app and, instead of writing all this config data that we had to write before -- set all these parameters, so you knew what the service looks like, what the workflow looks like -- we were able to do that in M using one of our domain-specific languages, we cut it down to 37 lines of code.
So you still have a mix of traditional code and models, but we think that the ratio will shift over time, and I do think it will be something that blends into the standard curriculum, as the way that people build apps starts to change, and shift a bit more towards reuse and assembly as a paradigm as opposed to writing and rewriting a lot of code.
Next: Making modeling mainstream...