Even the most successful project becomes a failure when a new technology comes out and everything has to be rewritten from the ground. This is why business logic has to be separated from technology. And, according to Kathleen Dollard, code generation is a promising approach to achieve it.
Charles Simonyi, the President of Intentional Software and a recent space traveller presents his views on the future of software development. He talks about how to include domain experts in the development cycle by letting them express their intentions in domain specific languages, about Intentional's view on DSLs and Domain Driven Design and about what it was like to be a space tourist.
Bill McCarthy has updated his Snippet Editor to add support for Visual Studio 2008. Snippets are code templates that can be quickly accessed from the keyboard. Snippets include instructions for tasks ranging from creating a property or new exception type through esoteric tasks like dialing a phone number using a modem connected to a serial port.
One of the more controversial additions to C# is the addition of partial methods. Created exclusively for code generators, some believe it pollutes the C# language.
Solutions Design has recently released LLBLGen Pro v2.5, an O/R mapper and code generator that boasts many new features including auditing, authorization, dependency injection mechanism, super fast and compact serialization (XML and binary), SQLServer CE Desktop support, Sybase support and much more.
In a new InfoQ article, Dennis Sosnoski questions the conventional wisdom that a contract-first approach to web services development, i.e. starting from WSDL, is superior to starting from code. He shows how the JiBX framework can be used to practice start-from-code development without incurring the disadvantages, specifically without coupling implementation and interface too tightly.
This past year Microsoft introduced Phoenix a project aimed at transforming the traditional blackbox compiler into a transparent one.
CodeSmith is a template-based code generator that automatically generates high level code (C#, VB.NET, ...). The current release features LINQ to SQL templates and supports Visual Studio 2008 Beta 2.
Thomas Steiner, author of the REST Describe & Compile tool, which creates a WADL description from existing REST messages and can generate code from WADL, answers InfoQ's questions.
Domain-Specific Languages (DSLs) are an architectural hotspot. Microsoft supports DSLs within the Software Factory Initiative and provides a means to incorporate them into the software development process via the Visual Studio 2005 SDK. Although there is quite some information available on the topic, for the most part, DSLs remain an abstract architectural concept.
Edward Bakker and Jezz Santos have been writing about Software Factories, providing a complete set of concise guidelines. The Microsoft Software Factories and DSL initiatives have caused many discussions. Today, Microsoft provides tools such as the Guidance Automation Extensions (GAX), the Guidance Automation Toolkit (GAT), and the Domain-Specific Language Tools (DSL Tools).
CodeSmith 4.0 released this week at Dev Connections in Las Vegas on November 8th. CodeSmith is highly regarded within the .NET developer community for its code generation capabilities and familiar ASP.NET style syntax. With this new release, CodeSmith now integrates directly into Visual Studio providing the developer a consistent work environment.
Last week Microsoft released another community tech preview for Sandcastle. Sandcastle is the tool Microsoft currently uses to produce the API documentation for Visual Studio 2005. Anand Raman of the Sandcastle team claims that they can compile the documentation for the entire framework API in about 30 minutes.
Grails could bring Ruby on Rails style productivity to the Java platform, built on the Groovy language and fully integrated with Java. In this tutorial, Jason Rudolph shows how to use Grails to quickly build a functional website around an existing EJB 3 entity bean domain model with very little code.