About a year ago I assisted another developer with setting up the initial project structure for a risk management system using S#arp Architecture version 0.6 which included Spring.NET with that version. Due to time constraints I couldn't assist with anything else (e.g., design decisions, #Arch best practices, OOP structure, etc.) for the remainder of the project; so he was on his own after we got the intial project structure set up. Towards the end of the year, a second risk management system was developed by the same developer with very similar requirements. The major difference the second time around was that I couldn't assist whatsoever. The developer, who openly admits a very strong aversion to anything opensource-and-not-stamped-by-the-Microsoft-mothership (e.g., Spring.NET, NHibernate, #Arch, NUnit), chose to rewrite the application using classic ASP.NET and LINQ to SQL since I wasn't going to be involved at all. When he finished the project, he was kind enough to send me a compartive analysis of the two projects including cyclomatic complexity and basic LOC counts. The results were pretty dramatic.
I'll admit that I haven't looked into the code to determine why some of the numbers are the way they are. But keep in mind that the scope of both projects was very similar and the numbers, outside of the LOC which I'll discuss below, should be seen as comparing apples to apples. Keep in mind that these numbers were collected by someone who is very biased against the use of opensource tools and was hoping to conclusively show the benefits of going with "pure Microsoft."
Project Metrics from his S#arp Archicture 0.6 Project

Project Metrics from his ASP.NET with LINQ to SQL Project

When looking into the numbers further, we recognized the classic ASP.NET project had a large number of additional content pages which were not in the project built on S#arp Architecture. So to make it fair, we dropped all of the pages, along with an Excel integration module. This removed about 15,000 LOC from the ASP.NET project. So in the end, the adjusted LOC for the ASP.NET with LINQ to SQL project was 15,848...nearly a magnitude difference from the S#arp Architecture project.
You'll notice that there are some metrics which are worse on the S#arp Architecture project than the ASP.NET project and I haven't looked at the code to determine the cause behind any of the metrics, whatsoever. But all in all, I was pleased with the results of the comparative analysis between a S#arp Architecture project and an ASP.NET with LINQ to SQL project, both having very similar requirements and written by the same (not me) developer.
Billy McCafferty
Posted
05-15-2009 2:23 PM
by
Billy McCafferty