Microsoft envisions industrialized software production
Microsoft Corp. wants to change the way software is written, namely to move development from the realm of craftsmanship into the realm of mass production, according to Jack Greenfield, Microsoft’s architect for enterprise frameworks and tools.
Paradoxically, such mass production will also allow agencies to more cheaply customize their software, he claimed.
To this end, the company is developing its Visual Studio software development application so that it can incorporate specialized programming languages and tools. Such a tool could allow agencies to build software packages that would meet their own needs, using a combination of generic off-the-shelf components and specialized agency-developed functionality, Greenfield said.
Greenfield spoke at the quarterly Federal CIO Council emerging components conference today.
Although distributed on mass-produced CDs, much of today’s software is still coded by hand, Greenfield said. The trouble with this approach is that it is expensive. Coders also spend too much time reinventing the wheel, or writing code that has been written before.
Although the software industry has long tried to implement code reusability in its development processes, it has always been hampered because individual chunks of code often do not mesh easily into other projects.
In order to help foster reusability, Microsoft wants to borrow a technique from the automobile industry— product lines. Greenfield explained automobile companies rely on supply chains that provide thousands of interchangeable parts. From this set of standardized parts, an automobile company then fashions an entire product line, featuring a wide range of individual models. Since single parts can be used in multiple models, automobile costs can be kept reasonably low.
Software can be developed in the same way, Greenfield claimed. Applications should be cobbled together with generic off-the-shelf components.
"We should be able to map together new applications using chunks of prebuilt software," Greenfield said.
The key to reusability would be the use of frameworks. By keeping to a single framework—the software equivalent of a product line—a developer can reuse as many components as possible.
Why should agency chief information officers care about this vision? In this scenario, agencies could save money by purchasing generic off-the-shelf packages and easily customizing them to meet specific needs with a set of tools the agency develops itself.
Greenfield said that in this scenario Microsoft would provide the basic platform framework, or a set of general-use tools within its developer software, but the company would not produce domain-specific functionality. Its programming tools—such as compilers, editors and debuggers—will be designed in such a way that they will be able to incorporate external domain-specific tools developed by other parties. That open-ended framework would provide the key to easy customization, Greenfield said.
Greenfield said that Microsoft has spoken with SAP AG of Walldorf, Germany, and Siebel Systems Inc. of San Mateo, Calif., about this approach. SAP, for example, could use a set of Microsoft components to build an enterprise resource planning-based product on Microsoft’s framework. In turn, an agency purchasing a software product from SAP or another vendor could use the framework to add its own specific domain functionality.
The next version of Visual Studio, due next year (click for GCN story)
should start to have some of this flexibility, Greenfield said, but successive versions will be designed to accommodate this workflow.
Microsoft is not alone in its fervor for component reuse. One member of the conference audience pointed out that the open-source community also touts reusability as a key objective. Software under an open-source license can be tailored for a specialized project not envisioned by the original software’s authors.
At least one other integrated development environment features the ability to import new capabilities. The open-source Eclipse
integrated development platform offers the ability to integrate external plug-ins for other languages and tools that can offer specialized functionality.
Connect with the GCN staff on Twitter @GCNtech.