InfoQ

News

Volta: Architecture Factoring and Refactoring

Posted by Jean-Jacques Dubray on Nov 16, 2007 08:56 AM

Community
.NET,
Architecture
Topics
SOA Platforms ,
SOA Appliance ,
Rich Internet Apps
Tags
Refactoring

I attended the Strategic Architecture Forum (SAF) that was held in Redmond earlier this week. The event is a series of presentations and roundtables. Bill Gates held a great Q&A session where he revealed he was in the REST + WS-* camp amongst other things.

I attended a presentation on Architecture Refactoring from Dragos Manolescu. Erik Meijer recently published an article which sets the context for Architecture Factoring and Refactoring:

As the world is moving more and more towards the software as services model, we have to come up with practical solutions to build distributed systems that are approachable for normal programmers.

Dragos works at the LiveLabs which are in charge of exploring disruptive technologies (Listas, PhotoSynth, Seadragon, Deepfish). He graduated from University of Illinois at Urbana-Champain shortly after Bill Opdyke  established the foundations of Code Refactoring. He also worked at ThoughtWorks with Martin Fowler. Code Refactoring has become a great success story and pretty much every IDE supports it to a certain degree.

Dragos explained some of the challenges inherent to Architecture Refactoring as compared to Code Refactoring which relies on a series of assumptions:

  • Same application boundaries
  • Same development platform
  • Same Constraints

that are simply impossible to make in the realm of Architecture Refactoring. He is looking at getting around them. His starting point is MSIL and creating MSIL to MSIL transformations that enable to cross process and development platform boundaries while offering more choices in terms in scalability, availability or security even well after the code was written within a monolithic architecture.

His first goals are to enable the multi-tier architecture refactoring and the injection of boilerplate code while removing accidental complexity due to particular choice of architecture and extending the reach of the platform. He is reusing as much as possible:

  • the .Net programming languages
  • the .net libraries
  • the development tools such as Visual Studio 2008
  • patterns and idioms

Dragos gave us 3 demos involving tier splitting refactoring (more information can be found here). He started with a monolithic application and simply by adding a [RunAt(server)] statement to an operation, the compiler generated the corresponding service and the application invoked that service automatically without any further coding. 
 
The showed us the cross-tier debugging capabilities of Visual Studio.

He also showed how Asynchronous method calls could be implemented just as elegantly without having explicitly use a .Net Delegates
 
He also showed that Architecture Refactoring was possible for web applications even though we would be using:

  • Different languages
  • Different libraries
  • Different tools
  • Different programming paradigm 

Dragos recommended to watch Erik Meijer's presentation on Volta: Wrapping the Cloud with .Net

Volta is an evolving research project focused on exploring ways to innovate data-intensive programming models. Volta is currently exploring a lean-programming inspired toolkit for building web-based and mobile applications by stretching the .NET programming model to cover the Cloud.

Sami Jaber published last month a list of references for the project which included this one from Mary Jo Foley who provided some more context for the project last April.

 

 

No comments

Watch Thread Reply

Educational Content

Bindings, Platforms, and Innovation

This presentation focuses on the Internet and separating myth from fact, history from the future, and the mundane from the imaginative. Bob Frankston presents a vision of what could and should be.

Orchestrating Long Running Activities with JBoss / JBPM

This article explores the use of JBoss and jBPM to implement design solutions that effectively address the issue of orchestrating long running activities.

Neo4j - The Benefits of Graph Databases

This presentation covers the use of graph databases as an optimal solution for data that is difficult to fit in static tables, rapidly evolving data or data that has a lot of optional attributes.

Realistic about Risk: Software development with Real Options

This session introduces Real Options and shows how it can help in running your project. Real Options is a decision-making process that can be used to manage risk.

Communication Flexibility Using Bindings

This article discusses the use of bindings on services and references (including the instance of non-configured bindings) as the means to implement SCA communications in a Web and SOA environment.

Writing DSLs in Groovy

After a short introduction to DSLs, Scott Davis plays with the keyboard showing how to approach the creation of a DSL by typing working snippets of Groovy code that get executed.

Scaling Agile with C/ALM (Collaborative Application Lifecycle Management)

IBM Rational and InfoQ present, Scaling Agile with C/ALM, an eBook showing organizations how to become “finely tuned software delivery machines” by enabling team integration and scaling.

Concurrent Programming with Microsoft F#

Amanda Laucher presents a real life enterprise application written in F#. She shows actual code snippets, explaining design decisions and suggesting how to use some of the F# constructs.