Sunday, August 06, 2006

Separation of Concerns

Dijkstra, a famous computer scientist (Turing Award recipient), described his thoughts about Separation of Concerns in a seminal paper titled "On the role of scientific thought". The 10k feet idea (courtesy - wikipedia) is to *Design systems so that functions can be optimized independently of other functions, so that failure of one function does not cause other functions to fail, and in general to make it easier to understand, design and manage complex interdependent systems.*

If you have ever taken a software engineering course or have worked on a project with more than five developers, you have to accept that SoC is the holy grail of software development. In recent years SoC has been reinvented in different forms for application development for web. Call it Model Driven Architecture or the latest and greatest Aspect Oriented Programming model - the fundamental idea is to cleanly segregate different vertical aspects of the application.

Gang of four sold over a million copies -- selling the idea of common patterns for designing reusable API's and SoC. Seperate logic from presentation is the de facto standard for every enterprise application. Web is the only successful platform that works by mixing procedural and declarative languages. It is bad but without Design Patterns it is not even science. Describe MVC; Decorator; Factory; Adapter pattern are common phone screen questions in the bay area.

SoC has been a successful model for writing user applications. Can SoC be applied to Operating Systems?

I am not arguing about microkernel vs monolithic kernel debate. I am asking for separation of concerns in operating system services. I am thinking loudly about how virtualization and multicore technologies can be applied to simplify Operating Systems. Bloat-free, robust and enterprise ready.

The only possibility is to offload some vertical aspects of the system to secondary partitions. Security, backup, mgmt agents to name a few.

VPro is the first step towards SoC on the desktop OS side of the world. Virtual Appliances on the server side is the beginning of SoC. Virtual Appliances need help from hypervisors to handle vertical aspects of the system - and that rosy panorama is still far away.

I for one, would like to run Mac as my eye-candy + browsing OS (primary), remote the windows apps i care about from the company server and run Symantec as the security partition.

With multicore and virtualization - it should be possible in a few years.

Links to this post:

Create a Link

<< Home