Switch styles (Capricorn). XML Feed Calendar
All | Developers | General | Java | Surfing
20060330 Thursday March 30, 2006

The next wave of Software - Moore meets Metcalf meets Rock (and don't forget Gilder)

One of the discussions I've been having and ideas I've been promoting as I've traveled around doing various talks at conferences, customer site and universities (this week in Australia / New Zealand) is the notion that we are rapidly approaching an inflection point ... one that has significant repercussions for those of us building and maintaining software in the industry today.

Background

In these discussions, I've been using what were previously considered as hardware-only "laws" and applying the principles behind them to software development. As a refresher, the laws in question are the following:

200603311029

200603311030

One reason for the move towards clusters of lower-cost chips is the recognition and application of these laws as applied to hardware design and the systems built from them. From an economic sense, at some point it makes more sense to not build denser (and more costly) Big Hunks of Silicon(tm), but instead create clusters or networks of lower-cost chips which provide the same functionality but at a lower cost. Although Metcalf was really talking about networks, I believe the same applies when looking at these networks-in-the-small, that is that the value of those compute systems increase to the square of the number of nodes in that network

Hardware "laws" applied to Software

It is my belief that the principles behind the above hardware laws can be applied to software as well. For example:

The evolution of software systems and their complexity

As the software development industry has evolved, we've gradually moved from what were mostly monolithic systems built using structured programming languages (Fortran, Cobol, etc.) to mainstream applications built from collections of objects. These object-oriented systems drove not only OO methodologies and architecture but promoted component re-use ... something which wasn't used as extensively in the Days of Structure (sounds like a movie title ... )

200603311151

Beyond objects (yes, all you Smalltalk folks will bring up the fact that you were already sending messages ... no offense, but I believe we're moving beyond that here), we are now moving into service-based systems of a scale unheard of in the past. It's not so much the presence of services but rather the complexity which results from the aggregation of these services from sources which frequently exist outside the firewall rather than from within it as with most stand-alone software today. The result is an explosion of services and connections to services scattered across the globe:

200603311449

So services result in a geometric change in complexity ... obviously at runtime (and there are loads of folks who are building out the enterprise infrastructure to support them) but also at development and maintenance time. Without change, the scale to which these apps can grow is limited (assuming you don't want to live with the consequences of scaling quality and risk aversion as well). Building what I like to think of these new hyper-scaled systems will require a constant evolution of not only the runtime platforms they run on, but the development tools which build and maintain them.

Another interesting analogy between H/W and S/W here is how we at Sun have looked at improving the network, computing and the data center by paying close attention to three principle areas: Availability, Reliability and Scalability. The terms are pretty self-explanatory ... for software:

200603311502

All of this is going to require a new generation of development platforms (that's runtimes and tools) than exist today ... if you look at today's tools, they are actually designed for yesterday's problems (they are designed to primarily solve the structured and object-oriented languages and applications ... we can partially manage new service-based systems with them but fairly quickly now we will exceed their capacity to deal with them).

At the high level some of the changes required to both improve the ease-of-development experience in modern applications as well as to deal with increased complexity can be captured in the following:

A specifications view

A graphical programming view

A pattern view

A UML view

A code view

A packaging / assembly view

A business process model view

And so on ...

The general alignment with adaptation is not only should my tool adapt to my task or type of developer/development, it should provide the optimum view of what is under development at a given time ... if it's most efficient to "code" using a UML model at a specific instance in time, do so ... if I'm modeling the process, use a business process tool ... if I need to get my hands dirty let me at the code.

Next time I'll "go product" (or at least "go technology") and talk a little bit about how we (Sun) are working on the next phase of "attacking complexity" within the development platform space. I would, of course, be interested in observations, criticism and real-world stories where building to the next generation system have caused a new way of looking at the computing world. Posted by brewin Mar 30 2006, 02:04:42 AM PST Permalink

Comments:

Post a Comment:

Comments are closed for this entry.