Windows & .NET Watch: The Oslo Piece O’Codes
March 15, 2009 —
(Page 1 of 3)
Related Search Term(s): domain-specific languages, Microsoft
"Oslo" is the codename for Microsoft’s ambitious model-based development platform. The idea, in the broadest strokes, is that software teams don’t develop high-level tools specific to their domain. We work on the same core system for years, but changing a rule still requires a programmer to go in, balance the brackets, put the semicolons in the right place, fire up the build script for the entire system, work the unit-testing framework, and so forth. Or we approach a new system and find ourselves redeveloping the same objects and relationships that we know to be important to the domain.
It’s difficult to talk about this level of abstraction without uttering a phrase about “business analysts writing rules directly,” but that type of phrase brings with it a freight train of baggage. To cut to the quick: Microsoft understands that creating a software system requires a trained and specialized mentality. The failure is not that there are programmers involved, it’s that the programmers aren’t taking advantage of the patterns and vocabulary of their domain.
If you’re doing once-in-a-few-years reasoning about security transactions or the network, a general-purpose language is the best way to express that solution. But if you work for a widget manufacturer, you should have additional ways of reasoning that involve widgets and sprockets and other domain issues.
One attempt to avoid the “no programming necessary” confusion comes in the phrase “software factories.” (Those wishing to score points for their debate team could argue that the phrase is not entirely baggage-free, as it was also used in the early 1990s to describe a style of development favored by Japanese business that failed to produce anything noteworthy except, arguably, the low-cost, low-quality contract-Web-development industry.)
As it’s used today, though, a “software factory” is intended to evoke the idea of a product line: companies producing slightly different versions of their software for different clients or partners, or that find themselves building “this year’s model” that’s different in important ways. But they build with chunks of functionality that are reused from the previous versions, solutions that don’t need to be reinvented.